Esempio n. 1
0
 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})
Esempio n. 2
0
 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})
Esempio n. 3
0
    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)