class Carts(db.Model): """ Cart Model """ # table name __tablename__ = 'carts' id = db.Column(db.BIGINT, primary_key=True) beat_id = db.Column(db.Integer) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) price = db.Column(db.Float()) license = db.Column(db.String(50)) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) # class constructor def __init__(self, data): """ Class constructor """ self.beat_id = data.get("beat_id") self.user_id = data.get("user_id") self.price = data.get("price") self.license = data.get("license") self.created_at = datetime.datetime.now() self.modified_at = datetime.datetime.now() def save(self): """ save an article """ db.session.add(self) db.session.commit() def delete(self): """ delete an article """ db.session.delete(self) db.session.commit()
class PaymentHistory(db.Model): """ Payment history Model """ # table name __tablename__ = 'payment_history' id = db.Column(db.Integer, primary_key=True) artist_id = db.Column(db.Integer, db.ForeignKey('users.id')) buyer_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True) media_id = db.Column(db.Integer, db.ForeignKey('medias.id'), nullable=True) reference = db.Column(db.String(100)) name = db.Column(db.String(100), nullable=False) lastname = db.Column(db.String(100), nullable=True) email = db.Column(db.String(100), nullable=False) address = db.Column(db.String(200), nullable=False) city = db.Column(db.String(100), nullable=False) postal_code = db.Column(db.Integer, nullable=False) phone = db.Column(db.String(200), nullable=True, default="") ip_address = db.Column(db.String(100)) artist_amount = db.Column(db.Float(), nullable=True) type = db.Column(db.String(150)) paid = db.Column(db.BOOLEAN, default=False) service_fee = db.Column(db.BOOLEAN, default=False) refund = db.Column(db.BOOLEAN, default=False) tva = db.Column(db.Float(), nullable=True) isl_amount = db.Column(db.Float(), nullable=True) total_amount = db.Column(db.Float(), nullable=True) licenses_name = db.Column(db.String(50), nullable=True) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) media = db.relationship("Media", backref=db.backref("media_payment_story", uselist=False)) # class constructor def __init__(self, data): """ Class constructor """ self.tva = data.get('tva') self.type = data.get('type') self.name = data.get('name') self.paid = data.get('paid') self.service_fee = data.get('service_fee') self.refund = data.get('refund') self.lastname = data.get('lastname') self.email = data.get('email') self.address = data.get('address') self.city = data.get('city') self.postal_code = data.get('postal_code') self.phone = data.get('phone') self.ip_address = data.get('ip_address') self.buyer_id = data.get('buyer_id') self.artist_id = data.get('artist_id') self.reference = data.get('reference') self.isl_amount = data.get('isl_amount') self.media_id = data.get('media_id') self.total_amount = data.get('total_amount') self.licenses_name = data.get('licenses_name') self.artist_amount = data.get('artist_amount') self.created_at = datetime.datetime.utcnow() self.modified_at = datetime.datetime.utcnow() def save(self): """save a new payment """ db.session.add(self) db.session.commit() def update(self, data): """ update a payment """ self.tva = data.get('tva') self.type = data.get('type') self.name = data.get('name') self.paid = data.get('paid') self.service_fee = data.get('service_fee') self.refund = data.get('refund') self.lastname = data.get('lastname') self.email = data.get('email') self.address = data.get('address') self.city = data.get('city') self.postal_code = data.get('postal_code') self.phone = data.get('phone') self.media_id = data.get('media_id') self.ip_address = data.get('ip_address') self.buyer_id = data.get('buyer_id') self.artist_id = data.get('artist_id') self.reference = data.get('reference') self.isl_amount = data.get('isl_amount') self.total_amount = data.get('total_amount') self.licenses_name = data.get('licenses_name') self.artist_amount = data.get('artist_amount') self.modified_at = datetime.datetime.utcnow() db.session.commit() def delete(self): """ delete a payment """ db.session.delete(self) db.session.commit() @staticmethod def get_payment_history_by_id(payment_history_id): """ get a payment by id """ return PaymentHistory.query.filter_by(id=payment_history_id).first() @staticmethod def get_payment_history_by_reference(reference): """ get a payment by reference """ return PaymentHistory.query.filter_by(reference=reference).first()
class Media(db.Model): """ Media Model """ # table name __tablename__ = 'medias' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255), nullable=False) description = db.Column(db.String(255), nullable=True) photo = db.Column(db.String(255), nullable=True) basic_price = db.Column(db.Float(), nullable=True) silver_price = db.Column(db.Float(), nullable=True) gold_price = db.Column(db.Float(), nullable=True) platinum_price = db.Column(db.Float(), nullable=True) genre = db.Column(db.String(155), nullable=False) artist = db.Column(db.String(125), nullable=False) artist_tag = db.Column(db.String(255), nullable=True) stems = db.Column(db.String(255), nullable=True) wave = db.Column(db.String(255), nullable=True) mp3 = db.Column(db.String(255), nullable=True) share = db.Column(db.Integer, default=0) time = db.Column(db.String(10)) listened = db.Column(db.Integer, default=0) bpm = db.Column(db.Float, default=0.0) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) # Relationship prestige = db.relationship(Prestige, lazy='dynamic', cascade="all, delete, save-update") admirations = db.relationship(Admiration, cascade="all, delete, save-update", lazy='dynamic') # class constructor def __init__(self, data): """ Class constructor """ self.user_id = data.get('user_id') self.title = data.get('title') self.listened = 0 self.photo = data.get('photo') self.bpm = data.get('bpm', 0) self.time = data.get('time') self.mp3 = data.get('mp3') self.stems = data.get('stems') self.share = data.get('share') self.wave = data.get('wave') self.artist_tag = data.get('artist_tag') self.description = data.get('description') if data.get( 'description') else data.get('Description') self.artist = data.get('artist', data.get('Artist')) self.basic_price = data.get('basic_price', None) self.silver_price = data.get('silver_price', None) self.gold_price = data.get('gold_price', None) self.platinum_price = data.get('platinum_price', None) self.genre = data.get('genre') if data.get('genre') else data.get( 'Genre') self.created_at = datetime.datetime.utcnow() self.modified_at = datetime.datetime.utcnow() def save(self): """save a new media """ db.session.add(self) db.session.commit() add_new_doc(self, MediaSchema(), index="beats", doc_type="songs") def update(self, data): """ update one media """ self.title = data.get('title') self.bpm = data.get('bpm') self.description = data.get('description') self.artist = data.get('artist') self.photo = data.get('photo') self.genre = data.get('genre') self.basic_price = data.get('basic_price') self.silver_price = data.get('silver_price') self.gold_price = data.get('gold_price') self.platinum_price = data.get('platinum_price') self.time = data.get('time') self.mp3 = data.get('mp3') self.stems = data.get('stems') self.share = data.get('share') self.wave = data.get('wave') self.artist_tag = data.get('artist_tag') self.listened = data.get('listened') self.modified_at = datetime.datetime.utcnow() db.session.commit() update_doc(self, MediaSchema(), index="beats", doc_type="songs") def delete(self): """ delete one media """ db.session.delete(self) db.session.commit() @staticmethod def get_song_by_id(song_id): """ get one song by id """ return Media.query.filter_by(id=song_id).first() @staticmethod def isl_playlist_beats(): """ Return 10 of beats isl playlist """ try: _min = db.session.query(db.func.max(Media.listened)).scalar() / 2 return Media.query \ .filter(Media.listened < round(_min + (_min / 2)), Media.listened > round(_min - (_min / 2))) \ .limit(20) \ .all() except TypeError: return None
class Payment(db.Model): """ Payment Model """ # table name __tablename__ = 'payment' id = db.Column(db.Integer, primary_key=True) artist_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) reference = db.Column(db.String(100), nullable=False) amount = db.Column(db.Float(), nullable=False) type = db.Column(db.String(150), nullable=False) licenses_name = db.Column(db.String(50), nullable=True) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) # class constructor def __init__(self, data): """ Class constructor """ self.artist_id = data.get('artist_id') self.amount = data.get('amount') self.type = data.get('type') self.licenses_name = data.get('licenses_name') self.reference = data.get('reference') self.created_at = datetime.datetime.utcnow() self.modified_at = datetime.datetime.utcnow() def save(self): """save a new payment """ db.session.add(self) db.session.commit() def update(self, data): """ update a payment """ self.artist_id = data.get('artist_id') self.amount = data.get('amount') self.type = data.get('type') self.licenses_name = data.get('licenses_name') self.reference = data.get('reference') self.modified_at = datetime.datetime.utcnow() db.session.commit() def delete(self): """ delete a payment """ db.session.delete(self) db.session.commit() @staticmethod def get_payment_by_id(payment_id): """ get a payment by id """ return Payment.query.filter_by(id=payment_id).first() @staticmethod def get_payment_by_reference(reference): """ get a payment by reference """ return Payment.query.filter_by(reference=reference).first()
class ContractBeatMaking(db.Model): """ Contract BeatMaking Model """ # table name __tablename__ = 'contract_beat_making' id = db.Column(db.Integer, primary_key=True) contract_name = db.Column(db.String(255), nullable=False) price = db.Column(db.Float(), default=0) mp3 = db.Column(db.BOOLEAN, default=False) wave = db.Column(db.BOOLEAN, default=False) stems = db.Column(db.BOOLEAN, default=False) enabled = db.Column(db.BOOLEAN, default=True) number_of_distribution_copies = db.Column(db.Integer, default=0) number_audio_stream = db.Column(db.Integer, default=0) number_music_video = db.Column(db.Integer, default=0) number_radio_station = db.Column(db.Integer, default=0) unlimited = db.Column(db.BOOLEAN, default=False) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) # class constructor def __init__(self, data): """ Class constructor """ self.user_id = data.get('user_id') self.contract_name = data.get('contract_name') self.price = data.get('price') self.mp3 = data.get('mp3', False) self.wave = data.get('wave', False) self.stems = data.get('stems', False) self.enabled = data.get('enabled') self.number_of_distribution_copies = data.get( 'number_of_distribution_copies') self.number_audio_stream = data.get('number_audio_stream') self.number_music_video = data.get('number_music_video') self.number_radio_station = data.get('number_radio_station') self.unlimited = data.get('unlimited') self.modified_at = datetime.datetime.utcnow() self.created_at = datetime.datetime.utcnow() def save(self): """save a new contract """ db.session.add(self) db.session.commit() def update(self, data): """ update one media """ self.price = data.get('price') self.enabled = data.get('enabled') self.number_of_distribution_copies = data.get( 'number_of_distribution_copies') self.number_audio_stream = data.get('number_audio_stream') self.number_music_video = data.get('number_music_video') self.number_radio_station = data.get('number_radio_station') self.unlimited = data.get('unlimited') self.modified_at = datetime.datetime.utcnow() db.session.commit() def delete(self): """ delete one media """ db.session.delete(self) db.session.commit() @staticmethod def get_contract_name_by_user_id(contract_name=None, user_id=None): """ get one contract name by user id """ if contract_name and not user_id: return ContractBeatMaking.query.filter_by( contract_name=contract_name).all() if not contract_name and user_id: return ContractBeatMaking.query.filter_by(user_id=user_id).all() return ContractBeatMaking.query.filter_by(contract_name=contract_name, user_id=user_id).first()
class Options(db.Model): """ Options Model """ __tablename__ = 'options' id = db.Column(db.BIGINT, primary_key=True) special_dates = db.Column(JSON, default={}) name = db.Column(db.String(200), nullable=False) description = db.Column(db.Text(), nullable=True) artist_tagged = db.Column(db.String(200), nullable=False) price = db.Column(db.Float(), nullable=False, default=1.00) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) services_id_list = db.Column(db.ARRAY(db.Integer), default=[]) materials_id = db.Column(db.Integer, db.ForeignKey('materials.id')) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) material = db.relationship( "Materials", cascade="all, delete, save-update", backref=db.backref("materials_of_options", uselist=False) ) # class constructor def __init__(self, data): """ Class constructor """ self.name = data.get('name') self.price = data.get('price') self.user_id = data.get('user_id') self.description = data.get('description') self.materials_id = data.get('materials_id') self.artist_tagged = data.get('artist_tagged') self.special_dates = data.get('special_dates') self.services_id_list = data.get('services_id_list') self.created_at = datetime.datetime.utcnow() self.modified_at = datetime.datetime.utcnow() def save(self): """ save a Options """ db.session.add(self) db.session.commit() add_new_doc(self, OptionsSchema(), index="options", doc_type="option") def update(self, data): """ update a Options """ self.name = data.get('name') self.price = data.get('price') self.user_id = data.get('user_id') self.description = data.get('description') self.materials_id = data.get('materials_id') self.artist_tagged = data.get('artist_tagged') self.special_dates = data.get('special_dates') self.services_id_list = data.get('services_id_list') self.modified_at = datetime.datetime.utcnow() db.session.commit() update_doc(self, OptionsSchema(), index="options", doc_type="option") def delete(self): """ delete a user Options """ db.session.delete(self) db.session.commit() @staticmethod def get_by_options_id(options_id=None): """ get one artist service """ return Options.query.filter_by(service_id=options_id).first()
class Services(db.Model): """ Services Model """ # table name __tablename__ = 'services' id = db.Column(db.BIGINT, primary_key=True) special_dates = db.Column(JSON, default={}) hidden = db.Column(db.Boolean, default=False) description = db.Column(db.Text(), nullable=True) title = db.Column(db.String(200), nullable=False) country = db.Column(db.String(200), nullable=False) events = db.Column(db.ARRAY(db.String), default=[]) galleries = db.Column(db.ARRAY(db.String), default=[]) thematics = db.Column(db.ARRAY(db.String), default=[]) others_city = db.Column(db.ARRAY(db.String), default=[]) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) reference_city = db.Column(db.String(200), nullable=False) price = db.Column(db.Float(), nullable=False, default=1.00) travel_expenses = db.Column(JSON, nullable=False, default={}) number_of_artists = db.Column(db.Integer(), nullable=False, default=1) unit_duration_of_the_service = db.Column(db.String(10), nullable=False) preparation_time = db.Column(db.Float(), nullable=False, default=1.00) unit_of_the_preparation_time = db.Column(db.String(10), nullable=False) refund_policy = db.Column(db.String(45), nullable=False, default='flexible') duration_of_the_service = db.Column(db.Float(), nullable=False, default=1.00) materials_id = db.Column(db.Integer, db.ForeignKey('materials.id'), nullable=False) created_at = db.Column(db.DateTime) modified_at = db.Column(db.DateTime) material = db.relationship("Materials", cascade="all, delete, save-update", backref=db.backref("materials_of_services", uselist=False)) # class constructor def __init__(self, data): """ Class constructor """ self.title = data.get('title') self.price = data.get('price') self.country = data.get('country') self.events = data.get('events') self.user_id = data.get('user_id') self.hidden = data.get('hidden', False) self.galleries = data.get('galleries') self.thematics = data.get('thematics') self.description = data.get('description') self.others_city = data.get('others_city') self.special_dates = data.get('special_dates') self.materials_id = data.get('materials_id') self.reference_city = data.get('reference_city') self.travel_expenses = data.get('travel_expenses') self.preparation_time = data.get('preparation_time') self.number_of_artists = data.get('number_of_artists') self.refund_policy = data.get('refund_policy', 'flexible') self.duration_of_the_service = data.get('duration_of_the_service') self.unit_duration_of_the_service = data.get( 'unit_duration_of_the_service') self.unit_of_the_preparation_time = data.get( 'unit_of_the_preparation_time') self.created_at = datetime.datetime.utcnow() self.modified_at = datetime.datetime.utcnow() def save(self): """ save a Services """ db.session.add(self) db.session.commit() add_new_doc(self, ServiceSchema(), index="services", doc_type="prestations") def update(self, data): """ update a Services """ self.title = data.get('title') self.hidden = data.get('hidden') self.country = data.get('country') self.description = data.get('description') self.events = data.get('events') self.galleries = data.get('galleries') self.thematics = data.get('thematics') self.others_city = data.get('others_city') self.user_id = data.get('user_id') self.reference_city = data.get('reference_city') self.special_dates = data.get('special_dates') self.price = data.get('price') self.refund_policy = data.get('refund_policy') self.materials_id = data.get('materials_id') self.travel_expenses = data.get('travel_expenses') self.number_of_artists = data.get('number_of_artists') self.duration_of_the_service = data.get('duration_of_the_service') self.unit_duration_of_the_service = data.get( 'unit_duration_of_the_service') self.preparation_time = data.get('preparation_time') self.unit_of_the_preparation_time = data.get( 'unit_of_the_preparation_time') self.modified_at = datetime.datetime.utcnow() db.session.commit() update_doc(self, ServiceSchema(), index="services", doc_type="prestations") def delete(self): """ delete a user Services """ db.session.delete(self) db.session.commit() @staticmethod def get_by_service_id(service_id=None): """ get one artist service """ return Services.query.filter_by(id=service_id).first()