Show More
@@ -20,29 +20,9 b' import logging' | |||||
20 | from pyramid.threadlocal import get_current_registry |
|
20 | from pyramid.threadlocal import get_current_registry | |
21 | from rhodecode.events.base import RhodeCodeIntegrationEvent |
|
21 | from rhodecode.events.base import RhodeCodeIntegrationEvent | |
22 |
|
22 | |||
23 |
|
23 | from rhodecode.events.base import ( # pragma: no cover | ||
24 | log = logging.getLogger(__name__) |
|
24 | FtsBuild | |
25 |
|
25 | ) | ||
26 |
|
||||
27 | def trigger(event, registry=None): |
|
|||
28 | """ |
|
|||
29 | Helper method to send an event. This wraps the pyramid logic to send an |
|
|||
30 | event. |
|
|||
31 | """ |
|
|||
32 | # For the first step we are using pyramids thread locals here. If the |
|
|||
33 | # event mechanism works out as a good solution we should think about |
|
|||
34 | # passing the registry as an argument to get rid of it. |
|
|||
35 | event_name = event.__class__ |
|
|||
36 | log.debug('event %s sent for execution', event_name) |
|
|||
37 | registry = registry or get_current_registry() |
|
|||
38 | registry.notify(event) |
|
|||
39 | log.debug('event %s triggered using registry %s', event_name, registry) |
|
|||
40 |
|
||||
41 | # Send the events to integrations directly |
|
|||
42 | from rhodecode.integrations import integrations_event_handler |
|
|||
43 | if isinstance(event, RhodeCodeIntegrationEvent): |
|
|||
44 | integrations_event_handler(event) |
|
|||
45 |
|
||||
46 |
|
26 | |||
47 | from rhodecode.events.user import ( # pragma: no cover |
|
27 | from rhodecode.events.user import ( # pragma: no cover | |
48 | UserPreCreate, |
|
28 | UserPreCreate, | |
@@ -78,3 +58,26 b' from rhodecode.events.pullrequest import' | |||||
78 | PullRequestMergeEvent, |
|
58 | PullRequestMergeEvent, | |
79 | PullRequestCloseEvent, |
|
59 | PullRequestCloseEvent, | |
80 | ) |
|
60 | ) | |
|
61 | ||||
|
62 | ||||
|
63 | log = logging.getLogger(__name__) | |||
|
64 | ||||
|
65 | ||||
|
66 | def trigger(event, registry=None): | |||
|
67 | """ | |||
|
68 | Helper method to send an event. This wraps the pyramid logic to send an | |||
|
69 | event. | |||
|
70 | """ | |||
|
71 | # For the first step we are using pyramids thread locals here. If the | |||
|
72 | # event mechanism works out as a good solution we should think about | |||
|
73 | # passing the registry as an argument to get rid of it. | |||
|
74 | event_name = event.__class__ | |||
|
75 | log.debug('event %s sent for execution', event_name) | |||
|
76 | registry = registry or get_current_registry() | |||
|
77 | registry.notify(event) | |||
|
78 | log.debug('event %s triggered using registry %s', event_name, registry) | |||
|
79 | ||||
|
80 | # Send the events to integrations directly | |||
|
81 | from rhodecode.integrations import integrations_event_handler | |||
|
82 | if isinstance(event, RhodeCodeIntegrationEvent): | |||
|
83 | integrations_event_handler(event) |
@@ -120,3 +120,11 b' class RhodeCodeIntegrationEvent(Rhodecod' | |||||
120 | Special subclass for Integration events |
|
120 | Special subclass for Integration events | |
121 | """ |
|
121 | """ | |
122 | description = '' |
|
122 | description = '' | |
|
123 | ||||
|
124 | ||||
|
125 | class FtsBuild(RhodecodeEvent): | |||
|
126 | """ | |||
|
127 | This event will be triggered when FTS Build is triggered | |||
|
128 | """ | |||
|
129 | name = 'fts-build' | |||
|
130 | display_name = 'Start FTS Build' |
@@ -354,7 +354,7 b' def check_for_update():' | |||||
354 | @async_task(ignore_result=False) |
|
354 | @async_task(ignore_result=False) | |
355 | def beat_check(*args, **kwargs): |
|
355 | def beat_check(*args, **kwargs): | |
356 | log = get_logger(beat_check) |
|
356 | log = get_logger(beat_check) | |
357 | log.info('Got args: %r and kwargs %r', args, kwargs) |
|
357 | log.info('%r: Got args: %r and kwargs %r', beat_check, args, kwargs) | |
358 | return time.time() |
|
358 | return time.time() | |
359 |
|
359 | |||
360 |
|
360 |
@@ -3967,7 +3967,7 b' class ChangesetStatus(Base, BaseModel):' | |||||
3967 | STATUS_APPROVED = 'approved' |
|
3967 | STATUS_APPROVED = 'approved' | |
3968 | STATUS_REJECTED = 'rejected' |
|
3968 | STATUS_REJECTED = 'rejected' | |
3969 | STATUS_UNDER_REVIEW = 'under_review' |
|
3969 | STATUS_UNDER_REVIEW = 'under_review' | |
3970 |
|
3970 | CheckConstraint, | ||
3971 | STATUSES = [ |
|
3971 | STATUSES = [ | |
3972 | (STATUS_NOT_REVIEWED, _("Not Reviewed")), # (no icon) and default |
|
3972 | (STATUS_NOT_REVIEWED, _("Not Reviewed")), # (no icon) and default | |
3973 | (STATUS_APPROVED, _("Approved")), |
|
3973 | (STATUS_APPROVED, _("Approved")), | |
@@ -5322,11 +5322,11 b' class ScheduleEntry(Base, BaseModel):' | |||||
5322 | except ValueError: |
|
5322 | except ValueError: | |
5323 | return dict() |
|
5323 | return dict() | |
5324 |
|
5324 | |||
5325 | def _as_raw(self, val): |
|
5325 | def _as_raw(self, val, indent=None): | |
5326 | if hasattr(val, 'de_coerce'): |
|
5326 | if hasattr(val, 'de_coerce'): | |
5327 | val = val.de_coerce() |
|
5327 | val = val.de_coerce() | |
5328 | if val: |
|
5328 | if val: | |
5329 | val = json.dumps(val) |
|
5329 | val = json.dumps(val, indent=indent, sort_keys=True) | |
5330 |
|
5330 | |||
5331 | return val |
|
5331 | return val | |
5332 |
|
5332 | |||
@@ -5334,13 +5334,11 b' class ScheduleEntry(Base, BaseModel):' | |||||
5334 | def schedule_definition_raw(self): |
|
5334 | def schedule_definition_raw(self): | |
5335 | return self._as_raw(self.schedule_definition) |
|
5335 | return self._as_raw(self.schedule_definition) | |
5336 |
|
5336 | |||
5337 | @property |
|
5337 | def args_raw(self, indent=None): | |
5338 | def args_raw(self): |
|
5338 | return self._as_raw(self.task_args, indent) | |
5339 | return self._as_raw(self.task_args) |
|
5339 | ||
5340 |
|
5340 | def kwargs_raw(self, indent=None): | ||
5341 | @property |
|
5341 | return self._as_raw(self.task_kwargs, indent) | |
5342 | def kwargs_raw(self): |
|
|||
5343 | return self._as_raw(self.task_kwargs) |
|
|||
5344 |
|
5342 | |||
5345 | def __repr__(self): |
|
5343 | def __repr__(self): | |
5346 | return '<DB:ScheduleEntry({}:{})>'.format( |
|
5344 | return '<DB:ScheduleEntry({}:{})>'.format( |
@@ -147,6 +147,14 b' class CloneUriValidator(object):' | |||||
147 | def json_validator(node, value): |
|
147 | def json_validator(node, value): | |
148 | try: |
|
148 | try: | |
149 | json.loads(value) |
|
149 | json.loads(value) | |
150 | except (Exception,): |
|
150 | except (Exception,) as e: | |
151 | msg = _(u'Please enter a valid json object') |
|
151 | msg = _(u'Please enter a valid json object') | |
152 | raise colander.Invalid(node, msg) |
|
152 | raise colander.Invalid(node, msg) | |
|
153 | ||||
|
154 | ||||
|
155 | def json_validator_with_exc(node, value): | |||
|
156 | try: | |||
|
157 | json.loads(value) | |||
|
158 | except (Exception,) as e: | |||
|
159 | msg = _(u'Please enter a valid json object: `{}`'.format(e)) | |||
|
160 | raise colander.Invalid(node, msg) |
General Comments 0
You need to be logged in to leave comments.
Login now