class Project( db.Document): name = db.StringField(max_length=255) description = db.StringField(max_length=255) users = db.ListField(db.ReferenceField('User')) experiments = db.ListField(db.ReferenceField('Experiment')) target_sets = db.ListField(db.ReferenceField('TargetSet')) def add_user(self,user): self.users.append(user) self.save() def add_experiment(self,experiment): self.experiments.append(experiment) self.save() def add_target_set(self, target_set): self.target_sets.append(target_set) self.save()
class Board(Base): name = db.StringField(required=True) owner = db.ReferenceField(User) isShared = db.BooleanField(default=False) members = db.ListField(db.ReferenceField(User)) lists = db.ListField(db.ReferenceField(List)) def transform(self): return { 'name': self.name, 'owner': self.owner.transform(), 'isShared': self.isShared, 'members': self.members, 'lists': self.lists, 'id': self.get_id(), 'createdAt': self.createdAt, 'updatedAt': self.updatedAt, 'timeStamp': self.get_updatedAt() } def get_updatedAt(self): return (self.updatedAt - datetime(1970, 1, 1)).total_seconds() def get_meta(self): return { 'name': self.name, 'id': self.get_id(), 'owner': self.owner.transform() } def getAll(self): return { 'name': self.name, 'owner': self.owner.transform(), 'isShared': self.isShared, 'members': [member.transform() for member in self.members], 'lists': [item.getAll() for item in self.lists], 'id': self.get_id(), 'createdAt': self.createdAt, 'updatedAt': self.updatedAt, 'timeStamp': self.get_updatedAt() }
class Project(db.Document): project_name = db.StringField(required=True, max_length=50) owner = db.ReferenceField("User", required=True) contributors = db.ListField(db.ReferenceField("User")) created_time = db.DateTimeField() last_edited_time = db.DateTimeField() description = db.StringField(max_length=1000) tags = db.ListField(db.ReferenceField("Tag")) total_cost = db.FloatField(required=True) wishlisted_hardware = db.ListField(db.ReferenceField("RentRecord")) rented_hardware = db.ListField(db.ReferenceField("AssignedRecord")) def to_json(self): contr_names = [] for contr in self.contributors: contr_names.append(contr.username) # tags = [] # for tag in self.tags: # tags.append(tag.to_json()) rented_hw = [] for rented in self.rented_hardware: rented_hw.append(rented.to_json()) json_data = { "id": str(self.pk), "name": self.project_name, "owner": self.owner.username, "created_time": str(self.created_time), "last_edited_time": str(self.last_edited_time), "description": self.description, "total_cost": self.total_cost, "contributors": contr_names, # "tags": tags, # "wishlisted_hardware": self.wishlisted_hardware, "rented_hardware": rented_hw } return json_data
class User(db.Document): username = db.StringField(required=True) email = db.EmailField(required=True) password = db.StringField(required=True) rented_hardware = db.ListField(db.ReferenceField("RentRecord")) # cross reference list to project, one as owner, and one as contributor owned_projects = db.ListField(db.ReferenceField("Project")) contributed_projects = db.ListField(db.ReferenceField("Project")) # profile pic? # cross reference to billing, shipping address and payment info billing_addr = db.ReferenceField("Address") shipping_addr = db.ReferenceField("Address") payment_info = db.ReferenceField("PaymentInformation") # TODO: encrypt password def to_json(self): return { "username": self.username, "email": self.email }
class List(Base): name = db.StringField(required=True) tasklists = db.ListField(db.ReferenceField(Task)) orderNumber = db.IntField() def transform(self): return { 'id': self.get_id(), 'tasklists': self.tasklists, 'orderNumber': self.orderNumber, 'name': self.name } def getAll(self): return { 'id': self.get_id(), 'tasklists': [task.transform() for task in self.tasklists], 'orderNumber': self.orderNumber, 'name': self.name }
class User(db.Document, UserMixin): email = db.StringField(max_length=255, required=True) password = db.StringField(max_length=255) projects = db.ListField(db.ReferenceField('Project')) access_key_id = db.StringField(required=True) secret_access_key = db.StringField(required=True) aws_bucket_name = db.StringField(required=True) next_backend_global_host = db.StringField(required=True) def set_password(self, password): self.password = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password, password) def is_authenticated(self): if isinstance(self, AnonymousUserMixin): return False else: return True def is_active(self): return True def is_anonymous(self): if isinstance(self, AnonymousUserMixin): return True else: return False def get_id(self): return self.email def __repr__(self): return '<User %r>' % self.email def add_project(self, project): self.projects.append(project) self.save()
class TargetSet(db.Document): name = db.StringField() targets = db.ListField(db.ReferenceField(Target))