From fef6e9d459ea5bd37fad4b4163d75a9454b84915 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 2 Apr 2020 17:02:27 +0100 Subject: [PATCH] feat: Users can create Activities Resolves #22 --- activities/forms.py | 14 ++++++++++ .../templates/activities/activity/create.html | 27 +++++++++++++++++++ .../templates/activities/activity/list.html | 3 +++ activities/urls.py | 4 +++ activities/views.py | 13 +++++++-- 5 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 activities/forms.py create mode 100644 activities/templates/activities/activity/create.html diff --git a/activities/forms.py b/activities/forms.py new file mode 100644 index 0000000..cf7a22d --- /dev/null +++ b/activities/forms.py @@ -0,0 +1,14 @@ +from django import forms + +from . import models + + +class ActivityForm(forms.ModelForm): + class Meta: + model = models.Activity + fields = [ + 'name', + 'series', + 'type', + 'medium', + ] diff --git a/activities/templates/activities/activity/create.html b/activities/templates/activities/activity/create.html new file mode 100644 index 0000000..b5c55a3 --- /dev/null +++ b/activities/templates/activities/activity/create.html @@ -0,0 +1,27 @@ +{% extends 'base.html' %} + +{% block content %} + + +
+ +
+ {% csrf_token %} + + {% load bootstrap4 %} + {% bootstrap_form form %} + + {% buttons %} + + {% endbuttons %} +
+ +{% endblock %} diff --git a/activities/templates/activities/activity/list.html b/activities/templates/activities/activity/list.html index 041320c..956610d 100644 --- a/activities/templates/activities/activity/list.html +++ b/activities/templates/activities/activity/list.html @@ -9,6 +9,9 @@
+ New Activity + diff --git a/activities/urls.py b/activities/urls.py index c86fbdf..20cc490 100644 --- a/activities/urls.py +++ b/activities/urls.py @@ -14,6 +14,10 @@ urlpatterns = [ views.ActivitySeriesDetailView.as_view(), name='activity-series.detail'), + path('activities/create', + views.ActivityCreateView.as_view(), + name='activity.create'), + path('activities', views.ActivityListView.as_view(), name='activity.list'), diff --git a/activities/views.py b/activities/views.py index 72b2d55..ec9b0e6 100644 --- a/activities/views.py +++ b/activities/views.py @@ -5,12 +5,12 @@ import json from django.contrib.auth.mixins import LoginRequiredMixin from django.http import HttpResponse -from django.views.generic import DetailView, ListView, View +from django.views.generic import CreateView, DetailView, ListView, View from django.views.generic.detail import SingleObjectMixin from people import models as people_models from people import permissions -from . import models +from . import forms, models class ActivitySeriesListView(LoginRequiredMixin, ListView): @@ -29,6 +29,15 @@ class ActivitySeriesDetailView(LoginRequiredMixin, DetailView): model = models.ActivitySeries template_name = 'activities/activity_series/detail.html' context_object_name = 'activity_series' + + +class ActivityCreateView(LoginRequiredMixin, CreateView): + """ + View to create a new instance of :class:`Activity`. + """ + model = models.Activity + template_name = 'activities/activity/create.html' + form_class = forms.ActivityForm class ActivityListView(LoginRequiredMixin, ListView):