コード例 #1
0
def service_handle_custom_action(editable, revision, user, action):
    data = {
        'revision': EditingRevisionSignedSchema().dump(revision),
        'action': action,
        'user': ServiceUserSchema(context={'editable': editable}).dump(user),
    }
    try:
        path = '/event/{}/editable/{}/{}/{}/action'.format(
            _get_event_identifier(editable.event),
            editable.type.name,
            editable.contribution_id,
            revision.id
        )
        resp = requests.post(_build_url(editable.event, path), headers=_get_headers(editable.event), json=data)
        resp.raise_for_status()
        resp = ServiceActionResultSchema().load(resp.json())
    except (requests.RequestException, ValidationError) as exc:
        _log_service_error(exc, 'Calling listener for triggering custom action failed')
        raise ServiceRequestFailed(exc)

    if revision.final_state == FinalRevisionState.accepted:
        publish = resp.get('publish')
        if publish:
            publish_editable_revision(revision)
        elif publish is False:
            revision.editable.published_revision = None
    if 'tags' in resp:
        revision.tags = {tag for tag in editable.event.editing_tags if tag.id in map(int, resp['tags'])}
    for comment in resp.get('comments', []):
        create_revision_comment(revision, User.get_system_user(), comment['text'], internal=comment['internal'])
    db.session.flush()
    return resp
コード例 #2
0
def service_handle_review_editable(editable, user, action, parent_revision, revision=None):
    new_revision = revision or parent_revision
    data = {
        'action': action.name,
        'revision': EditingRevisionSignedSchema().dump(new_revision),
        'endpoints': _get_revision_endpoints(new_revision),
        'user': ServiceUserSchema(context={'editable': editable}).dump(user),
    }
    try:
        path = '/event/{}/editable/{}/{}/{}'.format(
            _get_event_identifier(editable.event),
            editable.type.name,
            editable.contribution_id,
            new_revision.id
        )
        resp = requests.post(_build_url(editable.event, path), headers=_get_headers(editable.event),
                             json=data)
        resp.raise_for_status()
        resp = ServiceReviewEditableSchema().load(resp.json())

        if 'comment' in resp:
            parent_revision.comment = resp['comment']
        if 'tags' in resp:
            parent_revision.tags = {tag for tag in editable.event.editing_tags
                                    if tag.id in map(int, resp['tags'])}
        for comment in resp.get('comments', []):
            create_revision_comment(new_revision, User.get_system_user(), comment['text'], internal=comment['internal'])

        db.session.flush()
        return resp
    except (requests.RequestException, ValidationError) as exc:
        _log_service_error(exc, 'Calling listener for editable revision failed')
        raise ServiceRequestFailed(exc)
コード例 #3
0
ファイル: timeline.py プロジェクト: pvshingala1997/indico
    def _process(self, text, internal):
        user = session.user
        if self.is_service_call:
            user = User.get_system_user()
        elif internal and not self.editable.can_use_internal_comments(session.user):
            internal = False

        create_revision_comment(self.revision, user, text, internal)
        return '', 201
コード例 #4
0
 def _process(self, text, internal):
     if internal and not self.editable.can_use_internal_comments(
             session.user):
         internal = False
     create_revision_comment(self.revision, session.user, text, internal)
     return '', 201
コード例 #5
0
 def _process(self, text, internal):
     if internal and not self._user_is_authorized_editor():
         internal = False
     create_revision_comment(self.revision, session.user, text, internal)
     return '', 201