Add UI for admins to view and edit member's details
This commit is contained in:
@@ -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)
|
||||
|
@@ -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
|
||||
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user