class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username
Ejemplo n.º 2
0
class Messages(db.Model):
    __tablename__ = 'tr_messages'
    id = db.Column(db.Integer, primary_key=True)
    event_id = db.Column(db.Integer)
    email_subject = db.Column(db.String(200))
    email_content = db.Column(db.String(500))
    timestamp = db.Column(db.DateTime())
Ejemplo n.º 3
0
class LDAPConnection(db.Model):
    __tablename__ = 'ldap_connections'
    id = db.Column(db.Integer, primary_key=True)
    ldap_id = db.Column(db.String(50), unique=True, nullable=False)
    url = db.Column(db.String(2000), unique=False, nullable=False)
    port = db.Column(db.Integer, unique=False, nullable=False)
    use_ssl = db.Column(db.Boolean, unique=False, nullable=False)
    user_dn = db.Column(db.String(200), unique=False, nullable=False)
    bind_dn = db.Column(db.String(200), unique=False, nullable=False)
    bind_credential = db.Column(db.String(200), unique=False, nullable=False)
    account_type = db.Column(db.Enum(LDAPAccountTypes), unique=False, nullable=False)
    create_time = db.Column(db.DateTime, nullable=False)
    last_update_time = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)

    @property
    def serialize(self):
        return {
            'ldap_id': self.ldap_id,
            'url': self.url,
            'port': self.port,
            'user_dn': self.user_dn,
            'bind_dn': self.bind_dn,
            'use_ssl': self.use_ssl,
            'bind_credential': self.bind_credential,
            'account_type': self.account_type.serialize,
            "create_time": self.create_time,
            "last_update_time": self.last_update_time,
        }
Ejemplo n.º 4
0
class Preference(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    group_id = db.Column(db.Integer, db.ForeignKey('group.id'), nullable=False)
    first_preference = db.Column(db.String(500), index=True)
    second_preference = db.Column(db.String(500), index=True)
    third_preference = db.Column(db.String(500), index=True)
    match_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    last_updated_time = db.Column(db.DateTime,
                                  index=True,
                                  default=datetime.utcnow)
    #this is the many side, so uselist=False
    match = db.relationship("User",
                            backref=db.backref("match_preferences",
                                               lazy='dynamic'),
                            foreign_keys=[match_id],
                            uselist=False)
    user = db.relationship("User",
                           backref=db.backref("user_preferences",
                                              lazy='dynamic'),
                           foreign_keys=[user_id],
                           uselist=False)

    def __repr__(self):
        return '<Preference {}, {}>'.format(self.group_id, self.user_id)
Ejemplo n.º 5
0
class User(db.Model):
    """
    User model used for storing name and email of the user
    """

    id = db.Column(db.Text(length=36),
                   default=lambda: str(uuid.uuid4()),
                   primary_key=True)

    email = db.Column(db.String(120), index=True)
    name = db.Column(db.String(255))
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow)

    __tablename__ = 'user'

    def __repr__(self):
        return 'User {}'.format(self.name)

    def to_dict(self):
        """

        """
        data = {
            'id': self.id,
            'email': self.email,
            'name': self.name,
            'created_at': self.created_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
            'updated_at': self.updated_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
        }
        return data
Ejemplo n.º 6
0
class Site(db.Model):
    __tablename__ = 'site'
    site_id = db.Column(db.String, primary_key=True)
    primary = db.Column(db.Boolean, nullable=False, default=False)

    # only needs to be set if primary=True
    base_url = db.Column(db.String, nullable=True, unique=True)

    tenant_base_url_template = db.Column(db.String, nullable=True, unique=True)
    site_admin_tenant_id = db.Column(db.String, nullable=False)
    services = db.Column(ARRAY(db.String), unique=False, nullable=False)

    create_time = db.Column(db.DateTime, nullable=False)
    last_update_time = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
    created_by = db.Column(db.String(120), unique=False, nullable=False)
    last_updated_by = db.Column(db.String(120), unique=False, nullable=False)

    def __repr__(self):
        return f'{self.site_id}'

    @property
    def serialize(self):
        return {
            "site_id": self.site_id,
            "primary": self.primary,
            "base_url": self.base_url,
            "tenant_base_url_template": self.tenant_base_url_template,
            "site_admin_tenant_id": self.site_admin_tenant_id,
            "services": self.services,
            "create_time": str(self.create_time),
            "created_by": self.created_by,
            "last_update_time": str(self.last_update_time),
            "last_updated_by": self.last_updated_by
        }
Ejemplo n.º 7
0
class Application(db.Model):
    name = db.Column(db.String(120), unique=True, nullable=False, primary_key=True)
    fields = db.Column(db.String(255), unique=False, nullable=True, default='[]', server_default='[]')
    s3_buckets = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<Application %r>' % self.name
Ejemplo n.º 8
0
class Mapping(db.Model):
    id = db.Column(db.String(120), unique=True, nullable=False, primary_key=True)
    app_name = db.Column(db.String(120), db.ForeignKey('application.name'), nullable=False)
    app = db.relationship('Application', foreign_keys=app_name)
    image_url = db.Column(db.String(500), nullable=True)
    fields = db.Column(db.String(500), nullable=True)

    def __repr__(self):
        return '<Mapping %r>' % self.id
Ejemplo n.º 9
0
class Tweet(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    date_created = db.Column(db.DateTime)
    date_updated = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    username = db.Column(db.String(32), db.ForeignKey('user.username'))
    body = db.Column(db.String(140))

    def __repr__(self):
        return '<Tweet %r>' % (self.body)
Ejemplo n.º 10
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date_created = db.Column(db.DateTime)
    date_updated = db.Column(db.DateTime)
    username = db.Column(db.String(64), unique=True)
    user_sid = db.Column(db.String(16), unique=True)
    hashed_token = db.Column(db.String(16), unique=True)

    def __repr__(self):
        return '<User %r>' % (self.username)
Ejemplo n.º 11
0
class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(128), nullable=False)
    email = db.Column(db.String(128), nullable=False)
    active = db.Column(db.Boolean(), default=True, nullable=False)

    def __init__(self, username, email):
        self.username = username
        self.email = email
Ejemplo n.º 12
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True, nullable=False)

    def to_dict(self):
        d = {'id': self.id, 'name': self.name}
        return d
Ejemplo n.º 13
0
class GroupMember(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    group_id = db.Column(db.Integer, db.ForeignKey('group.id'), nullable=False)
    member_email = db.Column(db.String(120), index=True, nullable=False)

    def __repr__(self):
        return '<GroupMember {}, {}>'.format(self.group_id, self.member_email)

    @staticmethod
    def signup_status(member_email):
        user = User.query.filter_by(email=member_email).first()
        if user:
            return True
        else:
            return False

    @staticmethod
    def group_signup_status(group_id, member_email):
        user = User.query.filter_by(email=member_email).first()
        if user:
            preferences = user.user_preferences.filter_by(
                group_id=group_id).first()
            if preferences:
                return True
        return False
Ejemplo n.º 14
0
class ActivityLog(db.Model):
    TYPES = [
        ('create', 'Create'),
        ('update', 'Update'),
        ('delete', 'Delete'),
    ]
    id = db.Column(db.Text(length=36),
                   default=lambda: str(uuid.uuid4()),
                   primary_key=True)

    action = db.Column(ChoiceType(TYPES))

    user_id = db.Column(db.String(255), db.ForeignKey('user.id'))

    attributes = db.Column(JSONType)

    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow)

    __tablename__ = 'ActivityLog'

    def __repr__(self):
        return 'User id {}'.format(self.user_id)

    def to_dict(self):
        data = {
            "id": self.id,
            "user_id": self.user_id,
            "action": self.action.code,
            "attributes": self.attributes,
            'created_at': self.created_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
            'updated_at': self.updated_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
        }
        return data
Ejemplo n.º 15
0
class Group(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    groupname = db.Column(db.String(120),
                          index=True,
                          unique=True,
                          nullable=False)
    rsvp_close_date = db.Column(db.Date, index=True, nullable=False)
    reveal_date = db.Column(db.Date, index=True, nullable=False)
    budget = db.Column(db.Float, index=True)
    host_join = db.Column(db.Boolean, index=True)
    last_updated_time = db.Column(db.DateTime,
                                  index=True,
                                  default=datetime.utcnow)
    host_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    preferences = db.relationship('Preference',
                                  backref='group',
                                  lazy='dynamic')
    members = db.relationship('GroupMember', backref='group', lazy='dynamic')

    def __repr__(self):
        return '<Group {}>'.format(self.groupname)

    def get_all_member_emails(self):
        current_members = self.members.all()
        current_emails = []
        for member in current_members:
            current_emails.append(member.member_email)
        if self.host_join:
            current_members.append(self.host.email)
        return current_emails

    def get_all_signup_member_emails(self):
        current_members = self.members.all()
        current_emails = []
        for member in current_members:
            if GroupMember.group_signup_status(self.id, member.member_email):
                current_emails.append(member.member_email)
        if self.host_join and GroupMember.group_signup_status(
                self.id, self.host.email):
            current_members.append(self.host.email)
        return current_emails

    def if_match_set(self):
        current_preferences = self.preferences.all()
        match_set = True
        for current_preference in current_preferences:
            if not current_preference.match:
                match_set = False
                break
        return match_set

    @staticmethod
    def check_group_member(group_name, email):
        current_group = Group.query.filter_by(groupname=group_name).first()
        current_emails = current_group.get_all_member_emails()
        if email in current_emails:
            return True
        else:
            return False
class TitleRegisterData(db.Model):  # type: ignore
    title_number = db.Column(db.String(10), primary_key=True)
    register_data = db.Column(JSON)
    geometry_data = db.Column(JSON)
    official_copy_data = db.Column(JSON)
    is_deleted = db.Column(db.Boolean, default=False, nullable=False)
    last_modified = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now(), nullable=False)
    lr_uprns = db.Column(ARRAY(db.String), default=[], nullable=True)
Ejemplo n.º 17
0
class TenantHistory(db.Model):
    __tablename__ = 'tenants_history'
    id = db.Column(db.Integer, primary_key=True)
    tenant_id = db.Column(db.String(50), db.ForeignKey('tenants.tenant_id'), nullable=False)
    update_time = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
    updated_by = db.Column(db.String(120), unique=False, nullable=False)
    updates_as_json = db.Column(db.String(10000), unique=False, nullable=False)

    @property
    def serialize(self):
        d = {
            'tenant_id': self.tenant_id,
            'update_time': str(self.update_time),
            'updated_by': self.updated_by,
            'updates': json.loads(self.updates_as_json)
        }
        return d
Ejemplo n.º 18
0
class User(UserMixin, db.Model):
    y = db.Column(db.String(256), primary_key=True)

    def __init__(self, y):
        self.y = y

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()
Ejemplo n.º 19
0
class TenantOwner(db.Model):
    __tablename__ = 'tenantOwners'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    name = db.Column(db.String(80), unique=False, nullable=False)
    institution = db.Column(db.String(80), unique=False, nullable=False)
    create_time = db.Column(db.DateTime, nullable=False)
    last_update_time = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)

    def __repr__(self):
        return f'{self.email}, {self.institution}'

    @property
    def serialize(self):
        return {
            "email": self.email,
            "name": self.name,
            "institution": self.institution,
            "create_time": self.create_time,
            "last_update_time": self.last_update_time,
        }
class UserSearchAndResults(db.Model):  # type: ignore
    """
    Store details of user view (for audit purposes) and update after payment (for reconciliation).
    """

    # As several users may be searching at the same time, we need a compound primary key.
    # Note that WebSeal prevents a user from being logged in from multiple places concurrently.
    search_datetime = db.Column(db.DateTime(), nullable=False, primary_key=True)
    user_id = db.Column(db.String(20), nullable=False, primary_key=True)
    title_number = db.Column(db.String(20), nullable=False)
    search_type = db.Column(db.String(20), nullable=False)
    purchase_type = db.Column(db.String(20), nullable=False)
    amount = db.Column(db.String(10), nullable=False)
    cart_id = db.Column(db.String(30), nullable=True)

    # Post-payment items: these (or the like) are also held in the 'transaction_data' DB.
    # TODO: Ideally they should be fetched from there instead, via the 'search_datetime' key.
    lro_trans_ref = db.Column(db.String(30), nullable=True)                # Reconciliation: 'transId' from Worldpay.
    viewed_datetime = db.Column(db.DateTime(), nullable=True)              # If null, user has yet to view the results.
    valid = db.Column(db.Boolean, default=False)

    def __init__(self,
                 search_datetime,
                 user_id,
                 title_number,
                 search_type,
                 purchase_type,
                 amount,
                 cart_id,
                 lro_trans_ref,
                 viewed_datetime,
                 valid
                 ):
        self.search_datetime = search_datetime
        self.user_id = user_id
        self.title_number = title_number
        self.search_type = search_type
        self.purchase_type = purchase_type
        self.amount = amount
        self.cart_id = cart_id

        self.lro_trans_ref = lro_trans_ref
        self.viewed_datetime = viewed_datetime
        self.valid = valid

    # This is for serialisation purposes; it returns the arguments used and their values as a dict.
    # Note that __dict__ only works well in this case if no other local variables are defined.
    # "marshmallow" may be an alternative: https://marshmallow.readthedocs.org/en/latest.
    def get_dict(self):
        return self.__dict__

    def id(self):
        return '<lro_trans_ref {}>'.format(self.lro_trans_ref)
Ejemplo n.º 21
0
class Operator(db.Model):
    name = db.Column(db.String(80), unique=True, nullable=False, primary_key=True)
    backend = db.Column(db.String(80), nullable=False)
    type = db.Column(db.String(80), nullable=False)
    input = db.Column(db.String(80), nullable=False)
    output = db.Column(db.String(80), nullable=False)
    dimension = db.Column(db.Integer, nullable=False)
    metric_type = db.Column(db.String(120), nullable=False)
    endpoint = db.Column(db.String(120), nullable=False)

    def __repr__(self):
        return '<name %r>' % self.name
Ejemplo n.º 22
0
class Pipeline(db.Model):
    name = db.Column(db.String(120), unique=True, nullable=False, primary_key=True)
    description = db.Column(db.String(240), unique=False, nullable=True)
    processors = db.Column(db.String(240), unique=False, nullable=False)
    encoder = db.Column(db.String(240), unique=False, nullable=False)
    input = db.Column(db.String(120), unique=False, nullable=False)
    output = db.Column(db.String(120), unique=False, nullable=False)
    dimension = db.Column(db.Integer, unique=False, nullable=False)
    index_file_size = db.Column(db.Integer, unique=False, nullable=False)
    metric_type = db.Column(db.String(120), unique=False, nullable=False)

    def __repr__(self):
        return '<Pipeline %r>' % self.name
Ejemplo n.º 23
0
class Message(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(250), nullable=False)
    sender_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    recipient_id = db.Column(db.Integer,
                             db.ForeignKey('user.id'),
                             nullable=False)
    is_palindrome = db.Column(db.Boolean, nullable=False)

    def to_dict(self):
        d = {
            'id': self.id,
            'body': self.body,
            'sender_id': self.sender_id,
            'recipient_id': self.recipient_id,
            'is_palindrome': self.is_palindrome
        }
        return d
Ejemplo n.º 24
0
class Operator(db.Model):
    name = db.Column(db.String(80),
                     unique=True,
                     nullable=False,
                     primary_key=True)
    addr = db.Column(db.String(80), nullable=False)
    author = db.Column(db.String(80), nullable=False)
    version = db.Column(db.String(80), nullable=False)
    type = db.Column(db.String(80), nullable=False)
    description = db.Column(db.String(300), nullable=False)

    def __repr__(self):
        return '<name %r>' % self.name
Ejemplo n.º 25
0
class Storage(db.Model):
    name = db.Column(db.String(120), unique=True, nullable=False, primary_key=True)
    milvus_addr = db.Column(db.String(120), unique=False, nullable=False)
    milvus_port = db.Column(db.Integer, unique=False, nullable=False)
    milvus_table_name = db.Column(db.String(120), unique=False, nullable=False)
    milvus_dimension = db.Column(db.Integer, unique=False, nullable=False)
    milvus_index_file_size = db.Column(db.Integer, unique=False, nullable=False)
    milvus_metric_type = db.Column(db.String(120), unique=False, nullable=False)
    s3_addr = db.Column(db.String(120), unique=False, nullable=False)
    s3_port = db.Column(db.Integer, unique=False, nullable=False)
    s3_token = db.Column(db.String(120), unique=False, nullable=False)

    def __repr__(self):
        return '<Storage %r>' % self.name
Ejemplo n.º 26
0
class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64),
                         index=True,
                         unique=True,
                         nullable=False)
    email = db.Column(db.String(120), index=True, unique=True, nullable=False)
    password_hash = db.Column(db.String(200))
    firstname = db.Column(db.String(64), index=True, nullable=False)
    lastname = db.Column(db.String(64), index=True, nullable=False)
    nickname = db.Column(db.String(64), index=True)
    last_updated_time = db.Column(db.DateTime,
                                  index=True,
                                  default=datetime.utcnow)
    host_groups = db.relationship('Group', backref='host', lazy='dynamic')

    def __repr__(self):
        return '<User {}>'.format(self.username)

    def get_full_name(self):
        return self.firstname + ' ' + self.lastname

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def get_reset_password_token(self, expires_in=600):
        return jwt.encode(
            {
                'reset_password': self.id,
                'exp': time() + expires_in
            },
            app.config['SECRET_KEY'],
            algorithm='HS256').decode('utf-8')

    @staticmethod
    def verify_reset_password_token(token):
        try:
            user_id = jwt.decode(token,
                                 app.config['SECRET_KEY'],
                                 algorithms=['HS256'])['reset_password']
        except:
            return None
        return User.query.get(user_id)
class Validation(db.Model):  # type: ignore
    """ Store of price etc., for anti-fraud purposes """

    __tablename__ = 'validation'
    price = db.Column(db.Integer, nullable=False, default=300, primary_key=True)
    product = db.Column(db.String(20), default="drvSummary")        # purchase_type
class UprnMapping(db.Model):  # type: ignore
    uprn = db.Column(db.String(20), primary_key=True)
    lr_uprn = db.Column(db.String(20), nullable=False)
Ejemplo n.º 29
0
class Subject(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20), unique=True, nullable=False)
    homework = db.relationship('Homework', backref='subject', lazy=True)
    books = db.relationship('Books', backref='subject', lazy=True)
    schedule = db.relationship('Schedule', backref='subject', lazy=True)
Ejemplo n.º 30
0
class Emails(db.Model):
    __tablename__ = 'tm_emails'
    id = db.Column(db.String(30), primary_key=True)
    email = db.Column(db.String(190))
    first_name = db.Column(db.String(100))
    last_name = db.Column(db.String(100))