Fixed projects permissions
parent
6a0fe606ce
commit
6b098ae594
|
@ -36,9 +36,12 @@ class Attachment(models.Model):
|
||||||
upload_to="files/msg", verbose_name=_("attached file"))
|
upload_to="files/msg", verbose_name=_("attached file"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Attachment"
|
verbose_name = "attachment"
|
||||||
verbose_name_plural = "Attachments"
|
verbose_name_plural = "attachments"
|
||||||
ordering = ["project", "created_date"]
|
ordering = ["project", "created_date"]
|
||||||
|
permissions = (
|
||||||
|
("view_attachment", "Can view attachment"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Attachment: {}".format(self.id)
|
return "Attachment: {}".format(self.id)
|
||||||
|
@ -53,8 +56,13 @@ class Membership(models.Model):
|
||||||
related_name="memberships")
|
related_name="memberships")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
verbose_name = "membership"
|
||||||
|
verbose_name_plural = "membershipss"
|
||||||
unique_together = ("user", "project")
|
unique_together = ("user", "project")
|
||||||
ordering = ["project", "role", "user"]
|
ordering = ["project", "role", "user"]
|
||||||
|
permissions = (
|
||||||
|
("view_membership", "Can view membership"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Project(models.Model):
|
class Project(models.Model):
|
||||||
|
@ -87,13 +95,11 @@ class Project(models.Model):
|
||||||
tags = PickledObjectField(null=False, blank=True,
|
tags = PickledObjectField(null=False, blank=True,
|
||||||
verbose_name=_("tags"))
|
verbose_name=_("tags"))
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Project"
|
verbose_name = "project"
|
||||||
verbose_name_plural = "Projects"
|
verbose_name_plural = "projects"
|
||||||
ordering = ["name"]
|
ordering = ["name"]
|
||||||
permissions = (
|
permissions = (
|
||||||
("list_projects", "Can list projects"),
|
|
||||||
("view_project", "Can view project"),
|
("view_project", "Can view project"),
|
||||||
("manage_users", "Can manage users"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -157,10 +163,13 @@ class UserStoryStatus(models.Model):
|
||||||
related_name="us_statuses", verbose_name=_("project"))
|
related_name="us_statuses", verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Userstory status"
|
verbose_name = "user story status"
|
||||||
verbose_name_plural = "Userstory statuses"
|
verbose_name_plural = "user story statuses"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_userstorystatus", "Can view user story status"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Userstory status: {}".format(self.name)
|
return "Userstory status: {}".format(self.name)
|
||||||
|
@ -177,10 +186,13 @@ class Points(models.Model):
|
||||||
related_name="points", verbose_name=_("project"))
|
related_name="points", verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Point"
|
verbose_name = "points"
|
||||||
verbose_name_plural = "Points"
|
verbose_name_plural = "points"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_points", "Can view points"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -189,8 +201,10 @@ class Points(models.Model):
|
||||||
# Tasks common models
|
# Tasks common models
|
||||||
|
|
||||||
class TaskStatus(models.Model):
|
class TaskStatus(models.Model):
|
||||||
name = models.CharField(max_length=255, null=False, blank=False, verbose_name=_("name"))
|
name = models.CharField(max_length=255, null=False, blank=False,
|
||||||
order = models.IntegerField(default=10, null=False, blank=False, verbose_name=_("order"))
|
verbose_name=_("name"))
|
||||||
|
order = models.IntegerField(default=10, null=False, blank=False,
|
||||||
|
verbose_name=_("order"))
|
||||||
is_closed = models.BooleanField(default=False, null=False, blank=True,
|
is_closed = models.BooleanField(default=False, null=False, blank=True,
|
||||||
verbose_name=_("is closed"))
|
verbose_name=_("is closed"))
|
||||||
color = models.CharField(max_length=20, null=False, blank=False, default="#999999",
|
color = models.CharField(max_length=20, null=False, blank=False, default="#999999",
|
||||||
|
@ -201,8 +215,11 @@ class TaskStatus(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "task status"
|
verbose_name = "task status"
|
||||||
verbose_name_plural = "task statuses"
|
verbose_name_plural = "task statuses"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_taskstatus", "Can view task status"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Task status: {}".format(self.name)
|
return "Task status: {}".format(self.name)
|
||||||
|
@ -211,66 +228,86 @@ class TaskStatus(models.Model):
|
||||||
# Issue common Models
|
# Issue common Models
|
||||||
|
|
||||||
class Priority(models.Model):
|
class Priority(models.Model):
|
||||||
name = models.CharField(max_length=255, null=False, blank=False, verbose_name=_("name"))
|
name = models.CharField(max_length=255, null=False, blank=False,
|
||||||
order = models.IntegerField(default=10, null=False, blank=False, verbose_name=_("order"))
|
verbose_name=_("name"))
|
||||||
|
order = models.IntegerField(default=10, null=False, blank=False,
|
||||||
|
verbose_name=_("order"))
|
||||||
project = models.ForeignKey("Project", null=False, blank=False,
|
project = models.ForeignKey("Project", null=False, blank=False,
|
||||||
related_name="priorities", verbose_name=_("project"))
|
related_name="priorities", verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Priority"
|
verbose_name = "priority"
|
||||||
verbose_name_plural = "Priorities"
|
verbose_name_plural = "priorities"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_priority", "Can view priority"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Priority {}".format(self.name)
|
return "Priority {}".format(self.name)
|
||||||
|
|
||||||
|
|
||||||
class Severity(models.Model):
|
class Severity(models.Model):
|
||||||
name = models.CharField(max_length=255, null=False, blank=False, verbose_name=_("name"))
|
name = models.CharField(max_length=255, null=False, blank=False,
|
||||||
order = models.IntegerField(default=10, null=False, blank=False, verbose_name=_("order"))
|
verbose_name=_("name"))
|
||||||
|
order = models.IntegerField(default=10, null=False, blank=False,
|
||||||
|
verbose_name=_("order"))
|
||||||
project = models.ForeignKey("Project", null=False, blank=False,
|
project = models.ForeignKey("Project", null=False, blank=False,
|
||||||
related_name="severities", verbose_name=_("project"))
|
related_name="severities", verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Severity"
|
verbose_name = "severity"
|
||||||
verbose_name_plural = "Severities"
|
verbose_name_plural = "severities"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_severity", "Can view severity"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Severity: {}".format(self.name)
|
return "Severity: {}".format(self.name)
|
||||||
|
|
||||||
|
|
||||||
class IssueStatus(models.Model):
|
class IssueStatus(models.Model):
|
||||||
name = models.CharField(max_length=255, null=False, blank=False, verbose_name=_("name"))
|
name = models.CharField(max_length=255, null=False, blank=False,
|
||||||
order = models.IntegerField(default=10, null=False, blank=False, verbose_name=_("order"))
|
verbose_name=_("name"))
|
||||||
|
order = models.IntegerField(default=10, null=False, blank=False,
|
||||||
|
verbose_name=_("order"))
|
||||||
is_closed = models.BooleanField(default=False, null=False, blank=True,
|
is_closed = models.BooleanField(default=False, null=False, blank=True,
|
||||||
verbose_name=_("is closed"))
|
verbose_name=_("is closed"))
|
||||||
project = models.ForeignKey("Project", null=False, blank=False,
|
project = models.ForeignKey("Project", null=False, blank=False,
|
||||||
related_name="issue_statuses", verbose_name=_("project"))
|
related_name="issue_statuses", verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Issue status"
|
verbose_name = "issue status"
|
||||||
verbose_name_plural = "Issue statuses"
|
verbose_name_plural = "issue statuses"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_issuestatus", "Can view issue status"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Issue status: {}".format(self.name)
|
return "Issue status: {}".format(self.name)
|
||||||
|
|
||||||
|
|
||||||
class IssueType(models.Model):
|
class IssueType(models.Model):
|
||||||
name = models.CharField(max_length=255, null=False, blank=False, verbose_name=_("name"))
|
name = models.CharField(max_length=255, null=False, blank=False,
|
||||||
order = models.IntegerField(default=10, null=False, blank=False, verbose_name=_("order"))
|
verbose_name=_("name"))
|
||||||
|
order = models.IntegerField(default=10, null=False, blank=False,
|
||||||
|
verbose_name=_("order"))
|
||||||
project = models.ForeignKey("Project", null=False, blank=False,
|
project = models.ForeignKey("Project", null=False, blank=False,
|
||||||
related_name="issue_types", verbose_name=_("project"))
|
related_name="issue_types", verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Issue type"
|
verbose_name = "issue type"
|
||||||
verbose_name_plural = "Issue types"
|
verbose_name_plural = "issue types"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_issuetype", "Can view issue type"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Issue type: {}".format(self.name)
|
return "Issue type: {}".format(self.name)
|
||||||
|
@ -290,10 +327,13 @@ class QuestionStatus(models.Model):
|
||||||
verbose_name=_("project"))
|
verbose_name=_("project"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Question status"
|
verbose_name = "question status"
|
||||||
verbose_name_plural = "Question status"
|
verbose_name_plural = "question statuses"
|
||||||
ordering = ["project", "name"]
|
ordering = ["project", "order", "name"]
|
||||||
unique_together = ("project", "name")
|
unique_together = ("project", "name")
|
||||||
|
permissions = (
|
||||||
|
("view_questionstatus", "Can view question status"),
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Quiestion status: {}".format(self.name)
|
return "Quiestion status: {}".format(self.name)
|
||||||
|
|
|
@ -34,8 +34,8 @@ class AttachmentPermission(BasePermission):
|
||||||
|
|
||||||
class PointsPermission(BasePermission):
|
class PointsPermission(BasePermission):
|
||||||
get_permission = "view_points"
|
get_permission = "view_points"
|
||||||
put_permission = "severity_points"
|
put_permission = "change_points"
|
||||||
patch_permission = "severity_points"
|
patch_permission = "change_points"
|
||||||
delete_permission = "delete_points"
|
delete_permission = "delete_points"
|
||||||
safe_methods = ["HEAD", "OPTIONS"]
|
safe_methods = ["HEAD", "OPTIONS"]
|
||||||
path_to_project = ["project"]
|
path_to_project = ["project"]
|
||||||
|
@ -92,8 +92,8 @@ class IssueStatusPermission(BasePermission):
|
||||||
|
|
||||||
class IssueTypePermission(BasePermission):
|
class IssueTypePermission(BasePermission):
|
||||||
get_permission = "view_issuetype"
|
get_permission = "view_issuetype"
|
||||||
put_permission = "severity_issuetype"
|
put_permission = "change_issuetype"
|
||||||
patch_permission = "severity_issuetype"
|
patch_permission = "change_issuetype"
|
||||||
delete_permission = "delete_issuetype"
|
delete_permission = "delete_issuetype"
|
||||||
safe_methods = ["HEAD", "OPTIONS"]
|
safe_methods = ["HEAD", "OPTIONS"]
|
||||||
path_to_project = ["project"]
|
path_to_project = ["project"]
|
||||||
|
|
Loading…
Reference in New Issue