71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
from datetime import datetime, timezone
|
|
from app.extensions import db
|
|
from app.models.charge import Charge
|
|
from sqlalchemy.orm import relationship
|
|
from sqlalchemy.sql import func
|
|
from sqlalchemy.exc import IntegrityError
|
|
from dateutil.relativedelta import relativedelta
|
|
import logging
|
|
from sqlalchemy import and_, or_, not_
|
|
from sqlalchemy.sql import func
|
|
import uuid
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class CustomTemplates(db.Model):
|
|
__tablename__ = 'custom_templates'
|
|
|
|
id = db.Column(db.String, primary_key=True)
|
|
uid = db.Column(db.String, nullable=False)
|
|
custom_id = db.Column(db.String, nullable=False)
|
|
provision_name = db.Column(db.String, nullable=False)
|
|
added = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
|
|
|
@classmethod
|
|
def get_template_by_custom_id(cls, custom_id):
|
|
templates = cls.query.filter_by(custom_id=str(custom_id)).first()
|
|
if not templates:
|
|
return None
|
|
return templates
|
|
|
|
@classmethod
|
|
def create_template(cls, custom_id,provision_name):
|
|
custom_data = cls(
|
|
uid=str(uuid.uuid4()),
|
|
custom_id=custom_id,
|
|
provision_name=provision_name,
|
|
added=datetime.now(timezone.utc)
|
|
)
|
|
|
|
try:
|
|
logger.info(f" About to Insert Subscription Data {custom_data.custom_id} ")
|
|
db.session.add(custom_data)
|
|
db.session.flush()
|
|
except IntegrityError as err:
|
|
logger.error(f" Error inserting custom data {err} -- ")
|
|
raise ValueError(f"Database integrity error: {err}")
|
|
return custom_data
|
|
|
|
|
|
|
|
@classmethod
|
|
def get_custom_template_for_office(cls, filters):
|
|
templates = cls.query.all()
|
|
|
|
if not templates:
|
|
raise ValueError(f"Templates not found")
|
|
return templates
|
|
|
|
|
|
def to_dict(self):
|
|
return {
|
|
"id": self.id,
|
|
"uid": self.uid,
|
|
"custom_id": self.product_id,
|
|
"provision_name": self.name,
|
|
"added": self.added.isoformat() if self.added else None
|
|
}
|
|
|
|
def __repr__(self):
|
|
return f'<CustomTemplates {self.id}>'
|