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