예제 #1
0
def before_distributed_requester(sender, **kwargs):
    u"""
    Проверки на допустимость возврата в очередь из статуса "Зачислен" или
    "Зачислен через ЭС"
    """
    requestion = kwargs['requestion']

    today = datetime.date.today()
    max_age_allowed = today.replace(year=today.year - settings.MAX_CHILD_AGE)
    # проверяем, что возраст ребенка не превышает максимально разрешенный
    if requestion.birth_date < max_age_allowed:
        raise TransitionNotAllowed(
            u"Невозможно выполнить операцию, так как возраст, "
            u"указанный в заявке, превышает максимально допустимый")
    birth_cert = requestion.get_birth_cert()
    # проверяем, что у заявки есть свидетельство и что оно подтверждено
    if not (birth_cert and birth_cert.confirmed):
        raise TransitionNotAllowed(
            u"Невозможно проверить статус свидетельства о рождении")
    # пробуем найти ребенка с таким свидтельством в ЭлектроСаде
    try:
        child_data = get_child_from_es(birth_cert.document_number)
    except Exception:
        raise TransitionNotAllowed(
            u"Невозможно проверить статус ребенка в Электросаде, "
            u"попробйте позже")
    # если импортировать при инициализации, возникает кольцо
    from sadiki.api.views import STATUS_OK
    from sadiki.api.utils import is_active_child_status
    if child_data['status_code'] == STATUS_OK:
        if is_active_child_status(child_data['data']['status']):
            raise TransitionNotAllowed(
                u"Ребенок с таким свидетельством о рождении числится активным "
                u"в Электросаде")
예제 #2
0
def active_child_exist(birth_cert):
    u"""
    Проверяем, если ли в ЭС активные дети с заданным свидетельством о рождении
    """
    # во время тестирования api ЭС недоступно, возвращаем "dummy" объект
    if settings.TEST_MODE:
        return False
    try:
        child_data = get_child_from_es(birth_cert)
    except Exception:
        from sadiki.core.exceptions import TransitionNotAllowed
        raise TransitionNotAllowed(
            u"Ошибка при проверке номера документа в Электросаде, "
            u"повторите попытку позднее")
    from sadiki.api.views import STATUS_OK
    from sadiki.api.utils import is_active_child_status
    if child_data['status_code'] == STATUS_OK and 'status' in child_data['data']:
        if is_active_child_status(child_data['data']['status']):
            return True
    return False