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
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')