Пример #1
0
def add_requestions_data(requestions, request):
    u""" Requestion, HttpRequest -> List of Dict

    Функция для сбора информации о заявках для дальнейшей конвертации в json.
    Используется в API вызовах для экспорта зачисленных заявок в ЭС.
    Возвращает список словарей.
    """
    requestion_ct = ContentType.objects.get_for_model(Requestion)
    req_list = []
    for requestion in requestions:
        birth_cert = EvidienceDocument.objects.filter(
            template__destination=REQUESTION_IDENTITY,
            content_type=requestion_ct, object_id=requestion.id)[0]
        url = request.build_absolute_uri(reverse(
            'requestion_logs', args=(requestion.id, )))
        requestion_data = ({
            'requestion_number': requestion.requestion_number,
            'requestion_id': requestion.id,
            'distribution_datetime': dttools.datetime_to_stamp(
                requestion.status_change_datetime),
            'name': requestion.name,
            'sex': requestion.sex,
            'status': requestion.status,
            'queue_profile_url': url,
            'birth_date': dttools.date_to_stamp(requestion.birth_date),
            'birth_cert': birth_cert.document_number})
        if USE_PDATA:
            requestion_data.update(get_personal_data(requestion))
        req_list.append(requestion_data)

    return req_list
Пример #2
0
def get_distribution(request):
    if request.method == 'GET':
        raise Http404
    data = json.loads(request.body)
    signed_data = data.get('signed_data')
    if not (signed_data and gpgtools.check_data_sign(
            {'data': data.get('id'), 'sign': signed_data})):
        raise Http404
    _id = data.get('id')
    if not _id:
        raise Http404
    distribution_qs = Distribution.objects.filter(pk=_id)
    if len(distribution_qs) != 1:
        return HttpResponse(json.dumps([0, ]), content_type='text/json')
    dist = distribution_qs[0]
    results = []
    sadiks_ids = Requestion.objects.filter(
        distributed_in_vacancy__distribution=dist).distinct().values_list(
            'distributed_in_vacancy__sadik_group__sadik', flat=True)
    options = data.get('options')
    for sadik in Sadik.objects.filter(
            id__in=sadiks_ids).distinct().order_by('number'):
        requestions = Requestion.objects.filter(
            distributed_in_vacancy__distribution=dist,
            distributed_in_vacancy__sadik_group__sadik=sadik,
            status__in=[
                STATUS_DECISION, STATUS_DISTRIBUTED, STATUS_DISTRIBUTED_FROM_ES
            ])
        if options.get('only_decision'):
            requestions = requestions.filter(status=STATUS_DECISION)
        if requestions:
            req_list = add_requestions_data(requestions, request)
            kg_dict = {'kindergtn': sadik.id, 'requestions': req_list}
            results.append(kg_dict)

    data = [{
        'id': dist.id,
        'start': dttools.date_to_stamp(dist.init_datetime),
        'end': dttools.date_to_stamp(dist.end_datetime),
        'year': dist.year.year,
        'results': results,
    }]
    return HttpResponse(gpgtools.get_signed_json(data),
                        content_type='text/json')