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())})
def _extract_data(self, task): data = remote_json_request(task.client_id, '@@transporter-extract-object-json', task.physical_path) data = encode_after_json(data) data = data.get(u'field-data').get('ITask') return data
def _extract_data(self, task): data = remote_json_request( task.client_id, '@@transporter-extract-object-json', task.physical_path) data = encode_after_json(data) data = data.get(u'field-data').get('ITask') return data
def render(self): data = self.request.get('data', None) assert data is not None, 'Bad request: no delivery data found' data = json.loads(data) if self.is_already_delivered(data): # Set correct content type for text response self.request.response.setHeader("Content-type", "tex/plain") return 'OK' mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() if not member.checkPermission('Add portal content', self.context): raise Unauthorized() # Set the "X-CREATING-SUCCESSOR" flag for preventing the event # handler from creating additional responses per added document. self.request.set('X-CREATING-SUCCESSOR', True) # Create the delivered documents: transporter = getUtility(ITransporter) documents = [] message = _(u'version_message_resolved_task', default=u'Document copied from task (task resolved)') if data.get('transition' ) == 'task-transition-in-progress-tested-and-closed': message = _(u'version_message_closed_task', default=u'Document copied from task (task closed)') with CustomInitialVersionMessage(message, self.context.REQUEST): for item in encode_after_json(data['documents']): doc = transporter._create_object(self.context, item) # append `RE:` prefix to the document title doc.title = '%s: %s' % (translate( _(u'answer_prefix', default=u'RE'), context=self.context.REQUEST), doc.title) documents.append(doc) notify(ObjectAddedEvent(doc)) # Change workflow state of predecessor task: util.change_task_workflow_state(self.context, data['transition'], text=data['text'], added_object=documents) # Set correct content type for text response self.request.response.setHeader("Content-type", "tex/plain") return 'OK'
def transport_from(self, container, source_cid, path): """ Copies the object under *path* from client with *source_cid* into the local folder *container* *path* is the relative path of the object to its plone site root. """ data = remote_json_request(source_cid, '@@transporter-extract-object-json', path=path) data = encode_after_json(data) obj = self._create_object(container, data) return obj
def render(self): data = self.request.get("data", None) assert data is not None, "Bad request: no delivery data found" data = json.loads(data) if self.is_already_delivered(data): # Set correct content type for text response self.request.response.setHeader("Content-type", "tex/plain") return "OK" mtool = getToolByName(self.context, "portal_membership") member = mtool.getAuthenticatedMember() if not member.checkPermission("Add portal content", self.context): raise Unauthorized() # Set the "X-CREATING-SUCCESSOR" flag for preventing the event # handler from creating additional responses per added document. self.request.set("X-CREATING-SUCCESSOR", True) # Create the delivered documents: transporter = getUtility(ITransporter) documents = [] message = _(u"version_message_resolved_task", default=u"Document copied from task (task resolved)") if data.get("transition") == "task-transition-in-progress-tested-and-closed": message = _(u"version_message_closed_task", default=u"Document copied from task (task closed)") with CustomInitialVersionMessage(message, self.context.REQUEST): for item in encode_after_json(data["documents"]): doc = transporter._create_object(self.context, item) # append `RE:` prefix to the document title doc.title = "%s: %s" % ( translate(_(u"answer_prefix", default=u"RE"), context=self.context.REQUEST), doc.title, ) documents.append(doc) notify(ObjectAddedEvent(doc)) # Change workflow state of predecessor task: util.change_task_workflow_state(self.context, data["transition"], text=data["text"], added_object=documents) # Set correct content type for text response self.request.response.setHeader("Content-type", "tex/plain") return "OK"
def copy_documents_from_remote_task(self, task, target, documents=None): transporter = getUtility(ITransporter) data = remote_json_request(task.client_id, '@@task-documents-extract', path=task.physical_path, data={'documents': json.dumps(documents)}) intids_mapping = {} intids = getUtility(IIntIds) for item in data: item = encode_after_json(item) obj = transporter._create_object(target, item) oldintid = IAnnotations(obj)[ORIGINAL_INTID_ANNOTATION_KEY] newintid = intids.getId(obj) intids_mapping[oldintid] = newintid # fire the added Event to automaticly create a inital version notify(ObjectAddedEvent(obj)) return intids_mapping
def copy_documents_from_remote_task(self, task, target, documents=None): transporter = getUtility(ITransporter) data = remote_json_request( task.client_id, '@@task-documents-extract', path=task.physical_path, data={'documents': json.dumps(documents)}) intids_mapping = {} intids = getUtility(IIntIds) for item in data: item = encode_after_json(item) obj = transporter._create_object(target, item) oldintid = IAnnotations(obj)[ORIGINAL_INTID_ANNOTATION_KEY] newintid = intids.getId(obj) intids_mapping[oldintid] = newintid # fire the added Event to automaticly create a inital version notify(ObjectAddedEvent(obj)) return intids_mapping
def __init__(self, data): self.data = encode_after_json(data) self.portal_type = self.data[BASEDATA_KEY]['portal_type'] self.title = self.data[BASEDATA_KEY].pop('title') if not isinstance(self.title, unicode): self.title = self.title.decode('utf-8')
def receive(self, container, request): jsondata = request.get(REQUEST_KEY) data = json.loads(jsondata) data = encode_after_json(data) obj = self._create_object(container, data) return obj