示例#1
0
 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),
     )
示例#2
0
    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))