diff --git a/activities/migrations/0004_activity_attendance_list.py b/activities/migrations/0004_activity_attendance_list.py
new file mode 100644
index 0000000..33bd8f8
--- /dev/null
+++ b/activities/migrations/0004_activity_attendance_list.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.10 on 2020-02-19 15:20
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('people', '0005_user_one_person'),
+ ('activities', '0003_rename_activity_series_fk'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='activity',
+ name='attendance_list',
+ field=models.ManyToManyField(related_name='activities', to='people.Person'),
+ ),
+ ]
diff --git a/activities/models.py b/activities/models.py
index a5015eb..d9bb48a 100644
--- a/activities/models.py
+++ b/activities/models.py
@@ -1,6 +1,9 @@
from django.db import models
+from people import models as people_models
+
+
class ActivityType(models.Model):
"""
Representation of the type of activity being conducted.
@@ -33,7 +36,7 @@ class ActivityMedium(models.Model):
class ActivitySeries(models.Model):
"""
- A series of related :class:`Activity`s
+ A series of related :class:`Activity`s.
"""
class Meta:
verbose_name_plural = 'activity series'
@@ -58,7 +61,7 @@ class ActivitySeries(models.Model):
class Activity(models.Model):
"""
- An instance of an activity - e.g. a workshop
+ An instance of an activity - e.g. a workshop.
"""
class Meta:
verbose_name_plural = 'activities'
@@ -73,15 +76,19 @@ class Activity(models.Model):
on_delete=models.PROTECT,
blank=True, null=True)
- #: What type of activity does this series represent?
+ #: What type of activity is this?
type = models.ForeignKey(ActivityType,
on_delete=models.PROTECT,
blank=False, null=False)
- #: How are activities in this series typically conducted?
+ #: How was this activity conducted?
medium = models.ForeignKey(ActivityMedium,
on_delete=models.PROTECT,
blank=False, null=False)
+
+ #: Who attended this activity?
+ attendance_list = models.ManyToManyField(people_models.Person,
+ related_name='activities')
def __str__(self) -> str:
return self.name
diff --git a/activities/templates/activities/activity/detail.html b/activities/templates/activities/activity/detail.html
index 65ce469..5e1901d 100644
--- a/activities/templates/activities/activity/detail.html
+++ b/activities/templates/activities/activity/detail.html
@@ -10,6 +10,20 @@
+ {% if user_is_attending %}
+
+
+ {% else %}
+
+
+ {% endif %}
+
@@ -23,4 +37,91 @@
{{ activity.medium }}
+
+
+
+
+
+
Name
+
+
+
+
+ {% for person in activity.attendance_list.all %}
+