def __call__(self):
        jsondata = self.request.get(REQUEST_KEY)
        data = encode_after_json(json.loads(jsondata))
        committee = Oguid.parse(data['committee_oguid']).resolve_object()
        proposal_oguid = Oguid.parse(data['proposal_oguid'])
        proposal = meeting_service().fetch_proposal_by_oguid(proposal_oguid)

        with elevated_privileges():
            submitted_proposal = SubmittedProposal.create(proposal, committee)

            # XXX use Transporter API?
            collector = getMultiAdapter((submitted_proposal,), IDataCollector,
                                        name='field-data')
            data['field-data']['ISubmittedProposal'] = data['field-data'].pop(
                'IProposal')
            collector.insert(data['field-data'])
            # XXX fix data types in transporter
            submitted_proposal.date_of_submission = date.today()

            # sync data to proposal after inserting field data
            submitted_proposal.sync_model(proposal_model=proposal)

            submitted_proposal.create_proposal_document(
                filename=data['file']['filename'],
                content_type=data['file']['contentType'].encode('utf-8'),
                data=base64.decodestring(data['file']['data']))

            history_data = advancedjson.loads(self.request.get('history_data'))
            IHistory(submitted_proposal).append_record(
                u'submitted', uuid=history_data['uuid'])

            self.request.response.setHeader("Content-type", "application/json")
            return json.dumps(
                {'path': '/'.join(submitted_proposal.getPhysicalPath())})
    def __call__(self):
        jsondata = self.request.get(REQUEST_KEY)
        data = encode_after_json(json.loads(jsondata))
        committee = Oguid.parse(data['committee_oguid']).resolve_object()
        proposal_oguid = Oguid.parse(data['proposal_oguid'])
        proposal = meeting_service().fetch_proposal_by_oguid(proposal_oguid)

        with elevated_privileges():
            submitted_proposal = SubmittedProposal.create(proposal, committee)

            # XXX use Transporter API?
            collector = getMultiAdapter((submitted_proposal, ),
                                        IDataCollector,
                                        name='field-data')
            data['field-data']['ISubmittedProposal'] = data['field-data'].pop(
                'IProposal')
            collector.insert(data['field-data'])
            # XXX fix data types in transporter
            submitted_proposal.date_of_submission = date.today()

            # sync data to proposal after inserting field data
            submitted_proposal.sync_model(proposal_model=proposal)

            submitted_proposal.create_proposal_document(
                filename=data['file']['filename'],
                content_type=data['file']['contentType'].encode('utf-8'),
                data=base64.decodestring(data['file']['data']))

            history_data = advancedjson.loads(self.request.get('history_data'))
            IHistory(submitted_proposal).append_record(
                u'submitted', uuid=history_data['uuid'])

            self.request.response.setHeader("Content-type", "application/json")
            return json.dumps(
                {'path': '/'.join(submitted_proposal.getPhysicalPath())})
Пример #3
0
    def __call__(self):
        data = advancedjson.loads(self.request.get('data'))
        timestamp = data['timestamp']

        data = data['data']
        IHistory(self.context).receive_record(timestamp, data)

        return ok_response(self.request)
    def receive(self):
        document = super(RecieveSubmittedDocumentView, self).receive()

        history_data = advancedjson.loads(self.request.get('history_data'))
        with elevated_privileges():
            IHistory(self.context).append_record(
                u'document_submitted',
                document_title=document.title,
                submitted_version=history_data['submitted_version'],
                uuid=history_data['uuid'])

        activity = advancedjson.loads(self.request.get('activity'))
        if activity['record_activity']:
            ProposalDocumentSubmittedActivity(self.context, self.request,
                                              document.title).record()

        ILockable(document).lock(MEETING_SUBMITTED_LOCK)
        return document
Пример #5
0
    def receive(self):
        document = super(RecieveSubmittedDocumentView, self).receive()

        history_data = advancedjson.loads(self.request.get('history_data'))
        with elevated_privileges():
            IHistory(self.context).append_record(
                u'document_submitted',
                document_title=document.title,
                submitted_version=history_data['submitted_version'],
                uuid=history_data['uuid']
            )

        ILockable(document).lock(MEETING_SUBMITTED_LOCK)
        return document
    def __call__(self):
        data = advancedjson.loads(self.request.get('data'))
        text = data['text']

        with elevated_privileges():
            with as_internal_workflow_transition():
                api.content.transition(
                    obj=self.context, transition='proposal-transition-reject')
            IHistory(self.context).append_record(
                u'rejected', text=text)
            ProposalRejectedActivity(self.context, self.request).record()

            self.context.date_of_submission = None

        return ok_response(self.request)
    def __call__(self):
        alsoProvides(self.request, IDisableCSRFProtection)  # internal request

        data = advancedjson.loads(self.request.get('data'))
        meeting_id = data['meeting_id']

        with elevated_privileges():
            with as_internal_workflow_transition():
                api.content.transition(
                    obj=self.context, transition='proposal-transition-unschedule')
            IHistory(self.context).append_record(
                u'remove_scheduled', meeting_id=meeting_id)
            ProposalRemovedFromScheduleActivity(
                self.context, self.request, meeting_id).record()

        return ok_response(self.request)
    def __call__(self):
        if not self.context.is_submitted_document():
            raise NoSubmittedDocument()

        if self.context.is_checked_out():
            raise Unauthorized()

        submitted_proposal = aq_parent(aq_inner(self.context))
        history_data = advancedjson.loads(self.request.get('history_data'))

        with elevated_privileges():
            transporter = Transporter()
            transporter.update(self.context, self.request)

            IHistory(submitted_proposal).append_record(
                u'document_updated',
                document_title=self.context.title,
                submitted_version=history_data['submitted_version'],
                uuid=history_data['uuid'])

            ProposalDocumentUpdatedActivity(
                submitted_proposal, self.request, self.context.title,
                history_data['submitted_version']).record()

            portal_path = '/'.join(api.portal.get().getPhysicalPath())
            intids = getUtility(IIntIds)

            comment = translate(_(
                u"Updated with a newer docment version from proposal's "
                "dossier."),
                                context=self.request)
            Versioner(self.context).create_version(comment)

            data = {
                'path':
                '/'.join(self.context.getPhysicalPath())[len(portal_path) +
                                                         1:],
                'intid':
                intids.queryId(self.context)
            }

        # Set correct content type for JSON response
        self.request.response.setHeader("Content-type", "application/json")
        return json.dumps(data)
Пример #9
0
    def __call__(self):
        if not self.context.is_submitted_document():
            raise NoSubmittedDocument()

        if self.context.is_checked_out():
            raise Unauthorized()

        submitted_proposal = aq_parent(aq_inner(self.context))
        history_data = advancedjson.loads(self.request.get('history_data'))

        with elevated_privileges():
            transporter = Transporter()
            transporter.update(self.context, self.request)

            IHistory(submitted_proposal).append_record(
                u'document_updated',
                document_title=self.context.title,
                submitted_version=history_data['submitted_version'],
                uuid=history_data['uuid']
            )

            portal_path = '/'.join(api.portal.get().getPhysicalPath())
            intids = getUtility(IIntIds)

            comment = translate(
                _(u"Updated with a newer docment version from proposal's "
                  "dossier."), context=self.request)
            Versioner(self.context).create_version(comment)

            data = {
                'path': '/'.join(self.context.getPhysicalPath())[
                    len(portal_path) + 1:],
                'intid': intids.queryId(self.context)
                }

        # Set correct content type for JSON response
        self.request.response.setHeader("Content-type", "application/json")
        return json.dumps(data)