X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fadmin.py;h=94e84532f5e84823effd939f00265404899690df;hb=51d4039d2dc693f8b941d6c73ccbe68a0641fa1a;hp=1d64d9c1ad86473c0117ab87449b04697a59060c;hpb=b2fd3fca33fa3f4a224f12b153bbf3fca69f0b49;p=plstackapi.git diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py index 1d64d9c..94e8453 100644 --- a/planetstack/core/admin.py +++ b/planetstack/core/admin.py @@ -419,6 +419,24 @@ class PlanetStackBaseAdmin(ReadOnlyAwareAdmin): instances = formset.save(commit=False) for instance in instances: instance.save_by_user(request.user) + + # BUG in django 1.7? Objects are not deleted by formset.save if + # commit is False. So let's delete them ourselves. + # + # code from forms/models.py save_existing_objects() + try: + forms_to_delete = formset.deleted_forms + except AttributeError: + forms_to_delete = [] + if formset.initial_forms: + for form in formset.initial_forms: + obj = form.instance + if form in forms_to_delete: + if obj.pk is None: + continue + formset.deleted_objects.append(obj) + obj.delete() + formset.save_m2m() class SliceRoleAdmin(PlanetStackBaseAdmin): @@ -535,7 +553,7 @@ class SiteAssocInline(PlStackTabularInline): class DeploymentAdmin(PlanetStackBaseAdmin): model = Deployment - fieldList = ['backend_status_text', 'name', 'sites', 'images', 'flavors', 'accessControl'] + fieldList = ['backend_status_text', 'name', 'availability_zone', 'sites', 'images', 'flavors', 'accessControl'] fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-sites']})] inlines = [DeploymentPrivilegeInline,NodeInline,TagInline] # ,ImageDeploymentsInline] list_display = ['backend_status_icon', 'name'] @@ -700,6 +718,15 @@ class SliceForm(forms.ModelForm): 'service': LinkedSelect } + def clean(self): + cleaned_data = super(SliceForm, self).clean() + name = cleaned_data.get('name') + site_id = cleaned_data.get('site') + site = Slice.objects.get(id=site_id) + if not name.startswith(site.login_base): + raise forms.ValidationError('slice name must begin with %s' % site.login_base) + return cleaned_data + class SliceAdmin(PlanetStackBaseAdmin): form = SliceForm fieldList = ['backend_status_text', 'site', 'name', 'serviceClass', 'enabled','description', 'service', 'slice_url', 'max_slivers']