Skip to content
Snippets Groups Projects
Verified Commit f9428ec3 authored by Ernesto Rico Schmidt's avatar Ernesto Rico Schmidt
Browse files

feat: update serializer Profile -> CBA

parent f8e44af7
No related branches found
No related tags found
No related merge requests found
Pipeline #8298 passed
......@@ -30,6 +30,7 @@ from django.core.exceptions import ObjectDoesNotExist
from django.db import IntegrityError
from django.utils import text, timezone
from program.models import (
CBA,
Category,
FundingCategory,
Host,
......@@ -49,7 +50,6 @@ from program.models import (
TimeSlot,
Topic,
Type,
UserProfile,
)
from program.typing import (
Logo,
......@@ -98,9 +98,9 @@ class ErrorSerializer(serializers.Serializer):
code = serializers.CharField(allow_null=True)
class ProfileSerializer(serializers.ModelSerializer):
class CBASerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
model = CBA
read_only_fields = (
"created_at",
"created_by",
......@@ -108,15 +108,15 @@ class ProfileSerializer(serializers.ModelSerializer):
"updated_by",
)
fields = (
"cba_username",
"cba_user_token",
"username",
"user_token",
) + read_only_fields
class UserSerializer(serializers.ModelSerializer):
is_privileged = serializers.SerializerMethodField()
permissions = serializers.SerializerMethodField()
profile = ProfileSerializer(required=False)
cba = CBASerializer(required=False)
host_ids = serializers.PrimaryKeyRelatedField(
many=True, queryset=Host.objects.all(), required=False, source="hosts"
)
......@@ -133,6 +133,7 @@ class UserSerializer(serializers.ModelSerializer):
"host_ids",
)
fields = (
"cba",
"email",
"first_name",
"is_active",
......@@ -140,7 +141,6 @@ class UserSerializer(serializers.ModelSerializer):
"is_superuser",
"last_name",
"password",
"profile",
"username",
) + read_only_fields
......@@ -157,17 +157,17 @@ class UserSerializer(serializers.ModelSerializer):
Create and return a new User instance, given the validated data.
"""
profile_data = validated_data.pop("profile") if "profile" in validated_data else None
cba_data = validated_data.pop("cba") if "cba" in validated_data else None
user = super(UserSerializer, self).create(validated_data)
user.date_joined = timezone.now()
user.set_password(validated_data["password"])
user.save()
if profile_data:
UserProfile.objects.create(
cba_username=profile_data.get("cba_username").strip(),
cba_user_token=profile_data.get("cba_user_token").strip(),
if cba_data:
CBA.objects.create(
username=cba_data.get("username").strip(),
user_token=cba_data.get("user_token").strip(),
created_by=self.context.get("request").user.username,
user=user,
)
......@@ -197,42 +197,42 @@ class UserSerializer(serializers.ModelSerializer):
if "is_superuser" in validated_data:
instance.is_superuser = validated_data.get("is_superuser")
profile_data = validated_data.pop("profile") if "profile" in validated_data else None
cba_data = validated_data.pop("cba") if "cba" in validated_data else None
try:
profile = instance.profile
cba = instance.cba
except ObjectDoesNotExist:
profile = None
cba = None
if profile_data:
if cba_data:
user = self.context.get("request").user
if profile:
# having the update_user_profile permission overrides being the user
if not (user.has_perm("update_user_profile") or user.id == instance.id):
if cba:
# having the update_cba permission overrides being the user
if not (user.has_perm("update_cba") or user.id == instance.id):
raise exceptions.PermissionDenied(
detail="You do not have permission to update this user profile."
detail="You do not have permission to update this user CBA profile."
)
if "cba_username" in profile_data:
profile.cba_username = profile_data.get("cba_username")
if "username" in cba_data:
cba.username = cba_data.get("username")
if "cba_user_token" in profile_data:
profile.cba_user_token = profile_data.get("cba_user_token")
if "user_token" in cba_data:
cba.user_token = cba_data.get("user_token")
profile.updated_by = self.context.get("request").user.username
profile.save()
cba.updated_by = self.context.get("request").user.username
cba.save()
else:
# having the create_user_profile permission overrides being the user
if not (user.has_perm("create_user_profile") or user.id == instance.id):
# having the create_cba permission overrides being the user
if not (user.has_perm("create_cba") or user.id == instance.id):
raise exceptions.PermissionDenied(
detail="You do not have permission to create this user profile."
detail="You do not have permission to create this user CBA profile."
)
UserProfile.objects.create(
CBA.objects.create(
created_by=self.context.get("request").user.username,
user=instance,
**profile_data,
**cba_data,
)
instance.save()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment