mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 03:17:07 +00:00
feat: add view to end relationship
This commit is contained in:
@@ -44,8 +44,10 @@ class PersonListView(LoginRequiredMixin, ListView):
|
||||
existing_relationships = set()
|
||||
try:
|
||||
existing_relationships = set(
|
||||
self.request.user.person.relationship_targets.values_list(
|
||||
'pk', flat=True))
|
||||
self.request.user.person.relationships_as_source.filter(
|
||||
answer_sets__replaced_timestamp__isnull=True
|
||||
).values_list('target_id', flat=True)
|
||||
)
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
# No linked Person yet
|
||||
@@ -132,9 +134,12 @@ class ProfileView(LoginRequiredMixin, DetailView):
|
||||
|
||||
context['relationship'] = None
|
||||
try:
|
||||
context['relationship'] = models.Relationship.objects.get(
|
||||
relationship = models.Relationship.objects.get(
|
||||
source=self.request.user.person, target=self.object)
|
||||
|
||||
if relationship.is_current:
|
||||
context['relationship'] = relationship
|
||||
|
||||
except models.Relationship.DoesNotExist:
|
||||
pass
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.views.generic import DetailView, RedirectView, UpdateView
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
|
||||
from people import forms, models, permissions
|
||||
|
||||
@@ -91,6 +92,30 @@ class RelationshipUpdateView(permissions.UserIsLinkedPersonMixin, UpdateView):
|
||||
return self.object.get_absolute_url()
|
||||
|
||||
|
||||
class RelationshipEndView(permissions.UserIsLinkedPersonMixin,
|
||||
SingleObjectMixin, RedirectView):
|
||||
"""View for marking a relationship as ended.
|
||||
|
||||
Sets `replaced_timestamp` on all answer sets where this is currently null.
|
||||
"""
|
||||
model = models.Relationship
|
||||
|
||||
def get_test_person(self) -> models.Person:
|
||||
"""Get the person instance which should be used for access control checks."""
|
||||
return self.get_object().source
|
||||
|
||||
def get_redirect_url(self, *args, **kwargs):
|
||||
"""Mark any previous answer sets as replaced."""
|
||||
now_date = timezone.now().date()
|
||||
relationship = self.get_object()
|
||||
|
||||
relationship.answer_sets.filter(
|
||||
replaced_timestamp__isnull=True).update(
|
||||
replaced_timestamp=now_date)
|
||||
|
||||
return relationship.target.get_absolute_url()
|
||||
|
||||
|
||||
class OrganisationRelationshipDetailView(permissions.UserIsLinkedPersonMixin,
|
||||
DetailView):
|
||||
"""View displaying details of an :class:`OrganisationRelationship`."""
|
||||
|
||||
Reference in New Issue
Block a user