def save_action(self): assert self.values[u'result'] == u'action' assert self.values[u'result_action'] in Action.OBLIGEE_ACTION_TYPES assert not self.email or self.values[ u'result_action'] in Action.OBLIGEE_EMAIL_ACTION_TYPES assert self.values[u'result_branch'].can_add_action( self.values[u'result_action']) action = Action(type=self.values[u'result_action']) action.branch = self.values[u'result_branch'] action.email = self.email if self.email else None action.subject = self.email.subject if self.email else u'' action.content = self.email.text if self.email else u'' action.effective_date = (local_date(self.email.processed) if self.email else self.values[u'result_effective_date']) action.file_number = self.values.get(u'result_file_number', u'') action.deadline = self.values.get(u'result_deadline', None) action.disclosure_level = self.values.get(u'result_disclosure_level', None) action.refusal_reason = self.values.get(u'result_refusal_reason', None) action.save() if self.email: for attch in self.email.attachments: attachment = attch.clone(action) attachment.save() else: action.attachment_set = self.values[u'result_attachments'] for obligee in self.values.get(u'result_advanced_to', []): if obligee: sub_branch = Branch( obligee=obligee, inforequest=action.branch.inforequest, advanced_by=action, ) sub_branch.save() sub_action = Action( branch=sub_branch, effective_date=action.effective_date, type=Action.TYPES.ADVANCED_REQUEST, ) sub_action.save() if self.email: self.inforequestemail.type = InforequestEmail.TYPES.OBLIGEE_ACTION self.inforequestemail.save(update_fields=[u'type']) return action