diff --git a/greg/api/serializers/person.py b/greg/api/serializers/person.py index e5f52711164793199d3f755ddc917972e1417332..d1e63341ddfb7cf8cdc471042369589a9bcfe17c 100644 --- a/greg/api/serializers/person.py +++ b/greg/api/serializers/person.py @@ -15,8 +15,8 @@ class RoleSerializer(serializers.ModelSerializer): "id", "start_date", "end_date", - "registered_by", - "unit", + "sponsor_id", + "orgunit_id", "created", "updated", "type", diff --git a/greg/api/views/sponsor.py b/greg/api/views/sponsor.py index 6e149fea441514b7d3a58aa2928da00e6d53e080..5b4ac38b2832873d558cf78135db2125a994b3f4 100644 --- a/greg/api/views/sponsor.py +++ b/greg/api/views/sponsor.py @@ -39,5 +39,5 @@ class SponsorGuestsViewSet(mixins.ListModelMixin, GenericViewSet): if not self.kwargs: return qs.none() sponsor_id = self.kwargs["sponsor_id"] - qs = qs.filter(roles__registered_by=sponsor_id).order_by("id") + qs = qs.filter(roles__sponsor_id=sponsor_id).order_by("id") return qs diff --git a/greg/migrations/0006_column_names.py b/greg/migrations/0006_column_names.py new file mode 100644 index 0000000000000000000000000000000000000000..24638a40ee97a6572f522f602b9716e527bbbd8e --- /dev/null +++ b/greg/migrations/0006_column_names.py @@ -0,0 +1,31 @@ +# Generated by Django 3.2.7 on 2021-09-23 08:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('greg', '0005_person_user'), + ] + + operations = [ + migrations.RemoveConstraint( + model_name='role', + name='person_role_type_unique', + ), + migrations.RenameField( + model_name='role', + old_name='unit', + new_name='orgunit_id', + ), + migrations.RenameField( + model_name='role', + old_name='registered_by', + new_name='sponsor_id', + ), + migrations.AddConstraint( + model_name='role', + constraint=models.UniqueConstraint(fields=('person_id', 'type_id', 'orgunit_id', 'start_date', 'end_date'), name='person_role_type_unique'), + ), + ] diff --git a/greg/models.py b/greg/models.py index dd575a825db7585e07b4eebd77375916af7680dc..363cb2cd5e17b3e2d3bc2a28e01c95187418c99a 100644 --- a/greg/models.py +++ b/greg/models.py @@ -166,7 +166,7 @@ class Role(BaseModel): type = models.ForeignKey( "RoleType", on_delete=models.PROTECT, related_name="persons" ) - unit = models.ForeignKey( + orgunit_id = models.ForeignKey( "OrganizationalUnit", on_delete=models.PROTECT, related_name="unit_person_role" ) # The start date can be null for people that are already @@ -176,14 +176,14 @@ class Role(BaseModel): contact_person_unit = models.TextField(blank=True) comments = models.TextField(blank=True) available_in_search = models.BooleanField(default=False) - registered_by = models.ForeignKey( + sponsor_id = models.ForeignKey( "Sponsor", on_delete=models.PROTECT, related_name="sponsor_role" ) class Meta: constraints = [ models.UniqueConstraint( - fields=["person_id", "type_id", "unit_id", "start_date", "end_date"], + fields=["person_id", "type_id", "orgunit_id", "start_date", "end_date"], name="person_role_type_unique", ) ] diff --git a/greg/tests/api/test_person.py b/greg/tests/api/test_person.py index 2a8fe2516c32f35786bb75568fdbcab81022407c..a1268c1e04d318f869d85cd000b5393601bfe6c4 100644 --- a/greg/tests/api/test_person.py +++ b/greg/tests/api/test_person.py @@ -50,8 +50,8 @@ def role_data_guest( "type": "Test Guest", "start_date": "2021-06-10", "end_date": "2021-08-10", - "registered_by": sponsor_bar.id, - "unit": unit_foo.id, + "sponsor_id": sponsor_bar.id, + "orgunit_id": unit_foo.id, } @@ -126,8 +126,8 @@ def test_add_role( "type": "visiting_professor", "start_date": "2021-06-10", "end_date": "2021-08-10", - "registered_by": "1", - "unit": "1", + "sponsor_id": "1", + "orgunit_id": "1", } response = client.post(url, role_data) @@ -420,8 +420,8 @@ def test_add_duplicate_role_fails(client, person_foo: Person, role_person_foo): "type": role_person_foo.type.identifier, "start_date": role_person_foo.start_date, "end_date": role_person_foo.end_date, - "registered_by": role_person_foo.registered_by.id, - "unit": role_person_foo.unit_id, + "sponsor_id": role_person_foo.sponsor_id.id, + "orgunit_id": role_person_foo.unit_id, } response = client.post(url, role_data) # If the role cannot be create the return code is 400 @@ -448,8 +448,8 @@ def test_filter_active_includes_person_with_active_role( person=person_foo, type=role_type_test_guest, end_date=date_today + datetime.timedelta(days=1), - registered_by=sponsor_guy, - unit=unit_foo, + sponsor_id=sponsor_guy, + orgunit_id=unit_foo, ) url = reverse("v1:person-list") @@ -486,8 +486,8 @@ def test_filter_active_value_false( person=person_foo, type=role_type_test_guest, end_date=date_today - datetime.timedelta(days=1), - registered_by=sponsor_guy, - unit=unit_foo, + sponsor_id=sponsor_guy, + orgunit_id=unit_foo, ) url = reverse("v1:person-list") diff --git a/greg/tests/conftest.py b/greg/tests/conftest.py index 2d3fdfb099e3e3c9da3776edc605d8084bbd3d2a..71a08c36919fc2281a99ec0f4050c5124950469a 100644 --- a/greg/tests/conftest.py +++ b/greg/tests/conftest.py @@ -123,8 +123,8 @@ def role_person_foo( type=role_type_test_guest, start_date="2021-08-02", end_date="2021-08-06", - registered_by=sponsor_guy, - unit=unit_foo, + sponsor_id=sponsor_guy, + orgunit_id=unit_foo, ) return Role.objects.get(id=role.id) diff --git a/greg/tests/models/test_person.py b/greg/tests/models/test_person.py index e193a9b4276e41cb4a23335c0a0496ef8960e2b8..44d451b42e1b1e0efb6e15b35335be2a9459b69b 100644 --- a/greg/tests/models/test_person.py +++ b/greg/tests/models/test_person.py @@ -94,14 +94,14 @@ def test_add_multiple_roles_to_person( role_with( person=person, type=role_type_foo, - unit=ou, - registered_by=Sponsor.objects.create(feide_id="foosponsor@uio.no"), + orgunit_id=ou, + sponsor_id=Sponsor.objects.create(feide_id="foosponsor@uio.no"), ) role_with( person=person, type=role_type_bar, - unit=ou, - registered_by=Sponsor.objects.create(feide_id="barsponsor@uio.no"), + orgunit_id=ou, + sponsor_id=Sponsor.objects.create(feide_id="barsponsor@uio.no"), ) assert person.roles.count() == 2 diff --git a/greg/tests/populate_database.py b/greg/tests/populate_database.py index 605a67033c1de70aef9f5cb24f370e86c574761a..c86d746b3e2419c18283c47b6295119c254e973e 100644 --- a/greg/tests/populate_database.py +++ b/greg/tests/populate_database.py @@ -154,7 +154,7 @@ class DatabasePopulation: ), contact_person_unit=self.faker.name(), available_in_search=self.random.random() > 0.5, - registered_by=random.choice(self.sponsors), + sponsor_id=random.choice(self.sponsors), ) person_role_count += 1 except IntegrityError: diff --git a/greg/tests/test_expire_role.py b/greg/tests/test_expire_role.py index df240644cc9b1970e44a8b49560f6b21b816d228..77ca940cf723736b657488e7975c003d7d25e307 100644 --- a/greg/tests/test_expire_role.py +++ b/greg/tests/test_expire_role.py @@ -33,12 +33,12 @@ def role( return Role.objects.create( person=person, type=role_type_bar, - unit=unit_foo, + orgunit_id=unit_foo, start_date="2020-03-05", end_date=datetime.today() + timedelta(days=30), contact_person_unit="Contact Person", available_in_search=True, - registered_by=sponsor_guy, + sponsor_id=sponsor_guy, ) diff --git a/greg/tests/test_notifications.py b/greg/tests/test_notifications.py index f86dbc02383692f22adbe16d9bb68a863321c93d..7fcbb4494aed29bc9d35d7404676d37dec89dfb0 100644 --- a/greg/tests/test_notifications.py +++ b/greg/tests/test_notifications.py @@ -73,8 +73,8 @@ def test_role_add_notification( type=role_type_foo, start_date="2021-05-06", end_date="2021-10-20", - unit=org_unit_bar, - registered_by=sponsor, + orgunit_id=org_unit_bar, + sponsor_id=sponsor, ) notifications = Notification.objects.filter(object_type="Role") assert len(notifications) == 1 @@ -96,8 +96,8 @@ def test_role_update_notification( type=role_type_foo, start_date="2021-05-06", end_date="2021-10-20", - unit=org_unit_bar, - registered_by=sponsor, + orgunit_id=org_unit_bar, + sponsor_id=sponsor, ) assert len(person.roles.all()) == 1 person_role = person.roles.all()[0] @@ -123,8 +123,8 @@ def test_role_delete_notification( type=role_type_foo, start_date="2021-05-06", end_date="2021-10-20", - unit=org_unit_bar, - registered_by=sponsor, + orgunit_id=org_unit_bar, + sponsor_id=sponsor, ) assert len(person.roles.all()) == 1 person_role = person.roles.all()[0]