Add assigned_to field to ServiceRequest. Ensure a administrator group exists. Close #66.
This commit is contained in:
parent
314416740f
commit
78f36c1502
4 changed files with 58 additions and 2 deletions
|
@ -10,8 +10,9 @@ from services.models import ServiceRequest
|
||||||
class ServiceRequestAdmin(admin.ModelAdmin):
|
class ServiceRequestAdmin(admin.ModelAdmin):
|
||||||
"""Admin for the ServiceRequest model."""
|
"""Admin for the ServiceRequest model."""
|
||||||
|
|
||||||
list_display = ("member", "service", "request", "status")
|
list_display = ("created", "member", "service", "request", "status", "assigned_to")
|
||||||
list_filter = ("request", "status")
|
list_filter = ("request", "status", "assigned_to")
|
||||||
|
sortable_by = ("created",)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ServiceAccess)
|
@admin.register(ServiceAccess)
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
"""Config for the services app."""
|
"""Config for the services app."""
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
|
from django.apps import apps
|
||||||
|
from django.db.models.signals import post_migrate
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_administrator_group(sender: Any, **kwargs: Any) -> None: # noqa: ANN401
|
||||||
|
"""Ensure that a group called "administrators" exists."""
|
||||||
|
group_model = apps.get_model("auth.Group")
|
||||||
|
group_model.objects.get_or_create(name="administrators")
|
||||||
|
|
||||||
|
|
||||||
class ServicesConfig(AppConfig):
|
class ServicesConfig(AppConfig):
|
||||||
|
@ -8,3 +18,7 @@ class ServicesConfig(AppConfig):
|
||||||
|
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
default_auto_field = "django.db.models.BigAutoField"
|
||||||
name = "services"
|
name = "services"
|
||||||
|
|
||||||
|
def ready(self) -> None:
|
||||||
|
"""Connect signals when apps are ready."""
|
||||||
|
post_migrate.connect(ensure_administrator_group, sender=self)
|
||||||
|
|
29
src/services/migrations/0004_servicerequest_assigned_to.py
Normal file
29
src/services/migrations/0004_servicerequest_assigned_to.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# Generated by Django 5.1.4 on 2025-02-02 13:24
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("membership", "0014_alter_membership_options"),
|
||||||
|
("services", "0003_alter_serviceaccess_unique_together_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="servicerequest",
|
||||||
|
name="assigned_to",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
help_text="the admin team member assigned to this request",
|
||||||
|
limit_choices_to=models.Q(("groups__name", "administrators")),
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="assigned_service_requests",
|
||||||
|
to="membership.member",
|
||||||
|
verbose_name="assigned to",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -4,6 +4,7 @@ import typing
|
||||||
|
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.db.models import Q
|
||||||
from django.db.models import TextChoices
|
from django.db.models import TextChoices
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
@ -80,6 +81,17 @@ class ServiceRequest(CreatedModifiedAbstract):
|
||||||
blank=True, help_text=_("Readable by member: Notes from the admin / status updates, resolutions etc.")
|
blank=True, help_text=_("Readable by member: Notes from the admin / status updates, resolutions etc.")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
assigned_to = models.ForeignKey(
|
||||||
|
"membership.Member",
|
||||||
|
verbose_name=_("assigned to"),
|
||||||
|
help_text=_("the admin team member assigned to this request"),
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
null=True,
|
||||||
|
blank=True,
|
||||||
|
related_name="assigned_service_requests",
|
||||||
|
limit_choices_to=Q(groups__name="administrators"),
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("service request")
|
verbose_name = _("service request")
|
||||||
verbose_name_plural = _("service requests")
|
verbose_name_plural = _("service requests")
|
||||||
|
|
Loading…
Add table
Reference in a new issue