Skip to content
Snippets Groups Projects
Commit c78a456b authored by Shrikrishna Singh's avatar Shrikrishna Singh
Browse files

Revamp user_can_alter_submissions_external_reviewers method

parent 462c8748
No related branches found
No related tags found
No related merge requests found
...@@ -253,10 +253,12 @@ class UpdateReviewersForm(ApplicationSubmissionModelForm): ...@@ -253,10 +253,12 @@ class UpdateReviewersForm(ApplicationSubmissionModelForm):
def can_alter_external_reviewers(self, instance, user): def can_alter_external_reviewers(self, instance, user):
if instance.stage.has_external_review: if instance.stage.has_external_review:
if user.is_superuser:
return True
if settings.GIVE_STAFF_LEAD_PERMS: if settings.GIVE_STAFF_LEAD_PERMS:
return user.is_apply_staff or user.is_superuser return user.is_apply_staff
else: else:
return user == instance.lead or user.is_superuser return user == instance.lead
return False return False
def clean(self): def clean(self):
...@@ -355,7 +357,7 @@ class BatchUpdateReviewersForm(forms.Form): ...@@ -355,7 +357,7 @@ class BatchUpdateReviewersForm(forms.Form):
submissions = self.cleaned_data['submissions'] submissions = self.cleaned_data['submissions']
if external_reviewers: if external_reviewers:
# User needs to be superuser or lead of all selected submissions. # User needs to be superuser or lead of all selected submissions.
if self.user_cant_alter_submissions_external_reviewers(submissions, self.user): if not self.user_can_alter_submissions_external_reviewers(submissions, self.user):
self.add_error('external_reviewers', _("Only Lead can change the External Reviewers")) self.add_error('external_reviewers', _("Only Lead can change the External Reviewers"))
# If user is trying to change the external reviewers for submissions that doesn't have workflow with external_review stage. # If user is trying to change the external reviewers for submissions that doesn't have workflow with external_review stage.
elif self.submissions_cant_have_external_reviewers(submissions): elif self.submissions_cant_have_external_reviewers(submissions):
...@@ -379,12 +381,14 @@ class BatchUpdateReviewersForm(forms.Form): ...@@ -379,12 +381,14 @@ class BatchUpdateReviewersForm(forms.Form):
return True return True
return False return False
def user_cant_alter_submissions_external_reviewers(self, submissions, user): def user_can_alter_submissions_external_reviewers(self, submissions, user):
for submission in submissions: # User needs to be superuser or lead of all selected submissions.
if settings.GIVE_STAFF_LEAD_PERMS: if user.is_superuser:
return user != submission.lead and not user.is_superuser return True
else: if settings.GIVE_STAFF_LEAD_PERMS and user.is_apply_staff:
return not user.is_apply_staff and not user.is_superuser return True
if submissions.count() == submissions.filter(lead=user).count():
return True
return False return False
def save(self): def save(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment