Add mixins to check for partner/client profiles
This commit is contained in:
parent
17b9ca72c0
commit
e2d32e0903
4 changed files with 30 additions and 20 deletions
9
clients/mixins.py
Normal file
9
clients/mixins.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
from localauth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
|
||||
class ClientProfileRequiredMixin(LoginRequiredMixin, UserPassesTestMixin):
|
||||
def test_func(self):
|
||||
try:
|
||||
assert self.request.user.clientprofile
|
||||
return True
|
||||
except:
|
||||
return False
|
|
@ -3,6 +3,7 @@ from django.shortcuts import redirect
|
|||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
|
||||
class SuperUserRequiredMixin:
|
||||
"""
|
||||
|
@ -19,17 +20,3 @@ class SuperUserRequiredMixin:
|
|||
'requested operation.')
|
||||
return redirect(settings.LOGIN_URL)
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class LoginRequiredMixin:
|
||||
"""
|
||||
View mixin which verifies that the user has authenticated.
|
||||
|
||||
NOTE:
|
||||
This should be the left-most mixin of a view.
|
||||
"""
|
||||
|
||||
@method_decorator(login_required)
|
||||
def dispatch(self, *args, **kwargs):
|
||||
messages.info(self.request, "Um diese Seite anzuzeigen, musst du dich einloggen.")
|
||||
return super().dispatch(*args, **kwargs)
|
9
partners/mixins.py
Normal file
9
partners/mixins.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
from localauth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
|
||||
class PartnerProfileRequiredMixin(LoginRequiredMixin, UserPassesTestMixin):
|
||||
def test_func(self):
|
||||
try:
|
||||
assert self.request.user.partnerprofile
|
||||
return True
|
||||
except:
|
||||
return False
|
|
@ -4,7 +4,8 @@ from django.http import HttpResponseRedirect
|
|||
from django.db.models import F
|
||||
from django.shortcuts import get_list_or_404
|
||||
|
||||
from .models import PartnerProfile, Establishment
|
||||
from .models import PartnerProfile, Establishment,
|
||||
from .mixins import PartnerProfileRequiredMixin
|
||||
|
||||
from auction.models import Inquiry, Offer
|
||||
from public.mixins import InConstructionMixin
|
||||
|
@ -49,7 +50,7 @@ class PartnerRegistrationView(InConstructionMixin, LoginRequiredMixin, CreateVie
|
|||
except:
|
||||
return {}
|
||||
|
||||
class PartnerProfileView(LoginRequiredMixin, UpdateView):
|
||||
class PartnerProfileView(PartnerProfileRequiredMixin, UpdateView):
|
||||
model = PartnerProfile
|
||||
exclude = ["user"]
|
||||
template_name = "partners/profile.html"
|
||||
|
@ -61,7 +62,7 @@ class PartnerProfileView(LoginRequiredMixin, UpdateView):
|
|||
def get_object(self, queryset=None):
|
||||
return self.request.user.partnerprofile
|
||||
|
||||
class BiddingListView(LoginRequiredMixin, ListView):
|
||||
class BiddingListView(PartnerProfileRequiredMixin, ListView):
|
||||
model = Inquiry
|
||||
template_name = "partners/bidding_list.html"
|
||||
|
||||
|
@ -81,16 +82,20 @@ class BiddingListView(LoginRequiredMixin, ListView):
|
|||
def get_queryset(self):
|
||||
return Inquiry.objects.filter(active=True).distance(self.establishment.coords).filter(distance__lte=F("destination_radius"))
|
||||
|
||||
class OffersListView(LoginRequiredMixin, ListView):
|
||||
class OffersListView(PartnerProfileRequiredMixin, ListView):
|
||||
model = Offer
|
||||
template_name = "partners/offer_list.html"
|
||||
|
||||
def get_queryset(self):
|
||||
return Offer.objects.filter(establishment__in=self.request.user.partnerprofile.establishment_set.all())
|
||||
|
||||
class EstablishmentsListView(LoginRequiredMixin, ListView):
|
||||
class EstablishmentsListView(PartnerProfileRequiredMixin, ListView):
|
||||
model = Establishment
|
||||
template_name = "partners/establishment_list.html"
|
||||
|
||||
def get_queryset(self):
|
||||
return self.request.user.partnerprofile.establishment_set
|
||||
return self.request.user.partnerprofile.establishment_set
|
||||
|
||||
class EstablishmentRequestView(PartnerProfileRequiredMixin, ListView):
|
||||
model = Establishment
|
||||
template_name = "partners/establishment_edit.html"
|
Loading…
Reference in a new issue