shortener/src/redirect/admin.py

49 lines
1.8 KiB
Python
Raw Normal View History

from django.contrib import admin
2022-02-27 23:07:57 +01:00
from django.contrib.auth import get_permission_codename
from django.contrib.auth.admin import UserAdmin
2022-02-27 23:07:57 +01:00
from django.http import HttpRequest
2022-03-25 19:57:42 +01:00
from django.utils.safestring import mark_safe
from redirect.models import Redirect
from .models import RedirectUser
@admin.register(Redirect)
class RedirectAdmin(admin.ModelAdmin):
2022-03-25 19:57:42 +01:00
list_display = ["short_code", "link", "owner", "group_owner", "target_url"]
def changelist_view(self, request, extra_context=None):
self.request = request
return super().changelist_view(request, extra_context)
2022-02-27 23:07:57 +01:00
def has_change_permission(self, request: HttpRequest, obj: Redirect = None):
opts = self.opts
codename = get_permission_codename("change", opts)
return request.user.has_perm(f"{opts.app_label}.{codename}", obj)
2022-06-29 14:01:02 +02:00
def has_delete_permission(self, request: HttpRequest, obj: Redirect = None):
opts = self.opts
codename = get_permission_codename("delete", opts)
return request.user.has_perm(f"{opts.app_label}.{codename}", obj)
2022-02-27 23:07:57 +01:00
def has_view_permission(self, request: HttpRequest, obj: Redirect = None):
opts = self.opts
codename = get_permission_codename("view", opts)
return request.user.has_perm(
f"{opts.app_label}.{codename}", obj
) or self.has_change_permission(request, obj)
2022-02-28 11:33:57 +01:00
def get_changeform_initial_data(self, request):
get_data = super().get_changeform_initial_data(request)
get_data["owner"] = request.user.pk
return get_data
2022-03-25 19:57:42 +01:00
def link(self, instance: Redirect) -> str:
url = instance.get_absolute_url()
url = self.request.build_absolute_uri(url)
2022-06-30 08:37:10 +02:00
return mark_safe(f'<a href="{url}">link</a>') # noqa: S308, S703
2022-03-25 19:57:42 +01:00
admin.site.register(RedirectUser, UserAdmin)