From 0d5d04902eefac98f71ada1e12cc2c27a7fc922f Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 19 Feb 2020 13:34:59 +0000 Subject: [PATCH] feat(activities): Add read views for ActivitySeries --- .../0003_rename_activity_series_fk.py | 19 +++++++ activities/models.py | 3 +- .../activities/activity_series/detail.html | 50 +++++++++++++++++++ .../activities/activity_series/list.html | 37 ++++++++++++++ activities/urls.py | 8 +++ activities/views.py | 18 +++++++ breccia_mapper/templates/base.html | 8 +++ 7 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 activities/migrations/0003_rename_activity_series_fk.py create mode 100644 activities/templates/activities/activity_series/detail.html create mode 100644 activities/templates/activities/activity_series/list.html diff --git a/activities/migrations/0003_rename_activity_series_fk.py b/activities/migrations/0003_rename_activity_series_fk.py new file mode 100644 index 0000000..c4e62d2 --- /dev/null +++ b/activities/migrations/0003_rename_activity_series_fk.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.10 on 2020-02-19 13:32 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('activities', '0002_activity_type_medium'), + ] + + operations = [ + migrations.AlterField( + model_name='activity', + name='series', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='activities', to='activities.ActivitySeries'), + ), + ] diff --git a/activities/models.py b/activities/models.py index 286dc06..a5015eb 100644 --- a/activities/models.py +++ b/activities/models.py @@ -68,7 +68,8 @@ class Activity(models.Model): blank=False, null=False) #: Optional :class:`ActivitySeries` to which this activity belongs - series = models.ForeignKey(ActivitySeries, related_name='instances', + series = models.ForeignKey(ActivitySeries, + related_name='activities', on_delete=models.PROTECT, blank=True, null=True) diff --git a/activities/templates/activities/activity_series/detail.html b/activities/templates/activities/activity_series/detail.html new file mode 100644 index 0000000..bc8b63a --- /dev/null +++ b/activities/templates/activities/activity_series/detail.html @@ -0,0 +1,50 @@ +{% extends 'base.html' %} + +{% block content %} + + +
+ +
+
Type
+
{{ activity_series.type }}
+ +
Medium
+
{{ activity_series.medium }}
+
+ +
+ + + + + + + + + + {% for activity in activity_series.activities.all %} + + + + + + {% empty %} + + + + {% endfor %} + +
Name
{{ activity }} + Details +
No records
+ +{% endblock %} diff --git a/activities/templates/activities/activity_series/list.html b/activities/templates/activities/activity_series/list.html new file mode 100644 index 0000000..f31b178 --- /dev/null +++ b/activities/templates/activities/activity_series/list.html @@ -0,0 +1,37 @@ +{% extends 'base.html' %} + +{% block content %} + + +
+ + + + + + + + + + {% for activity_series in activity_series_list.all %} + + + + + + {% empty %} + + + + {% endfor %} + +
Name
{{ activity_series }} + Details +
No records
+ +{% endblock %} diff --git a/activities/urls.py b/activities/urls.py index 168516a..21039d7 100644 --- a/activities/urls.py +++ b/activities/urls.py @@ -6,6 +6,14 @@ from . import views app_name = 'activities' urlpatterns = [ + path('activity-series', + views.ActivitySeriesListView.as_view(), + name='activity-series.list'), + + path('activity-series/', + views.ActivitySeriesDetailView.as_view(), + name='activity-series.detail'), + path('activities', views.ActivityListView.as_view(), name='activity.list'), diff --git a/activities/views.py b/activities/views.py index 8ed1ffb..ae1b1c4 100644 --- a/activities/views.py +++ b/activities/views.py @@ -6,6 +6,24 @@ from django.views.generic import DetailView, ListView from . import models +class ActivitySeriesListView(ListView): + """ + View displaying a list of :class:`ActivitySeries`. + """ + model = models.ActivitySeries + template_name = 'activities/activity_series/list.html' + context_object_name = 'activity_series_list' + + +class ActivitySeriesDetailView(DetailView): + """ + View displaying details of a single :class:`ActivitySeries`. + """ + model = models.ActivitySeries + template_name = 'activities/activity_series/detail.html' + context_object_name = 'activity_series' + + class ActivityListView(ListView): """ View displaying a list of :class:`Activity`. diff --git a/breccia_mapper/templates/base.html b/breccia_mapper/templates/base.html index ef0dc14..a456b5b 100644 --- a/breccia_mapper/templates/base.html +++ b/breccia_mapper/templates/base.html @@ -64,6 +64,14 @@ People + + + + {% if request.user.is_superuser %}