feat(people): Add view to create Person

User profile nav directs to create new Person for user
if there is not one currently associated

resolves issue #4
This commit is contained in:
James Graham
2020-02-19 08:17:39 +00:00
parent e530ddc8ec
commit d57c4769ae
8 changed files with 140 additions and 6 deletions

View File

@@ -2,9 +2,26 @@
Views for displaying or manipulating models in the 'people' app.
"""
from django.views.generic import DetailView, ListView
from django.views.generic import CreateView, DetailView, ListView
from . import models
from . import forms, models
class PersonCreateView(CreateView):
"""
View to create a new instance of :class:`Person`.
If 'user' is passed as a URL parameter - link the new person to the current user.
"""
model = models.Person
template_name = 'people/person/create.html'
form_class = forms.PersonForm
def form_valid(self, form):
if 'user' in self.request.GET:
form.instance.user = self.request.user
return super().form_valid(form)
class PersonListView(ListView):
@@ -22,6 +39,18 @@ class ProfileView(DetailView):
model = models.Person
template_name = 'people/person/detail.html'
def get_object(self, queryset=None) -> models.Person:
"""
Get the :class:`Person` object to be represented by this page.
If not determined from url get current user.
"""
try:
return super().get_object(queryset)
except AttributeError:
return self.request.user.person
class RelationshipDetailView(DetailView):
"""