Revision 29b87e7c snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
542 | 542 |
initial=True |
543 | 543 |
) |
544 | 544 |
max_participants = forms.IntegerField( |
545 |
widget=forms.HiddenInput(), label='', required=False
|
|
545 |
required=False, min_value=1
|
|
546 | 546 |
) |
547 | 547 |
|
548 | 548 |
class Meta: |
... | ... | |
554 | 554 |
qd = args.pop(0).copy() |
555 | 555 |
members_unlimited = qd.pop('members_unlimited', False) |
556 | 556 |
members_uplimit = qd.pop('members_uplimit', None) |
557 |
max_participants = None if members_unlimited else members_uplimit |
|
558 |
qd['max_participants']= max_participants.pop(0) if max_participants else None |
|
557 |
# max_participants = None if members_unlimited else members_uplimit
|
|
558 |
# qd['max_participants']= max_participants.pop(0) if max_participants else None
|
|
559 | 559 |
|
560 | 560 |
#substitue QueryDict |
561 | 561 |
args.insert(0, qd) |
... | ... | |
564 | 564 |
self.fields.keyOrder = ['kind', 'name', 'homepage', 'desc', |
565 | 565 |
'issue_date', 'expiration_date', |
566 | 566 |
'moderation_enabled', 'max_participants'] |
567 |
|
|
568 | 567 |
def add_fields((k, v)): |
569 | 568 |
self.fields[k] = forms.IntegerField( |
570 | 569 |
required=False, |
571 |
widget=forms.HiddenInput() |
|
570 |
widget=forms.HiddenInput(), |
|
571 |
min_value=1 |
|
572 | 572 |
) |
573 | 573 |
map(add_fields, |
574 | 574 |
((k, v) for k,v in qd.iteritems() if k.endswith('_uplimit')) |
... | ... | |
583 | 583 |
((k, v) for k,v in qd.iteritems() if k.startswith('is_selected_')) |
584 | 584 |
) |
585 | 585 |
|
586 |
def policies(self): |
|
587 |
self.clean() |
|
588 |
policies = [] |
|
589 |
append = policies.append |
|
590 |
for name, uplimit in self.cleaned_data.iteritems(): |
|
591 |
subs = name.split('_uplimit') |
|
592 |
if len(subs) == 2: |
|
593 |
prefix, suffix = subs |
|
594 |
s, r = prefix.split(RESOURCE_SEPARATOR) |
|
595 |
resource = Resource.objects.get(service__name=s, name=r) |
|
596 |
|
|
597 |
# keep only resource limits for selected resource groups |
|
598 |
if self.cleaned_data.get( |
|
599 |
'is_selected_%s' % resource.group, True |
|
600 |
): |
|
601 |
append(dict(service=s, resource=r, uplimit=uplimit)) |
|
602 |
return policies |
|
603 |
|
|
604 |
class AstakosGroupCreationSummaryForm(forms.ModelForm): |
|
605 |
kind = forms.ModelChoiceField( |
|
606 |
queryset=GroupKind.objects.all(), |
|
607 |
label="", |
|
608 |
widget=forms.HiddenInput() |
|
609 |
) |
|
610 |
name = forms.URLField() |
|
611 |
moderation_enabled = forms.BooleanField( |
|
612 |
help_text="Check if you want to approve members participation manually", |
|
613 |
required=False, |
|
614 |
initial=True |
|
615 |
) |
|
616 |
max_participants = forms.IntegerField( |
|
617 |
required=False, min_value=1 |
|
618 |
) |
|
619 |
|
|
620 |
class Meta: |
|
621 |
model = AstakosGroup |
|
622 |
|
|
623 |
def __init__(self, *args, **kwargs): |
|
624 |
#update QueryDict |
|
625 |
args = list(args) |
|
626 |
qd = args.pop(0).copy() |
|
627 |
members_unlimited = qd.pop('members_unlimited', False) |
|
628 |
members_uplimit = qd.pop('members_uplimit', None) |
|
629 |
# max_participants = None if members_unlimited else members_uplimit |
|
630 |
# qd['max_participants']= max_participants.pop(0) if max_participants else None |
|
631 |
|
|
632 |
#substitue QueryDict |
|
633 |
args.insert(0, qd) |
|
634 |
|
|
635 |
super(AstakosGroupCreationSummaryForm, self).__init__(*args, **kwargs) |
|
636 |
self.fields.keyOrder = ['kind', 'name', 'homepage', 'desc', |
|
637 |
'issue_date', 'expiration_date', |
|
638 |
'moderation_enabled', 'max_participants'] |
|
639 |
def add_fields((k, v)): |
|
640 |
self.fields[k] = forms.IntegerField( |
|
641 |
required=False, |
|
642 |
widget=forms.TextInput(), |
|
643 |
min_value=1 |
|
644 |
) |
|
645 |
map(add_fields, |
|
646 |
((k, v) for k,v in qd.iteritems() if k.endswith('_uplimit')) |
|
647 |
) |
|
648 |
|
|
649 |
def add_fields((k, v)): |
|
650 |
self.fields[k] = forms.BooleanField( |
|
651 |
required=False, |
|
652 |
widget=forms.HiddenInput() |
|
653 |
) |
|
654 |
map(add_fields, |
|
655 |
((k, v) for k,v in qd.iteritems() if k.startswith('is_selected_')) |
|
656 |
) |
|
657 |
for f in self.fields.values(): |
|
658 |
f.widget = forms.HiddenInput() |
|
659 |
|
|
586 | 660 |
def clean(self): |
587 |
super(AstakosGroupCreationForm, self).clean() |
|
661 |
super(AstakosGroupCreationSummaryForm, self).clean()
|
|
588 | 662 |
self.cleaned_data['policies'] = [] |
589 | 663 |
append = self.cleaned_data['policies'].append |
590 | 664 |
tbd = [f for f in self.fields if f.startswith('is_selected_')] |
... | ... | |
601 | 675 |
'is_selected_%s' % resource.group, True |
602 | 676 |
): |
603 | 677 |
append(dict(service=s, resource=r, uplimit=uplimit)) |
604 |
(self.cleaned_data.pop(name, None) for name in tbd) |
|
678 |
for name in tbd: |
|
679 |
self.cleaned_data.pop(name, None) |
|
605 | 680 |
return self.cleaned_data |
606 |
|
|
607 | 681 |
|
608 | 682 |
class AstakosGroupUpdateForm(forms.ModelForm): |
609 | 683 |
class Meta: |
Also available in: Unified diff