Revision 37d59b27 snf-astakos-app/astakos/im/forms.py

b/snf-astakos-app/astakos/im/forms.py
843 843

  
844 844
    def clean(self):
845 845
        userid = self.data.get('user', None)
846
        policies = self.resource_policies
846 847
        self.user = None
847 848
        if userid:
848 849
            try:
......
865 866
            if name.endswith('_uplimit'):
866 867
                subs = name.split('_uplimit')
867 868
                prefix, suffix = subs
868
                resource = Resource.objects.get(name=prefix)
869

  
869
                try:
870
                    resource = Resource.objects.get(name=prefix)
871
                except Resource.DoesNotExist:
872
                    raise forms.ValidationError("Resource %s does not exist" %
873
                                                resource.name)
870 874
                # keep only resource limits for selected resource groups
871 875
                if self.data.get(
872 876
                    'is_selected_%s' % resource.group, "0"
873 877
                 ) == "1":
878
                    if not resource.allow_in_projects:
879
                        raise forms.ValidationError("Invalid resource %s" %
880
                                                    resource.name)
874 881
                    d = model_to_dict(resource)
875 882
                    if uplimit:
876 883
                        d.update(dict(resource=prefix, uplimit=uplimit))
......
879 886
                    append(d)
880 887

  
881 888
        ordered_keys = presentation.RESOURCES['resources_order']
882
        policies = sorted(policies, key=lambda r:ordered_keys.index(r['str_repr']))
889
        def resource_order(r):
890
            if r['str_repr'] in ordered_keys:
891
                return ordered_keys.index(r['str_repr'])
892
            else:
893
                return -1
894

  
895
        policies = sorted(policies, key=resource_order)
883 896
        return policies
884 897

  
885 898
    def save(self, commit=True):

Also available in: Unified diff