feat(activities): Add activity types and mediums

resolves #8 #11 #12
This commit is contained in:
James Graham
2020-02-19 13:15:53 +00:00
parent d57c4769ae
commit 85a3ac082b
3 changed files with 112 additions and 2 deletions

View File

@@ -7,6 +7,16 @@ from django.contrib import admin
from . import models from . import models
@admin.register(models.ActivityType)
class ActivityTypeAdmin(admin.ModelAdmin):
pass
@admin.register(models.ActivityMedium)
class ActivityMediumAdmin(admin.ModelAdmin):
pass
@admin.register(models.ActivitySeries) @admin.register(models.ActivitySeries)
class ActivitySeriesAdmin(admin.ModelAdmin): class ActivitySeriesAdmin(admin.ModelAdmin):
pass pass

View File

@@ -0,0 +1,52 @@
# Generated by Django 2.2.10 on 2020-02-19 13:01
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('activities', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='ActivityMedium',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, unique=True)),
],
),
migrations.CreateModel(
name='ActivityType',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, unique=True)),
],
),
migrations.AddField(
model_name='activity',
name='medium',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to='activities.ActivityMedium'),
preserve_default=False,
),
migrations.AddField(
model_name='activity',
name='type',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to='activities.ActivityType'),
preserve_default=False,
),
migrations.AddField(
model_name='activityseries',
name='medium',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to='activities.ActivityMedium'),
preserve_default=False,
),
migrations.AddField(
model_name='activityseries',
name='type',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to='activities.ActivityType'),
preserve_default=False,
),
]

View File

@@ -1,11 +1,40 @@
from django.db import models from django.db import models
class ActivityType(models.Model):
"""
Representation of the type of activity being conducted.
Examples may include: 'research activity' or 'stakeholder engagement'.
"""
#: Name of this type of activity
name = models.CharField(max_length=255,
unique=True,
blank=False, null=False)
def __str__(self) -> str:
return self.name
class ActivityMedium(models.Model):
"""
Representation of the medium via which the activity is conducted.
Examples may include: 'face to face' or 'virtual'.
"""
#: Name of this medium
name = models.CharField(max_length=255,
unique=True,
blank=False, null=False)
def __str__(self) -> str:
return self.name
class ActivitySeries(models.Model): class ActivitySeries(models.Model):
""" """
A series of related :class:`Activity`s A series of related :class:`Activity`s
""" """
class Meta: class Meta:
verbose_name_plural = 'activity series' verbose_name_plural = 'activity series'
@@ -13,6 +42,16 @@ class ActivitySeries(models.Model):
name = models.CharField(max_length=1023, name = models.CharField(max_length=1023,
blank=False, null=False) blank=False, null=False)
#: What type of activity does this series represent?
type = models.ForeignKey(ActivityType,
on_delete=models.PROTECT,
blank=False, null=False)
#: How are activities in this series typically conducted?
medium = models.ForeignKey(ActivityMedium,
on_delete=models.PROTECT,
blank=False, null=False)
def __str__(self) -> str: def __str__(self) -> str:
return self.name return self.name
@@ -21,7 +60,6 @@ class Activity(models.Model):
""" """
An instance of an activity - e.g. a workshop An instance of an activity - e.g. a workshop
""" """
class Meta: class Meta:
verbose_name_plural = 'activities' verbose_name_plural = 'activities'
@@ -34,5 +72,15 @@ class Activity(models.Model):
on_delete=models.PROTECT, on_delete=models.PROTECT,
blank=True, null=True) blank=True, null=True)
#: What type of activity does this series represent?
type = models.ForeignKey(ActivityType,
on_delete=models.PROTECT,
blank=False, null=False)
#: How are activities in this series typically conducted?
medium = models.ForeignKey(ActivityMedium,
on_delete=models.PROTECT,
blank=False, null=False)
def __str__(self) -> str: def __str__(self) -> str:
return self.name return self.name