From afae0fd943490303466b8d99d18b1fd803ea9718 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 1 Feb 2021 15:47:51 +0000 Subject: [PATCH] feat: add relationship buttons on person list Resolves #63 --- people/templates/people/person/list.html | 13 +++++++++++++ people/views/person.py | 16 ++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/people/templates/people/person/list.html b/people/templates/people/person/list.html index c2bd1ec..bca5628 100644 --- a/people/templates/people/person/list.html +++ b/people/templates/people/person/list.html @@ -28,6 +28,19 @@ Profile + + {% if person.pk in existing_relationships %} + Update Relationship + + + {% else %} + New Relationship + + {% endif %} diff --git a/people/views/person.py b/people/views/person.py index 86f394f..506bcc8 100644 --- a/people/views/person.py +++ b/people/views/person.py @@ -30,12 +30,20 @@ class PersonCreateView(LoginRequiredMixin, CreateView): class PersonListView(LoginRequiredMixin, ListView): - """ - View displaying a list of :class:`Person` objects - searchable. - """ + """View displaying a list of :class:`Person` objects - searchable.""" model = models.Person template_name = 'people/person/list.html' + def get_context_data(self, + **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + context = super().get_context_data(**kwargs) + + context['existing_relationships'] = set( + self.request.user.person.relationship_targets.values_list( + 'pk', flat=True)) + + return context + class ProfileView(LoginRequiredMixin, DetailView): """ @@ -45,7 +53,7 @@ class ProfileView(LoginRequiredMixin, DetailView): def get_template_names(self) -> typing.List[str]: """Return template depending on level of access.""" - if (self.object.user == self.request.user): # or self.request.user.is_superuser: + if (self.object.user == self.request.user) or self.request.user.is_superuser: return ['people/person/detail_full.html'] return ['people/person/detail_partial.html']