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 ...@@ -30,6 +30,7 @@ from django.core.exceptions import ObjectDoesNotExist
from django.db import IntegrityError from django.db import IntegrityError
from django.utils import text, timezone from django.utils import text, timezone
from program.models import ( from program.models import (
CBA,
Category, Category,
FundingCategory, FundingCategory,
Host, Host,
...@@ -49,7 +50,6 @@ from program.models import ( ...@@ -49,7 +50,6 @@ from program.models import (
TimeSlot, TimeSlot,
Topic, Topic,
Type, Type,
UserProfile,
) )
from program.typing import ( from program.typing import (
Logo, Logo,
...@@ -98,9 +98,9 @@ class ErrorSerializer(serializers.Serializer): ...@@ -98,9 +98,9 @@ class ErrorSerializer(serializers.Serializer):
code = serializers.CharField(allow_null=True) code = serializers.CharField(allow_null=True)
class ProfileSerializer(serializers.ModelSerializer): class CBASerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = UserProfile model = CBA
read_only_fields = ( read_only_fields = (
"created_at", "created_at",
"created_by", "created_by",
...@@ -108,15 +108,15 @@ class ProfileSerializer(serializers.ModelSerializer): ...@@ -108,15 +108,15 @@ class ProfileSerializer(serializers.ModelSerializer):
"updated_by", "updated_by",
) )
fields = ( fields = (
"cba_username", "username",
"cba_user_token", "user_token",
) + read_only_fields ) + read_only_fields
class UserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer):
is_privileged = serializers.SerializerMethodField() is_privileged = serializers.SerializerMethodField()
permissions = serializers.SerializerMethodField() permissions = serializers.SerializerMethodField()
profile = ProfileSerializer(required=False) cba = CBASerializer(required=False)
host_ids = serializers.PrimaryKeyRelatedField( host_ids = serializers.PrimaryKeyRelatedField(
many=True, queryset=Host.objects.all(), required=False, source="hosts" many=True, queryset=Host.objects.all(), required=False, source="hosts"
) )
...@@ -133,6 +133,7 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -133,6 +133,7 @@ class UserSerializer(serializers.ModelSerializer):
"host_ids", "host_ids",
) )
fields = ( fields = (
"cba",
"email", "email",
"first_name", "first_name",
"is_active", "is_active",
...@@ -140,7 +141,6 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -140,7 +141,6 @@ class UserSerializer(serializers.ModelSerializer):
"is_superuser", "is_superuser",
"last_name", "last_name",
"password", "password",
"profile",
"username", "username",
) + read_only_fields ) + read_only_fields
...@@ -157,17 +157,17 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -157,17 +157,17 @@ class UserSerializer(serializers.ModelSerializer):
Create and return a new User instance, given the validated data. 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 = super(UserSerializer, self).create(validated_data)
user.date_joined = timezone.now() user.date_joined = timezone.now()
user.set_password(validated_data["password"]) user.set_password(validated_data["password"])
user.save() user.save()
if profile_data: if cba_data:
UserProfile.objects.create( CBA.objects.create(
cba_username=profile_data.get("cba_username").strip(), username=cba_data.get("username").strip(),
cba_user_token=profile_data.get("cba_user_token").strip(), user_token=cba_data.get("user_token").strip(),
created_by=self.context.get("request").user.username, created_by=self.context.get("request").user.username,
user=user, user=user,
) )
...@@ -197,42 +197,42 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -197,42 +197,42 @@ class UserSerializer(serializers.ModelSerializer):
if "is_superuser" in validated_data: if "is_superuser" in validated_data:
instance.is_superuser = validated_data.get("is_superuser") 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: try:
profile = instance.profile cba = instance.cba
except ObjectDoesNotExist: except ObjectDoesNotExist:
profile = None cba = None
if profile_data: if cba_data:
user = self.context.get("request").user user = self.context.get("request").user
if profile: if cba:
# having the update_user_profile permission overrides being the user # having the update_cba permission overrides being the user
if not (user.has_perm("update_user_profile") or user.id == instance.id): if not (user.has_perm("update_cba") or user.id == instance.id):
raise exceptions.PermissionDenied( 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: if "username" in cba_data:
profile.cba_username = profile_data.get("cba_username") cba.username = cba_data.get("username")
if "cba_user_token" in profile_data: if "user_token" in cba_data:
profile.cba_user_token = profile_data.get("cba_user_token") cba.user_token = cba_data.get("user_token")
profile.updated_by = self.context.get("request").user.username cba.updated_by = self.context.get("request").user.username
profile.save() cba.save()
else: else:
# having the create_user_profile permission overrides being the user # having the create_cba permission overrides being the user
if not (user.has_perm("create_user_profile") or user.id == instance.id): if not (user.has_perm("create_cba") or user.id == instance.id):
raise exceptions.PermissionDenied( 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, created_by=self.context.get("request").user.username,
user=instance, user=instance,
**profile_data, **cba_data,
) )
instance.save() 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