From 4b3ad0804f7a83f335a9e93d65b1c13ed77f4d07 Mon Sep 17 00:00:00 2001 From: Jonas de Luna Skulberg Date: Fri, 24 May 2024 13:02:04 +0200 Subject: [PATCH] Fix minor bugs --- lego/apps/lending/managers.py | 17 +- lego/apps/lending/migrations/0001_initial.py | 262 +++--------------- ..._alter_lendableobject_responsible_roles.py | 49 ---- ...endinginstance_can_edit_groups_and_more.py | 28 -- ...endinginstance_can_edit_groups_and_more.py | 43 --- ..._alter_lendableobject_responsible_roles.py | 48 ---- ...remove_lendinginstance_pending_and_more.py | 22 -- lego/apps/lending/notifications.py | 2 +- 8 files changed, 46 insertions(+), 425 deletions(-) delete mode 100644 lego/apps/lending/migrations/0002_alter_lendableobject_responsible_roles.py delete mode 100644 lego/apps/lending/migrations/0003_remove_lendinginstance_can_edit_groups_and_more.py delete mode 100644 lego/apps/lending/migrations/0004_lendinginstance_can_edit_groups_and_more.py delete mode 100644 lego/apps/lending/migrations/0005_alter_lendableobject_responsible_roles.py delete mode 100644 lego/apps/lending/migrations/0006_remove_lendinginstance_pending_and_more.py diff --git a/lego/apps/lending/managers.py b/lego/apps/lending/managers.py index 22d2896ca..179357324 100644 --- a/lego/apps/lending/managers.py +++ b/lego/apps/lending/managers.py @@ -3,7 +3,7 @@ class LendingInstanceManager(BasisModelManager): def create(self, *args, **kwargs): - from lego.apps.lending.notifications import LendingInstanceNotification + from lego.apps.lending.notifications import LendingInstanceCreateNotification from lego.apps.users.models import Membership, User lending_instance = super().create(*args, **kwargs) @@ -19,7 +19,7 @@ def create(self, *args, **kwargs): ).values_list("user", flat=True) for user_id in users_to_be_notified: user = User.objects.get(pk=user_id) - notification = LendingInstanceNotification( + notification = LendingInstanceCreateNotification( lending_instance=lending_instance, user=user, ) @@ -27,18 +27,5 @@ def create(self, *args, **kwargs): return lending_instance - # TODO: We probably need another template for accepting instances - def update(self, *args, **kwargs): - from lego.apps.lending.notifications import LendingInstanceNotification - - lending_instance = super().update(*args, **kwargs) - notification = LendingInstanceNotification( - lending_instance=lending_instance, - user=lending_instance.created_by, - ) - notification.notify() - - return lending_instance - def get_queryset(self): return super().get_queryset().select_related("created_by") diff --git a/lego/apps/lending/migrations/0001_initial.py b/lego/apps/lending/migrations/0001_initial.py index 885c62087..f3eb49383 100644 --- a/lego/apps/lending/migrations/0001_initial.py +++ b/lego/apps/lending/migrations/0001_initial.py @@ -1,249 +1,73 @@ -# Generated by Django 4.0.10 on 2024-04-16 18:32 +# Generated by Django 4.0.10 on 2024-05-24 11:03 import datetime - +from django.conf import settings import django.contrib.postgres.fields +from django.db import migrations, models import django.db.models.deletion import django.utils.timezone -from django.conf import settings -from django.db import migrations, models - import lego.apps.files.models import lego.apps.lending.validators class Migration(migrations.Migration): + initial = True dependencies = [ - ("users", "0041_user_linkedin_id_alter_user_github_username"), - ("files", "0005_file_save_for_use"), + ('users', '0043_alter_abakusgroup_type'), + ('files', '0005_file_save_for_use'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( - name="LendableObject", + name='LendableObject', fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "created_at", - models.DateTimeField( - db_index=True, default=django.utils.timezone.now, editable=False - ), - ), - ( - "updated_at", - models.DateTimeField( - default=django.utils.timezone.now, editable=False - ), - ), - ( - "deleted", - models.BooleanField(db_index=True, default=False, editable=False), - ), - ("require_auth", models.BooleanField(default=True)), - ("title", models.CharField(max_length=128)), - ("description", models.TextField(blank=True)), - ("has_contract", models.BooleanField(default=False)), - ( - "max_lending_period", - models.DurationField(default=datetime.timedelta(days=7), null=True), - ), - ( - "responsible_roles", - django.contrib.postgres.fields.ArrayField( - base_field=models.CharField( - choices=[ - ("member", "member"), - ("leader", "leader"), - ("co-leader", "co-leader"), - ("treasurer", "treasurer"), - ("recruiting", "recruiting"), - ("development", "development"), - ("editor", "editor"), - ("retiree", "retiree"), - ("media_relations", "media_relations"), - ("active_retiree", "active_retiree"), - ("alumni", "alumni"), - ("webmaster", "webmaster"), - ("interest_group_admin", "interest_group_admin"), - ("alumni_admin", "alumni_admin"), - ("retiree_email", "retiree_email"), - ("company_admin", "company_admin"), - ("dugnad_admin", "dugnad_admin"), - ("trip_admin", "trip_admin"), - ("sponsor_admin", "sponsor_admin"), - ("social_admin", "social_admin"), - ], - max_length=30, - ), - default=["member"], - size=None, - validators=[ - lego.apps.lending.validators.responsible_roles_validator - ], - ), - ), - ("location", models.CharField(blank=True, max_length=128)), - ( - "can_edit_groups", - models.ManyToManyField( - blank=True, - related_name="can_edit_%(class)s", - to="users.abakusgroup", - ), - ), - ( - "can_edit_users", - models.ManyToManyField( - blank=True, - related_name="can_edit_%(class)s", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "can_view_groups", - models.ManyToManyField( - blank=True, - related_name="can_view_%(class)s", - to="users.abakusgroup", - ), - ), - ( - "created_by", - models.ForeignKey( - default=None, - editable=False, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="%(class)s_created", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "image", - lego.apps.files.models.FileField( - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="lendable_object_images", - to="files.file", - ), - ), - ("responsible_groups", models.ManyToManyField(to="users.abakusgroup")), - ( - "updated_by", - models.ForeignKey( - default=None, - editable=False, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="%(class)s_updated", - to=settings.AUTH_USER_MODEL, - ), - ), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(db_index=True, default=django.utils.timezone.now, editable=False)), + ('updated_at', models.DateTimeField(default=django.utils.timezone.now, editable=False)), + ('deleted', models.BooleanField(db_index=True, default=False, editable=False)), + ('require_auth', models.BooleanField(default=True)), + ('title', models.CharField(max_length=128)), + ('description', models.TextField(blank=True)), + ('has_contract', models.BooleanField(default=False)), + ('max_lending_period', models.DurationField(default=datetime.timedelta(days=7), null=True)), + ('responsible_roles', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(choices=[('member', 'member'), ('leader', 'leader'), ('co-leader', 'co-leader'), ('treasurer', 'treasurer'), ('recruiting', 'recruiting'), ('development', 'development'), ('editor', 'editor'), ('retiree', 'retiree'), ('media_relations', 'media_relations'), ('active_retiree', 'active_retiree'), ('alumni', 'alumni'), ('webmaster', 'webmaster'), ('interest_group_admin', 'interest_group_admin'), ('alumni_admin', 'alumni_admin'), ('retiree_email', 'retiree_email'), ('company_admin', 'company_admin'), ('dugnad_admin', 'dugnad_admin'), ('trip_admin', 'trip_admin'), ('sponsor_admin', 'sponsor_admin'), ('social_admin', 'social_admin')], max_length=30), default=['member'], size=None, validators=[lego.apps.lending.validators.responsible_roles_validator])), + ('location', models.CharField(blank=True, max_length=128)), + ('can_edit_groups', models.ManyToManyField(blank=True, related_name='can_edit_%(class)s', to='users.abakusgroup')), + ('can_edit_users', models.ManyToManyField(blank=True, related_name='can_edit_%(class)s', to=settings.AUTH_USER_MODEL)), + ('can_view_groups', models.ManyToManyField(blank=True, related_name='can_view_%(class)s', to='users.abakusgroup')), + ('created_by', models.ForeignKey(default=None, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_created', to=settings.AUTH_USER_MODEL)), + ('image', lego.apps.files.models.FileField(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lendable_object_images', to='files.file')), + ('responsible_groups', models.ManyToManyField(to='users.abakusgroup')), + ('updated_by', models.ForeignKey(default=None, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_updated', to=settings.AUTH_USER_MODEL)), ], options={ - "abstract": False, + 'abstract': False, }, ), migrations.CreateModel( - name="LendingInstance", + name='LendingInstance', fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "created_at", - models.DateTimeField( - db_index=True, default=django.utils.timezone.now, editable=False - ), - ), - ( - "updated_at", - models.DateTimeField( - default=django.utils.timezone.now, editable=False - ), - ), - ( - "deleted", - models.BooleanField(db_index=True, default=False, editable=False), - ), - ("require_auth", models.BooleanField(default=True)), - ("start_date", models.DateTimeField(null=True)), - ("end_date", models.DateTimeField(null=True)), - ("pending", models.BooleanField(default=True)), - ("message", models.TextField(blank=True)), - ( - "can_edit_groups", - models.ManyToManyField( - blank=True, - related_name="can_edit_%(class)s", - to="users.abakusgroup", - ), - ), - ( - "can_edit_users", - models.ManyToManyField( - blank=True, - related_name="can_edit_%(class)s", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "can_view_groups", - models.ManyToManyField( - blank=True, - related_name="can_view_%(class)s", - to="users.abakusgroup", - ), - ), - ( - "created_by", - models.ForeignKey( - default=None, - editable=False, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="%(class)s_created", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "lendable_object", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="lending.lendableobject", - ), - ), - ( - "updated_by", - models.ForeignKey( - default=None, - editable=False, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="%(class)s_updated", - to=settings.AUTH_USER_MODEL, - ), - ), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(db_index=True, default=django.utils.timezone.now, editable=False)), + ('updated_at', models.DateTimeField(default=django.utils.timezone.now, editable=False)), + ('deleted', models.BooleanField(db_index=True, default=False, editable=False)), + ('require_auth', models.BooleanField(default=True)), + ('start_date', models.DateTimeField(null=True)), + ('end_date', models.DateTimeField(null=True)), + ('status', models.CharField(choices=[('PENDING', 'Pending'), ('ACCEPTED', 'Accepted'), ('REJECTED', 'Rejected')], default='PENDING', max_length=8)), + ('message', models.TextField(blank=True)), + ('can_edit_groups', models.ManyToManyField(blank=True, related_name='can_edit_%(class)s', to='users.abakusgroup')), + ('can_edit_users', models.ManyToManyField(blank=True, related_name='can_edit_%(class)s', to=settings.AUTH_USER_MODEL)), + ('can_view_groups', models.ManyToManyField(blank=True, related_name='can_view_%(class)s', to='users.abakusgroup')), + ('created_by', models.ForeignKey(default=None, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_created', to=settings.AUTH_USER_MODEL)), + ('lendable_object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lending.lendableobject')), + ('updated_by', models.ForeignKey(default=None, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_updated', to=settings.AUTH_USER_MODEL)), ], options={ - "abstract": False, + 'abstract': False, }, ), ] diff --git a/lego/apps/lending/migrations/0002_alter_lendableobject_responsible_roles.py b/lego/apps/lending/migrations/0002_alter_lendableobject_responsible_roles.py deleted file mode 100644 index d60c053b0..000000000 --- a/lego/apps/lending/migrations/0002_alter_lendableobject_responsible_roles.py +++ /dev/null @@ -1,49 +0,0 @@ -# Generated by Django 4.0.10 on 2024-04-16 18:37 - -import django.contrib.postgres.fields -from django.db import migrations, models - -import lego.apps.lending.validators - - -class Migration(migrations.Migration): - dependencies = [ - ("lending", "0001_initial"), - ] - - operations = [ - migrations.AlterField( - model_name="lendableobject", - name="responsible_roles", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.CharField( - choices=[ - ("member", "member"), - ("leader", "leader"), - ("co-leader", "co-leader"), - ("treasurer", "treasurer"), - ("recruiting", "recruiting"), - ("development", "development"), - ("editor", "editor"), - ("retiree", "retiree"), - ("media_relations", "media_relations"), - ("active_retiree", "active_retiree"), - ("alumni", "alumni"), - ("webmaster", "webmaster"), - ("interest_group_admin", "interest_group_admin"), - ("alumni_admin", "alumni_admin"), - ("retiree_email", "retiree_email"), - ("company_admin", "company_admin"), - ("dugnad_admin", "dugnad_admin"), - ("trip_admin", "trip_admin"), - ("sponsor_admin", "sponsor_admin"), - ("social_admin", "social_admin"), - ], - max_length=30, - ), - default=["m", "e", "m", "b", "e", "r"], - size=None, - validators=[lego.apps.lending.validators.responsible_roles_validator], - ), - ), - ] diff --git a/lego/apps/lending/migrations/0003_remove_lendinginstance_can_edit_groups_and_more.py b/lego/apps/lending/migrations/0003_remove_lendinginstance_can_edit_groups_and_more.py deleted file mode 100644 index 546e52d24..000000000 --- a/lego/apps/lending/migrations/0003_remove_lendinginstance_can_edit_groups_and_more.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 4.0.10 on 2024-04-16 18:52 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("lending", "0002_alter_lendableobject_responsible_roles"), - ] - - operations = [ - migrations.RemoveField( - model_name="lendinginstance", - name="can_edit_groups", - ), - migrations.RemoveField( - model_name="lendinginstance", - name="can_edit_users", - ), - migrations.RemoveField( - model_name="lendinginstance", - name="can_view_groups", - ), - migrations.RemoveField( - model_name="lendinginstance", - name="require_auth", - ), - ] diff --git a/lego/apps/lending/migrations/0004_lendinginstance_can_edit_groups_and_more.py b/lego/apps/lending/migrations/0004_lendinginstance_can_edit_groups_and_more.py deleted file mode 100644 index be02889f4..000000000 --- a/lego/apps/lending/migrations/0004_lendinginstance_can_edit_groups_and_more.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 4.0.10 on 2024-04-16 18:53 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("users", "0041_user_linkedin_id_alter_user_github_username"), - ("lending", "0003_remove_lendinginstance_can_edit_groups_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="lendinginstance", - name="can_edit_groups", - field=models.ManyToManyField( - blank=True, related_name="can_edit_%(class)s", to="users.abakusgroup" - ), - ), - migrations.AddField( - model_name="lendinginstance", - name="can_edit_users", - field=models.ManyToManyField( - blank=True, - related_name="can_edit_%(class)s", - to=settings.AUTH_USER_MODEL, - ), - ), - migrations.AddField( - model_name="lendinginstance", - name="can_view_groups", - field=models.ManyToManyField( - blank=True, related_name="can_view_%(class)s", to="users.abakusgroup" - ), - ), - migrations.AddField( - model_name="lendinginstance", - name="require_auth", - field=models.BooleanField(default=True), - ), - ] diff --git a/lego/apps/lending/migrations/0005_alter_lendableobject_responsible_roles.py b/lego/apps/lending/migrations/0005_alter_lendableobject_responsible_roles.py deleted file mode 100644 index 28060c633..000000000 --- a/lego/apps/lending/migrations/0005_alter_lendableobject_responsible_roles.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 4.0.10 on 2024-04-23 18:29 - -import django.contrib.postgres.fields -from django.db import migrations, models -import lego.apps.lending.validators - - -class Migration(migrations.Migration): - dependencies = [ - ("lending", "0004_lendinginstance_can_edit_groups_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="lendableobject", - name="responsible_roles", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.CharField( - choices=[ - ("member", "member"), - ("leader", "leader"), - ("co-leader", "co-leader"), - ("treasurer", "treasurer"), - ("recruiting", "recruiting"), - ("development", "development"), - ("editor", "editor"), - ("retiree", "retiree"), - ("media_relations", "media_relations"), - ("active_retiree", "active_retiree"), - ("alumni", "alumni"), - ("webmaster", "webmaster"), - ("interest_group_admin", "interest_group_admin"), - ("alumni_admin", "alumni_admin"), - ("retiree_email", "retiree_email"), - ("company_admin", "company_admin"), - ("dugnad_admin", "dugnad_admin"), - ("trip_admin", "trip_admin"), - ("sponsor_admin", "sponsor_admin"), - ("social_admin", "social_admin"), - ], - max_length=30, - ), - default=["member"], - size=None, - validators=[lego.apps.lending.validators.responsible_roles_validator], - ), - ), - ] diff --git a/lego/apps/lending/migrations/0006_remove_lendinginstance_pending_and_more.py b/lego/apps/lending/migrations/0006_remove_lendinginstance_pending_and_more.py deleted file mode 100644 index 387a1a5ac..000000000 --- a/lego/apps/lending/migrations/0006_remove_lendinginstance_pending_and_more.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.0.10 on 2024-05-01 17:02 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lending', '0005_alter_lendableobject_responsible_roles'), - ] - - operations = [ - migrations.RemoveField( - model_name='lendinginstance', - name='pending', - ), - migrations.AddField( - model_name='lendinginstance', - name='status', - field=models.CharField(choices=[('PENDING', 'Pending'), ('ACCEPTED', 'Accepted'), ('REJECTED', 'Rejected')], default='PENDING', max_length=8), - ), - ] diff --git a/lego/apps/lending/notifications.py b/lego/apps/lending/notifications.py index a3dd7751b..b6530c950 100644 --- a/lego/apps/lending/notifications.py +++ b/lego/apps/lending/notifications.py @@ -4,7 +4,7 @@ from lego.apps.users.models import User -class LendingInstanceNotification(Notification): +class LendingInstanceCreateNotification(Notification): def __init__(self, lending_instance: LendingInstance, user: User): self.lending_instance = lending_instance self.lender = lending_instance.user