Exemplo n.º 1
0
def after_restore_requestion(sender, **kwargs):
    transition = kwargs['transition']
    request = kwargs['request']
    requestion = kwargs['requestion']
    form = kwargs['form']

    # проверяем наличие заявок с таким же подтвержденным документом
    confirmed_requestions = requestion.other_requestions_with_ident_document()
    if confirmed_requestions:
        req_list = ";".join([unicode(req) for req in confirmed_requestions])
        err_msg = u"Такой же идентифицирующий документ уже подтвежден у " \
                  u"следующих заявок: {} операция невозможна".format(req_list)
        raise TransitionNotAllowed(err_msg)
    # проверяем статус ребенка в ЭС
    if active_child_exist(requestion.get_birth_cert().document_number):
        raise TransitionNotAllowed(
            u"Ребенок с таким номером свидетельства о рождении посещает ДОУ")

    other_requestions_with_document = requestion.set_ident_document_authentic()
    messages.success(request, u"Заявка {} была возвращена в очередь.".format(
        requestion.requestion_number))
    messages.success(request, u'Следующие заявки имели такой же идентифицирующий документ и были сняты с учета: %s' %
        ";".join([unicode(other_requestion) for other_requestion in other_requestions_with_document]))
    Logger.objects.create_for_action(
        transition.index,
        context_dict={'other_requestions': other_requestions_with_document},
        extra={'user': request.user, 'obj': requestion},
        reason=form.cleaned_data.get('reason'))
Exemplo n.º 2
0
 def clean(self):
     cleaned_data = self.cleaned_data
     document_number = self.cleaned_data.get('document_number')
     template = self.cleaned_data.get('template')
     # проверяем, что номер документа соответствует шаблону
     if document_number and template and not re.match(
         template.regex, document_number):
         self._errors["document_number"] = self.error_class([u'Неверный формат'])
         del cleaned_data['document_number']
         del cleaned_data['template']
     # проверяем на наличие подтвержденных заявок с таким же документом
     else:
         documents = EvidienceDocument.objects.filter(
             document_number=document_number, confirmed=True,
             template=template)
         if documents:
             requestions_ids = documents.values_list('object_id', flat=True)
             # заявки в статусе "Выпущен из ДОУ" могут содержать
             # повторяющиеся номера документов
             requestions = Requestion.objects.filter(
                 id__in=requestions_ids).exclude(status=STATUS_KG_LEAVE)
             if requestions.exists():
                 self._errors["document_number"] = self.error_class(
                     [u"Документ с таким номером уже занят"])
                 del cleaned_data['document_number']
                 # возвращаем значение, чтобы не выполнять ненужных проверок
                 # на наличие ребенка в ЭС
                 return cleaned_data
         # проверяем по номеру документа наличие и статус ребенка в ЭС
         if active_child_exist(document_number):
             self._errors["document_number"] = self.error_class(
                 [u"Ребенок с таким документом уже посещает ДОУ"])
             del cleaned_data['document_number']
     return cleaned_data