fix error in gitignore
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.accounts.models import Customer, User
|
||||
from apps.rbac.models import Role
|
||||
|
||||
|
||||
class RoleBriefSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Role
|
||||
fields = ["id", "name", "slug"]
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
roles = serializers.SerializerMethodField()
|
||||
permissions = serializers.SerializerMethodField()
|
||||
role_ids = serializers.ListField(child=serializers.UUIDField(), write_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = [
|
||||
"id", "username", "email", "first_name", "last_name", "phone",
|
||||
"is_active", "is_superuser", "roles", "permissions", "role_ids",
|
||||
]
|
||||
read_only_fields = ["is_superuser"]
|
||||
|
||||
def get_roles(self, obj):
|
||||
return RoleBriefSerializer(
|
||||
[ur.role for ur in obj.user_roles.select_related("role").all()], many=True
|
||||
).data
|
||||
|
||||
def get_permissions(self, obj):
|
||||
if obj.is_superuser:
|
||||
return ["*"]
|
||||
from apps.rbac.models import Permission
|
||||
|
||||
return list(
|
||||
Permission.objects.filter(roles__user_roles__user=obj).values_list("code", flat=True)
|
||||
)
|
||||
|
||||
def create(self, validated_data):
|
||||
# role_ids is a write-only helper; roles are synced by the viewset.
|
||||
validated_data.pop("role_ids", None)
|
||||
return super().create(validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
validated_data.pop("role_ids", None)
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
class CustomerSerializer(serializers.ModelSerializer):
|
||||
user = UserSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Customer
|
||||
fields = ["id", "user", "customer_code", "company_name", "category", "odoo_partner_id"]
|
||||
Reference in New Issue
Block a user