Revision 8c804c12 snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
538 | 538 |
name = forms.URLField() |
539 | 539 |
moderation_enabled = forms.BooleanField( |
540 | 540 |
help_text="Check if you want to approve members participation manually", |
541 |
required=False |
|
541 |
required=False, |
|
542 |
initial=True |
|
542 | 543 |
) |
543 | 544 |
max_participants = forms.IntegerField( |
544 | 545 |
widget=forms.HiddenInput(), label='', required=False |
... | ... | |
564 | 565 |
'issue_date', 'expiration_date', |
565 | 566 |
'moderation_enabled', 'max_participants'] |
566 | 567 |
|
567 |
def add_field((k, v)): |
|
568 |
def add_fields((k, v)):
|
|
568 | 569 |
self.fields[k] = forms.IntegerField( |
569 | 570 |
required=False, |
570 | 571 |
widget=forms.HiddenInput() |
571 | 572 |
) |
572 |
map(add_field, |
|
573 |
map(add_fields,
|
|
573 | 574 |
((k, v) for k,v in qd.iteritems() if k.endswith('_uplimit')) |
574 | 575 |
) |
576 |
|
|
577 |
def add_fields((k, v)): |
|
578 |
self.fields[k] = forms.BooleanField( |
|
579 |
required=False, |
|
580 |
widget=forms.HiddenInput() |
|
581 |
) |
|
582 |
map(add_fields, |
|
583 |
((k, v) for k,v in qd.iteritems() if k.startswith('is_selected_')) |
|
584 |
) |
|
575 | 585 |
|
576 | 586 |
def clean(self): |
587 |
super(AstakosGroupCreationForm, self).clean() |
|
577 | 588 |
self.cleaned_data['policies'] = [] |
578 | 589 |
append = self.cleaned_data['policies'].append |
579 |
tbd = [] |
|
590 |
tbd = [f for f in self.fields if f.startswith('is_selected_')]
|
|
580 | 591 |
for name, uplimit in self.cleaned_data.iteritems(): |
581 | 592 |
subs = name.split('_uplimit') |
582 | 593 |
if len(subs) == 2: |
583 | 594 |
tbd.append(name) |
584 | 595 |
prefix, suffix = subs |
585 | 596 |
s, r = prefix.split(RESOURCE_SEPARATOR) |
586 |
append(dict(service=s, resource=r, uplimit=uplimit)) |
|
587 |
for name in tbd: |
|
588 |
del self.cleaned_data[name] |
|
597 |
resource = Resource.objects.get(service__name=s, name=r) |
|
598 |
|
|
599 |
# keep only resource limits for selected resource groups |
|
600 |
if self.cleaned_data.get( |
|
601 |
'is_selected_%s' % resource.group, True |
|
602 |
): |
|
603 |
append(dict(service=s, resource=r, uplimit=uplimit)) |
|
604 |
(self.cleaned_data.pop(name, None) for name in tbd) |
|
589 | 605 |
return self.cleaned_data |
590 | 606 |
|
591 | 607 |
|
Also available in: Unified diff