Add UI for admins to view and edit member's details

This commit is contained in:
2020-01-13 08:01:42 +00:00
parent 0c814790a7
commit f52ee5532d
13 changed files with 268 additions and 44 deletions

View File

@@ -7,6 +7,7 @@ from . import old_models
class Member(models.Model):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL)
old_email = models.CharField(max_length=254, blank=True, null=True)
photo_large = models.CharField(max_length=64, blank=True, null=True)
photo_medium = models.CharField(max_length=64, blank=True, null=True)
photo_small = models.CharField(max_length=64, blank=True, null=True)

View File

@@ -55,7 +55,7 @@ class OtherMemberSerializer(serializers.ModelSerializer):
class UserEmailField(serializers.ModelField):
def to_representation(self, obj):
return obj.user.email
return getattr(obj.user, 'email', obj.old_email)
def to_internal_value(self, data):
return serializers.EmailField().run_validation(data)
@@ -88,8 +88,9 @@ class MemberSerializer(serializers.ModelSerializer):
]
def update(self, instance, validated_data):
instance.user.email = validated_data.get('email', instance.user.email)
instance.user.save()
if instance.user:
instance.user.email = validated_data.get('email', instance.user.email)
instance.user.save()
photo = validated_data.get('photo', None)
if photo:
@@ -107,6 +108,7 @@ class AdminMemberSerializer(MemberSerializer):
fields = '__all__'
read_only_fields = [
'id',
'status',
'photo_large',
'photo_medium',
'photo_small',
@@ -127,7 +129,7 @@ class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'member', 'transactions', 'cards', 'training']
fields = ['id', 'username', 'member', 'transactions', 'cards', 'training', 'is_staff']
depth = 1

View File

@@ -7,6 +7,7 @@ from apiserver.api.serializers import process_image
MEMBER_FIELDS = [
'id',
# email -> old_email
'first_name',
'last_name',
'preferred_name',
@@ -91,6 +92,7 @@ for o in old:
if o.city and o.province:
new['city'] = '{}, {}'.format(o.city, o.province)
new['old_email'] = o.email
new['is_minor'] = o.minor
small, medium, large = None, None, None