diff --git a/api/dashboard/user/dash_user_views.py b/api/dashboard/user/dash_user_views.py index 88d704be..c27d95c5 100644 --- a/api/dashboard/user/dash_user_views.py +++ b/api/dashboard/user/dash_user_views.py @@ -14,7 +14,7 @@ from utils.utils import CommonUtils, DateTimeUtils, DiscordWebhooks, send_template_mail from . import dash_user_serializer -BE_DOMAIN_NAME = decouple_config('BE_DOMAIN_NAME') +BE_DOMAIN_NAME = decouple_config("BE_DOMAIN_NAME") class UserInfoAPI(APIView): @@ -52,18 +52,13 @@ def get(self, request, user_id): @role_required([RoleType.ADMIN.value]) def delete(self, request, user_id): - user = User.objects.filter(id=user_id).first() - - if user is None: + try: + user = User.objects.get(id=user_id).delete() return CustomResponse( - general_message="User Not Available" - ).get_failure_response() - - user.delete() - - return CustomResponse( - general_message="User deleted successfully" - ).get_success_response() + general_message="User deleted successfully" + ).get_success_response() + except User.DoesNotExist as e: + return CustomResponse(general_message=str(e)).get_failure_response() @role_required([RoleType.ADMIN.value]) def patch(self, request, user_id): @@ -237,9 +232,9 @@ def post(self, request): email_muid = request.data.get("emailOrMuid") if not ( - user := User.objects.filter( - Q(muid=email_muid) | Q(email=email_muid) - ).first() + user := User.objects.filter( + Q(muid=email_muid) | Q(email=email_muid) + ).first() ): return CustomResponse( general_message="User not exist" diff --git a/db/apps.py b/db/apps.py index ae2edeae..554ab03f 100644 --- a/db/apps.py +++ b/db/apps.py @@ -1,6 +1,24 @@ from django.apps import AppConfig +from decouple import config + + +class SystemUserNotFoundError(Exception): + pass class DbConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" name = "db" + + def ready(self) -> None: + _ready = super().ready() + self.check_system_user_exists() + return _ready + + @classmethod + def check_system_user_exists(cls): + from db.user import User + if not User.objects.filter(id=config("SYSTEM_ADMIN_ID")).exists(): + raise SystemUserNotFoundError( + f"Create a System User with pk -\"{config('SYSTEM_ADMIN_ID')}\"" + ) diff --git a/db/hackathon.py b/db/hackathon.py index 5847084f..59701862 100644 --- a/db/hackathon.py +++ b/db/hackathon.py @@ -3,7 +3,7 @@ from db.organization import District, Organization from db.user import User -from .helper import get_system_admin_id +from django.conf import settings # fmt: off # noinspection PyPep8 @@ -27,9 +27,9 @@ class Hackathon(models.Model): event_start = models.DateTimeField(blank=True, null=True) event_end = models.DateTimeField(blank=True, null=True) status = models.CharField(max_length=20, blank=True, null=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', related_name='hackathon_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='hackathon_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='hackathon_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='hackathon_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -43,9 +43,9 @@ class HackathonForm(models.Model): field_name = models.CharField(max_length=255) field_type = models.CharField(max_length=50) is_required = models.BooleanField(default=False) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', related_name='hackathon_form_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='hackathon_form_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='hackathon_form_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='hackathon_form_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -57,9 +57,9 @@ class HackathonOrganiserLink(models.Model): id = models.CharField(primary_key=True, max_length=36) organiser = models.ForeignKey(User, on_delete=models.CASCADE) hackathon = models.ForeignKey(Hackathon, on_delete=models.CASCADE) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', related_name='hackathon_organiser_link_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='hackathon_organiser_link_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='hackathon_organiser_link_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='hackathon_organiser_link_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -71,9 +71,9 @@ class HackathonUserSubmission(models.Model): id = models.CharField(primary_key=True, max_length=36) user = models.ForeignKey(User, on_delete=models.CASCADE) hackathon = models.ForeignKey(Hackathon, on_delete=models.CASCADE) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', related_name='hackathon_submission_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='hackathon_submission_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='hackathon_submission_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='hackathon_submission_created_by') created_at = models.DateTimeField(auto_now_add=True) data = models.JSONField(max_length=2000, blank=True, null=True) diff --git a/db/helper.py b/db/helper.py deleted file mode 100644 index aa38a05a..00000000 --- a/db/helper.py +++ /dev/null @@ -1,6 +0,0 @@ -from decouple import config - - -def get_system_admin_id(): - from db.user import User - return User.objects.get(pk=config("SYSTEM_ADMIN_ID")) diff --git a/db/integrations.py b/db/integrations.py index 377524ce..cc05caf8 100644 --- a/db/integrations.py +++ b/db/integrations.py @@ -4,7 +4,7 @@ from db.user import User -from .helper import get_system_admin_id +from django.conf import settings # fmt: off # noinspection PyPep8 diff --git a/db/learning_circle.py b/db/learning_circle.py index ec5a90b0..b5abd2d4 100644 --- a/db/learning_circle.py +++ b/db/learning_circle.py @@ -5,7 +5,7 @@ from db.task import InterestGroup, Organization from db.user import User -from .helper import get_system_admin_id +from django.conf import settings # fmt: off # noinspection PyPep8 @@ -22,10 +22,10 @@ class LearningCircle(models.Model): meet_time = models.CharField(max_length=10, blank=True, null=True) day = models.CharField(max_length=20, blank=True, null=True) note = models.CharField(max_length=500, blank=True, null=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="learning_circle_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="learning_circle_created_by") created_at = models.DateTimeField(auto_now=True) @@ -59,10 +59,10 @@ class CircleMeetingLog(models.Model): attendees = models.CharField(max_length=216) agenda = models.CharField(max_length=2000) images = models.ImageField(max_length=200, upload_to='lc/meet-report') - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='circle_meeting_log_created_by') created_at = models.DateTimeField(auto_now=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='circle_meeting_log_updated_by') updated_at = models.DateTimeField(auto_now=True) diff --git a/db/notification.py b/db/notification.py index 402ff843..68211804 100644 --- a/db/notification.py +++ b/db/notification.py @@ -4,7 +4,7 @@ from db.user import User -from .helper import get_system_admin_id +from django.conf import settings # fmt: off # noinspection PyPep8 @@ -17,7 +17,7 @@ class Notification(models.Model): button = models.CharField(max_length=10, blank=True, null=True) url = models.CharField(max_length=100, blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", related_name="created_notifications") + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="created_notifications") class Meta: managed = False diff --git a/db/organization.py b/db/organization.py index bc5a1594..76fe4d3a 100644 --- a/db/organization.py +++ b/db/organization.py @@ -2,7 +2,7 @@ from django.db import models -from .helper import get_system_admin_id +from django.conf import settings from .user import User # fmt: off @@ -11,10 +11,10 @@ class Country(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) name = models.CharField(max_length=75, null=False, unique=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='country_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='country_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -27,10 +27,10 @@ class State(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) name = models.CharField(max_length=75) country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name='state_country') - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='state_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='state_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -43,10 +43,10 @@ class Zone(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) name = models.CharField(max_length=75) state = models.ForeignKey(State, on_delete=models.CASCADE, related_name='zone_state') - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='zone_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='zone_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -59,10 +59,10 @@ class District(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) name = models.CharField(max_length=75) zone = models.ForeignKey(Zone, on_delete=models.CASCADE, related_name="district_zone") - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='district_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='district_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -75,10 +75,10 @@ class OrgAffiliation(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4()) title = models.CharField(max_length=75) updated_by = models.ForeignKey( - User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', related_name='org_affiliation_updated_by') + User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='org_affiliation_updated_by') updated_at = models.DateTimeField(auto_now=True) created_by = models.ForeignKey( - User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='org_affiliation_created_by') + User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='org_affiliation_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -93,10 +93,10 @@ class Organization(models.Model): org_type = models.CharField(max_length=25) affiliation = models.ForeignKey(OrgAffiliation, on_delete=models.CASCADE, blank=True, null=True, related_name='organization_affiliation') district = models.ForeignKey(District, on_delete=models.CASCADE, related_name='organization_district') - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='organization_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='organization_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -108,10 +108,10 @@ class Meta: class Department(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4()) title = models.CharField(max_length=100) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='department_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='department_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -124,10 +124,10 @@ class College(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4()) level = models.IntegerField(default=0) org = models.OneToOneField(Organization, on_delete=models.CASCADE, related_name='college_org', unique=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='college_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='college_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -140,10 +140,10 @@ class OrgDiscordLink(models.Model): id = models.CharField(primary_key=True, max_length=36) discord_id = models.CharField(unique=True, max_length=36) org = models.OneToOneField(Organization, on_delete=models.CASCADE, related_name='org_discord_link_org_id') - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='org_discord_link_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='org_discord_link_created_by') created_at = models.DateTimeField(auto_now_add=True) @@ -161,7 +161,7 @@ class UserOrganizationLink(models.Model): graduation_year = models.CharField(max_length=10, blank=True, null=True) verified = models.BooleanField() is_alumni = models.IntegerField(blank=True, null=True, default=False) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='user_organization_link_created_by') created_at = models.DateTimeField(auto_now_add=True) diff --git a/db/settings.py b/db/settings.py index 2ce359dc..e69bc548 100644 --- a/db/settings.py +++ b/db/settings.py @@ -1,12 +1,28 @@ from django.db import models +from db.user import User + +# fmt: off +# noinspection PyPep8 + +class Device(models.Model): + id = models.CharField(primary_key=True, max_length=36) + browser = models.CharField(max_length=36, null=False) + os = models.CharField(max_length=36, null=False) + user_id = models.ForeignKey(User, on_delete=models.CASCADE) + last_log_in = models.DateTimeField(null=False) + + class Meta: + managed = False + db_table = "device" + class SystemSetting(models.Model): - key = models.CharField(primary_key=True, max_length=100) - value = models.CharField(max_length=100) - updated_at = models.DateTimeField() - created_at = models.DateTimeField() + key = models.CharField(primary_key=True, max_length=100) + value = models.CharField(max_length=100) + updated_at = models.DateTimeField() + created_at = models.DateTimeField() class Meta: managed = False - db_table = "system_setting" + db_table = "system_setting" \ No newline at end of file diff --git a/db/task.py b/db/task.py index 382d0ce7..7d21e97f 100644 --- a/db/task.py +++ b/db/task.py @@ -4,7 +4,7 @@ from db.organization import Organization -from .helper import get_system_admin_id +from django.conf import settings from .user import User # fmt: off @@ -16,14 +16,14 @@ class Channel(models.Model): discord_id = models.CharField(max_length=36) updated_by = models.ForeignKey( User, - on_delete=models.SET(get_system_admin_id), + on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="channel_updated_by", ) updated_at = models.DateTimeField(auto_now=True) created_by = models.ForeignKey( User, - on_delete=models.SET(get_system_admin_id), + on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="channel_created_by", ) @@ -39,10 +39,10 @@ class InterestGroup(models.Model): name = models.CharField(max_length=75, unique=True) code = models.CharField(max_length=10, unique=True) icon = models.CharField(max_length=10) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="interest_group_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="interest_group_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -56,10 +56,10 @@ class Level(models.Model): level_order = models.IntegerField() name = models.CharField(max_length=36) karma = models.IntegerField() - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="level_created_by") created_at = models.DateTimeField(auto_now_add=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="level_updated_by") updated_at = models.DateTimeField(auto_now=True) @@ -72,10 +72,10 @@ class UserLvlLink(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user_lvl_link_user") level = models.ForeignKey(Level, on_delete=models.CASCADE, related_name="user_lvl_link_level") - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="user_lvl_link_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="user_lvl_link_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -87,10 +87,10 @@ class Meta: class TaskType(models.Model): id = models.CharField(primary_key=True, max_length=36) title = models.CharField(max_length=75) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="task_type_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="task_type_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -133,10 +133,10 @@ class Wallet(models.Model): karma = models.IntegerField(default=0) karma_last_updated_at = models.DateTimeField(blank=True, null=True, auto_now=True) coin = models.FloatField(default=0) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="wallet_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="wallet_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -155,16 +155,16 @@ class KarmaActivityLog(models.Model): lobby_message_id = models.CharField(max_length=36, blank=True, null=True) dm_message_id = models.CharField(max_length=36, blank=True, null=True) peer_approved = models.BooleanField(blank=True, null=True) - peer_approved_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="peer_approved_by", blank=True, + peer_approved_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="peer_approved_by", blank=True, null=True, related_name="karma_activity_log_peer_approved_by") appraiser_approved = models.BooleanField(blank=True, null=True) - appraiser_approved_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="appraiser_approved_by", + appraiser_approved_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="appraiser_approved_by", blank=True, null=True, related_name="karma_activity_log_appraiser_approved_by") - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="karma_activity_log_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="karma_activity_log_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -179,10 +179,10 @@ class MucoinActivityLog(models.Model): coin = models.FloatField() status = models.CharField(max_length=36) task = models.ForeignKey(TaskList, on_delete=models.CASCADE, related_name="mucoin_activity_log_task_list") - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="mucoin_activity_log_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="mucoin_activity_log_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -196,7 +196,7 @@ class MucoinInviteLog(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="mucoin_invite_log_user") email = models.CharField(max_length=200) invite_code = models.CharField(max_length=36) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="mucoin_invite_log_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -209,7 +209,7 @@ class UserIgLink(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user_ig_link_user") ig = models.ForeignKey(InterestGroup, on_delete=models.CASCADE, related_name="user_ig_link_ig") - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="user_ig_link_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -229,10 +229,10 @@ class VoucherLog(models.Model): claimed = models.BooleanField() event = models.CharField(max_length=50, null=True) description = models.CharField(max_length=2000, null=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="voucher_log_updated_by") updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="voucher_log_created_by") created_at = models.DateTimeField(auto_now_add=True) @@ -242,15 +242,13 @@ class Meta: class Events(models.Model): - id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) - name = models.CharField(max_length=75) + id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) + name = models.CharField(max_length=75) description = models.CharField(max_length=200, null=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="updated_by", - related_name="event_updated_by") - updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column="created_by", - related_name="event_created_by") - created_at = models.DateTimeField(auto_now_add=True) + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="updated_by", related_name="event_updated_by") + updated_at = models.DateTimeField(auto_now=True) + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column="created_by", related_name="event_created_by") + created_at = models.DateTimeField(auto_now_add=True) class Meta: managed = False diff --git a/db/url_shortener.py b/db/url_shortener.py index 5d3f6cbb..b7b6a9aa 100644 --- a/db/url_shortener.py +++ b/db/url_shortener.py @@ -2,7 +2,7 @@ from db.user import User -from .helper import get_system_admin_id +from django.conf import settings # fmt: off # noinspection PyPep8 @@ -13,10 +13,10 @@ class UrlShortener(models.Model): short_url = models.CharField(unique=True, max_length=100) long_url = models.CharField(max_length=500) count = models.IntegerField(blank=True, null=True, default=0) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='url_shortener_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='url_shortener_created_by') created_at = models.DateTimeField(auto_now_add=True) diff --git a/db/user.py b/db/user.py index eb1212da..decfd16b 100644 --- a/db/user.py +++ b/db/user.py @@ -3,7 +3,7 @@ from django.core.files.storage import FileSystemStorage from django.db import models -from db.helper import get_system_admin_id +from django.conf import settings from .managers import user_manager from decouple import config as decouple_config @@ -26,7 +26,7 @@ class User(models.Model): district = models.ForeignKey("District", on_delete=models.CASCADE, blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True) suspended_at = models.DateTimeField(blank=True, null=True) - suspended_by = models.ForeignKey("self", on_delete=models.SET(get_system_admin_id), blank=True, null=True, related_name="user_suspended_by_user", db_column="suspended_by") + suspended_by = models.ForeignKey("self", on_delete=models.SET(settings.SYSTEM_ADMIN_ID), blank=True, null=True, related_name="user_suspended_by_user", db_column="suspended_by", default=None) objects = user_manager.ActiveUserManager() every = models.Manager() @@ -66,9 +66,9 @@ class UserReferralLink(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_referral_link_user') referral = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_referral_link_referral') is_coin = models.BooleanField(default=False) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), related_name='user_referral_link_updated_by', db_column='updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), related_name='user_referral_link_updated_by', db_column='updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), related_name='user_referral_link_created_by', db_column='created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), related_name='user_referral_link_created_by', db_column='created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -80,9 +80,9 @@ class Role(models.Model): id = models.CharField(primary_key=True, max_length=36) title = models.CharField(max_length=75) description = models.CharField(max_length=300, blank=True, null=True) - updated_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='updated_by', related_name='role_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='role_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='role_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='role_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -95,7 +95,7 @@ class UserRoleLink(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_role_link_user') role = models.ForeignKey(Role, on_delete=models.CASCADE) verified = models.BooleanField(default=False) - created_by = models.ForeignKey(User, on_delete=models.SET(get_system_admin_id), db_column='created_by', related_name='user_role_link_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='user_role_link_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -118,8 +118,8 @@ class Socials(models.Model): stackoverflow = models.CharField(max_length=60, blank=True, null=True) medium = models.CharField(max_length=60, blank=True, null=True) hackerrank = models.CharField(max_length=60, blank=True, null=True) - created_by = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id)), db_column='created_by', related_name='socials_created_by') - updated_by = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id)), db_column='updated_by', related_name='socials_updated_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='socials_created_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='socials_updated_by') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(blank=True, null=True, auto_now=True) @@ -130,7 +130,7 @@ class Meta: class ForgotPassword(models.Model): id = models.CharField(primary_key=True, max_length=36) - user = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id))) + user = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID)) expiry = models.DateTimeField() created_at = models.DateTimeField(auto_now_add=True) @@ -143,9 +143,9 @@ class UserSettings(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user_settings_user") is_public = models.BooleanField(default=False) - updated_by = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id)), db_column='updated_by', related_name='user_settings_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='user_settings_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id)), db_column='created_by', related_name='user_settings_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='user_settings_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -157,9 +157,9 @@ class DynamicRole(models.Model): id = models.CharField(primary_key=True, max_length=36) type = models.CharField(max_length=50) role = models.ForeignKey(Role, on_delete=models.CASCADE, db_column='role', related_name='dynamic_role_role') - updated_by = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id)), db_column='updated_by', related_name='dynamic_role_updated_by') + updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='dynamic_role_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey(User, on_delete=models.SET(models.SET(get_system_admin_id)), db_column='created_by', related_name='dynamic_role_created_by') + created_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='dynamic_role_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: @@ -171,9 +171,9 @@ class DynamicUser(models.Model): id = models.CharField(primary_key=True, max_length=36) type = models.CharField(max_length=50) user = models.ForeignKey('User', on_delete=models.CASCADE, related_name='dynamic_user_user') - updated_by = models.ForeignKey('User', on_delete=models.SET(models.SET(get_system_admin_id)), db_column='updated_by', related_name='dynamic_user_updated_by') + updated_by = models.ForeignKey('User', on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='dynamic_user_updated_by') updated_at = models.DateTimeField(auto_now=True) - created_by = models.ForeignKey('User', on_delete=models.SET(models.SET(get_system_admin_id)), db_column='created_by', related_name='dynamic_user_created_by') + created_by = models.ForeignKey('User', on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='created_by', related_name='dynamic_user_created_by') created_at = models.DateTimeField(auto_now_add=True) class Meta: diff --git a/mulearnbackend/settings.py b/mulearnbackend/settings.py index 774d6404..3f9d6d39 100644 --- a/mulearnbackend/settings.py +++ b/mulearnbackend/settings.py @@ -31,6 +31,9 @@ ALLOWED_HOSTS = decouple_config("ALLOWED_HOSTS", cast=lambda v: [s.strip() for s in v.split(",")]) +# System admin applied to rows when their parent user instance is deleted +SYSTEM_ADMIN_ID = decouple_config("SYSTEM_ADMIN_ID") + # Application definition INSTALLED_APPS = [