File: //proc/self/root/home/arjun/projects/buyercall/buyercall/blueprints/widgets/serializers.py
from buyercall.blueprints.partnership.models import PartnershipAccount, Partnership
from buyercall.extensions import ma
from buyercall.blueprints.widgets.models import Widget
from buyercall.blueprints.channels.serializers import ChannelOutSchema, ChannelOutMiniSchema, ChannelOutWithoutWidgets, ChannelOutMinimal
from buyercall.blueprints.user.models import User
class WidgetOutSchema(ma.SQLAlchemyAutoSchema):
partnership_account = ma.Method('get_partnership_account')
options = ma.Raw(dump_to='options')
channels = ma.Method("get_channels")
class Meta:
model = Widget
exclude = ['id', 'leads', 'partnership_account_id', 'inbound_id', 'is_options_v3', '_options']
def get_partnership_account(self, obj):
return PartnershipAccount.get_sid_from_id(obj.partnership_account_id) if obj else None
def get_channels(self, obj):
return ChannelOutMiniSchema(many=True).dump(obj.channels)
class WidgetOutSelectedResponseSchema(ma.SQLAlchemyAutoSchema):
id = ma.Method("get_id")
partnership_account_id = ma.Method("get_partnership_account_id")
created_by = ma.Method("get_created_by")
updated_by = ma.Method("get_updated_by")
partnership_id = ma.Method("get_partnership_id")
partnershipName = ma.Method("get_partnership_name")
partnershipAccountname = ma.Method("get_partnership_account_name")
created_by_agent_id = ma.Method("get_created_by_agent_id")
updated_by_agent_id = ma.Method("get_updated_by_agent_id")
channels = ma.Method("get_channels")
attatchedChannelCount = ma.Method("get_channels_count")
isActive = ma.Method('get_is_active')
class Meta:
model = Widget
fields = ['id', 'name', 'description', 'created_on', 'updated_on',
'partnership_account_id', 'created_by', 'updated_by',
'partnership_id', 'partnershipName', 'partnershipAccountname',
'created_by_agent_id', 'updated_by_agent_id', 'channels', 'options',
'attatchedChannelCount', 'isActive']
def get_id(self, obj):
return obj.guid
def get_partnership_account_id(self, obj):
return PartnershipAccount.get_sid_from_id(obj.partnership_account_id)
def get_created_by(self, obj):
created_by = User.get_by_id(obj.created_by)
created_by = f"{created_by.firstname} {created_by.lastname}" if created_by else None
return created_by
def get_created_by_agent_id(self, obj):
return User.get_sid_from_id(obj.created_by)
def get_updated_by_agent_id(self, obj):
return User.get_sid_from_id(obj.updated_by)
def get_updated_by(self, obj):
updated_by = User.get_by_id(obj.updated_by)
updated_by = f"{updated_by.firstname} {updated_by.lastname}" if updated_by else None
return updated_by
def get_partnership_id(self, obj):
partnersip_account = PartnershipAccount.query.filter(
PartnershipAccount.id == obj.partnership_account_id).first()
partnership_sid = Partnership.get_sid_from_id(
partnersip_account.partnership_id) if partnersip_account else None
return partnership_sid
def get_partnership_name(self, obj):
partnersip_account = PartnershipAccount.query.filter(
PartnershipAccount.id == obj.partnership_account_id).first()
partnership_name = Partnership.get_name(partnersip_account.partnership_id) if partnersip_account else None
return partnership_name
def get_partnership_account_name(self, obj):
partnersip_account = PartnershipAccount.query.filter(
PartnershipAccount.id == obj.partnership_account_id).first()
partnership_account_name = partnersip_account.name if partnersip_account else None
return partnership_account_name
def get_channels(self, obj):
return ChannelOutMinimal(many=True).dump(obj.channels)
def get_channels_count(self, obj):
return len(obj.channels)
def get_is_active(self, obj):
return obj.enabled
class WidgetOutWithoutChannels(WidgetOutSelectedResponseSchema):
options = ma.Raw(dump_to='_options')
class Meta:
model = Widget
exclude = ['channels', '_options']