Bishall10/ipo
0
1from rest_framework import serializers2from .models import Account, ApplicationLog, FCMToken3from .encryption import encrypt_password4 5 6class FCMTokenSerializer(serializers.ModelSerializer):7 class Meta:8 model = FCMToken9 fields = ['token', 'device_id']10 11 12class AccountSerializer(serializers.ModelSerializer):13 # Accept plain password on write, never return it on read14 meroshare_pass = serializers.CharField(write_only=True, required=False)15 16 class Meta:17 model = Account18 fields = [19 'id', 'meroshare_user', 'meroshare_pass', 'dp_name',20 'crn', 'tpin', 'bank_name', 'owner_name',21 'kitta', 'is_active', 'last_applied', 'boid'22 ]23 read_only_fields = ['owner', 'last_applied']24 25 def create(self, validated_data):26 plain = validated_data.pop('meroshare_pass', None)27 instance = Account(**validated_data)28 if plain:29 instance.set_meroshare_pass(plain)30 instance.save()31 return instance32 33 def update(self, instance, validated_data):34 plain = validated_data.pop('meroshare_pass', None)35 for attr, value in validated_data.items():36 setattr(instance, attr, value)37 if plain:38 instance.set_meroshare_pass(plain)39 instance.save()40 return instance41 42 43class ApplicationLogSerializer(serializers.ModelSerializer):44 account_user = serializers.CharField(source='account.meroshare_user', read_only=True)45 owner_name = serializers.CharField(source='account.owner_name', read_only=True)46 47 class Meta:48 model = ApplicationLog49 fields = ['id', 'account', 'account_user', 'owner_name', 'company_name', 'status', 'remark', 'is_read', 'timestamp']50 