first
This commit is contained in:
commit
fa9d154db9
260 files changed
+17643
No files matched your search
@@ -0,0 +1,72 @@
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
|
||||
from apps.staff.models import StaffProfile
|
||||
from apps.staff.forms import StaffProfileAdminForm
|
||||
from .models import MagicLinkAccessLog, OTPChallenge, TicketMagicLink, User
|
||||
|
||||
|
||||
class MagicLinkAccessLogInline(admin.TabularInline):
|
||||
model = MagicLinkAccessLog
|
||||
extra = 0
|
||||
can_delete = False
|
||||
fields = ("opened_at", "ip_address", "user_agent")
|
||||
readonly_fields = fields
|
||||
|
||||
def has_add_permission(self, request, obj=None):
|
||||
return False
|
||||
|
||||
|
||||
@admin.register(TicketMagicLink)
|
||||
class TicketMagicLinkAdmin(admin.ModelAdmin):
|
||||
list_display = ("ticket", "recipient_name", "recipient_mobile", "created_unit", "created_by", "created_at", "expires_at", "view_count", "revoked_at")
|
||||
list_filter = ("created_unit", "created_reason", "revoked_at", "expires_at")
|
||||
search_fields = ("ticket__ticket_number", "recipient_name", "recipient_mobile", "created_by__username")
|
||||
readonly_fields = ("ticket", "customer", "token_hash", "created_by", "created_unit", "recipient_name", "recipient_mobile", "created_at", "expires_at", "used_at", "revoked_at", "created_reason", "last_used_ip", "last_user_agent", "view_count")
|
||||
inlines = (MagicLinkAccessLogInline,)
|
||||
|
||||
def get_queryset(self, request):
|
||||
queryset = super().get_queryset(request).select_related("ticket", "created_unit", "created_by")
|
||||
if request.user.is_superuser or request.user.has_perm("accounts.view_all_magic_links"):
|
||||
return queryset
|
||||
unit_ids = request.user.unit_memberships.filter(is_active=True).values_list("unit_id", flat=True)
|
||||
return queryset.filter(created_unit_id__in=unit_ids)
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return False
|
||||
|
||||
|
||||
@admin.register(MagicLinkAccessLog)
|
||||
class MagicLinkAccessLogAdmin(admin.ModelAdmin):
|
||||
list_display = ("magic_link", "opened_at", "ip_address", "user_agent")
|
||||
list_filter = ("opened_at",)
|
||||
search_fields = ("magic_link__ticket__ticket_number", "ip_address", "user_agent")
|
||||
readonly_fields = ("magic_link", "opened_at", "ip_address", "user_agent")
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return False
|
||||
|
||||
def has_change_permission(self, request, obj=None):
|
||||
return False
|
||||
|
||||
class StaffProfileInline(admin.StackedInline):
|
||||
model = StaffProfile
|
||||
form = StaffProfileAdminForm
|
||||
extra = 0
|
||||
max_num = 1
|
||||
fields = ("primary_unit", "role", "first_name", "last_name", "display_name", "job_title", "avatar", "mobile", "bale_chat_id", "bale_notifications_enabled", "is_customer_selectable", "sort_order", "is_active")
|
||||
|
||||
@admin.register(User)
|
||||
class CustomUserAdmin(UserAdmin):
|
||||
fieldsets = UserAdmin.fieldsets + (("سامانه تیکت", {"fields": ("mobile", "account_type")}),)
|
||||
add_fieldsets = UserAdmin.add_fieldsets + (("سامانه تیکت", {"fields": ("mobile", "account_type")}),)
|
||||
list_display = ("username", "mobile", "account_type", "is_active", "is_staff")
|
||||
list_filter = UserAdmin.list_filter + ("account_type",)
|
||||
inlines = (StaffProfileInline,)
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
if obj.account_type == User.AccountType.STAFF:
|
||||
obj.is_staff = True
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
admin.site.register(OTPChallenge)
|
||||
Reference in new issue
Block a user