Skip to content

Commit

Permalink
added facility system filtering by logged-in user
Browse files Browse the repository at this point in the history
  • Loading branch information
saladgg committed Aug 26, 2021
1 parent 95900b2 commit a39794e
Show file tree
Hide file tree
Showing 5 changed files with 26,527 additions and 11,181 deletions.
8 changes: 7 additions & 1 deletion fahari/common/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,16 @@ def form_valid(self, form):
and getattr(user, "organisation", None) is not None
):
instance.organisation = user.organisation

return super().form_valid(form)


class FacilitySystemFormMixin(ModelFormMixin, LoginRequiredMixin, View):
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["request"] = self.request
return kwargs


class BaseView(ModelViewSet):
"""Base class for most application views.
Expand Down
12 changes: 12 additions & 0 deletions fahari/ops/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from fahari.common.dashboard import get_fahari_facilities_queryset
from fahari.common.forms import BaseModelForm
from fahari.common.models import FacilityUser

from .models import (
ActivityLog,
Expand Down Expand Up @@ -49,7 +50,18 @@ class FacilitySystemTicketForm(BaseModelForm):
)

def __init__(self, *args, **kwargs):
request = kwargs.pop("request", None)
super().__init__(*args, **kwargs)
if request is not None and hasattr(request, "user"):
user_facility_ids = FacilityUser.objects.filter(user_id=request.user.id).values_list(
"facility_id", flat=True
)
user_systemfacilities = FacilitySystem.objects.filter(
facility_id__in=user_facility_ids
)
self.fields["facility_system"].queryset = user_systemfacilities
else:
self.fields["facility_system"].queryset = FacilitySystem.objects.none()

self.helper.form_id = "facility_system_ticket_form"

Expand Down
16 changes: 13 additions & 3 deletions fahari/ops/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import random
from datetime import date

from django.conf import settings
from django.test import TestCase
from django.urls import reverse
from django.utils import timezone
Expand All @@ -12,6 +13,7 @@
from fahari.common.constants import WHITELIST_COUNTIES
from fahari.common.models import Facility, System
from fahari.common.tests.test_api import LoggedInMixin
from fahari.ops.forms import FacilitySystemTicketForm
from fahari.ops.models import (
ActivityLog,
Commodity,
Expand Down Expand Up @@ -90,6 +92,7 @@ def test_put_system(self):

class FacilitySystemFormTest(LoggedInMixin, TestCase):
def setUp(self):
self.user = baker.make(settings.AUTH_USER_MODEL, email=fake.email())
self.facility = baker.make(
Facility,
is_fahari_facility=True,
Expand All @@ -100,6 +103,13 @@ def setUp(self):
self.system = baker.make(System, organisation=self.global_organisation)
super().setUp()

def test_facilitysystem_form_init(self):
baker.make(FacilitySystem, organisation=self.global_organisation)
form = FacilitySystemTicketForm()
queryset = form.fields["facility_system"].queryset
assert FacilitySystem.objects.count() > 0
assert queryset.count() == 0

def test_create(self):
data = {
"facility": self.facility.pk,
Expand Down Expand Up @@ -251,7 +261,7 @@ def test_create(self):
response = self.client.post(reverse("ops:ticket_create"), data=data)
self.assertEqual(
response.status_code,
302,
200,
)

def test_update(self):
Expand All @@ -273,10 +283,10 @@ def test_update(self):
response = self.client.post(
reverse("ops:ticket_update", kwargs={"pk": instance.pk}), data=data
)
print(response.content)

self.assertEqual(
response.status_code,
302,
200,
)

def test_delete(self):
Expand Down
12 changes: 8 additions & 4 deletions fahari/ops/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from django.views.generic.detail import SingleObjectMixin, SingleObjectTemplateResponseMixin
from django.views.generic.edit import FormMixin, ProcessFormView

from fahari.common.views import ApprovedMixin, BaseFormMixin, BaseView
from fahari.common.views import ApprovedMixin, BaseFormMixin, BaseView, FacilitySystemFormMixin

from .filters import (
ActivityLogFilter,
Expand Down Expand Up @@ -75,6 +75,7 @@ class FacilitySystemsView(


class FacilitySystemCreateView(FacilitySystemContextMixin, BaseFormMixin, CreateView):

form_class = FacilitySystemForm
success_url = reverse_lazy("ops:versions")
model = FacilitySystem
Expand Down Expand Up @@ -126,14 +127,17 @@ class FacilitySystemTicketsView(
permission_required = "ops.view_facilitysystemticket"


class FacilitySystemTicketCreateView(FacilitySystemTicketContextMixin, BaseFormMixin, CreateView):

class FacilitySystemTicketCreateView(
FacilitySystemTicketContextMixin, BaseFormMixin, FacilitySystemFormMixin, CreateView
):
form_class = FacilitySystemTicketForm
success_url = reverse_lazy("ops:tickets")
model = FacilitySystemTicket


class FacilitySystemTicketUpdateView(FacilitySystemTicketContextMixin, UpdateView, BaseFormMixin):
class FacilitySystemTicketUpdateView(
FacilitySystemTicketContextMixin, BaseFormMixin, FacilitySystemFormMixin, UpdateView
):
form_class = FacilitySystemTicketForm
model = FacilitySystemTicket
success_url = reverse_lazy("ops:tickets")
Expand Down
Loading

0 comments on commit a39794e

Please sign in to comment.