account verbose name full name property and account admin displays
This commit is contained in:
@@ -14,6 +14,8 @@ class UserAddressInLine(TabularInline):
|
|||||||
model = UserAddressModel
|
model = UserAddressModel
|
||||||
extra = 0
|
extra = 0
|
||||||
tab = True
|
tab = True
|
||||||
|
verbose_name = 'ادرس کاربر'
|
||||||
|
verbose_name_plural = 'ادرس های کاربر'
|
||||||
|
|
||||||
@admin.register(User)
|
@admin.register(User)
|
||||||
class UserAdmin(BaseUserAdmin, ModelAdmin, ImportExportModelAdmin):
|
class UserAdmin(BaseUserAdmin, ModelAdmin, ImportExportModelAdmin):
|
||||||
@@ -24,18 +26,18 @@ class UserAdmin(BaseUserAdmin, ModelAdmin, ImportExportModelAdmin):
|
|||||||
ordering = []
|
ordering = []
|
||||||
inlines = [UserAddressInLine]
|
inlines = [UserAddressInLine]
|
||||||
list_filter = []
|
list_filter = []
|
||||||
search_fields = ['phone', 'first_name', 'last_name', ]
|
search_fields = ['phone', 'first_name', 'last_name', 'full_name', 'email']
|
||||||
list_display = ['phone', 'email', 'is_superuser']
|
list_display = ['full_name_display', 'phone', 'email', 'is_superuser', ]
|
||||||
readonly_fields = []
|
readonly_fields = []
|
||||||
|
|
||||||
exclude = ('otp_hash', 'otp_expiry', 'is_active', 'is_staff', 'password', 'last_login')
|
exclude = ('otp_hash', 'otp_expiry', 'is_active', 'is_staff', 'password', 'last_login')
|
||||||
import_form_class = ImportForm
|
import_form_class = ImportForm
|
||||||
export_form_class = ExportForm
|
export_form_class = ExportForm
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Personal info', {'fields': ('first_name', 'last_name', 'profile_photo', 'password'),}),
|
('اطلاعات شخصی', {'fields': ('first_name', 'last_name', 'profile_photo', 'password'),}),
|
||||||
('contact', {'fields': ('phone', 'email'),}),
|
('اطلاعات ارتباطی', {'fields': ('phone', 'email'),}),
|
||||||
)
|
)
|
||||||
|
empty_value_display = 'ثبت نشده'
|
||||||
add_fieldsets = (
|
add_fieldsets = (
|
||||||
(None, {
|
(None, {
|
||||||
'classes': ('wide',),
|
'classes': ('wide',),
|
||||||
@@ -52,7 +54,11 @@ class UserAdmin(BaseUserAdmin, ModelAdmin, ImportExportModelAdmin):
|
|||||||
"widget": ArrayWidget,
|
"widget": ArrayWidget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def full_name_display(self, obj):
|
||||||
|
return obj.full_name
|
||||||
|
|
||||||
|
full_name_display.short_description = 'نام و نام خانوادگی'
|
||||||
|
|
||||||
admin.site.unregister(Group)
|
admin.site.unregister(Group)
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
@@ -66,7 +72,7 @@ admin.site.unregister(OutstandingToken)
|
|||||||
class AddressAdmin(ModelAdmin, ImportExportModelAdmin):
|
class AddressAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||||
import_form_class = ImportForm
|
import_form_class = ImportForm
|
||||||
export_form_class = ExportForm
|
export_form_class = ExportForm
|
||||||
|
list_display = ['user', 'name', 'address_display', 'postal_code', 'city', 'province', 'for_me']
|
||||||
|
|
||||||
compressed_fields = True
|
compressed_fields = True
|
||||||
warn_unsaved_form = True
|
warn_unsaved_form = True
|
||||||
@@ -78,4 +84,7 @@ class AddressAdmin(ModelAdmin, ImportExportModelAdmin):
|
|||||||
ArrayField: {
|
ArrayField: {
|
||||||
"widget": ArrayWidget,
|
"widget": ArrayWidget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
def address_display(self, obj):
|
||||||
|
return obj.address[0:20]
|
||||||
|
address_display.short_description = 'ادرس'
|
||||||
+24
-11
@@ -6,6 +6,8 @@ from datetime import datetime, timedelta
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework_simplejwt.token_blacklist.models import BlacklistedToken, OutstandingToken
|
from rest_framework_simplejwt.token_blacklist.models import BlacklistedToken, OutstandingToken
|
||||||
import hashlib
|
import hashlib
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
class UserManager(BaseUserManager):
|
class UserManager(BaseUserManager):
|
||||||
def create_user(self, phone, password=None):
|
def create_user(self, phone, password=None):
|
||||||
if not phone:
|
if not phone:
|
||||||
@@ -37,8 +39,8 @@ class User(AbstractBaseUser, PermissionsMixin):
|
|||||||
first_name = models.CharField(max_length=50, blank=True, verbose_name='نام')
|
first_name = models.CharField(max_length=50, blank=True, verbose_name='نام')
|
||||||
last_name = models.CharField(max_length=50, blank=True, verbose_name='نام خانوادگی')
|
last_name = models.CharField(max_length=50, blank=True, verbose_name='نام خانوادگی')
|
||||||
profile_photo = models.ImageField(upload_to='profile_photos/', null=True, blank=True, verbose_name='عکس پروفایل')
|
profile_photo = models.ImageField(upload_to='profile_photos/', null=True, blank=True, verbose_name='عکس پروفایل')
|
||||||
is_active = models.BooleanField(default=True)
|
is_active = models.BooleanField(default=True, verbose_name='فعال بودن کاربر')
|
||||||
is_staff = models.BooleanField(default=False)
|
is_staff = models.BooleanField(default=False, verbose_name='کارمند')
|
||||||
date_joined = models.DateTimeField(auto_now_add=True, verbose_name='تاریخ ثبتنام')
|
date_joined = models.DateTimeField(auto_now_add=True, verbose_name='تاریخ ثبتنام')
|
||||||
otp_hash = models.CharField(max_length=64, null=True, blank=True, verbose_name='کد یک بار مصرف')
|
otp_hash = models.CharField(max_length=64, null=True, blank=True, verbose_name='کد یک بار مصرف')
|
||||||
otp_expiry = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تمام شدن کد یک بار مصرف')
|
otp_expiry = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تمام شدن کد یک بار مصرف')
|
||||||
@@ -51,6 +53,12 @@ class User(AbstractBaseUser, PermissionsMixin):
|
|||||||
def groups(self):
|
def groups(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def full_name(self):
|
||||||
|
if self.first_name and self.last_name:
|
||||||
|
return f"{self.first_name} {self.last_name}"
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_permissions(self):
|
def user_permissions(self):
|
||||||
return None
|
return None
|
||||||
@@ -105,13 +113,18 @@ class User(AbstractBaseUser, PermissionsMixin):
|
|||||||
|
|
||||||
|
|
||||||
class UserAddressModel(models.Model):
|
class UserAddressModel(models.Model):
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='address')
|
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='address', verbose_name='کاربر')
|
||||||
name = models.CharField(max_length=30)
|
name = models.CharField(max_length=30, verbose_name='نام ادرس')
|
||||||
address = models.TextField()
|
address = models.TextField(verbose_name='ادرس کامل')
|
||||||
postal_code = models.CharField(max_length=10)
|
postal_code = models.CharField(max_length=10, verbose_name='کد پستی')
|
||||||
phone = models.CharField(max_length=11)
|
phone = models.CharField(max_length=11, verbose_name='شماره تماس برای ارسال', help_text='شماره تماس کاربر و شماره ی ارسالی میتواند متفاوت باشد')
|
||||||
city = models.CharField(max_length=30)
|
city = models.CharField(max_length=30, verbose_name='شهر')
|
||||||
province = models.CharField(max_length=30)
|
province = models.CharField(max_length=30, verbose_name='استان')
|
||||||
for_me = models.BooleanField(default=False)
|
for_me = models.BooleanField(default=False, verbose_name='برای خود کاربر')
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.user.phone}, {self.name}"
|
return f"{self.user.phone}, {self.name}"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'ادرس کاربر'
|
||||||
|
verbose_name_plural = 'ادرس های کاربر'
|
||||||
Reference in New Issue
Block a user