Example #1
0
class Task(db.Model):
    """Scheduled Task

  id: randomly generated string
  active: whether or not the task is active
  code: a Python blob to be `exec`ed
  interval: number of seconds to pause between executions

  Tasks are automatically deactivated if there is another Task running with a
  smaller or equal interval.
  """

    id = db.Column(db.String, primary_key=True)
    active = db.Column(db.Boolean)
    code = db.Column(db.Text)
    interval = db.Column(db.Integer)

    def __repr__(self):
        return '<Task %r>' % self.id

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()
Example #2
0
class Poll(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    initiator_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    def __repr__(self):
        return f"Post('{self.title}', '{self.date_posted}')"
Example #3
0
class Department(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(60), nullable=False)
    employees = db.relationship('Employee', backref='department', lazy=True)
    _timestamp = db.Column(db.TIMESTAMP, default=datetime.now())

    def __repr__(self):
        return f'Department({self.name})'
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    events = db.relationship('Event', backref='author', lazy=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}'"
Example #5
0
class AssignmentTypes(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    assignment_type = db.Column(db.String(60), nullable=False)
    forecast_item = db.relationship('ForecastItem',
                                    backref='assignment_item',
                                    lazy=True)
    _timestamp = db.Column(db.TIMESTAMP, default=datetime.now())

    def __repr__(self):
        return f'Assignment({self.assignment_type})'
Example #6
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    announcement = db.relationship('Announcement', backref='author', lazy=True)
    poll = db.relationship('Poll', backref='author', lazy=True)
    task = db.relationship('Task', backref='author', lazy=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Example #7
0
class ForecastItem(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    employee_id = db.Column(db.Integer, db.ForeignKey('employee.id'))
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'))
    assignment_id = db.Column(db.Integer, db.ForeignKey('assignment_types.id'))
    description = db.Column(db.String(1024), nullable=True)
    status = db.Column(db.String(60), nullable=False, default='new')
    start_date = db.Column(db.Date)
    end_date = db.Column(db.Date)
    _timestamp = db.Column(db.TIMESTAMP, default=datetime.now())

    def __repr__(self):
        return f'Assignment({self.id},{self.employee_id}, {self.project_id}, {self.assignment_id}, {self.start_date}, {self.end_date})'
Example #8
0
class Employee(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    first_name = db.Column(db.String(60), nullable=False)
    last_name = db.Column(db.String(60), nullable=False)
    department_id = db.Column(db.Integer, db.ForeignKey('department.id'))
    available_for_registration = db.Column(db.Boolean, default=True)
    projects = db.relationship('Project', backref='project', lazy=True)
    forecast_item = db.relationship('ForecastItem',
                                    backref='employee_item',
                                    lazy=True)
    user_item = db.relationship('User', backref='employee', lazy=True)
    _timestamp = db.Column(db.TIMESTAMP, default=datetime.now())

    def create_admin_employee(self):
        exists = Employee.query.filter_by(first_name='Admin').first()
        if exists:
            pass
        else:
            employee = Employee(first_name='Admin',
                                last_name='Admin',
                                available_for_registration=False)
            db.session.add(employee)
            db.session.commit()

    def __repr__(self):
        return f'Employee({self.first_name}, {self.last_name}, {self.department_id})'
Example #9
0
class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    project_number = db.Column(db.Integer, nullable=False)
    project_name = db.Column(db.String(60), nullable=False)
    project_status = db.Column(db.String(60), nullable=False, default='new')
    project_description = db.Column(db.String(1024), nullable=True)
    manager_id = db.Column(db.Integer, db.ForeignKey('employee.id'))
    forecast_item = db.relationship('ForecastItem',
                                    backref='project_item',
                                    lazy=True)
    _timestamp = db.Column(db.TIMESTAMP, default=datetime.now())

    def __repr__(self):
        return f'Project({self.project_number}, {self.project_name})'
class Event(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    start = db.Column(db.DateTime, unique=False, nullable=False)
    end = db.Column(db.DateTime, unique=False, nullable=False)
    # author = Column(String(20), unique=False, nullable=False)
    subject = db.Column(db.String(80), unique=False, nullable=False)
    description = db.Column(db.String(300), unique=False, nullable=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Event('{self.subject}', '{self.start}', '{self.end}')"
Example #11
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(60), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    role = db.Column(db.String(15), nullable=False, default='User')
    is_active = db.Column(db.Boolean, nullable=False, default=True)
    employee_id = db.Column(db.Integer, db.ForeignKey('employee.id'))
    project_item = db.relationship('Project',
                                   backref='project_item',
                                   lazy=True)
    employee_item = db.relationship('Employee', backref='employee', lazy=True)
    forecast_item = db.relationship('ForecastItem',
                                    backref='user_item',
                                    lazy=True)
    _timestamp = db.Column(db.TIMESTAMP, default=datetime.now())

    def create_admin(self):
        # check your .env file for admin username and password
        hashed_password = bcrypt.generate_password_hash(
            ADMIN_USER_PASS).decode('utf-8')
        exists = User.query.filter_by(username=ADMIN_USER).first()
        if exists:
            pass
        else:
            user = User(username=ADMIN_USER,
                        email='*****@*****.**',
                        password=hashed_password,
                        role='Admin',
                        is_active=True,
                        employee_id=1)
            db.session.add(user)
            db.session.commit()

    def __repr__(self):
        return f'User({self.email}'
Example #12
0
class Task_recipient(db.Model):
    task_id = db.Column(db.Integer, db.ForeignKey('task.id'), nullable = False, primary_key = True)
    recipient = db.Column(db.Integer, db.ForeignKey('user.id'),nullable = False,primary_key = True)
    completed = db.Column(db.Integer, default = 0, nullable = False)
Example #13
0
class Poll_recipient(db.Model):
    poll_id = db.Column(db.Integer, db.ForeignKey('poll.id'), nullable = False, primary_key = True)
    recipient = db.Column(db.Integer, db.ForeignKey('user.id'),nullable = False,primary_key = True)
    completed = db.Column(db.Integer, default = 0, nullable = False)
    choice = db.Column(db.Text, default = 'Poll unfinished', nullable=False)
Example #14
0
class Announcement_recipient(db.Model):
    announcement_id = db.Column(db.Integer, db.ForeignKey('announcement.id'), nullable = False, primary_key = True)
    recipient = db.Column(db.Integer, db.ForeignKey('user.id'),nullable = False,primary_key = True)
    read = db.Column(db.Integer, default = 0, nullable = False)
    def __repr__(self):
        return f"Announcement_recipient('{self.announcement_id}','{self.recipient}','{self.read}')"