diff --git a/people/admin.py b/people/admin.py index 94119a7..26cb237 100644 --- a/people/admin.py +++ b/people/admin.py @@ -11,6 +11,16 @@ from . import models admin.site.register(models.User, UserAdmin) +@admin.register(models.Organisation) +class OrganisationAdmin(admin.ModelAdmin): + pass + + +@admin.register(models.Role) +class RoleAdmin(admin.ModelAdmin): + pass + + @admin.register(models.Person) class PersonAdmin(admin.ModelAdmin): pass diff --git a/people/migrations/0012_person_job_title.py b/people/migrations/0012_person_job_title.py new file mode 100644 index 0000000..f64324b --- /dev/null +++ b/people/migrations/0012_person_job_title.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.10 on 2020-02-25 09:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('people', '0011_person_add_organisation'), + ] + + operations = [ + migrations.AddField( + model_name='person', + name='job_title', + field=models.CharField(blank=True, max_length=255), + ), + ] diff --git a/people/migrations/0013_person_role.py b/people/migrations/0013_person_role.py new file mode 100644 index 0000000..1566c14 --- /dev/null +++ b/people/migrations/0013_person_role.py @@ -0,0 +1,26 @@ +# Generated by Django 2.2.10 on 2020-02-25 09:10 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('people', '0012_person_job_title'), + ] + + operations = [ + migrations.CreateModel( + name='Role', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ], + ), + migrations.AddField( + model_name='person', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='holders', to='people.Role'), + ), + ] diff --git a/people/models.py b/people/models.py index 06c01ab..b7dfe67 100644 --- a/people/models.py +++ b/people/models.py @@ -23,6 +23,20 @@ class Organisation(models.Model): """ name = models.CharField(max_length=255, blank=False, null=False) + + def __str__(self) -> str: + return self.name + + +class Role(models.Model): + """ + Role which a :class:`Person` holds within the project. + """ + name = models.CharField(max_length=255, + blank=False, null=False) + + def __str__(self) -> str: + return self.name class Person(models.Model): @@ -89,6 +103,14 @@ class Person(models.Model): on_delete=models.PROTECT, related_name='members', blank=True, null=True) + + job_title = models.CharField(max_length=255, + blank=True, null=False) + + role = models.ForeignKey(Role, + on_delete=models.PROTECT, + related_name='holders', + blank=True, null=True) @property def relationships(self):