Skip to content
Snippets Groups Projects
Commit 03f331e7 authored by LouisGendron's avatar LouisGendron
Browse files

Added managed_by_staff option to ShareGroup

parent 26b42e8d
No related branches found
No related tags found
1 merge request!89Resolve "group public"
......@@ -322,7 +322,7 @@ class LabForm(forms.ModelForm):
class ShareGroupForm(forms.ModelForm):
class Meta:
model = ShareGroup
fields = ('name', 'profiles')
fields = ('name', 'profiles', 'managed_by_staff')
class LabSelectionForm(forms.Form):
......
......@@ -254,6 +254,11 @@ class DataFile(models.Model):
class ShareGroupManager(models.Manager):
def limit_to_profile(self, profile):
return super().get_queryset().filter(profiles=profile)
def limit_by_staff_profile(self, profile):
if profile.user.is_staff:
return super().get_queryset()
else:
return super().get_queryset().filter(managed_by_staff=False)
class ShareGroup(models.Model):
......
......@@ -141,6 +141,7 @@ class DataSetCreateView(LoginRequiredMixin, CreateViewMixin, CreateView):
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields['share_profiles'].queryset = Profile.objects.exclude_profile(self.request.user.profile)
form.fields['share_groups'].queryset = ShareGroup.objects.limit_by_staff_profile(self.request.user.profile)
form.fields['files'].queryset = DataFile.objects.editable_by_profile(self.request.user.profile)
if 'files' in self.request.GET:
files = self.request.GET['files'].split(',')
......@@ -174,7 +175,7 @@ class DataSetUpdateView(DataSetLogMixin, LoginRequiredMixin, UpdateViewMixin, Up
form = super().get_form(form_class)
form.fields['share_profiles'].queryset = (Profile.objects.exclude_profile(self.request.user.profile) | o.share_profiles.all()).distinct()
form.fields['files'].queryset = (DataFile.objects.limit_to_profile(self.request.user.profile) | o.files.all()).distinct()
form.fields['share_groups'].queryset = (ShareGroup.objects.limit_to_profile(self.request.user.profile) | o.share_groups.all()).distinct()
form.fields['share_groups'].queryset = ShareGroup.objects.limit_by_staff_profile(self.request.user.profile)
form.fields['share_labs'].queryset = (Lab.objects.limit_to_profile(self.request.user.profile) | o.share_labs.all()).distinct()
return form
......
......@@ -45,18 +45,20 @@ class ShareGroupJSONListView(LoginRequiredMixin, JSONListView):
return super().get_queryset().filter(profiles=self.request.user.profile)
def get_rows(self):
is_staff = self.request.user.is_staff
rows = []
for o in self.object_list:
buttons = [
(reverse('user.sharegroup-delete', args=[o.id]), 'fas fa-trash-alt', ugettext('Delete'), 'danger')
]
if not o.managed_by_staff or (o.managed_by_staff and is_staff):
buttons = [(reverse('user.sharegroup-update', args=[o.id]), 'fas fa-pencil-alt', ugettext('Edit'))] + buttons
rows.append([
o.name,
timezone.localtime(o.creation_timestamp).strftime('%Y-%m-%d %H:%M:%S %Z'),
timezone.localtime(o.update_timestamp).strftime('%Y-%m-%d %H:%M:%S %Z'),
render_to_string(
'portal/templates/portal/widgets/action_buttons.html',
{'buttons': [
(reverse('user.sharegroup-update', args=[o.id]), 'fas fa-pencil-alt', ugettext('Edit')),
(reverse('user.sharegroup-delete', args=[o.id]), 'fas fa-trash-alt', ugettext('Delete'), 'danger')
]})
render_to_string('portal/templates/portal/widgets/action_buttons.html', {'buttons': buttons})
])
return rows
......
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