Untitled

 avatar
unknown
plain_text
a month ago
2.3 kB
4
Indexable
class CheckEntryPointMiddleware(BaseMiddleware):
    def __call__(self, request):
        #TODO: elenco ordini accessibili in homepage

        # Priorità: get, cookie, sessione e infine ordine dell'utente
        # 0) se c'è un pattern di disattivazione del cookie pulisco querystring, cookie e sessione
        # 1) se c'è' il get lo prendo e lo metto nel cookie e sessione togliendolo dal querystring
        # 2) se c'è solo il cookie lo metto in sessione
        # 3) se non c'è cookie, get o pattern disattivazione esco subito
        # 4) se l'utente ha un ordine?


        if request.user.is_anonymous:
            return self.get_response(request)

        if request.user.is_ingegnere or request.user.is_professionista:
            if order_abbreviation := request.GET.get("order_selected"):
                query_params = request.GET.copy()
                query_params.pop('order_selected', None)
                response = HttpResponseRedirect(
                    request.path + "?" + query_params.urlencode()
                )
                if order_abbreviation == "null":
                    # 0)
                    response.delete_cookie(
                        'order_selected',
                    )
                    # del(request.session["order_selected"])
                    request.session.pop("order_selected", None)
                else:
                    # 1)
                    response.set_cookie(
                        'order_selected',
                        order_abbreviation,
                        httponly=True
                    )
                return response
            else:
                # 2)
                order_abbreviation = request.COOKIES.get("order_selected")
                if not order_abbreviation:
                    # 4)
                    order_abbreviation = request.user.get_order_abbreviation

                try:
                    province = sp_models.Ordine.objects.get(
                        provincia__codice_targa=order_abbreviation
                    )
                    request.session["order_selected"] = province.pk
                except sp_models.Ordine.DoesNotExist:
                    # 3
                    pass

        return self.get_response(request)
Leave a Comment