From ee42f74cdd2daa3643228eee7223e3325bd85245 Mon Sep 17 00:00:00 2001 From: Andreas Ellewsen <ae@uio.no> Date: Wed, 27 Oct 2021 09:13:24 +0200 Subject: [PATCH] Remove id suffix from ou model fields --- .../sponsor/register/stepRegistration.tsx | 2 +- greg/api/serializers/person.py | 4 ++-- greg/migrations/0011_role_remove_id_suffix.py | 23 +++++++++++++++++++ greg/models.py | 4 ++-- greg/tests/api/test_person.py | 20 ++++++++-------- greg/tests/conftest.py | 4 ++-- greg/tests/models/test_person.py | 8 +++---- greg/tests/test_expire_role.py | 4 ++-- greg/tests/test_notifications.py | 12 +++++----- gregui/api/serializers/invitation.py | 2 +- gregui/api/serializers/role.py | 2 +- gregui/api/views/invitation.py | 17 +++++++------- gregui/api/views/person.py | 4 ++-- gregui/api/views/userinfo.py | 16 ++++++------- gregui/tests/api/test_invite_guest.py | 2 +- gregui/tests/conftest.py | 4 ++-- gregui/views.py | 6 ++--- 17 files changed, 78 insertions(+), 56 deletions(-) create mode 100644 greg/migrations/0011_role_remove_id_suffix.py diff --git a/frontend/src/routes/sponsor/register/stepRegistration.tsx b/frontend/src/routes/sponsor/register/stepRegistration.tsx index a93b29c9..8e4bd716 100644 --- a/frontend/src/routes/sponsor/register/stepRegistration.tsx +++ b/frontend/src/routes/sponsor/register/stepRegistration.tsx @@ -71,7 +71,7 @@ export default function StepRegistration() { ? null : format(formData.role_end as Date, 'yyyy-MM-dd'), comments: formData.comment, - orgunit_id: formData.ou_id, + orgunit: formData.ou_id, }, } diff --git a/greg/api/serializers/person.py b/greg/api/serializers/person.py index 93958a21..16d362f7 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", - "sponsor_id", - "orgunit_id", + "sponsor", + "orgunit", "created", "updated", "type", diff --git a/greg/migrations/0011_role_remove_id_suffix.py b/greg/migrations/0011_role_remove_id_suffix.py new file mode 100644 index 00000000..8af30b8c --- /dev/null +++ b/greg/migrations/0011_role_remove_id_suffix.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.8 on 2021-10-26 14:43 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('greg', '0010_roletype_max_days'), + ] + + operations = [ + migrations.RenameField( + model_name='role', + old_name='orgunit_id', + new_name='orgunit', + ), + migrations.RenameField( + model_name='role', + old_name='sponsor_id', + new_name='sponsor', + ), + ] diff --git a/greg/models.py b/greg/models.py index f0c4876f..a57558b7 100644 --- a/greg/models.py +++ b/greg/models.py @@ -203,7 +203,7 @@ class Role(BaseModel): type = models.ForeignKey( "RoleType", on_delete=models.PROTECT, related_name="persons" ) - orgunit_id = models.ForeignKey( + orgunit = models.ForeignKey( "OrganizationalUnit", on_delete=models.PROTECT, related_name="unit_person_role" ) # The start date can be null for people that are already @@ -213,7 +213,7 @@ class Role(BaseModel): contact_person_unit = models.TextField(blank=True) comments = models.TextField(blank=True) available_in_search = models.BooleanField(default=False) - sponsor_id = models.ForeignKey( + sponsor = models.ForeignKey( "Sponsor", on_delete=models.PROTECT, related_name="sponsor_role" ) diff --git a/greg/tests/api/test_person.py b/greg/tests/api/test_person.py index 9a09193c..791bd937 100644 --- a/greg/tests/api/test_person.py +++ b/greg/tests/api/test_person.py @@ -55,8 +55,8 @@ def role_data_guest( "type": "Test Guest", "start_date": "2021-06-10", "end_date": "2021-08-10", - "sponsor_id": sponsor_bar.id, - "orgunit_id": unit_foo.id, + "sponsor": sponsor_bar.id, + "orgunit": unit_foo.id, } @@ -131,8 +131,8 @@ def test_add_role( "type": "visiting_professor", "start_date": "2021-06-10", "end_date": "2021-08-10", - "sponsor_id": "1", - "orgunit_id": "1", + "sponsor": "1", + "orgunit": "1", } response = client.post(url, role_data) @@ -425,8 +425,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, - "sponsor_id": role_person_foo.sponsor_id.id, - "orgunit_id": role_person_foo.unit_id, + "sponsor": role_person_foo.sponsor.id, + "orgunit": role_person_foo.unit_id, } response = client.post(url, role_data) # If the role cannot be create the return code is 400 @@ -453,8 +453,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), - sponsor_id=sponsor_guy, - orgunit_id=unit_foo, + sponsor=sponsor_guy, + orgunit=unit_foo, ) url = reverse("v1:person-list") @@ -491,8 +491,8 @@ def test_filter_active_value_false( person=person_foo, type=role_type_test_guest, end_date=date_today - datetime.timedelta(days=1), - sponsor_id=sponsor_guy, - orgunit_id=unit_foo, + sponsor=sponsor_guy, + orgunit=unit_foo, ) url = reverse("v1:person-list") diff --git a/greg/tests/conftest.py b/greg/tests/conftest.py index 1998517c..1650c63b 100644 --- a/greg/tests/conftest.py +++ b/greg/tests/conftest.py @@ -152,8 +152,8 @@ def role_person_foo( type=role_type_test_guest, start_date="2021-08-02", end_date="2021-08-06", - sponsor_id=sponsor_guy, - orgunit_id=unit_foo, + sponsor=sponsor_guy, + orgunit=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 396b0f0e..39be76df 100644 --- a/greg/tests/models/test_person.py +++ b/greg/tests/models/test_person.py @@ -98,14 +98,14 @@ def test_add_multiple_roles_to_person( role_with( person=person, type=role_type_foo, - orgunit_id=ou, - sponsor_id=Sponsor.objects.create(feide_id="foosponsor@uio.no"), + orgunit=ou, + sponsor=Sponsor.objects.create(feide_id="foosponsor@uio.no"), ) role_with( person=person, type=role_type_bar, - orgunit_id=ou, - sponsor_id=Sponsor.objects.create(feide_id="barsponsor@uio.no"), + orgunit=ou, + sponsor=Sponsor.objects.create(feide_id="barsponsor@uio.no"), ) assert person.roles.count() == 2 diff --git a/greg/tests/test_expire_role.py b/greg/tests/test_expire_role.py index 77ca940c..0eda7855 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, - orgunit_id=unit_foo, + orgunit=unit_foo, start_date="2020-03-05", end_date=datetime.today() + timedelta(days=30), contact_person_unit="Contact Person", available_in_search=True, - sponsor_id=sponsor_guy, + sponsor=sponsor_guy, ) diff --git a/greg/tests/test_notifications.py b/greg/tests/test_notifications.py index ad147588..290fb5cf 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", - orgunit_id=org_unit_bar, - sponsor_id=sponsor, + orgunit=org_unit_bar, + sponsor=sponsor, ) notifications = Notification.objects.filter(object_type="Role") assert len(notifications) == 1 @@ -97,8 +97,8 @@ def test_role_update_notification( type=role_type_foo, start_date="2021-05-06", end_date="2021-10-20", - orgunit_id=org_unit_bar, - sponsor_id=sponsor, + orgunit=org_unit_bar, + sponsor=sponsor, ) assert len(person.roles.all()) == 1 person_role = person.roles.all()[0] @@ -125,8 +125,8 @@ def test_role_delete_notification( type=role_type_foo, start_date="2021-05-06", end_date="2021-10-20", - orgunit_id=org_unit_bar, - sponsor_id=sponsor, + orgunit=org_unit_bar, + sponsor=sponsor, ) assert len(person.roles.all()) == 1 person_role = person.roles.all()[0] diff --git a/gregui/api/serializers/invitation.py b/gregui/api/serializers/invitation.py index b1dcda9e..c526a986 100644 --- a/gregui/api/serializers/invitation.py +++ b/gregui/api/serializers/invitation.py @@ -30,7 +30,7 @@ class InviteGuestSerializer(serializers.ModelSerializer): source="greg", ) role_data["person"] = person - role_data["sponsor_id"] = user.sponsor + role_data["sponsor"] = user.sponsor role = Role.objects.create(**role_data) invitation = Invitation.objects.create(role=role) InvitationLink.objects.create( diff --git a/gregui/api/serializers/role.py b/gregui/api/serializers/role.py index 26f3db97..f9791220 100644 --- a/gregui/api/serializers/role.py +++ b/gregui/api/serializers/role.py @@ -43,7 +43,7 @@ class RoleSerializerUi(serializers.ModelSerializer): class Meta: model = Role fields = [ - "orgunit_id", + "orgunit", "start_date", "type", "end_date", diff --git a/gregui/api/views/invitation.py b/gregui/api/views/invitation.py index 98a0bd8e..5ffca10a 100644 --- a/gregui/api/views/invitation.py +++ b/gregui/api/views/invitation.py @@ -30,7 +30,7 @@ class CreateInvitationView(CreateAPIView): "last_name": "sss", "date_of_birth": null, "role": { - "orgunit_id": 1, + "orgunit": 1, "start_date": null, "type": 1, "end_date": "2021-12-15", @@ -58,16 +58,15 @@ class CreateInvitationView(CreateAPIView): """ sponsor_user = GregUserProfile.objects.get(user=request.user) serializer = self.serializer_class( - data=request.data, context={"request": request} + data=request.data, + context={"request": request, "sponsor": sponsor_user.sponsor}, ) serializer.is_valid(raise_exception=True) - - # TODO: check that sponsor has access to OU person = serializer.save() invitationlink = InvitationLink.objects.filter( - invitation__role__person=person.id, - invitation__role__sponsor_id=sponsor_user.sponsor, + invitation__role__person_id=person.id, + invitation__role__sponsor_id=sponsor_user.sponsor_id, ) # TODO: send email to invited guest print(invitationlink) @@ -133,7 +132,7 @@ class InvitedGuestView(GenericAPIView): invite_link = InvitationLink.objects.get(uuid=invite_id) role = invite_link.invitation.role person = role.person - sponsor = role.sponsor_id + sponsor = role.sponsor # If the user is not logged in then tell the client to take him through the manual registration process session_type = ( @@ -165,8 +164,8 @@ class InvitedGuestView(GenericAPIView): "last_name": sponsor.last_name, }, "role": { - "ou_name_nb": role.orgunit_id.name_nb, - "ou_name_en": role.orgunit_id.name_en, + "ou_name_nb": role.orgunit.name_nb, + "ou_name_en": role.orgunit.name_en, "role_name_nb": role.type.name_nb, "role_name_en": role.type.name_en, "start": role.start_date, diff --git a/gregui/api/views/person.py b/gregui/api/views/person.py index edf0239f..79326f42 100644 --- a/gregui/api/views/person.py +++ b/gregui/api/views/person.py @@ -34,8 +34,8 @@ class PersonView(APIView): "id": role.id, "name_nb": role.type.name_nb, "name_en": role.type.name_en, - "ou_nb": role.orgunit_id.name_nb, - "ou_en": role.orgunit_id.name_en, + "ou_nb": role.orgunit.name_nb, + "ou_en": role.orgunit.name_en, "start_date": role.start_date, "end_date": role.end_date, "max_days": role.type.max_days, diff --git a/gregui/api/views/userinfo.py b/gregui/api/views/userinfo.py index 3a4a0d41..980cbd31 100644 --- a/gregui/api/views/userinfo.py +++ b/gregui/api/views/userinfo.py @@ -68,16 +68,16 @@ class UserInfoView(APIView): { "roles": [ { - "ou_name_nb": role.orgunit_id.name_nb, - "ou_name_en": role.orgunit_id.name_en, + "ou_name_nb": role.orgunit.name_nb, + "ou_name_en": role.orgunit.name_en, "role_name_nb": role.type.name_nb, "role_name_en": role.type.name_en, "start": role.start_date, "end": role.end_date, "comments": role.comments, "sponsor": { - "first_name": role.sponsor_id.first_name, - "last_name": role.sponsor_id.last_name, + "first_name": role.sponsor.first_name, + "last_name": role.sponsor.last_name, }, } for role in roles.all() @@ -105,16 +105,16 @@ class UserInfoView(APIView): "passport": passports and passports.value, "roles": [ { - "ou_name_nb": role.orgunit_id.name_nb, - "ou_name_en": role.orgunit_id.name_en, + "ou_name_nb": role.orgunit.name_nb, + "ou_name_en": role.orgunit.name_en, "role_name_nb": role.type.name_nb, "role_name_en": role.type.name_en, "start": role.start_date, "end": role.end_date, "comments": role.comments, "sponsor": { - "first_name": role.sponsor_id.first_name, - "last_name": role.sponsor_id.last_name, + "first_name": role.sponsor.first_name, + "last_name": role.sponsor.last_name, }, } for role in person.roles.all() diff --git a/gregui/tests/api/test_invite_guest.py b/gregui/tests/api/test_invite_guest.py index 55a962e3..46f8b108 100644 --- a/gregui/tests/api/test_invite_guest.py +++ b/gregui/tests/api/test_invite_guest.py @@ -16,7 +16,7 @@ def test_invite_guest(client, user_sponsor, unit_foo, role_type_foo): "role": { "start_date": "2019-08-06", "end_date": "2019-08-10", - "orgunit_id": unit_foo.id, + "orgunit": unit_foo.id, "type": role_type_foo.id, }, } diff --git a/gregui/tests/conftest.py b/gregui/tests/conftest.py index f4cd467c..1bd22154 100644 --- a/gregui/tests/conftest.py +++ b/gregui/tests/conftest.py @@ -190,8 +190,8 @@ def person(person_foo_data) -> Person: def role(person, sponsor_guy, unit_foo, role_type_foo) -> Role: role = Role.objects.create( person=person, - sponsor_id=sponsor_guy, - orgunit_id=unit_foo, + sponsor=sponsor_guy, + orgunit=unit_foo, end_date="2050-10-15", type_id=role_type_foo.id, ) diff --git a/gregui/views.py b/gregui/views.py index 15e6e264..4721cccb 100644 --- a/gregui/views.py +++ b/gregui/views.py @@ -113,8 +113,8 @@ class GuestInfoView(APIView): "id": role.id, "name_nb": role.type.name_nb, "name_en": role.type.name_en, - "ou_nb": role.orgunit_id.name_nb, - "ou_en": role.orgunit_id.name_en, + "ou_nb": role.orgunit.name_nb, + "ou_en": role.orgunit.name_en, "start_date": role.start_date, "end_date": role.end_date, "max_days": role.type.max_days, @@ -123,7 +123,7 @@ class GuestInfoView(APIView): ], } for person in Person.objects.filter( - roles__sponsor_id=user.sponsor + roles__sponsor=user.sponsor ).distinct() ] } -- GitLab