File: //proc/1233/root/home/arjun/projects/buyercall/buyercall/blueprints/sources/models.py
import uuid
from requests import request
from sqlalchemy.dialects.postgresql import UUID, JSON
from sqlalchemy.orm import backref
from buyercall.extensions import db
from buyercall.lib.util_sqlalchemy import ResourceMixin
from flask_login import current_user
class Source(ResourceMixin, db.Model):
__tablename__ = 'source'
id = db.Column(db.Integer, primary_key=True)
sid = db.Column(UUID(as_uuid=True), unique=True, default=uuid.uuid4, index=True)
name = db.Column(db.String(36), nullable=False)
description = db.Column(db.String(300), nullable=False)
partnership_id = db.Column(db.Integer, db.ForeignKey('partnerships.id',
onupdate='CASCADE',
ondelete='CASCADE'),
index=True, nullable=True)
partnership_account_id = db.Column(db.Integer, db.ForeignKey('partnership_accounts.id',
onupdate='CASCADE',
ondelete='CASCADE'),
index=True, nullable=True)
workflows = db.Column(JSON, nullable=False, server_default='{}')
created_by = db.Column(db.Integer, db.ForeignKey('users.id', onupdate='CASCADE',
ondelete='CASCADE'), index=True, nullable=True)
updated_by = db.Column(db.Integer, db.ForeignKey('users.id', onupdate='CASCADE',
ondelete='CASCADE'), index=True, nullable=True)
def __str__(self):
return self.name or self.sid
@classmethod
def check_name_exists(cls, name):
""" Called before source is created """
if name:
if cls.query.filter(cls.name == name).first():
return True
else:
return False
else:
return True
def is_name_exists(self, name):
""" Called before source is updated """
if name:
sources = Source.query.filter(Source.name == name)
for source in sources:
if source != self:
return True
return False
return True
@classmethod
def update(cls, sid, **data):
obj = cls.query.filter(cls.sid == sid).first()
obj.name = data.get('name')
obj.description = data.get('description')
obj.workflows = data.get('workflows')
obj.updated_by = current_user.id
obj.save()
return obj
@classmethod
def get_by_partnership_account(cls, paid):
return cls.query.filter(cls.partnership_account_id == paid).first()
@classmethod
def get_all_by_partnership_account(cls, paid):
return cls.query.filter(cls.partnership_account_id == paid).all()
@classmethod
def get_by_name(cls, name):
return True if cls.query.filter(cls.name == name).first() else False
@classmethod
def create(cls, **params):
if not cls.check_name_exists(params.get('name', '')):
obj = cls(**params)
obj.save()
return obj
else:
return