From fa489cf22c046144da28703e49a3dc0b677cfc77 Mon Sep 17 00:00:00 2001 From: Arman Mokammel Date: Mon, 22 Sep 2025 14:45:34 +0600 Subject: [PATCH 01/41] update --- access_ctrl/utils.py | 3 +++ core/admin.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/access_ctrl/utils.py b/access_ctrl/utils.py index 790ea4e..64c3a7e 100644 --- a/access_ctrl/utils.py +++ b/access_ctrl/utils.py @@ -7,6 +7,9 @@ def user_has_permission(user, codename, obj=None): """ Check if a user has a permission, directly, via role, or object-level. """ + if user.is_superuser: + return True + try: perm = Perms.objects.get(codename=codename) except Perms.DoesNotExist: diff --git a/core/admin.py b/core/admin.py index 62bc1f2..263b905 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,7 +1,11 @@ from django.contrib import admin from core.models import Token_Session, Registered_Participant, Token_Participant +from django.contrib.auth.models import Group # Register your models here. + +admin.site.unregister(Group) + @admin.register(Token_Session) class SessionAdmin(admin.ModelAdmin): From 8bd97074cd5786aac55b538bd0ab407a3e56ebbc Mon Sep 17 00:00:00 2001 From: Arman Mokammel Date: Mon, 22 Sep 2025 15:28:09 +0600 Subject: [PATCH 02/41] Access backend updated --- access_ctrl/admin.py | 32 +++++++++++++++++-- access_ctrl/apps.py | 16 ++++++++++ core/admin.py | 3 -- insb_spac24/settings.py | 3 +- .../migrations/0002_alter_errorlog_options.py | 17 ++++++++++ system_administration/models.py | 3 ++ 6 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 system_administration/migrations/0002_alter_errorlog_options.py diff --git a/access_ctrl/admin.py b/access_ctrl/admin.py index 6ecdf16..90b4eae 100644 --- a/access_ctrl/admin.py +++ b/access_ctrl/admin.py @@ -1,8 +1,36 @@ from django.contrib import admin from .models import * +from django.contrib.auth.models import User +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin # Register your models here. +class CustomUserAdmin(BaseUserAdmin): + # Remove 'groups' and 'user_permissions' from the fieldsets + fieldsets = ( + (None, {'fields': ('username', 'password')}), + ('Personal info', {'fields': ('first_name', 'last_name', 'email')}), + ('Important dates', {'fields': ('last_login', 'date_joined')}), + ('Status', {'fields': ('is_active', 'is_staff', 'is_superuser')}), + ) + + # Remove them from add_fieldsets too (user creation form) + add_fieldsets = ( + (None, { + 'classes': ('wide',), + 'fields': ('username', 'password1', 'password2'), + }), + ) + + # Hide columns in the list display if you don’t want them there + def get_fieldsets(self, request, obj=None): + return super().get_fieldsets(request, obj) + +# Unregister the original UserAdmin +admin.site.unregister(User) +# Register our custom one +admin.site.register(User, CustomUserAdmin) + # ----------------------------- # Permission Admin # ----------------------------- @@ -27,7 +55,7 @@ class RoleAdmin(admin.ModelAdmin): @admin.register(RolePermission) class RolePermissionAdmin(admin.ModelAdmin): list_display = ("role",) - filter_horizontal = ("permissions",) # Makes ManyToMany easy to edit + filter_horizontal = ("permissions",) search_fields = ("role__name",) # ----------------------------- @@ -36,7 +64,7 @@ class RolePermissionAdmin(admin.ModelAdmin): @admin.register(UserPermission) class UserPermissionAdmin(admin.ModelAdmin): list_display = ("user",) - filter_horizontal = ("permissions",) # Makes ManyToMany easy to edit + filter_horizontal = ("permissions",) search_fields = ("user__username",) # ----------------------------- diff --git a/access_ctrl/apps.py b/access_ctrl/apps.py index eef60d2..75b33d8 100644 --- a/access_ctrl/apps.py +++ b/access_ctrl/apps.py @@ -1,6 +1,22 @@ from django.apps import AppConfig +from django.contrib.auth.apps import AuthConfig as BaseAuthConfig class AccessCtrlConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'access_ctrl' + +class CustomAuthConfig(BaseAuthConfig): + verbose_name = "User Management" + + def ready(self): + super().ready() # registers User & Group + from django.contrib import admin + from django.contrib.auth.models import Group + + # Unregister Group after it's registered + try: + admin.site.unregister(Group) + except admin.sites.NotRegistered: + pass + diff --git a/core/admin.py b/core/admin.py index 263b905..dad469e 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,11 +1,8 @@ from django.contrib import admin from core.models import Token_Session, Registered_Participant, Token_Participant -from django.contrib.auth.models import Group # Register your models here. -admin.site.unregister(Group) - @admin.register(Token_Session) class SessionAdmin(admin.ModelAdmin): diff --git a/insb_spac24/settings.py b/insb_spac24/settings.py index c076eac..80ffd20 100644 --- a/insb_spac24/settings.py +++ b/insb_spac24/settings.py @@ -39,7 +39,7 @@ INSTALLED_APPS = [ 'django.contrib.admin', - 'django.contrib.auth', + # 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', @@ -49,6 +49,7 @@ 'registration', 'system_administration', 'access_ctrl', + 'access_ctrl.apps.CustomAuthConfig' ] MIDDLEWARE = [ diff --git a/system_administration/migrations/0002_alter_errorlog_options.py b/system_administration/migrations/0002_alter_errorlog_options.py new file mode 100644 index 0000000..7e5a32c --- /dev/null +++ b/system_administration/migrations/0002_alter_errorlog_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.4 on 2025-09-22 09:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('system_administration', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='errorlog', + options={'verbose_name': 'Error Log'}, + ), + ] diff --git a/system_administration/models.py b/system_administration/models.py index 5b53211..86ef1fe 100644 --- a/system_administration/models.py +++ b/system_administration/models.py @@ -11,5 +11,8 @@ class ErrorLog(models.Model): message = models.TextField() traceback = models.TextField() + class Meta: + verbose_name = 'Error Log' + def __str__(self): return f"{self.timestamp} - {self.exception_type}" \ No newline at end of file From bc4532fd0a46876e3cfcaee45856b30d5b938788 Mon Sep 17 00:00:00 2001 From: Arman Mokammel Date: Mon, 22 Sep 2025 15:48:23 +0600 Subject: [PATCH 03/41] . --- access_ctrl/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/access_ctrl/admin.py b/access_ctrl/admin.py index 90b4eae..e5595c6 100644 --- a/access_ctrl/admin.py +++ b/access_ctrl/admin.py @@ -11,7 +11,7 @@ class CustomUserAdmin(BaseUserAdmin): (None, {'fields': ('username', 'password')}), ('Personal info', {'fields': ('first_name', 'last_name', 'email')}), ('Important dates', {'fields': ('last_login', 'date_joined')}), - ('Status', {'fields': ('is_active', 'is_staff', 'is_superuser')}), + ('Status', {'fields': ('is_active', 'is_staff', 'is_superuser', 'user_permissions')}), ) # Remove them from add_fieldsets too (user creation form) From 488f7b5f04a32478eb863da192d02bab10ca6f0d Mon Sep 17 00:00:00 2001 From: Rahiq Rahman Date: Mon, 22 Sep 2025 15:52:59 +0600 Subject: [PATCH 04/41] back btn added, margin top added --- registration/templates/form_response.html | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/registration/templates/form_response.html b/registration/templates/form_response.html index e681bf4..81e400f 100644 --- a/registration/templates/form_response.html +++ b/registration/templates/form_response.html @@ -103,17 +103,21 @@ - {% endif %} -
+{% endif %} +
+
{% csrf_token %} -

IEEE Student Transition and Elevation Partnership 2025 -
Igniting Future Innovators

-

BASIC INFO