Files
colio/projects/models.py
2025-05-02 18:13:49 +09:00

38 lines
1.8 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 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)