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}"