Change /me to /user and allow email changes

This commit is contained in:
2020-01-13 01:03:02 +00:00
parent 56a187c576
commit f50a3ca129
7 changed files with 25 additions and 16 deletions

View File

@@ -43,26 +43,23 @@ def process_image(upload):
return small, medium, large
class UserTrainingSerializer(serializers.ModelSerializer):
class Meta:
model = models.Training
exclude = ['user']
depth = 2
class UserDetailsSerializer(UserDetailsSerializer):
class Meta:
model = User
fields = ['username', 'email']
class UserSerializer(serializers.ModelSerializer):
training = UserTrainingSerializer(many=True)
class Meta:
model = User
fields = ['id', 'username', 'email', 'member', 'transactions', 'cards', 'training']
fields = ['id', 'username', 'member', 'transactions', 'cards', 'training']
depth = 1
# member viewing member list or other member
class OtherMemberSerializer(serializers.ModelSerializer):
q = serializers.CharField(write_only=True, max_length=64)
@@ -72,9 +69,16 @@ class OtherMemberSerializer(serializers.ModelSerializer):
model = models.Member
fields = ['q', 'seq', 'id', 'preferred_name', 'last_name', 'status', 'current_start_date', 'photo_small', 'photo_large']
class UserEmailField(serializers.ModelField):
def to_representation(self, obj):
return obj.user.email
def to_internal_value(self, data):
return serializers.EmailField().run_validation(data)
# member viewing himself
class MemberSerializer(serializers.ModelSerializer):
photo = serializers.ImageField(write_only=True, required=False)
email = UserEmailField(serializers.EmailField)
class Meta:
model = models.Member
fields = '__all__'
@@ -95,6 +99,9 @@ class MemberSerializer(serializers.ModelSerializer):
]
def update(self, instance, validated_data):
instance.user.email = validated_data.get('email', instance.user.email)
instance.user.save()
photo = validated_data.get('photo', None)
if photo:
small, medium, large = process_image(photo)
@@ -104,7 +111,6 @@ class MemberSerializer(serializers.ModelSerializer):
return super().update(instance, validated_data)
# adming viewing member
class AdminMemberSerializer(MemberSerializer):
class Meta:
@@ -119,6 +125,7 @@ class AdminMemberSerializer(MemberSerializer):
]
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = models.Transaction

View File

@@ -123,7 +123,7 @@ class SessionViewSet(viewsets.ModelViewSet):
return serializers.SessionSerializer
class MyUserView(views.APIView):
class UserView(views.APIView):
permission_classes = [AllowMetadata | IsAuthenticated]
def get(self, request):

View File

@@ -175,10 +175,6 @@ REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': DEFAULT_AUTHENTICATION_CLASSES,
}
REST_AUTH_SERIALIZERS = {
'USER_DETAILS_SERIALIZER': 'apiserver.api.serializers.UserDetailsSerializer'
}
LOGGING = {
'version': 1,
'formatters': {

View File

@@ -21,5 +21,5 @@ urlpatterns = [
url(r'^rest-auth/', include('rest_auth.urls')),
url(r'^registration/', views.RegistrationView.as_view(), name='rest_name_register'),
url(r'^password/change/', views.PasswordChangeView.as_view(), name='rest_password_change'),
url(r'^me/', views.MyUserView.as_view(), name='fullmember'),
url(r'^user/', views.UserView.as_view(), name='user'),
]