fix
This commit is contained in:
@@ -10,7 +10,9 @@ class UserAdmin(DjangoUserAdmin):
|
||||
change_user_password_template = None
|
||||
fieldsets = (
|
||||
(None, {"fields": ("username", "password")}),
|
||||
(_("Personal info"), {"fields": ("first_name", "last_name", "email", "role")}),
|
||||
(_("Personal info"), {"fields": (
|
||||
"full_name", 'phone_number', "role", 'profile_image', 'is_blocked'
|
||||
)}),
|
||||
(_("Important dates"), {"fields": ("last_login", "date_joined")}),
|
||||
)
|
||||
add_fieldsets = (
|
||||
@@ -22,7 +24,7 @@ class UserAdmin(DjangoUserAdmin):
|
||||
},
|
||||
),
|
||||
)
|
||||
list_display = ("username", "email", "first_name", "last_name", "is_staff")
|
||||
list_filter = ("is_staff", "is_superuser", "is_active", "groups")
|
||||
search_fields = ("username", "first_name", "last_name", "email")
|
||||
list_display = ("username", "phone_number", "full_name", "is_blocked", "is_staff")
|
||||
list_filter = ("is_staff", "is_superuser", "is_active", "is_blocked")
|
||||
search_fields = ("username", "full_name", "phone_number")
|
||||
ordering = ("username",)
|
||||
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 5.2.4 on 2025-08-06 12:58
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0003_alter_role_permissions'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='user',
|
||||
name='first_name',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='user',
|
||||
name='last_name',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='user',
|
||||
name='full_name',
|
||||
field=models.CharField(max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='user',
|
||||
name='is_blocked',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='user',
|
||||
name='phone_number',
|
||||
field=models.CharField(max_length=15, null=True),
|
||||
),
|
||||
]
|
||||
@@ -11,7 +11,12 @@ class User(BaseModel, AbstractUser):
|
||||
upload_to="users/profile_images/", null=True, blank=True, verbose_name=_('profil rasmi')
|
||||
)
|
||||
role = models.ForeignKey(Role, on_delete=models.DO_NOTHING, null=True, related_name="users")
|
||||
full_name = models.CharField(max_length=200, null=True)
|
||||
is_blocked = models.BooleanField(default=False)
|
||||
phone_number = models.CharField(max_length=15, null=True)
|
||||
|
||||
first_name = None
|
||||
last_name = None
|
||||
REQUIRED_FIELDS = []
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@@ -9,10 +9,10 @@ class HasRolePermission(BasePermission):
|
||||
|
||||
required_permissions = getattr(view, 'required_permissions', [])
|
||||
if not required_permissions:
|
||||
return True
|
||||
return True
|
||||
|
||||
if user.role:
|
||||
user_permissions = user.role.permissions.values_list('code', flat=True)
|
||||
return all(perm in user_permissions for perm in required_permissions)
|
||||
return any(perm in user_permissions for perm in required_permissions)
|
||||
|
||||
return False
|
||||
@@ -9,7 +9,7 @@ class UserProfileSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = [
|
||||
'id', 'first_name', 'last_name', 'username', 'role', 'profile_image', 'permissions'
|
||||
'id', 'full_name', 'username', 'phone_number', 'is_blocked', 'role', 'profile_image', 'permissions'
|
||||
]
|
||||
extra_kwargs = {'role': {'read_only': True}, "permissions": {'read_only': True}}
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ class LoginApiView(generics.GenericAPIView):
|
||||
user = serializer.validated_data.get('user')
|
||||
token = RefreshToken.for_user(user)
|
||||
user_data = {
|
||||
'role': user.role.name,
|
||||
'permissions': user.role.permissions.values_list('code', flat=True),
|
||||
'role': user.role.name if user.role else None,
|
||||
'permissions': user.role.permissions.values_list('code', flat=True) if user.role else None,
|
||||
}
|
||||
return Response(
|
||||
{"access": str(token.access_token), "refresh": str(token), 'user_data': user_data},
|
||||
|
||||
Reference in New Issue
Block a user