class TaskList(BaseModel):
    name = db.StringField(required=True)
    dead_line = db.DateTimeField(required=False)
    tasks = db.ListField(
        db.ReferenceField('Task', reverse_delete_rule=db.CASCADE))

    created_by = db.ReferenceField('User')
Exemple #2
0
class Card(db.Document):
    STATUS_CHOICES = (
        ('todo', 'Todo'),
        ('in_progress', 'In progress'),
        ('in_review', 'In review'),
        ('done', 'Done'),
    )

    title = db.StringField(required=True, unique_with='board')
    content = db.StringField(required=True)
    created_at = db.DateTimeField(default=now())
    created_by = db.ReferenceField('User')
    completed_at = db.DateTimeField(required=False)
    planned_start_time = db.DateTimeField(required=False)
    planned_end_time = db.DateTimeField(required=False)
    status = db.StringField(choices=STATUS_CHOICES, default='todo')
    comments = db.ListField(db.ReferenceField('Comment'))
    board = db.ReferenceField('Board')

    def save(self, *args, **kwargs):
        instance = super(Card, self).save(*args, **kwargs)

        if self.planned_start_time and self.planned_start_time.replace(tzinfo=utc) > now():
            from app import schedule_card_start_time
            schedule_card_start_time.apply_async(kwargs={'card_id': str(self.id)}, eta=self.planned_start_time)

        if self.planned_end_time and self.planned_end_time.replace(tzinfo=utc) > now():
            from app import schedule_card_end_time
            schedule_card_end_time.apply_async(kwargs={'card_id': str(self.id)}, eta=self.planned_end_time)

        if self.completed_at:
            self.completed_at = now()
            instance.save()

        return instance
Exemple #3
0
class Board(db.Document):
    STATUS_CHOICES = (
        ('active', 'Active'),
        ('archived', 'Archived'),
    )
    name = db.StringField(required=True, unique=True)
    status = db.StringField(choices=STATUS_CHOICES, default='active')
    created_at = db.DateTimeField(default=now())
    created_by = db.ReferenceField('User')
    cards = db.ListField(db.ReferenceField('Card'))
Exemple #4
0
class User(db.Document):
    email = db.EmailField(required=True, unique=True)
    password = db.StringField(required=True, min_length=6)
    movies = db.ListField(db.ReferenceField('Movie', reverse_delete_rule=db.PULL))

    def hash_password(self):
        self.password = generate_password_hash(self.password).decode('utf8')
    
    def check_password(self, password):
        return check_password_hash(self.password, password)
Exemple #5
0
class User(BaseModel):
    name = db.StringField(required=True, unique=True)
    email = db.EmailField(requred=True, unique=True)
    password = db.StringField(required=True, min_length=6)

    task_lists = db.ListField(
        db.ReferenceField('TaskList', revese_delete_rule=db.CASCADE),
        required=False
    )


    def hash_password(self):
        self.password = generate_password_hash(self.password).decode('utf8')
    

    def check_password(self, password):
        return check_password_hash(self.password, password)
Exemple #6
0
class Movie(db.Document):
    name = db.StringField(required=True, unique=True)
    casts = db.ListField(db.StringField(), required=True)
    genres = db.ListField(db.StringField(), required=True)
    added_by = db.ReferenceField('User')
Exemple #7
0
class Comment(db.Document):
    content = db.StringField(required=True)
    created_at = db.DateTimeField(default=now())
    created_by = db.ReferenceField('User')
    card = db.ReferenceField('Card')
Exemple #8
0
class Movie(db.DynamicDocument):
    name = db.StringField(required=True, unique=True)
    casts = db.ListField(db.StringField(), required=True)
    genres = db.ListField(db.StringField(), required=True)
    director = db.ReferenceField(Director)
Exemple #9
0
class Article(db.DynamicDocument):
    title = db.StringField(required=True, max_length=200)
    text = db.StringField(required=True)
    author = db.ReferenceField(Author)