def decision_manager(self, request): from sadiki.core.workflow import DECISION, TRANSFER_APROOVED, PERMANENT_DECISION queue_info_dict = self.queue_info() if not queue_info_dict['queue']: # если очереди нет, то оператор не может работать с заявками return render_to_response('distribution/decision_manager.html', queue_info_dict, context_instance=RequestContext(request),) # Сортировка "остальных" садиков, если у ребенка задан location # if current_requestion.location: # from sadiki.templatetags.sadiki_tags import distance_tag # any_sadiks = sorted(any_sadiks, key=lambda x: distance_tag(current_requestion.location, x.location)['distance']) current_requestion = queue_info_dict['current_requestion'] sadiks_info_dict = self.sadiks_for_requestion(current_requestion) any_sadiks = sadiks_info_dict['any_sadiks'] pref_sadiks = sadiks_info_dict['pref_sadiks'] if pref_sadiks: sadiks_query = pref_sadiks is_preferred_sadiks = True else: is_preferred_sadiks = False sadiks_query = any_sadiks sadiks_query.add_related_groups(only_active=True) if request.method == 'POST': form = SelectSadikForm( current_requestion, data=request.POST, is_preferred_sadiks=is_preferred_sadiks, sadiks_query=sadiks_query ) if form.is_valid(): sadik_id = form.cleaned_data.get('sadik', None) sadik = Sadik.objects.get(id=sadik_id) if current_requestion.status == STATUS_ON_DISTRIBUTION: current_requestion.distribute_in_sadik_from_requester(sadik) Logger.objects.create_for_action(DECISION, extra={'user': None, 'obj': current_requestion}) if current_requestion.status == STATUS_ON_TEMP_DISTRIBUTION: current_requestion.distribute_in_sadik_from_tempdistr(sadik) Logger.objects.create_for_action(PERMANENT_DECISION, extra={'user': None, 'obj': current_requestion}) if current_requestion.status == STATUS_ON_TRANSFER_DISTRIBUTION: current_requestion.distribute_in_sadik_from_sadikchange(sadik) Logger.objects.create_for_action(TRANSFER_APROOVED, extra={'user': None, 'obj': current_requestion}) messages.info(request, u''' Для заявки %s был назначен МДОУ %s ''' % (current_requestion.requestion_number, sadik)) return HttpResponseRedirect(reverse('decision_manager')) else: form = SelectSadikForm(current_requestion, is_preferred_sadiks=is_preferred_sadiks, sadiks_query=sadiks_query) queue_info_dict.update({'sadik_list': sadiks_query, 'select_sadik_form': form,}) return render_to_response('distribution/decision_manager.html', queue_info_dict, context_instance=RequestContext(request), )
def decision_manager(self, request): from sadiki.core.workflow import DECISION, PERMANENT_DECISION queue_info_dict = self.queue_info() if not queue_info_dict['queue']: # если очереди нет, то оператор не может работать с заявками return render_to_response( 'distribution/decision_manager.html', queue_info_dict, context_instance=RequestContext(request),) # Сортировка "остальных" садиков, если у ребенка задан location # if current_requestion.location: # from sadiki.templatetags.sadiki_tags import distance_tag # any_sadiks = sorted(any_sadiks, key=lambda x: distance_tag(current_requestion.location, x.location)['distance']) current_requestion = queue_info_dict['current_requestion'] sadiks_info_dict = self.sadiks_for_requestion(current_requestion) any_sadiks = sadiks_info_dict['any_sadiks'] pref_sadiks = sadiks_info_dict['pref_sadiks'] if pref_sadiks: sadiks_query = pref_sadiks is_preferred_sadiks = True else: is_preferred_sadiks = False sadiks_query = any_sadiks sadiks_query.add_related_groups(only_active=True) if request.method == 'POST': form = SelectSadikForm( current_requestion, data=request.POST, is_preferred_sadiks=is_preferred_sadiks, sadiks_query=sadiks_query) if form.is_valid(): sadik_id = form.cleaned_data.get('sadik', None) sadik = Sadik.objects.get(id=sadik_id) # удаляем адрес if current_requestion.location_not_verified: current_requestion.location_properties = None current_requestion.save() if current_requestion.status == STATUS_ON_DISTRIBUTION: current_requestion.distribute_in_sadik_from_requester(sadik) Logger.objects.create_for_action( DECISION, extra={'user': request.user, 'obj': current_requestion}, context_dict={"sadik": current_requestion.distributed_in_vacancy.sadik_group.sadik}) if current_requestion.status == STATUS_ON_TEMP_DISTRIBUTION: current_requestion.distribute_in_sadik_from_tempdistr(sadik) Logger.objects.create_for_action( PERMANENT_DECISION, extra={'user': request.user, 'obj': current_requestion}) messages.info(request, u''' Для заявки %s был назначен %s ''' % (current_requestion.requestion_number, sadik)) return HttpResponseRedirect(reverse('decision_manager')) else: form = SelectSadikForm( current_requestion, is_preferred_sadiks=is_preferred_sadiks, sadiks_query=sadiks_query) queue_info_dict.update({ 'sadik_list': sadiks_query, 'select_sadik_form': form, "sadiks_coords": json.dumps({ sadik.id: {"x": sadik.address.coords.x, "y": sadik.address.coords.y, "s_name": sadik.short_name, "address": sadik.address.text, "phone": sadik.phone, "url": sadik.site, } if sadik.address and sadik.address.coords else (sadik.id, {}) for sadik in sadiks_query}), 'areas_all': current_requestion.areas.all(), 'pref_sadiks': current_requestion.pref_sadiks.all(), }) return render_to_response( 'distribution/decision_manager.html', queue_info_dict, context_instance=RequestContext(request))