def post(self, request, requestion): form = RequestionIdentityDocumentForm(instance=requestion, data=request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(self.redirect_to) return self.render_to_response({'form': form, 'requestion': requestion, 'redirect_to': self.redirect_to})
def post(self, request, requestion): form = RequestionIdentityDocumentForm(instance=requestion, data=request.POST) if form.is_valid(): form.save() # после указания документа можно удалить временный requestion.evidience_documents().filter(fake=True).delete() messages.info(request, u'Для заявки был указан идентифицирующий документ.') Logger.objects.create_for_action( CHANGE_DOCUMENTS_BY_OPERATOR, context_dict={'requestion_documents': requestion.evidience_documents().filter( template__destination=REQUESTION_IDENTITY)}, extra={'user': request.user, 'obj': requestion}) return HttpResponseRedirect(self.redirect_to) return self.render_to_response({'form': form, 'requestion': requestion, 'redirect_to': self.redirect_to})
def post(self, request, *args, **kwargs): # Начальные значения status_code = STATUS_DATA_ERROR err_msg = None data = kwargs['data'] dst_status = int(data['dst_status']) requestion = Requestion.objects.get(pk=data['requestion_id']) # параноидальная проверка целостности данных if requestion.requestion_number != data['requestion_number']: err_msg = u"Ошибка проверки данных заявки: номер заявки отличается"\ u"от указанного в профиле" result = {'status_code': STATUS_DATA_ERROR, 'err_msg': { '__all__': err_msg, }} return self.render_to_response(result) if (requestion.status in [STATUS_DISTRIBUTED, STATUS_DISTRIBUTED_FROM_ES] and dst_status != STATUS_KG_LEAVE): err_msg = u"Заявка зачислена в Электроочереди, действие невозможно" if dst_status == STATUS_DISTRIBUTED_FROM_ES: err_msg = u"Заявка уже зачислена в Электроочереди" result = {'status_code': STATUS_ALREADY_DISTRIBUTED, 'err_msg': {'__all__': err_msg}} return self.render_to_response(result) transition_indexes = workflow.available_transitions( src=requestion.status, dst=dst_status) # TODO: Проверка на корректность ДОУ? # sadik = requestion.distributed_in_vacancy.sadik_group.sadik # Если в форме передается свидетельство о рождении и текущий # документ у заявки - временный, меняем if 'document_number' in data and requestion.evidience_documents()[0].fake: form_data = { 'template': data['template'], 'document_number': data['document_number'], } form = RequestionIdentityDocumentForm( instance=requestion, data=form_data) if form.is_valid(): form.save() requestion.evidience_documents().filter(fake=True).delete() else: err_msg = {} for error in form.errors: err_msg[error] = form.errors[error] result = {'status_code': status_code, 'err_msg': err_msg} return self.render_to_response(result) if transition_indexes: transition = workflow.get_transition_by_index(transition_indexes[0]) if transition.index in INNER_TRANSITIONS: if Requestion.objects.filter( id=requestion.id, status=transition.src).update( status=transition.dst): Logger.objects.create_for_action( transition.index, context_dict=data, extra={'obj': requestion}) status_code = STATUS_OK else: status_code = STATUS_DATA_ERROR err_msg = u"Проверьте статус заявки в Электроочереди" else: form = self.form(requestion=requestion, data={'reason': data.get('reason'), 'transition': transition.index, 'confirm': "yes"}, initial={'transition': transition.index}) if form.is_valid(): pre_status_change.send( sender=Requestion, request=request, requestion=requestion, transition=transition, form=form) requestion.status = transition.dst requestion.save() post_status_change.send( sender=Requestion, request=request, requestion=requestion, transition=transition, form=form) status_code = STATUS_OK else: err_msg = {} for error in form.errors: err_msg[error] = form.errors[error] else: err_msg = { '__all__': u"Невозможно изменить статус заявки в электроочереди" } result = {'status_code': status_code, 'err_msg': err_msg} return self.render_to_response(result)