HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/1233/root/home/arjun/projects/buyercall/buyercall/blueprints/email/serializers.py
from buyercall.extensions import ma
from buyercall.blueprints.email.models import Email, EmailTemplate, EmailIdentity
from buyercall.blueprints.partnership.models import Partnership, PartnershipAccount
from buyercall.lib.util_boto3_s3 import generate_presigned_file_url


class EmailSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = Email
        exclude = ['id']


class EmailTemplateSchema(ma.SQLAlchemyAutoSchema):
    partnership = ma.Method("get_partnership")
    partnership_account = ma.Method("get_partnership_account")
    image = ma.Method('get_template_image')
    dateCreated = ma.DateTime(attribute='created_on')
    dateUpdated = ma.DateTime(attribute='updated_on')
    isActive = ma.Boolean(attribute='is_active')
    isPlainEmail = ma.Boolean(attribute='is_plaintext')

    class Meta:
        model = EmailTemplate
        exclude = ['id', 'created_on', 'is_active', 'updated_on', 'is_plaintext']

    def get_partnership(self, obj):
        return Partnership.get_sid_from_id(obj.partnership_id)

    def get_partnership_account(self, obj):
        return PartnershipAccount.get_sid_from_id(obj.partnership_account_id)

    def get_template_image(self, obj):
        if obj.image:
            if '::' in obj.image:
                bucket_name, key = obj.image.split("::")
                template_image = generate_presigned_file_url(key, bucket_name)
                return template_image
        return


class EmailIdentitySchema(ma.SQLAlchemyAutoSchema):
    email = ma.Method('get_email')

    class Meta:
        model = EmailIdentity
        exclude = ['id']

    def get_email(self, obj):
        return f"{obj.username}@{self.domain}"