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']