"Only my tasks" Feature request
Hi taiga team,
I think that a great feature for next taiga version is that a user can see only their issues and their user histories.
I've implemented this feature for me (beta):
-
In users/models.py added field only_my_tasks to Role class:
only_my_tasks = models.BooleanField(default=False) -
In users/models.py added field can_view_profiles to User Class
can_view_profiles = models.BooleanField(default=True) -
In projects/userstories/api.py
def get_queryset(self):
user = self.request.user
project_id = self.request.QUERY_PARAMS.get("project", None)
if project_id:
project = Project.objects.get(id=project_id)
membership = Membership.objects.get(user=user, project=project)
role = membership.role
if role.only_my_tasks:
qs = models.UserStory.objects.filter(Q(owner=user) | Q(assigned_to=user))
else:
qs = models.UserStory.objects.all()
...
- In timeline/service.py
def get_project_timeline(project, accessing_user=None):
from taiga.projects.models import Membership
from taiga.projects.userstories.models import UserStory
namespace = build_project_namespace(project)
timeline = get_timeline(project, namespace)
if accessing_user is not None:
timeline = filter_timeline_for_user(timeline, accessing_user)
membership = Membership.objects.get(user=accessing_user, project=project)
role = membership.role
if role.only_my_tasks:
us = UserStory.objects.filter(Q(owner=accessing_user) | Q(assigned_to=accessing_user))
us_ids = []
for row in us:
us_ids.append(row.id)
timeline = timeline.filter(event_type__contains='userstory', data__userstory__id__in=us_ids)
return timeline
- In users/api.py
def get_queryset(self):
if not self.request.user.is_superuser and not self.request.user.can_view_profiles:
raise exc.PermissionDenied("Unauthorized")
qs = super().get_queryset()
qs = qs.prefetch_related("memberships")
qs = user_utils.attach_extra_info(qs, user=self.request.user)
return qs
Thank you very much.
Thank you for your interest @jadelaop .
I really would like to understand which is your use case, what do you use this feature for.
If I understood right, you implemented a new property to a role. I am curious about how do you apply this restricted role to an user. Did you implement something on taiga-front too?
Hi @migonzalvar
My use case is for manage the editorial team of my blog. I'm the manager, and i don't want that users with "only my tasks" can view "posts" assigned to other users (or not assigned yet).
Nothing implemented on taiga-front for the moment.
Sorry, I edited my first message, "only my tasks" field is in role class.
This feature is in taiga 4.0?