]> git.menne-pb.de Git - pinpoint.git/commitdiff
Add inlines for usermanagement
authorJörn Menne <jmenne@fedora.de>
Tue, 11 Feb 2025 14:20:54 +0000 (15:20 +0100)
committerJörn Menne <jmenne@fedora.de>
Tue, 11 Feb 2025 14:20:54 +0000 (15:20 +0100)
georeport/admin.py
georeport/models.py
georeport/views.py

index a23b035363a2f34764d5ac8c4bd317b2621b5b24..046a082f2a1b28be57f09e74aa0afe04b056cdb2 100644 (file)
@@ -1,17 +1,18 @@
 # Copyright: (c) 2025, Jörn Menne <jmenne@posteo.de>
 # GNU General Public License v3.0 (see LICSENE or https://www.gnu.org/license/gpl-3.0.md)
-from django.conf.global_settings import DEFAULT_FROM_EMAIL
-from django.contrib import admin, messages
+from base64 import urlsafe_b64encode
 from typing import override
-from django.utils.translation import ngettext
-from georeport.models import Category, Report
-from django.conf import settings
+
 from Crypto.Cipher import ChaCha20
-from base64 import urlsafe_b64encode
-from django.shortcuts import reverse
+from django.conf import settings
+from django.contrib import admin, messages
+from django.contrib.auth.admin import GroupAdmin, UserAdmin
+from django.contrib.auth.models import Group, User
 from django.core.mail import send_mail
+from django.shortcuts import reverse
+from django.utils.translation import ngettext
 
-# TODO: CategoryAdmin
+from georeport.models import Category, Report
 
 
 class CategoryInline(admin.TabularInline):
@@ -25,6 +26,26 @@ class CategoryInline(admin.TabularInline):
         return False
 
 
+class CategoryUserInline(admin.TabularInline):
+    model = Category.users.through
+    extra = 0
+    can_delete = False
+
+    @override
+    def has_change_permission(self, request, obj=None):
+        return False
+
+
+class CategoryGroupInline(admin.TabularInline):
+    model = Category.groups.through
+    extra = 0
+    can_delete = False
+
+    @override
+    def has_change_permission(self, request, obj=None):
+        return False
+
+
 @admin.register(Category)
 class CategoryAdmin(admin.ModelAdmin):
     """
@@ -32,8 +53,8 @@ class CategoryAdmin(admin.ModelAdmin):
     the admin site, such that the model can be edited on there.
     """
 
-    exclude = ["users", "groups"]
-    inlines = [CategoryInline]
+    exclude = ["users", "groups"]
+    inlines = [CategoryInline, CategoryGroupInline, CategoryUserInline]
     search_fields = ["name"]
     # TODO: Prevent circles while creating groups
 
@@ -84,7 +105,6 @@ def getAllowedUsers(category):
     return qs
 
 
-# TODO: ReportAdmin
 @admin.register(Report)
 class ReportAdmin(admin.ModelAdmin):
     exclude = [
@@ -191,3 +211,19 @@ def send_close_link(report):
         recipient_list=recipient_list,
         fail_silently=True,
     )
+
+
+admin.site.unregister(User)
+admin.site.unregister(Group)
+
+
+@admin.register(User)
+class MyUserAdmin(UserAdmin):
+    exlude = None
+    inlines = [CategoryUserInline]
+
+
+@admin.register(Group)
+class MyGroupAdmin(GroupAdmin):
+    exlude = None
+    inlines = [CategoryGroupInline]
index c52b70eed9837789c2500aea823d9111c7f54a21..d38b9d7a550daf0586f433f98f1e3f6d6035b042 100644 (file)
@@ -69,8 +69,7 @@ class Report(models.Model):
     title = models.CharField(max_length=100)
     description = models.TextField(blank=True, null=True)
     email = models.EmailField()
-    # TODO: Images
-
+    # TODO: Images NEXT
     # Fields set at creation
     state = models.IntegerField(choices=State, default=0)  # type: ignore Correct type can not be dtermined
     _oldState = models.IntegerField(choices=State, default=0)  # type: ignore Correct type can not be dtermined
@@ -92,4 +91,4 @@ class Report(models.Model):
         return str(self.title)
 
 
-# TODO: Image
+# TODO: Image NEXT
index ee2047adf65dfd3cfe2f54b09762c5908060d085..365e37a323931d59113bb3a8da3261566e66d2d2 100644 (file)
@@ -132,7 +132,6 @@ def create_report_view(request):
             send_creation_confirmation(report)
             send_creation_mail(report)
 
-        # TODO: Send confirmation-Mails
         return redirect("georeport:index")
 
     return render(