Skip to content

Commit

Permalink
Added subjects and tags
Browse files Browse the repository at this point in the history
  • Loading branch information
remyvdwereld committed May 14, 2024
1 parent 0e62764 commit b7f7078
Show file tree
Hide file tree
Showing 7 changed files with 180 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Generated by Django 3.2.13 on 2024-05-14 10:04

import django.contrib.postgres.fields
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("itinerary", "0069_itinerarysettings_districts"),
]

operations = [
migrations.AddField(
model_name="itinerarysettings",
name="subjects",
field=django.contrib.postgres.fields.ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
size=None,
),
),
migrations.AddField(
model_name="itinerarysettings",
name="tags",
field=django.contrib.postgres.fields.ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
size=None,
),
),
]
12 changes: 12 additions & 0 deletions app/apps/itinerary/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,16 @@ class ItinerarySettings(models.Model):
blank=True,
null=True,
)
subjects = ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
)
tags = ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
)
districts = ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
Expand Down Expand Up @@ -261,6 +271,8 @@ def get_cases_query_params(self):
"district": self.districts,
"project": self.project_ids,
"priority": self.priorities,
"subject": self.subjects,
"tag": self.tags,
}
)
return cases_query_params
Expand Down
2 changes: 2 additions & 0 deletions app/apps/planner/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ class DaySettingsInline(admin.TabularInline):
"max_use_limit",
"start_time",
"project_ids",
"subjects",
"tags",
)
},
),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Generated by Django 3.2.13 on 2024-05-14 10:04

import django.contrib.postgres.fields
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("planner", "0040_daysettings_districts"),
]

operations = [
migrations.AddField(
model_name="daysettings",
name="subjects",
field=django.contrib.postgres.fields.ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
size=None,
),
),
migrations.AddField(
model_name="daysettings",
name="tags",
field=django.contrib.postgres.fields.ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
size=None,
),
),
]
36 changes: 36 additions & 0 deletions app/apps/planner/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,30 @@ def fetch_team_reasons(self, auth_header=None):

return response.json().get("results", [])

def fetch_subjects(self, auth_header=None):
url = f"{settings.ZAKEN_API_URL}/themes/{self.zaken_team_id}/subjects/"

response = requests.get(
url,
timeout=5,
headers=get_headers(auth_header),
)
response.raise_for_status()

return response.json().get("results", [])

def fetch_tags(self, auth_header=None):
url = f"{settings.ZAKEN_API_URL}/themes/{self.zaken_team_id}/tags/"

response = requests.get(
url,
timeout=5,
headers=get_headers(auth_header),
)
response.raise_for_status()

return response.json().get("results", [])

class Meta:
verbose_name_plural = "Team settings"
ordering = ["name"]
Expand Down Expand Up @@ -231,6 +255,16 @@ class DaySettings(models.Model):
blank=True,
null=True,
)
subjects = ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
)
tags = ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
null=True,
)
districts = ArrayField(
base_field=models.PositiveSmallIntegerField(),
blank=True,
Expand Down Expand Up @@ -278,6 +312,8 @@ def get_cases_query_params(self):
"schedule_week_segment": self.week_segments,
"project": self.project_ids,
"reason": self.reasons,
"subject": self.subjects,
"tag": self.tags,
"district": self.districts,
"priority": self.priorities,
}
Expand Down
16 changes: 16 additions & 0 deletions app/apps/planner/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,18 @@ class CaseProjectSerializer(serializers.Serializer):
team = serializers.IntegerField(read_only=True)


class CaseSubjectSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(read_only=True)
team = serializers.IntegerField(read_only=True)


class CaseTagSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(read_only=True)
team = serializers.IntegerField(read_only=True)


class CaseStateTypeSerializer(CaseReasonSerializer):
pass

Expand Down Expand Up @@ -229,6 +241,8 @@ class Meta:
"reasons",
"state_types",
"project_ids",
"subjects",
"tags",
"districts",
"housing_corporations",
"housing_corporation_combiteam",
Expand Down Expand Up @@ -261,6 +275,8 @@ class Meta:
"reasons",
"state_types",
"project_ids",
"subjects",
"tags",
"districts",
"housing_corporations",
"housing_corporation_combiteam",
Expand Down
46 changes: 46 additions & 0 deletions app/apps/planner/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
CaseProjectSerializer,
CaseReasonSerializer,
CaseStateTypeSerializer,
CaseSubjectSerializer,
CaseTagSerializer,
DaySettingsSerializer,
NewDaySettingsSerializer,
TeamScheduleTypesSerializer,
Expand Down Expand Up @@ -124,6 +126,50 @@ def projects(self, request, pk):

return Response(data)

@extend_schema(
description="Gets the subjects associated with the requested team",
responses={status.HTTP_200_OK: CaseSubjectSerializer(many=True)},
)
@action(
detail=True,
url_path="subjects",
methods=["get"],
)
def subjects(self, request, pk):
team_settings = self.get_object()
data = []

serializer = CaseSubjectSerializer(
team_settings.fetch_subjects(
get_keycloak_auth_header_from_request(request)
),
many=True,
)
data = serializer.data

return Response(data)

@extend_schema(
description="Gets the tags associated with the requested team",
responses={status.HTTP_200_OK: CaseTagSerializer(many=True)},
)
@action(
detail=True,
url_path="tags",
methods=["get"],
)
def tags(self, request, pk):
team_settings = self.get_object()
data = []

serializer = CaseTagSerializer(
team_settings.fetch_tags(get_keycloak_auth_header_from_request(request)),
many=True,
)
data = serializer.data

return Response(data)


@extend_schema(
parameters=[
Expand Down

0 comments on commit b7f7078

Please sign in to comment.