Commit 15778a7d authored by Enrico Zini's avatar Enrico Zini
Browse files

Added fd_comments permission; refactored backend test_perms; removed...

Added fd_comments permission; refactored backend test_perms; removed unimplemented old-style process options, that will be implemented in new-style processes
parent 74255108
...@@ -102,6 +102,7 @@ class PersonVisitorPermissions(VisitorPermissions): ...@@ -102,6 +102,7 @@ class PersonVisitorPermissions(VisitorPermissions):
self.update(("edit_bio", "update_keycheck", "view_person_audit_log")) self.update(("edit_bio", "update_keycheck", "view_person_audit_log"))
if self.person_possible_new_statuses: self.add("request_new_status") if self.person_possible_new_statuses: self.add("request_new_status")
if not self.person_has_ldap_record: self.add("edit_ldap") if not self.person_has_ldap_record: self.add("edit_ldap")
self.add("fd_comments")
def _compute_own_perms(self): def _compute_own_perms(self):
self.update(("update_keycheck", "view_person_audit_log")) self.update(("update_keycheck", "view_person_audit_log"))
...@@ -133,12 +134,14 @@ class PersonVisitorPermissions(VisitorPermissions): ...@@ -133,12 +134,14 @@ class PersonVisitorPermissions(VisitorPermissions):
""" """
# TODO: remove this once old-style processes get deprecated # TODO: remove this once old-style processes get deprecated
# Old-style processes only support becoming dd_u or dd_nu
# Nothing can happen while the person is pending confirmation # Nothing can happen while the person is pending confirmation
if self.person.pending: return [] if self.person.pending: return []
# Anonymous visitors cannot advocate # Anonymous visitors cannot advocate
if not self.visitor: return [] if not self.visitor: return []
# Debian Contributors cannot currently advocate # Only DDs can advocate for DDs
if self.visitor.status in (const.STATUS_DC, const.STATUS_DC_GA): return [] if not self.visitor.is_dd: return []
def involved_pks(proc): def involved_pks(proc):
pks = {a.pk for a in proc.advocates.all()} pks = {a.pk for a in proc.advocates.all()}
...@@ -156,32 +159,8 @@ class PersonVisitorPermissions(VisitorPermissions): ...@@ -156,32 +159,8 @@ class PersonVisitorPermissions(VisitorPermissions):
return True return True
res = [] res = []
if (self.person.status == const.STATUS_DC
and self.visitor.pk != self.person.pk
and self.visitor.status in self.dm_or_dd
and can_add_advocate(const.STATUS_DC_GA)):
res.append(const.STATUS_DC_GA)
if (self.person.status == const.STATUS_DM
and self.visitor.status in self.dm_or_dd
and can_add_advocate(const.STATUS_DM_GA)):
res.append(const.STATUS_DM_GA)
if (self.person.status == const.STATUS_DC
and self.visitor.pk != self.person.pk
and self.visitor.status in self.dd
and can_add_advocate(const.STATUS_DM)):
res.append(const.STATUS_DM)
if (self.person.status == const.STATUS_DC_GA
and self.visitor.pk != self.person.pk
and self.visitor.status in self.dd
and can_add_advocate(const.STATUS_DM_GA)):
res.append(const.STATUS_DM_GA)
if (self.person.status in self.pre_dd_statuses if (self.person.status in self.pre_dd_statuses
and self.visitor.pk != self.person.pk and self.visitor.pk != self.person.pk
and self.visitor.status in self.dd
and can_add_advocate(const.STATUS_DD_NU, const.STATUS_DD_U)): and can_add_advocate(const.STATUS_DD_NU, const.STATUS_DD_U)):
res.append(const.STATUS_DD_NU) res.append(const.STATUS_DD_NU)
res.append(const.STATUS_DD_U) res.append(const.STATUS_DD_U)
......
This diff is collapsed.
...@@ -398,6 +398,14 @@ class ExpectedSets(defaultdict): ...@@ -398,6 +398,14 @@ class ExpectedSets(defaultdict):
visit_perms = visited.permissions_of(self.testcase.persons[visitor] if visitor else None) visit_perms = visited.permissions_of(self.testcase.persons[visitor] if visitor else None)
self.assertEmpty(visitor, visit_perms) self.assertEmpty(visitor, visit_perms)
def assertMatchesAdvocateTargets(self, visited):
for visitor in self.visitors:
visit_perms = visited.permissions_of(self.testcase.persons[visitor])
self.assertEqual(visitor, visit_perms.advocate_targets)
for visitor in self.select_others(self.testcase.persons):
visit_perms = visited.permissions_of(self.testcase.persons[visitor] if visitor else None)
self.assertEmpty(visitor, visit_perms.advocate_targets)
class ExpectedPerms(object): class ExpectedPerms(object):
""" """
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment