Files
colio/projects/models.py

39 lines
2.0 KiB
Python

from django.db import models
from common.models.baseModels import BaseModel
from common.models.choiceModels import InvitationStatus
from django.contrib.postgres.fields import ArrayField
from django.conf import settings
from notifications.models import Notification
from users.models import User
class Project(BaseModel):
title = models.CharField(max_length=20)
is_team = models.BooleanField(default=False)
team_name = models.CharField(max_length=20, blank=True)
category = ArrayField(models.CharField(max_length=20), default=list)
is_published = models.BooleanField(default=False)
view_count = models.IntegerField(default=0)
like_count = models.IntegerField(default=0)
scrap_count = models.IntegerField(default=0)
is_represent = models.BooleanField(default=False)
thumbnail = models.ImageField(upload_to='', blank=True)
code_id = models.CharField(max_length=26, blank=True)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='owned_projects', to_field="id")
likers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='liked_projects', blank=True)
scrappers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='scrapped_projects', blank=True)
class ProjectTeamList(BaseModel):
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='team_project_member_list', to_field='id')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='team_project_list',to_field='id')
class ProjectInvitation(BaseModel):
from_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sent_invitations')
to_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_invitations')
project = models.ForeignKey(Project, on_delete=models.CASCADE)
status = models.CharField(max_length=10, choices=InvitationStatus.choices)
notification = models.OneToOneField(Notification, on_delete=models.CASCADE, related_name='project_invitation', null=True, blank=True)