from django.contrib import admin, messages
+from django.urls import base
from django.utils.translation import ngettext
# Register your models here.
class CategoryAdmin(admin.ModelAdmin):
exlude = None
inlines = [CategoryInline]
+
+ def has_change_permission(self, request, obj=None):
+ basepermission = super().has_change_permission(request, obj)
+ if obj:
+ allowed = obj.group.all()
+ else:
+ allowed = []
+
+ if basepermission and (request.user in allowed):
+ return True
+ return False
+
+
+class GeoreportAdminSite(admin.AdminSite):
+ site_header = "My cool admin site"
+
+
+admin_site = GeoreportAdminSite(name="coolAdmin")
+admin_site.register(Report, ReportAdmin)
+admin_site.register(Category, CategoryAdmin)
--- /dev/null
+# Generated by Django 5.1.4 on 2025-01-20 12:04
+
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('georeport', '0007_delete_group'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='category',
+ name='group',
+ field=models.ManyToManyField(related_name='owner', to=settings.AUTH_USER_MODEL),
+ ),
+ ]
from asyncio import wait
from django.db import models
+from django.contrib.auth.models import Group, User, Permission
# Create your models here.
blank=True,
)
+ group = models.ManyToManyField(User, related_name="owner")
+
class Meta:
verbose_name_plural = "Categories"
--- /dev/null
+#map {
+ width: 50%;
+ border: 3px solid;
+ margin: auto;
+ border-radius: 25px;
+}
<style>
#map { height: 500px;}
</style>
+ <link rel="stylesheet" href="{% static 'georeport/style.css' %}"
</head>
def category_details(request, id):
category = get_object_or_404(Category, pk=id)
- return render(request, "georeport/category.html", context={"category": category})
+ user = request.user
+
+ allowed = category.group.all()
+
+ if user in allowed or user.is_superuser:
+ return render(
+ request, "georeport/category.html", context={"category": category}
+ )
+ else:
+ return HttpResponseForbidden("Not allowed")
def create(request):
from django.urls import path, include
from debug_toolbar.toolbar import debug_toolbar_urls
+from georeport.admin import admin_site
+
urlpatterns = [
path("admin/", admin.site.urls),
- path("", include("snippets.urls")),
+ path("myadmin/", admin_site.urls),
+ path("snippets/", include("snippets.urls")),
path("georeport/", include("georeport.urls")),
path("polls/", include("polls.urls")),
] + debug_toolbar_urls()
router = DefaultRouter()
-router.register(r"snippets", SnippetViewSet, basename="snippet")
+router.register(r"", SnippetViewSet, basename="snippet")
router.register(r"users", UserViewSet, basename="user")
urlpatterns = [path("", include(router.urls))]