示例#1
0
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()
示例#2
0
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()
        }
示例#3
0
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
示例#4
0
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
        }
示例#5
0
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
        }
示例#6
0
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()
示例#7
0
class TargetSet(db.Document):
    name = db.StringField()
    targets = db.ListField(db.ReferenceField(Target))