deepsite / management /admin.py
coerxso's picture
Upload 73 files
3e8a166 verified
raw
history blame
4.94 kB
# management/admin.py
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import (
CustomUser,
AdminLevel2,
Panel,
License,
EndUser,
Plan,
Subscription,
Payment,
DiscountCode,
TelegramUser,
SecurityToken,
PushSubscription,
PaymentMethod,
PaymentSetting,
PaymentDetail
)
# تنظیمات ادمین برای مدل CustomUser
@admin.register(CustomUser)
class CustomUserAdmin(BaseUserAdmin):
list_display = ('username', 'email', 'role', 'is_staff')
list_filter = ('role', 'is_staff', 'is_superuser', 'is_active')
search_fields = ('username', 'email')
ordering = ('username',)
fieldsets = BaseUserAdmin.fieldsets + (
('اطلاعات نقش', {'fields': ('role', 'marzban_admin_id')}),
)
# تنظیمات ادمین برای مدل AdminLevel2
@admin.register(AdminLevel2)
class AdminLevel2Admin(admin.ModelAdmin):
# FIXED: 'marzban_api_token' does not exist in the model
list_display = ('user', 'telegram_chat_id', 'license_expiry_date')
search_fields = ('user__username',)
# تنظیمات ادمین برای مدل Panel
@admin.register(Panel)
class PanelAdmin(admin.ModelAdmin):
# FIXED: 'url' and 'api_token' do not exist. Used correct fields.
list_display = ('name', 'owner', 'marzban_host')
search_fields = ('name', 'owner__username')
# تنظیمات ادمین برای مدل License
@admin.register(License)
class LicenseAdmin(admin.ModelAdmin):
# FIXED: Used correct field names from the model ('key', 'owner', etc.)
list_display = ('key', 'owner', 'is_active', 'created_at', 'expiry_date')
list_filter = ('is_active',)
search_fields = ('key', 'owner__username')
# تنظیمات ادمین برای مدل EndUser
@admin.register(EndUser)
class EndUserAdmin(admin.ModelAdmin):
list_display = ('username', 'panel', 'marzban_user_id')
search_fields = ('username', 'marzban_user_id')
list_filter = ('panel',)
# تنظیمات ادمین برای مدل Plan
@admin.register(Plan)
class PlanAdmin(admin.ModelAdmin):
list_display = ('name', 'panel', 'price', 'duration_days', 'data_limit_gb', 'is_active')
list_filter = ('is_active', 'panel')
search_fields = ('name',)
# تنظیمات ادمین برای مدل Subscription
@admin.register(Subscription)
class SubscriptionAdmin(admin.ModelAdmin):
list_display = ('end_user', 'plan', 'status', 'start_date', 'end_date', 'remaining_data_gb')
# FIXED: 'is_trial' does not exist in the model
list_filter = ('status', 'plan', 'panel')
search_fields = ('end_user__username',)
date_hierarchy = 'start_date'
# تنظیمات ادمین برای مدل Payment
@admin.register(Payment)
class PaymentAdmin(admin.ModelAdmin):
list_display = ('subscription', 'admin', 'amount', 'status', 'created_at')
# IMPROVED: Filtering on image/text fields is not useful. Using status instead.
list_filter = ('status', 'admin')
search_fields = ('subscription__end_user__username',)
date_hierarchy = 'created_at'
# تنظیمات ادمین برای مدل DiscountCode
@admin.register(DiscountCode)
class DiscountCodeAdmin(admin.ModelAdmin):
list_display = ('code', 'admin', 'discount_percentage', 'is_active')
list_filter = ('is_active',)
search_fields = ('code', 'admin__username',)
# تنظیمات ادمین برای مدل TelegramUser
@admin.register(TelegramUser)
class TelegramUserAdmin(admin.ModelAdmin):
list_display = ('username', 'chat_id', 'admin_id')
search_fields = ('username', 'chat_id')
# تنظیمات ادمین برای مدل SecurityToken
@admin.register(SecurityToken)
class SecurityTokenAdmin(admin.ModelAdmin):
list_display = ('admin_id', 'token', 'expiration_date')
search_fields = ('admin_id', 'token')
# تنظیمات ادمین برای مدل PushSubscription
@admin.register(PushSubscription)
class PushSubscriptionAdmin(admin.ModelAdmin):
list_display = ('user', 'created_at')
search_fields = ('user__username',)
# تنظیمات ادمین برای مدل PaymentMethod
@admin.register(PaymentMethod)
class PaymentMethodAdmin(admin.ModelAdmin):
list_display = ('name', 'is_active', 'can_be_managed_by_level3')
list_filter = ('is_active', 'can_be_managed_by_level3')
# تنظیمات ادمین برای مدل PaymentSetting
@admin.register(PaymentSetting)
class PaymentSettingAdmin(admin.ModelAdmin):
list_display = ('admin_level_3', 'payment_method', 'is_active')
list_filter = ('is_active', 'payment_method')
search_fields = ('admin_level_3__user__username',)
# تنظیمات ادمین برای مدل PaymentDetail
@admin.register(PaymentDetail)
class PaymentDetailAdmin(admin.ModelAdmin):
list_display = ('admin_level_3', 'card_number', 'wallet_address')
search_fields = ('admin_level_3__user__username',)