Initial commit from ZIP
This commit is contained in:
commit
378d4692a9
454 files changed
+40367
No files matched your search
+47
@@ -0,0 +1,47 @@
|
||||
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,
|
||||
)
|
||||
Reference in new issue
Block a user