예제 #1
0
class Customer(db.Model, ModelIter):
    __tablename__ = 'customers'
    allowed_widget = True

    fillable = [
        'first_name',
        'last_name',
        'identification_number',
        'primary_email',
        'secondary_email',
        'primary_phone',
        'secondary_phone',
        'address',
        'source_project_id',
        'province_id',
    ]

    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(30, collation=configs.DB_COLLATION),
                           nullable=False)
    last_name = db.Column(db.String(30, collation=configs.DB_COLLATION),
                          nullable=False,
                          index=True)
    identification_number = db.Column(
        db.String(25, collation=configs.DB_COLLATION),
        comment='National ID. i.e. Cedula, License',
        unique=True)
    primary_email = db.Column(db.String(50, collation=configs.DB_COLLATION),
                              nullable=False,
                              unique=True)
    secondary_email = db.Column(db.String(50, collation=configs.DB_COLLATION),
                                nullable=True)
    primary_phone = db.Column(db.String(10, collation=configs.DB_COLLATION),
                              nullable=False,
                              unique=True)
    secondary_phone = db.Column(db.String(10, collation=configs.DB_COLLATION),
                                nullable=True)
    address = db.Column(db.Text(collation=configs.DB_COLLATION),
                        nullable=False)
    source_project = relationship(SourceProject, uselist=False, lazy='joined')
    province = relationship(Province, uselist=False, lazy='joined')
    created_on = db.Column(db.DateTime(),
                           nullable=False,
                           default=datetime.utcnow)
    updated_on = db.Column(db.DateTime(),
                           nullable=False,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)
    province_id = deferred(
        db.Column(db.Integer, db.ForeignKey('provinces.id'), nullable=False))
    source_project_id = db.Column(db.Integer,
                                  db.ForeignKey('source_projects.id'))
예제 #2
0
class Audit(db.Model, ModelIter):
    __tablename__ = 'audits'

    id = db.Column(BigInteger, primary_key=True)
    date = db.Column(db.DateTime(),
                     nullable=False,
                     index=True,
                     default=datetime.utcnow)
    user_id = db.Column(BigInteger,
                        db.ForeignKey('users.id'),
                        index=True,
                        nullable=True)
    ip = db.Column(db.String(15), nullable=False)
    endpoint = db.Column(db.String(255, collation=configs.DB_COLLATION),
                         nullable=False)
    method = db.Column(db.String(7, collation=configs.DB_COLLATION),
                       nullable=False)
    headers = db.Column(db.Text(collation=configs.DB_COLLATION))
    payload = db.Column(db.Text(collation=configs.DB_COLLATION))
    response = db.Column(db.Text(collation=configs.DB_COLLATION))

    user = relationship(User, uselist=False)
예제 #3
0
class UserAttributes(db.Model, ModelIter):
    __tablename__ = 'user_attributes'

    ua_id = db.Column(BigInteger, primary_key=True)
    user_id = db.Column(BigInteger, db.ForeignKey('users.id'), index=True)
    user_access = db.Column(db.Text(collation=configs.DB_COLLATION),
                            comment='A JSON schema of table/rows access',
                            nullable=False,
                            default='{}')
    user_preferences = db.Column(db.Text(collation=configs.DB_COLLATION),
                                 comment='A JSON schema user preferences',
                                 nullable=False,
                                 default='{}')

    user = relationship(User, back_populates='attributes', uselist=False)

    @property
    def preferences(self):
        return json.loads(self.user_preferences)

    @property
    def access(self):
        return json.loads(self.user_access)
예제 #4
0
class CompanyProfile(db.Model, ModelIter):
    __tablename__ = 'company_profile'
    allowed_widget = True
    fillable = ['name', 'address', 'contact', 'logo']

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30, collation=configs.DB_COLLATION),
                     unique=True,
                     nullable=False)
    address = db.Column(db.Text(collation=configs.DB_COLLATION),
                        nullable=False)
    contact = db.Column(db.String(10, collation=configs.DB_COLLATION),
                        nullable=False)
    logo = db.Column(db.LargeBinary)
    settings = db.Column(MutableDict.as_mutable(db.JSON),
                         comment='A JSON schema for global settings',
                         nullable=False,
                         server_default='{}')
예제 #5
0
class UserMessage(db.Model, ModelIter):
    __tablename__ = 'user_messages'
    allowed_widget = True

    id = db.Column(BigInteger, primary_key=True)
    user = relationship(User, uselist=False)
    date = db.Column(db.DateTime(), nullable=False, default=datetime.utcnow)
    read = db.Column(db.Boolean,
                     nullable=False,
                     index=True,
                     server_default='0')
    subject = db.Column(db.String(255, collation=configs.DB_COLLATION),
                        nullable=False)
    message = db.Column(db.Text(collation=configs.DB_COLLATION))

    user_id = db.Column(BigInteger,
                        db.ForeignKey('users.id'),
                        index=True,
                        nullable=True)
예제 #6
0
class Role(db.Model, ModelIter):
    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30, collation=configs.DB_COLLATION), index=True)
    permissions = db.Column(db.Text(collation=configs.DB_COLLATION))

    @property
    def get_permissions(self):

        combined_permissions = default_access.copy()

        if self.permissions:
            for key, userGrants in json.loads(self.permissions).items():
                for defaultKey, defaultGrants in default_access.items():
                    if key == defaultKey:
                        for grant in defaultGrants:
                            if grant not in userGrants:
                                userGrants.append(grant)

                combined_permissions.update({key: userGrants})

        return combined_permissions
예제 #7
0
class CustomerProject(db.Model, ModelIter):
    __tablename__ = 'customer_projects'
    allowed_widget = True

    fillable = [
        'name',
        'address',
        'lat',
        'long',
        'coordinates',
        'nic',
        'nic_title',
        'circuit',
        'ct',
        'project_type_id',
        'customer_id',
        'province_id',
        'distributor_id',
        'rate_id',
        'transformer_id',
        'tr_capacity_id',
        'phase_id',
        'tension_id',
    ]

    id = db.Column(db.Integer, primary_key=True)
    customer = relationship(Customer,
                            uselist=False,
                            backref='customer_projects',
                            cascade='all, delete')
    project_type = relationship(ProjectType, uselist=False, lazy='joined')
    name = db.Column(db.String(30, collation=configs.DB_COLLATION),
                     nullable=False)
    address = db.Column(db.Text(collation=configs.DB_COLLATION),
                        nullable=False)
    province = relationship(Province, uselist=False, lazy='joined')
    lat = db.Column(db.Float)
    long = db.Column(db.Float)
    coordinates = composite(Point, lat, long)
    distributor = relationship(Distributor, uselist=False, lazy='joined')
    nic = db.Column(db.Integer)
    nic_title = db.Column(db.String(64, collation=configs.DB_COLLATION))
    rate = relationship(Rate, uselist=False, lazy='joined')
    circuit = db.Column(db.String(30, collation=configs.DB_COLLATION))
    transformer = relationship(Transformer, uselist=False, lazy='joined')
    ct = db.Column(db.String(32))  # transformer ID number
    capacity = relationship(TrCapacity, uselist=False, lazy='joined')
    phase = relationship(Phase, uselist=False, lazy='joined')
    tension = relationship(Tension, uselist=False, lazy='joined')

    project_type_id = deferred(
        db.Column(db.Integer, db.ForeignKey('project_types.id')))
    customer_id = deferred(
        db.Column(db.Integer,
                  db.ForeignKey('customers.id'),
                  index=True,
                  nullable=False))
    province_id = deferred(
        db.Column(db.Integer, db.ForeignKey('provinces.id'), nullable=False))
    distributor_id = deferred(
        db.Column(db.Integer, db.ForeignKey('distributors.id')))
    rate_id = deferred(db.Column(db.Integer, db.ForeignKey('rates.id')))
    transformer_id = deferred(
        db.Column(db.Integer, db.ForeignKey('transformers.id')))
    tr_capacity_id = deferred(
        db.Column(db.Integer, db.ForeignKey('tr_capacities.id')))
    phase_id = deferred(db.Column(db.Integer, db.ForeignKey('phases.id')))
    tension_id = deferred(db.Column(db.Integer, db.ForeignKey('tensions.id')))