diff --git a/greenmine/profile/fixtures/initial_data.json b/greenmine/profile/fixtures/initial_data.json index 731e5959..67d2d5ab 100644 --- a/greenmine/profile/fixtures/initial_data.json +++ b/greenmine/profile/fixtures/initial_data.json @@ -4,30 +4,7 @@ "model": "profile.role", "fields": { "name": "Developer", - "slug": "developer", - "project_view": true, - "project_edit": false, - "project_delete": false, - "userstory_view": true, - "userstory_create": true, - "userstory_edit": true, - "userstory_delete": true, - "milestone_view": true, - "milestone_create": true, - "milestone_edit": true, - "milestone_delete": true, - "task_view": true, - "task_create": true, - "task_edit": true, - "task_delete": true, - "wiki_view": true, - "wiki_create": true, - "wiki_edit": true, - "wiki_delete": true, - "question_view": true, - "question_create": true, - "question_edit": true, - "question_delete": true + "slug": "developer" } }, { @@ -35,30 +12,7 @@ "model": "profile.role", "fields": { "name": "Product Owner", - "slug": "product-owner", - "project_view": true, - "project_edit": false, - "project_delete": false, - "userstory_view": true, - "userstory_create": true, - "userstory_edit": true, - "userstory_delete": true, - "milestone_view": true, - "milestone_create": false, - "milestone_edit": false, - "milestone_delete": false, - "task_view": true, - "task_create": false, - "task_edit": false, - "task_delete": false, - "wiki_view": true, - "wiki_create": true, - "wiki_edit": true, - "wiki_delete": true, - "question_view": true, - "question_create": true, - "question_edit": true, - "question_delete": true + "slug": "product-owner" } }, { @@ -66,30 +20,7 @@ "model": "profile.role", "fields": { "name": "Observer", - "slug": "observer", - "project_view": true, - "project_edit": false, - "project_delete": false, - "userstory_view": true, - "userstory_create": false, - "userstory_edit": false, - "userstory_delete": false, - "milestone_view": true, - "milestone_create": false, - "milestone_edit": false, - "milestone_delete": false, - "task_view": true, - "task_create": false, - "task_edit": false, - "task_delete": false, - "wiki_view": true, - "wiki_create": false, - "wiki_edit": false, - "wiki_delete": false, - "question_view": true, - "question_create": false, - "question_edit": false, - "question_delete": false + "slug": "observer" } } ] diff --git a/greenmine/profile/models.py b/greenmine/profile/models.py index 3a4b1c0b..850ee31e 100644 --- a/greenmine/profile/models.py +++ b/greenmine/profile/models.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from django.db import models +from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth.models import Permission class Profile(models.Model): @@ -21,34 +23,8 @@ class Profile(models.Model): class Role(models.Model): name = models.CharField(max_length=200) slug = models.SlugField(max_length=250, unique=True, blank=True) - - project_view = models.BooleanField(default=True) - project_edit = models.BooleanField(default=False) - project_delete = models.BooleanField(default=False) - userstory_view = models.BooleanField(default=True) - userstory_create = models.BooleanField(default=False) - userstory_edit = models.BooleanField(default=False) - userstory_delete = models.BooleanField(default=False) - milestone_view = models.BooleanField(default=True) - milestone_create = models.BooleanField(default=False) - milestone_edit = models.BooleanField(default=False) - milestone_delete = models.BooleanField(default=False) - task_view = models.BooleanField(default=True) - task_create = models.BooleanField(default=False) - task_edit = models.BooleanField(default=False) - task_delete = models.BooleanField(default=False) - wiki_view = models.BooleanField(default=True) - wiki_create = models.BooleanField(default=False) - wiki_edit = models.BooleanField(default=False) - wiki_delete = models.BooleanField(default=False) - question_view = models.BooleanField(default=True) - question_create = models.BooleanField(default=True) - question_edit = models.BooleanField(default=True) - question_delete = models.BooleanField(default=False) - document_view = models.BooleanField(default=True) - document_create = models.BooleanField(default=True) - document_edit = models.BooleanField(default=True) - document_delete = models.BooleanField(default=True) + permissions = models.ManyToManyField(Permission, + verbose_name=_('permissions'), blank=True) from . import sigdispatch diff --git a/greenmine/scrum/models.py b/greenmine/scrum/models.py index 0f87da37..29052bc2 100644 --- a/greenmine/scrum/models.py +++ b/greenmine/scrum/models.py @@ -75,6 +75,55 @@ class Project(models.Model): objects = ProjectManager() + class Meta: + permissions = ( + # global permissions + ('list_projects', 'Can list projects'), + ('list_my_projects', 'Can list my projects'), + + # per project permissions + ('view_projects', 'Can view projects'), + + ('create_tasks', 'Can create tasks'), + ('comment_tasks', 'Can comment tasks'), + ('modify_tasks', 'Can modify tasks'), + ('delete_task', 'Can delete tasks'), + ('modify_owned_tasks', 'Can modify owned tasks'), + ('modify_assigned_tasks', 'Can modify assigned tasks'), + ('assign_tasks_to_others', 'Can assign tasks to others'), + ('assign_tasks_to_myself', 'Can assign tasks to myself'), + ('change_tasks_state', 'Can change the task state'), + ('add_tasks_to_us', 'Can add tasks to a user story'), + + ('create_us', 'Can create user stories'), + ('comment_us', 'Can comment user stories'), + ('modify_us', 'Can modify user stories'), + ('delete_us', 'Can delete user stories'), + ('modify_owned_us', 'Can modify owned user stories'), + ('add_us_to_milestones', 'Can add user stories to milestones'), + + ('create_questions', 'Can create questions'), + ('reply_questions', 'Can reply questions'), + ('modify_questions', 'Can modify questions'), + ('delete_questions', 'Can delete questions'), + ('modify_owned_questions', 'Can modify owned questions'), + + ('create_wiki_page', 'Can create wiki pages'), + ('modify_wiki_page', 'Can modify wiki pages'), + ('delete_wiki_page', 'Can delete wiki pages'), + ('modify_owned_wiki_page', 'Can modify owned wiki pages'), + + ('create_documents', 'Can create documents'), + ('modify_documents', 'Can modify documents'), + ('delete_documents', 'Can delete documents'), + ('modify_owned_documents', 'Can modify owned documents'), + + ('create_milestone', 'Can create milestones'), + ('modify_milestone', 'Can modify milestones'), + + ('manage_users', 'Can manage users'), + ) + def __unicode__(self): return self.name