|
a/Allura/allura/model/auth.py |
|
b/Allura/allura/model/auth.py |
|
... |
|
... |
648 |
@property
|
648 |
@property
|
649 |
def script_name(self):
|
649 |
def script_name(self):
|
650 |
return '/u/' + self.username + '/'
|
650 |
return '/u/' + self.username + '/'
|
651 |
|
651 |
|
652 |
def my_projects(self, role_name=None):
|
652 |
def my_projects(self, role_name=None):
|
653 |
'''Find the projects for which this user has a named role.
|
653 |
"""Return projects to which this user belongs.
|
654 |
|
654 |
|
655 |
If role_name is given returns only projects for which user has a role with given name.
|
655 |
If ``role_name`` is provided, return only projects for which user has
|
|
|
656 |
that role.
|
|
|
657 |
|
656 |
'''
|
658 |
"""
|
657 |
reaching_role_ids = g.credentials.user_roles(user_id=self._id).reaching_ids_set
|
659 |
reaching_role_ids = g.credentials.user_roles(user_id=self._id).reaching_ids_set
|
658 |
reaching_roles = [ProjectRole.query.get(_id=i) for i in reaching_role_ids]
|
660 |
reaching_roles = [ProjectRole.query.get(_id=i) for i in reaching_role_ids]
|
659 |
if not role_name:
|
661 |
if not role_name:
|
660 |
named_roles = [r for r in reaching_roles
|
662 |
named_roles = [r for r in reaching_roles
|
661 |
if r.name and r.project and not r.project.deleted]
|
663 |
if r.name and r.project and not r.project.deleted]
|
662 |
else:
|
664 |
else:
|
663 |
named_roles = [r for r in reaching_roles
|
665 |
named_roles = [r for r in reaching_roles
|
664 |
if r.name == role_name and not r.project.deleted]
|
666 |
if r.name == role_name and r.project and not r.project.deleted]
|
665 |
seen_project_ids = set()
|
667 |
seen_project_ids = set()
|
666 |
for r in named_roles:
|
668 |
for r in named_roles:
|
667 |
if r.project_id in seen_project_ids: continue
|
669 |
if r.project_id in seen_project_ids: continue
|
668 |
seen_project_ids.add(r.project_id)
|
670 |
seen_project_ids.add(r.project_id)
|
669 |
yield r.project
|
671 |
yield r.project
|