Example #1
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(50), unique=False, nullable=False)
    last_name = db.Column(db.String(50), unique=False, nullable=False)
    username = db.Column(db.String(50), unique=True, nullable=False)
    email = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    role = db.Column(db.String(7), unique=False, nullable=False)
    registered_date = db.Column(db.DateTime(), unique=False, nullable=False)
    approved_date = db.Column(db.DateTime(), unique=False, nullable=False)

    def get_reset_token(self, expires_sec=1800):
        s = Serializer(current_app.config['SECRET_KEY'], expires_sec)
        return s.dumps({'user_id': self.id}).decode('utf-8')

    @staticmethod
    def verify_reset_token(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            user_id = s.loads(token)['user_id']
        except:
            return None
        return User.query.get(user_id)

    def __repr__(self):
        return f"User('{self.first_name}, {self.last_name}, {self.username}, {self.email})"
Example #2
0
class Bot(db.Model):
    __tablename__ = 'bots'

    id = db.Column(db.Integer, primary_key=True)
    bot_guid = db.Column(db.String(), unique=True)
    user_id = db.Column(db.Integer, ForeignKey("users.id", ondelete="CASCADE"))
    name = db.Column(db.String())
    platforms = db.Column(JSON)
    active_model = db.Column(db.String())
    last_trained = db.Column(db.DateTime(timezone=False))
    team = db.Column(JSON)
    words = db.Column(db.String())
    persona = db.Column(db.Integer, default=-1)
    created = db.Column(db.DateTime(timezone=False))
    used = db.Column(db.DateTime(timezone=False))

    def __init__(self, user_id, name, persona=-1, words={},platforms={}):
        self.bot_guid = str(uuid.uuid1())
        self.user_id = user_id
        self.name = name
        self.platforms = platforms
        self.created = datetime.datetime.utcnow()
        self.used = datetime.datetime.utcnow()
        self.last_trained = None
        self.active_model = ""
        self.words = words
        self.persona = persona
        self.team = {"admins":[{"user_id":user_id}],"developers":[]}

    def __repr__(self):
        return '<name {}>'.format(self.name)
class YoutubeComment(db.Model):
    __tablename__ = 'comment'

    video_id = db.Column(db.VARCHAR(12), db.ForeignKey('video.id'))

    # Thread_id is either the ID of the commmentThread object, or
    # the parentId of the commment snippet.
    # In the case that these two values are the same,
    # the item is a top-level comment.
    thread_id = db.Column(db.VARCHAR(100))
    id = db.Column(db.VARCHAR(100), primary_key=True)

    # Snippet data
    # There is a field 'textOriginal', but one is only guaranteed
    # access to this if one is the original author (we never are)
    textDisplay = db.Column(db.VARCHAR(1000))
    # Only valid for top-level comments. Always 0 for replies
    totalReplyCount = db.Column(db.Integer)
    authorDisplayName = db.Column(db.VARCHAR(100))
    authorProfileImageUrl = db.Column(db.VARCHAR(100))
    authorChannelUrl = db.Column(db.VARCHAR(100))
    authorChannelId = db.Column(db.VARCHAR(100))
    authorGooglePlusProfileUrl = db.Column(db.VARCHAR(100))
    likeCount = db.Column(db.Integer)

    publishedAt = db.Column(db.DateTime(timezone=True))
    updatedAt = db.Column(db.DateTime(timezone=True))
Example #4
0
class WeighingManagementModel(db.Model):
    __tablename__ = 'weighing_management'
    weighing_management_id = db.Column(db.Integer, primary_key=True,
                                       autoincrement=True)
    date_and_hour_of_management = db.Column(db.DateTime(timezone=True),
                                            nullable=False)
    date_of_actual_weighing = db.Column(db.DateTime(timezone=True),
                                        nullable=False)
    date_of_old_weighing = db.Column(db.DateTime(timezone=True),
                                     nullable=False)
    old_weight = db.Column(db.Numeric(5, 2), nullable=False)
    actual_weight = db.Column(db.Numeric(5, 2), nullable=False)
    bovine_id = db.Column(db.Integer, db.ForeignKey('beef_cattle.bovine_id', ondelete='CASCADE'))

    def __init__(self, date_of_old_weighing,
                 old_weight, actual_weight, bovine_id):
        self.date_and_hour_of_management = datetime.utcnow()
        self.date_of_old_weighing = date_of_old_weighing
        self.date_of_actual_weighing = datetime.utcnow()
        self.old_weight = old_weight
        self.actual_weight = actual_weight
        self.bovine_id = bovine_id

    def to_json(self):
        weighing_management = {
            'weighing_management_id': self.weighing_management_id,
            'date_and_hour_of_management': self.date_and_hour_of_management,
            'date_of_old_weighing': self.date_of_old_weighing,
            'date_of_actual_weighing': self.date_of_actual_weighing,
            'bovine_id': self.bovine_id,
            'old_weight': float(self.old_weight),
            'actual_weight': float(self.actual_weight),
        }
        return weighing_management
Example #5
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(80), unique=False, nullable=False)
    second_name = db.Column(db.String(80), unique=False, nullable=False)
    email = db.Column(db.String(100), nullable=False, unique=True)
    password = db.Column(db.String(100), nullable=False)
    group = db.Column(db.String(5), unique=False, nullable=True)
    role = db.Column(db.Enum(UserRoleEnum),
                     default=UserRoleEnum.student,
                     nullable=False)
    created_on = db.Column(db.DateTime(), default=datetime.utcnow)
    updated_on = db.Column(db.DateTime(),
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def is_admin(self):
        return self.role == User.ROLES['admin']

    def allowed(self, access_level):
        return self.role >= access_level

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

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

    def __repr__(self):
        return f"{self.first_name} {self.second_name}"
Example #6
0
class Tasks(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    taskname = db.Column(db.String(50))
    description = db.Column(db.String(300))
    dateadded = db.Column(db.DateTime())
    lastmodified = db.Column(db.DateTime())
    duedate = db.Column(db.DateTime())
    status = db.Column(db.String(10))
Example #7
0
class Job(db.Model):
    __tablename__ = 'jobs'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))
    description = db.Column(db.String(1000))
    status = db.Column(db.String(128))
    start_time = db.Column(db.DateTime())
    end_time = db.Column(db.DateTime())
    worker = db.Column(db.Integer, db.ForeignKey('users.id'))
    worker_rating = db.Column(db.Float)
    employer = db.Column(db.Integer, db.ForeignKey('users.id'))
    employer_rating = db.Column(db.Float)
    hourly_bitcoin_rate = db.Column(db.Float)
Example #8
0
class Member(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(50), unique=False, nullable=False)
    last_name = db.Column(db.String(50), unique=False, nullable=False)
    street_num = db.Column(db.String(10), unique=False, nullable=False)
    street_name = db.Column(db.String(50), unique=False, nullable=False)
    city = db.Column(db.String(50), unique=False, nullable=False)
    _state = db.Column(db.String(2), unique=False, nullable=False)
    postal_code = db.Column(db.String(10), unique=False, nullable=False)
    contact_num = db.Column(db.Integer, unique=False, nullable=False)
    email = db.Column(db.String(50), unique=True, nullable=False)
    birthdate = db.Column(db.DateTime(), nullable=False)
    age = db.Column(db.Integer, nullable=True)
    inserted_date = db.Column(db.DateTime(), nullable=False)
Example #9
0
class Analytics(db.Model):
    __tablename__ = 'analytics'

    id = db.Column(db.Integer, primary_key=True)
    bot_guid = db.Column(db.String(),
                         ForeignKey("bots.bot_guid", ondelete="CASCADE"))
    message = db.Column(db.String())
    intent = db.Column(db.String())
    entities = db.Column(JSON)
    confident = db.Column(Boolean, unique=False, default=False)
    response_time = db.Column(db.String(), unique=False, default="0")
    created = db.Column(db.DateTime(timezone=False))

    def __init__(self,
                 bot_guid,
                 message="",
                 intent=None,
                 entities={},
                 user_data={},
                 confident=False,
                 response_time="0",
                 source="web",
                 is_human=1):
        self.bot_guid = bot_guid
        self.message = message
        self.intent = intent
        self.entities = entities
        self.response_time = response_time
        self.confident = confident
        self.created = datetime.datetime.utcnow()

    def __repr__(self):
        return '<name {}>'.format(self.message)
Example #10
0
class Case(db.Model):
    __tablename__ = "Cases"
    id = db.Column(db.Integer, primary_key=True)
    info = db.Column(db.String(100), nullable=True)
    url = db.Column(db.String(100), nullable=True)
    created_time = db.Column(db.DateTime(), default=datetime.now())
    comment = db.Column(db.String(100))

    def __init__(self, info, url, create_time=False, comment=False):
        self.info = info
        self.url = url
        self.created_time = create_time
        self.comment = comment

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.id

    def __repr__(self):
        return "<Case('%s','%s','%s','%s','%s')>" % (
            self.id, self.info, self.url, self.created_time, self.comment)
Example #11
0
class Serata(db.Model):

    __tablename__ = "serata"

    __table_args__ = (db.UniqueConstraint("id",
                                          "data",
                                          name="contraint_serata"), )

    id = db.Column(db.Integer(), primary_key=True)
    nome = db.Column(db.String(255), nullable=False)
    descrizione = db.Column(db.String(255), nullable=False)
    data = db.Column(db.DateTime(), nullable=False)
    link_partecipazione = db.Column(db.String(255), nullable=True)
    link_registrazione = db.Column(db.String(255), nullable=True)

    corso_id = db.Column(db.Integer(), db.ForeignKey("corso.id"))

    def __init__(self,
                 nome,
                 descrizione,
                 data,
                 link_partecipazione='',
                 link_registrazione=''):
        self.nome = nome
        self.descrizione = descrizione
        self.data = data
        self.link_partecipazione = link_partecipazione
        self.link_registrazione = link_registrazione

    def __repr__(self):
        return "<Descrizione '{}'. Link registrazione>".format(
            self.descrizione, self.link_registrazione)
Example #12
0
class History(db.Model):
    __tablename__ = "history"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey(
        'users.id'), nullable=False)
    username = db.Column(db.String(128), nullable=True)
    user_email = db.Column(db.String(128), nullable=True)
    date = db.Column(
        db.DateTime(), default=datetime.datetime.utcnow(), nullable=True)
    task = db.Column(db.String(128), nullable=True)

    def __init__(self, user_id, username, user_email, date, task):
        self.user_id = user_id
        self.username = username
        self.user_email = user_email
        self.date = date
        self.task = task

    def to_json(self):
        return {
            'id': self.id,
            'user_id': self.user_id,
            'username': self.username,
            'user_email': self.user_email,
            'date': self.date,
            'task': self.task
        }
Example #13
0
class Appointment(db.Model):
    __tablename__ = 'appointments'

    id = db.Column(db.Integer, primary_key=True)
    start = db.Column(db.DateTime(timezone=True), nullable=False)
    end = db.Column(db.DateTime(timezone=True), nullable=False)
    created = db.Column(db.DateTime(timezone=True), nullable=False)
    status = db.Column(db.Boolean(), nullable=False)  # True active False
                                                      # canceled
    comments = db.Column(db.String(1024))
    event_id = db.Column(db.Integer, db.ForeignKey('events.id'), nullable=False)
    event = db.relationship('Event',
                            backref='appointments',
                            innerjoin=True,
                            cascade='all, delete-orphan',
                            single_parent=True,
                            uselist=False)
Example #14
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer)
    body = db.Column(db.Text)
    created_at = db.Column(db.DateTime(timezone=True),
                           server_default=db.func.now())
    image_url = db.Column(db.Text)
    view_count = db.Column(db.Integer, default=0)
Example #15
0
class Record(db.Model, AbstractModel):
    product_id = db.Column(db.String(40),
                           db.ForeignKey("product.id"),
                           primary_key=True)
    date = db.Column(db.DateTime(),
                     default=datetime.datetime.utcnow,
                     primary_key=True)
    price = db.Column(db.Float(), nullable=False)
Example #16
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer)
    post_id = db.Column(db.Integer)
    body = db.Column(db.Text)
    image_url = db.Column(db.Text)
    created_at = db.Column(db.DateTime(timezone=True),
                           server_default=db.func.now())
Example #17
0
class Media(db.Model):
    __tablename__ = 'media'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    description = db.Column(db.String(150))
    location = db.Column(db.String(150))
    author = db.Column(db.ForeignKey('users.id'))
    posted_date = db.Column(db.DateTime(), default=datetime.utcnow)
Example #18
0
class GitHubContributions(db.Model, AddUpdateDelete):
    __tablename__ = 'githubcontributions'

    id = db.Column(db.Integer, primary_key=True)
    swag_id = db.Column(db.Integer, db.ForeignKey('swag.id'))
    time_logged = db.Column(db.DateTime(timezone=True), unique=False)
    github_url = db.Column(db.Text, unique=False)
    point_value = db.Column(db.Integer)
    swag = db.relationship("Swag")
Example #19
0
class ServiceStatus(db.Model):
    __tablename__ = "service_status"

    ip = db.Column(db.String(), primary_key=True)
    last_seen_ts = db.Column(db.DateTime())

    def __init__(self, ip, ts):
        self.ip = ip
        self.last_seen_ts = ts
Example #20
0
class alumni(db.Model):
    __tablename__ = 'tb_alumni'
    id = db.Column(db.Integer, primary_key=True)
    department = db.Column(db.String(64))  # 校友所属系
    name = db.Column(db.String(64))  # 校友名字
    company = db.Column(db.String(64))  # 校友公司
    type = db.Column(db.String(64), default=0)  # 捐赠类型
    money = db.Column(db.Integer())  # 捐赠金额
    time = db.Column(db.DateTime(), default=datetime.utcnow)
Example #21
0
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(128), unique=True, nullable=False)
    email = db.Column(db.String(128), unique=True, nullable=False)
    password = db.Column(db.String(128), nullable=False)
    active = db.Column(db.Boolean(), default=True, nullable=False)
    admin = db.Column(db.Boolean(), default=False, nullable=False)
    created_at = db.Column(db.DateTime(), default=func.now(), nullable=False)

    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = bcrypt.generate_password_hash(
            password, current_app.config.get('BCRYPT_LOG_ROUNDS')).decode()

    def to_json(self):
        return {
            'id': self.id,
            'username': self.username,
            'email': self.email,
            'active': self.active,
            'admin': self.admin
        }

    def encode_auth_token(self):
        try:
            payload = {
                'exp':
                datetime.datetime.utcnow() + datetime.timedelta(
                    days=current_app.config.get('TOKEN_EXPIRATION_DAYS'),
                    seconds=current_app.config.get(
                        'TOKEN_EXPIRATION_SECONDS')),
                'iat':
                datetime.datetime.utcnow(),
                'sub':
                self.id
            }

            return jwt.encode(payload,
                              current_app.config.get('SECRET_KEY'),
                              algorithm='HS256')

        except Exception as e:
            return e

    @staticmethod
    def decode_auth_token(auth_token):
        try:
            payload = jwt.decode(auth_token,
                                 current_app.config.get('SECRET_KEY'))
            return payload['sub']
        except jwt.ExpiredSignatureError:
            return 'Signature expired. Please log in again.'
        except jwt.InvalidTokenError:
            return 'Invalid token. Please log in again.'
Example #22
0
class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    taskname = db.Column(db.String(80), unique=True)
    completedate = db.Column(db.DateTime())
    category = db.Column(db.String(20))

    def __init__(self, taskname, completedate, category):
        self.taskname = taskname
        self.completedate = completedate
        self.category = category
Example #23
0
class Lecture(db.Model):
    __tablename__ = "lectures"
    id = db.Column(db.Integer, primary_key=True, nullable=False)
    room = db.Column(db.String(128), nullable=False)
    subject = db.Column(db.String(128), nullable=False)
    start_time = db.Column(db.DateTime(timezone=True), nullable=False)
    end_time = db.Column(db.DateTime(timezone=True), nullable=False)
    lecturer = db.Column(db.String(128))
    students = db.relationship('AttendanceRecord',
                               backref='lecture',
                               lazy='dynamic')

    def to_dict(self):
        return {
            'id': self.id,
            'room': self.room,
            'subject': self.subject,
            'start_time': self.start_time,
            'end_time': self.end_time,
            'lecturer': self.lecturer,
            'status': self.status()
        }

    def from_dict(self, data):
        for field in ['room', 'subject', 'start_time', 'end_time', 'lecturer']:
            if field in data:
                setattr(self, field, data[field])

    def status(self):
        # start = datetime.datetime.strptime(self.start_time, '%a, %d %b %Y %H:%M:%S %Z')
        # end = datetime.datetime.strptime(self.end_time, '%a, %d %b %Y %H:%M:%S %Z')
        start = self.start_time
        end = self.end_time
        now = datetime.datetime.now(start.tzinfo)

        if now < start:
            return 'SCHEDULED'
        elif start <= now < end:
            return 'IN PROGRESS'
        else:
            return 'FINISHED'
Example #24
0
class Schedule(db.Model):
    __tablename__ = 'schedules'

    id = db.Column(db.Integer, primary_key=True)
    message = db.Column(db.String())
    created = db.Column(db.DateTime(timezone=True))

    def __init__(self, message=""):
        self.message = message
        self.created = datetime.datetime.utcnow()

    def __repr__(self):
        return '<name {}>'.format(self.message)
Example #25
0
class Hacktoberfest(db.Model, AddUpdateDelete):
    __tablename__ = 'hacktoberfest'

    id = db.Column(db.Integer, primary_key=True)
    swag_id = db.Column(db.Integer, db.ForeignKey('swag.id'))
    time_logged = db.Column(db.DateTime(timezone=True), unique=False)
    total_points = db.Column(db.Integer)
    hacktoberfest_swag_sent = db.Column(db.Integer)  # year
    hacktoberfest_approved = db.Column(db.Boolean, unique=False, default=False)
    email_address = db.Column(db.String(255), unique=False)
    sendgrid_employee = db.Column(db.Boolean)
    sendgrid_customer = db.Column(db.Boolean)
    swag = db.relationship("Swag")
Example #26
0
class Log(db.Model, AddUpdateDelete):
    __tablename__ = 'log'

    id = db.Column(db.Integer, primary_key=True)
    time_logged = db.Column(db.DateTime(timezone=True), unique=True)
    action = db.Column(db.String(255), unique=False)
    delta = db.Column(db.Text, unique=False)
    error = db.Column(db.Text, unique=False)
    affected_systems = db.Column(db.String(255), unique=False)

    def __init__(self,
                 time_logged=None,
                 action=None,
                 delta=None,
                 error=None,
                 affected_systems=None):
        self.time_logged = time_logged
        self.action = action
        self.delta = delta
        self.error = error
        self.affected_systems = affected_systems

    def add_log_entry(self, time_logged, action, delta, error,
                      affected_systems):
        self.time_logged = time_logged
        self.action = action
        self.delta = delta
        self.error = error
        self.affected_systems = affected_systems
        self.add(self)

    def __repr__(self):
        """Return a machine-readable representation of this Log object.
        Only trouble is, a log entry has an ID property which is determined
        on creation.  Reporting it here means this isn't executable to make a
        new log entry.
        """
        return ("{classname}("
                "id={id!r}, "
                "time_logged={time_logged!r}, "
                "action={action!r}, "
                "delta={delta!r}, "
                "error={error!r}, "
                "affected_systems={affected_systems!r})").format(
                    classname=self.__class__.__name__,
                    id=self.id,
                    time_logged=self.time_logged,
                    action=self.action,
                    delta=self.delta,
                    error=self.error,
                    affected_systems=self.affected_systems)
Example #27
0
class Education(BaseMixin, ExperienceMixin, db.Model):
    title = db.Column(db.String(50), nullable=False)
    school = db.Column(db.String(50), default='')
    extent = db.Column(db.String(50), default='')
    description = db.Column(db.String(), default='')
    type = db.Column(ChoiceType(EducationType, impl=db.String()),
                     default=EducationType.education.value)

    startdate = db.Column(db.DateTime())
    enddate = db.Column(db.DateTime())

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship('User',
                           foreign_keys=[user_id],
                           backref='educations')

    @property
    def _descriptive(self):
        return self.title + (', {}'.format(self.school)
                             if self.school != '' else '')

    def add_activity(self, new, session):
        if not new:
            return

        origin = self.user.name
        target = self._descriptive
        action = '{origin} added the work experience {target}'

        activity = Activity(
            **{
                'action': action,
                'user_id': self.user.id,
                'education_id': self.id,
                'origin': 'user',
                'target': 'education'
            })
        session.add(activity)
Example #28
0
class Album(db.Model):
    __tablename__ = "albums"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(300), nullable=False)
    description = db.Column(db.String(1000), nullable=False)
    images = db.relationship('Image', backref=db.backref('albums', lazy=True))
    created_at = db.Column(db.DateTime(timezone=True), nullable=False)

    def __init__(self, title, description, created_at=None):
        if not created_at:
            created_at = datetime.datetime.now()
        self.title = title
        self.description = description
        self.created_at = created_at
Example #29
0
class Intent(db.Model):
    __tablename__ = 'intents'

    id = db.Column(db.Integer, primary_key=True)
    bot_guid = db.Column(db.String(),
                         ForeignKey("bots.bot_guid", ondelete="CASCADE"))
    name = db.Column(db.String())
    utterances = db.Column(ARRAY(db.String()))
    patterns = db.Column(ARRAY(db.String()))
    has_entities = db.Column(Boolean, unique=False, default=False)
    responses = db.Column(ARRAY(db.String()))
    calls = db.Column(db.Integer, default=0)
    is_folder = db.Column(Boolean, unique=False, default=False)
    modified = db.Column(db.DateTime(timezone=False))
    created = db.Column(db.DateTime(timezone=False))

    def __init__(self,
                 bot_guid,
                 name,
                 has_entities,
                 is_folder=False,
                 utterances=[],
                 responses=[],
                 patterns=[]):
        self.name = name
        self.bot_guid = bot_guid
        self.utterances = utterances
        self.patterns = patterns
        self.has_entities = has_entities
        self.responses = responses
        self.calls = 0
        self.is_folder = is_folder
        self.modified = datetime.datetime.utcnow()
        self.created = datetime.datetime.utcnow()

    def __repr__(self):
        return '<name {}>'.format(self.name)
Example #30
0
class AdminUser(db.Model, UserMixin):
    __tablename__ = "admin_users"
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(255))
    last_name = db.Column(db.String(255))
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    roles = db.relationship('Role',
                            secondary=roles_users,
                            backref=db.backref('admin_roles', lazy='dynamic'))

    def __str__(self):
        return self.email