from django.contrib import admin from django.contrib.auth.forms import UserChangeForm, UsernameField from django.contrib.auth.admin import UserAdmin from django.utils.translation import gettext_lazy as _ from rest_framework.authtoken.models import TokenProxy from ajaxdatatable.admin import AjaxDatatable <<<<<<< HEAD ======= from unfold.admin import TabularInline, StackedInline >>>>>>> develop from django.contrib import admin from apps.account.models import User from django import forms from django.contrib import admin from django.urls import path, reverse from django.shortcuts import render, redirect from django.contrib import messages from apps.account.models import StudentUser, User <<<<<<< HEAD @admin.register(StudentUser) class StudentUserAdmin(UserAdmin, AjaxDatatable): list_display = ( 'device_id', 'email', 'fullname', 'user_type','last_login', 'date_joined', ) ======= @admin.register(StudentUser) class StudentUserAdmin(UserAdmin, AjaxDatatable): list_display = ( 'device_id', 'email', 'fullname', 'user_type', 'enrolled_courses_count', 'last_login', 'date_joined', ) >>>>>>> develop ordering = 'last_login', readonly_fields = ('date_joined',) exclude = ('password', 'user_permissions') add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('fullname', 'email', 'phone_number',), <<<<<<< HEAD # 'description': 'Please provide the student details including full name, email, and phone number.', ======= >>>>>>> develop }), ('other', { 'classes': ('wide',), 'fields': ('avatar', 'info'), }), ('Password', { 'classes': ('wide',), 'fields': ('password1', 'password2'), }), ) search_fields = ( 'email', 'fullname', 'username', ) fieldsets = ( (_('Personal info'), {'fields': ('fullname', 'email', 'phone_number', 'avatar',)}), (_('Permissions'), { <<<<<<< HEAD 'fields': ('is_active', 'is_staff', 'is_superuser', 'groups',), ======= 'fields': ('is_active', 'groups',), >>>>>>> develop }), (_('Important dates'), {'fields': ('last_login', 'date_joined', 'fcm')}), ) @admin.display(description='Phone Number') def _phone_number(self, obj): return obj.phone_number <<<<<<< HEAD def get_queryset(self, request): # محدود کردن نمایش فقط دانش‌آموزان qs = super().get_queryset(request) return qs.filter(user_type=User.UserType.STUDENT) ======= @admin.display(description=_('Enrolled Courses')) def enrolled_courses_count(self, obj): """نمایش تعداد دوره‌های شرکت کرده""" count = obj.participated_courses.filter(is_active=True).count() return f"{count} دوره" def get_queryset(self, request): # محدود کردن نمایش فقط دانش‌آموزان و بهینه‌سازی query qs = super().get_queryset(request) return qs.filter(user_type=User.UserType.STUDENT).prefetch_related('participated_courses') >>>>>>> develop def save_model(self, request, obj, form, change): if not change: obj.set_password(form.cleaned_data['password1']) <<<<<<< HEAD obj.user_type = User.UserType.STUDENT ======= obj.add_role('student') >>>>>>> develop super().save_model(request, obj, form, change) def has_add_permission(self, request): if '_popup' in request.GET and request.GET['_popup'] == '1': # بررسی وجود _popup در پارامترهای GET return True return False def has_delete_permission(self, request, obj=None): return False