8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-25 04:43:10 +00:00

[Printer] Limit PrintAs to clubs request.user belongs to

This commit is contained in:
Maxime Bombar 2018-10-15 02:03:13 +02:00 committed by root
parent 909c378c3f
commit 3e4b39bedb
2 changed files with 14 additions and 4 deletions

View file

@ -3,7 +3,6 @@
"""printer.forms """printer.forms
Form to add, edit, cancel printer jobs. Form to add, edit, cancel printer jobs.
Author : Maxime Bombar <bombar@crans.org>. Author : Maxime Bombar <bombar@crans.org>.
Date : 29/06/2018
""" """
from django import forms from django import forms
@ -16,6 +15,8 @@ import itertools
from re2o.mixins import FormRevMixin from re2o.mixins import FormRevMixin
from users.models import User
from .models import ( from .models import (
JobWithOptions, JobWithOptions,
) )
@ -24,9 +25,11 @@ from .models import (
class JobWithOptionsForm(FormRevMixin, ModelForm): class JobWithOptionsForm(FormRevMixin, ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
prefix = kwargs.pop('prefix', self.Meta.model.__name__) prefix = kwargs.pop('prefix', self.Meta.model.__name__)
self.user = kwargs.pop('user')
super(JobWithOptionsForm, self).__init__(*args, prefix=prefix, **kwargs) super(JobWithOptionsForm, self).__init__(*args, prefix=prefix, **kwargs)
self.fields['printAs'].label = 'Print As' self.fields['printAs'].label = 'Print As'
self.fields['printAs'].empty_label = 'Print As' self.fields['printAs'].empty_label = 'Print As'
self.fields['printAs'].queryset = self.user.adherent.club_members.all()
self.fields['disposition'].label = 'disposition' self.fields['disposition'].label = 'disposition'
self.fields['color'].label = 'color' self.fields['color'].label = 'color'
self.fields['count'].label = 'count' self.fields['count'].label = 'count'
@ -45,8 +48,10 @@ class JobWithOptionsForm(FormRevMixin, ModelForm):
class PrintForm(FormRevMixin, ModelForm): class PrintForm(FormRevMixin, ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
prefix = kwargs.pop('prefix', self.Meta.model.__name__) prefix = kwargs.pop('prefix', self.Meta.model.__name__)
self.user = kwargs.pop('user')
super(PrintForm, self).__init__(*args, prefix=prefix, **kwargs) super(PrintForm, self).__init__(*args, prefix=prefix, **kwargs)
self.fields['printAs'].label = 'Print As' self.fields['printAs'].label = 'Print As'
self.fields['printAs'].queryset = self.user.adherent.club_members.all()
self.fields['disposition'].label = 'disposition' self.fields['disposition'].label = 'disposition'
self.fields['color'].label = 'color' self.fields['color'].label = 'color'
self.fields['count'].label = 'count' self.fields['count'].label = 'count'

View file

@ -49,6 +49,7 @@ def new_job(request):
job_formset = formset_factory(JobWithOptionsForm)( job_formset = formset_factory(JobWithOptionsForm)(
request.POST, request.POST,
request.FILES, request.FILES,
form_kwargs={'user': request.user},
) )
if job_formset.is_valid(): if job_formset.is_valid():
@ -85,7 +86,10 @@ def new_job(request):
# raise ValidationError("'%(plop)s'", code='plop', params = {'plop': job_data }) # raise ValidationError("'%(plop)s'", code='plop', params = {'plop': job_data })
data.append(job_data) data.append(job_data)
i+=1 i+=1
job_formset_filled_in = formset_factory(PrintForm, extra=0)(initial=data) job_formset_filled_in = formset_factory(PrintForm, extra=0)(
initial=data,
form_kwargs={'user': request.user},
)
return form( return form(
{ {
'jobform': job_formset_filled_in, 'jobform': job_formset_filled_in,
@ -102,6 +106,7 @@ def new_job(request):
n = int(request.POST['form-TOTAL_FORMS']) n = int(request.POST['form-TOTAL_FORMS'])
job_formset = formset_factory(PrintForm)( job_formset = formset_factory(PrintForm)(
request.POST, request.POST,
form_kwargs={'user': request.user},
) )
jids = [request.session['id-form-%s-file' % i] for i in range(n)] jids = [request.session['id-form-%s-file' % i] for i in range(n)]
# raise ValidationError("'%(path)s'", code='path', params = {'path': id_list }) # raise ValidationError("'%(path)s'", code='path', params = {'path': id_list })
@ -125,8 +130,8 @@ def new_job(request):
else: else:
job_formset = formset_factory(JobWithOptionsForm)( job_formset = formset_factory(JobWithOptionsForm)(
None, form_kwargs={'user': request.user}
) )
return form( return form(
{ {
'jobform': job_formset, 'jobform': job_formset,