add product
This commit is contained in:
1 parent
423d4cf40e
commit
c8d45dd07c
58 files changed
+8309
-674
No files matched your search
+41
-8
@@ -1,4 +1,7 @@
|
||||
from utils.admin_base import CRMModelAdmin
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
from apps.cuser.forms import CUserCreationForm, CUserChangeForm
|
||||
from apps.cuser.models import (
|
||||
CUser as CUserModel,
|
||||
CuserRole as CuserRoleModel,
|
||||
@@ -8,23 +11,53 @@ from apps.cuser.models import (
|
||||
# Register your models here.
|
||||
|
||||
|
||||
class CUserAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
class CUserAdmin(UserAdmin):
|
||||
list_per_page = 50
|
||||
save_on_top = True
|
||||
date_hierarchy = 'created_at'
|
||||
form = CUserChangeForm
|
||||
add_form = CUserCreationForm
|
||||
list_display = ('username', 'name_family', 'mobile', 'is_active', 'is_staff')
|
||||
search_fields = ('username', 'name_family', 'mobile')
|
||||
ordering = ('username',)
|
||||
readonly_fields = ('last_login', 'created_at', 'updated_at')
|
||||
fieldsets = (
|
||||
(None, {'fields': ('username', 'password')}),
|
||||
('اطلاعات کاربر', {'fields': ('name_family', 'mobile')}),
|
||||
('دسترسی', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
|
||||
('تاریخها', {'fields': ('last_login', 'created_at', 'updated_at')}),
|
||||
)
|
||||
add_fieldsets = (
|
||||
(None, {'classes': ('wide',), 'fields': ('username', 'name_family', 'mobile', 'password1', 'password2', 'is_active', 'is_staff')}),
|
||||
)
|
||||
|
||||
|
||||
class CUserRoleAdmin(admin.ModelAdmin):
|
||||
class CUserRoleAdmin(CRMModelAdmin):
|
||||
list_display = ('id', 'cuser', 'name_family', 'mobile', 'role_type', 'sys_ws', 'is_active', 'customer_panel', 'is_admin')
|
||||
search_fields = ('name_family', 'mobile', 'cuser__username')
|
||||
readonly_fields = ('created_at', 'updated_at')
|
||||
|
||||
|
||||
class RoleTypeAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
class RoleTypeAdmin(CRMModelAdmin):
|
||||
list_display = ('id', 'role_name', 'role_name_en', 'created_at')
|
||||
|
||||
|
||||
class SmsOptAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
class SmsOptAdmin(CRMModelAdmin):
|
||||
list_display = ("id", "mobile", "expire", "created_at")
|
||||
exclude = ("opt",)
|
||||
sensitive_fields = ("opt",)
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
return ("mobile", "expire", "created_at", "updated_at")
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return False
|
||||
|
||||
def has_change_permission(self, request, obj=None):
|
||||
return False
|
||||
|
||||
|
||||
admin.site.register(CUserModel, CUserAdmin)
|
||||
admin.site.register(CuserRoleModel, CUserRoleAdmin)
|
||||
admin.site.register(RoleTypeModel, RoleTypeAdmin)
|
||||
admin.site.register(SmsOptModel, SmsOptAdmin)
|
||||
admin.site.register(SmsOptModel, SmsOptAdmin)
|
||||
@@ -1,6 +1,8 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
||||
from utils.base_model import BaseModel
|
||||
from django.core.exceptions import ValidationError
|
||||
from utils.validations.mobile import normalize_mobile
|
||||
import uuid
|
||||
|
||||
|
||||
@@ -8,9 +10,11 @@ class CUserManager(BaseUserManager):
|
||||
def create_user(self, username, password, **extra_fields):
|
||||
if not username:
|
||||
raise ValueError("Please Enter username")
|
||||
extra_fields['mobile'] = normalize_mobile(extra_fields.get('mobile'))
|
||||
user = self.model(username=username, **extra_fields)
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
user.full_clean()
|
||||
user.save(using=self._db)
|
||||
return user
|
||||
|
||||
def create_superuser(self, username, password, **extra_fields):
|
||||
@@ -31,6 +35,7 @@ class CUser(BaseModel, AbstractBaseUser, PermissionsMixin):
|
||||
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
|
||||
|
||||
USERNAME_FIELD = 'username'
|
||||
REQUIRED_FIELDS = ['mobile']
|
||||
|
||||
objects = CUserManager()
|
||||
|
||||
@@ -44,3 +49,9 @@ class CUser(BaseModel, AbstractBaseUser, PermissionsMixin):
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.name_family} - {self.username}'
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
self.mobile = normalize_mobile(self.mobile)
|
||||
if type(self).objects.filter(mobile=self.mobile).exclude(pk=self.pk).exists():
|
||||
raise ValidationError({"mobile": "کاربری با این شماره موبایل قبلاً ثبت شده است."})
|
||||
@@ -0,0 +1,30 @@
|
||||
from django import forms
|
||||
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from apps.cuser.cuser_model import CUser
|
||||
from utils.validations.mobile import normalize_mobile
|
||||
|
||||
|
||||
class MobileFormMixin:
|
||||
def clean_mobile(self):
|
||||
try:
|
||||
return normalize_mobile(self.cleaned_data['mobile'])
|
||||
except ValidationError as error:
|
||||
raise forms.ValidationError(error.messages)
|
||||
|
||||
|
||||
class CUserCreationForm(MobileFormMixin, UserCreationForm):
|
||||
mobile = forms.CharField(label='شماره موبایل')
|
||||
|
||||
class Meta(UserCreationForm.Meta):
|
||||
model = CUser
|
||||
fields = ('username', 'name_family', 'mobile', 'is_active', 'is_staff')
|
||||
|
||||
|
||||
class CUserChangeForm(MobileFormMixin, UserChangeForm):
|
||||
mobile = forms.CharField(label='شماره موبایل')
|
||||
|
||||
class Meta(UserChangeForm.Meta):
|
||||
model = CUser
|
||||
fields = '__all__'
|
||||
+8
-2
@@ -3,15 +3,21 @@ from apps.cuser.models import CuserRole as CuserRoleModel
|
||||
from utils.get_cuser_role import get_cuser_role_uuid
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
# Create your views here.
|
||||
|
||||
|
||||
class CUserGetInfo(views.APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
def get(self, request):
|
||||
|
||||
|
||||
cuser_role_uuid = get_cuser_role_uuid(request)
|
||||
cuser_obj = CuserRoleModel.objects.get(uuid=cuser_role_uuid)
|
||||
|
||||
return Response(data={"name_family": cuser_obj.name_family}, status=status.HTTP_200_OK)
|
||||
return Response(data={"name_family": cuser_obj.name_family,
|
||||
"role": cuser_obj.role_type.role_name_en,
|
||||
"workspace": str(cuser_obj.sys_ws.uuid),
|
||||
"permissions": {"manage_products": cuser_obj.role_type.role_name_en in ('workspace_admin', 'workspace_owner')}},
|
||||
status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
Reference in new issue
Block a user