Files
2024-11-27 13:18:16 +01:00

48 lines
1.3 KiB
Python
Executable File

from django.utils.translation import gettext_lazy as _
from enum import Enum
from django.db import models
from rules.contrib.models import RulesModel
from outbo.apps.core.fields import EnumCharField
from outbo.apps.core.models import TimestampableDeletableMixin
from outbo.apps.projects import rules
from outbo.apps.projects.models import Project
class MembershipType(Enum):
AGENCY = "agency"
CLIENT = "client"
SUPPLIER = "supplier"
class Member(TimestampableDeletableMixin, RulesModel):
class Meta:
rules_permissions = {
"view": rules.can_read_project_member,
"add": rules.can_create_project_member,
"change": rules.can_update_project_member,
"delete": rules.can_delete_project_member,
}
user = models.ForeignKey(
to="authentication.User",
on_delete=models.CASCADE,
related_name="member",
related_query_name="member",
)
project = models.ForeignKey(
to=Project,
on_delete=models.CASCADE,
related_name="members",
related_query_name="member",
)
role = EnumCharField(
verbose_name=_("membership type"),
max_length=25,
blank=False,
null=False,
default=MembershipType.SUPPLIER,
enum=MembershipType,
)