20 lines
697 B
Python
20 lines
697 B
Python
|
def has_permission(user, proposal, speaker=False, reviewer=False):
|
||
|
"""
|
||
|
Returns whether or not ther user has permission to review this proposal,
|
||
|
with the specified requirements.
|
||
|
|
||
|
If ``speaker`` is ``True`` then the user can be one of the speakers for the
|
||
|
proposal. If ``reviewer`` is ``True`` the speaker can be a part of the
|
||
|
reviewer group.
|
||
|
"""
|
||
|
if user.is_superuser:
|
||
|
return True
|
||
|
if speaker:
|
||
|
if (user == proposal.speaker.user or
|
||
|
proposal.additional_speakers.filter(user=user).exists()):
|
||
|
return True
|
||
|
if reviewer:
|
||
|
if user.groups.filter(name="reviewers").exists():
|
||
|
return True
|
||
|
return False
|