class Project(db.Model): __tablename__ = "projects" id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80), unique=True) name = db.Column(db.String(80)) owner = db.Column(db.Integer, db.ForeignKey('users.id')) description = db.Column(db.Text) start = db.Column(db.DateTime) finish = db.Column(db.DateTime) cycle_id = db.Column(db.Integer, db.ForeignKey('reportingcycles.id')) cycle = db.relationship('ReportingCycle', backref='project') status = db.Column(db.Boolean) def __init__(self, code, name, description, owner, start, finish, cycle, status): self.code = code self.name = name self.owner = owner self.description = description self.start = start self.finish = finish self.status = status self.cycle_id = cycle.id def __repr__(self): return self.name
class AccountType(db.Model): __tablename__ = 'control_account_types' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80), unique=True) name = db.Column(db.String(80), unique=True) earns = db.Column(db.Boolean) def __init__(self, code, name, earns): self.name = name self.code = code self.name = name self.earns = earns def __repr__(self): return self.name
class Role(db.Model): id = db.Column(db.Integer, primary_key=True) description = db.Column(db.String(80)) is_read = db.Column(db.Boolean) is_create = db.Column(db.Boolean) is_edit = db.Column(db.Boolean) is_delete = db.Column(db.Boolean) is_active = db.Column(db.Boolean) def __init__(self, description, is_read, is_create, is_edit, is_delete, is_active=True): self.description = description self.is_create = is_create self.is_delete = is_delete self.is_edit = is_edit self.is_read = is_read self.is_active = is_active def _repr__(self): return self.description
class WBS(db.Model): __tablename__ = 'wbs' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80)) name = db.Column(db.String(80)) parent_id = db.Column(db.Integer) parent = db.relationship("WBS", backref="parent") project_id = db.Column(db.Integer, db.ForeignKey('projects.id')) project = db.relationship("Project", backref="control_account") def __init__(self, code, name, parent, project): self.code = code self.name = name self.parent_id = parent.id if parent is not None else None self.project_id = project.id def __repr__(self): return self.name
class Organisation(db.Model): __tablename__ = "organisations" id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80), unique=True) name = db.Column(db.String(80)) description = db.Column(db.Text) #admin_id = db.Column(db.Integer, db.ForeignKey('users.id')) #admin = db.relationship('User', backref='organisations') is_active = db.Column(db.Boolean) def __init__(self, code, name, description, admin, is_active=True): self.code = code self.name = name self.description = description self.admin_id = admin.id self.is_active = is_active def __repr__(self): return self.name
class ReportingCycle(db.Model): __tablename__ = 'reportingcycles' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80), unique=True) name = db.Column(db.String(80)) cycle_type = db.Column(db.Text) cycle_value = db.Column(db.Integer) #project_id = db.Column(db.Integer, db.ForeignKey('projects.id')) #project = db.relationship('Project', backref='ReportingCalendar') is_active = db.Column(db.Boolean) def __init__(self, code, name, cycle_type, cycle_value, is_active=True): self.code = code self.name = name self.cycle_type = cycle_type self.cycle_value = cycle_value #self.project_id = project.id self.is_active = is_active def __repr__(self): return self.name
class CostAccount(db.Model): __tablename__ ="cost_accounts" id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80), unique=True) name = db.Column(db.String(80)) controlaccount_id = db.Column('ControlAccount', db.Integer, db.ForeignKey('controlaccounts.id')) controlaccount = db.relationship('ControlAccount', backref='control_account') parent_id = db.Column('parent_id', db.Integer, db.ForeignKey('cost_accounts.id')) parent = db.relationship('CostAccount', uselist=False) #parent_id = db.Column(db.Integer) def __init__(self, code, name, controlaccount, parent): self.code = code self.name = name self.parent_id = parent.id if parent is not None else None self.controlaccount_id = controlaccount.id def __repr__(self): return self.name
class ControlAccount(db.Model): __tablename__ = 'controlaccounts' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80)) name = db.Column(db.String(80)) budget = db.Column(db.Float) PMB_start = db.Column(db.Date) PMB_finish = db.Column(db.Date) PMU_start = db.Column(db.Date) PMU_finish = db.Column(db.Date) parent_id = db.Column(db.Integer, nullable=True) accounttype_id = db.Column('AccountType', db.Integer, db.ForeignKey('control_account_types.id')) accounttype = db.relationship('AccountType', backref='control_account') curve_id = db.Column(db.Integer, db.ForeignKey('spread_profile.id')) curve = db.relationship("SpreadProfile", backref="control_account") project_id = db.Column(db.Integer, db.ForeignKey('projects.id')) project = db.relationship("Project", backref="control_account") def __init__(self, code, name, accounttype, budget, PMB_start, PMB_finish, PMU_start, PMU_finish, parent, curve, project): self.code = code self.name = name self.parent_id = parent.id if parent is not None else None self.accounttype_id = accounttype.id self.budget = budget self.PMB_start = PMB_start self.PMB_finish = PMB_finish self.PMU_start = PMU_start self.PMU_finish = PMU_finish if curve: self.curve_id = curve.id else: self.curve_id = None self.project = project self.project_id = project.id def __repr__(self): return self.name
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) firstname = db.Column(db.String(80)) lastname = db.Column(db.String(80)) email = db.Column(db.String(35), unique=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80)) organisation_id = db.Column('Organisation', db.Integer, db.ForeignKey('organisations.id'), nullable=True) organisation = db.relationship('Organisation', backref='users') is_admin = db.Column(db.Boolean) def __init__(self, firstname, lastname, email, username, password, organisation, is_admin=False): self.firstname = firstname self.email = email self.lastname = lastname self.password = password self.is_admin = is_admin self.username = username if organisation is not None: organisation_id = organisation.id else: organisation_id = None def __repr__(self): return self.username
class ControlAccount(db.Model): __tablename__ = 'controlaccounts' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(80)) name = db.Column(db.String(80)) type = db.Column(db.String(35), unique=True) budget = db.Column(db.Double(80), unique=True) PMB_start = db.Column(db.Date) PMB_finish = db.Column(db.Date) PMU_start = db.Column(db.Date) PMU_finish = db.Column(db.Date) parent_id = db.Column(db.Integer, db.ForeignKey('controlaccounts.id')) def __init__(self, code, name, type, budget, PMB_start, PMB_finish, PMU_start, PMU_finish, parent_id, curve, project_id, _id=None): self.name = name self.parent_id = parent_id self.project_id = project_id self.type = type self.budget = budget self.PMB_start = PMB_start self.PMB_finish = PMB_finish self.PMU_start = PMU_start self.PMU_finish = PMU_finish self.curve = curve self._id = uuid.uuid4().hex if _id is None else _id self.code = code def json(self): return { '_id': self._id, 'code': self.code, 'name': self.name, 'type': self.type, 'budget': self.budget, 'PMB_start': self.PMB_start, 'PMB_finish': self.PMB_finish, 'PMU_finish': self.PMU_finish, 'PMU_start': self.PMU_start, 'curve': self.curve, 'project_id': self.project_id, 'parent_id': self.parent_id } def save_to_database(self): pass #Database.insert(table= 'controlaccounts', data= self.json()) @classmethod def find_by_id(cls, id): pass #account = Database.find_one(table= 'controlaccounts', data= {'_id': id}) #return cls(**account) @staticmethod def exist(name, code): pass
class SpreadProfile(db.Model): __tablename__='spread_profile' id = db.Column(db.Integer, primary_key =True) code = db.Column(db.String(80), unique =True) name = db.Column(db.String(80), unique =True) period1 = db.Column(db.String(3)) period2 = db.Column(db.String(3)) period3 = db.Column(db.String(3)) period4 = db.Column(db.String(3)) period5 = db.Column(db.String(3)) period6 = db.Column(db.String(3)) period7 = db.Column(db.String(3)) period8 = db.Column(db.String(3)) period9 = db.Column(db.String(3)) period10 = db.Column(db.String(3)) period11 = db.Column(db.String(3)) period12 = db.Column(db.String(3)) period13 = db.Column(db.String(3)) period14 = db.Column(db.String(3)) period15 = db.Column(db.String(3)) period16 = db.Column(db.String(3)) period17 = db.Column(db.String(3)) period18 = db.Column(db.String(3)) period19 = db.Column(db.String(3)) period20 = db.Column(db.String(3)) def __init__(self, code, name, period1, period2, period3, period4, period5, period6, period7, period8, period9, period10, period11, period12, period13, period14, period15, period16, period17, period18, period19, period20): self.name = name self.code = code self.name = name self.period1 = period1 self.period2 = period2 self.period3 = period3 self.period4 = period4 self.period5 = period5 self.period6 = period6 self.period7 = period7 self.period8 = period8 self.period9 = period9 self.period10 = period10 self.period11 = period11 self.period12 = period12 self.period13 = period13 self.period14 = period14 self.period15 = period15 self.period16 = period16 self.period17 = period17 self.period18 = period18 self.period19 = period19 self.period20 = period20 def __repr__(self): return self.name