feat(people): Add job title and role

See #1
This commit is contained in:
James Graham
2020-02-25 09:15:25 +00:00
parent 5e6065951f
commit 224bce9853
4 changed files with 76 additions and 0 deletions

View File

@@ -11,6 +11,16 @@ from . import models
admin.site.register(models.User, UserAdmin) 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) @admin.register(models.Person)
class PersonAdmin(admin.ModelAdmin): class PersonAdmin(admin.ModelAdmin):
pass pass

View File

@@ -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),
),
]

View File

@@ -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'),
),
]

View File

@@ -24,6 +24,20 @@ class Organisation(models.Model):
name = models.CharField(max_length=255, name = models.CharField(max_length=255,
blank=False, null=False) 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): class Person(models.Model):
""" """
@@ -90,6 +104,14 @@ class Person(models.Model):
related_name='members', related_name='members',
blank=True, null=True) 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 @property
def relationships(self): def relationships(self):
return self.relationships_as_source.all().union( return self.relationships_as_source.all().union(