def get_property_form(self): props = {} if not self.object.venture_role: return None for p in self.object.venture_role.roleproperty_set.all(): try: value = p.rolepropertyvalue_set.filter( device=self.object)[0].value except IndexError: value = '' props[p.symbol] = value properties = list(self.object.venture_role.roleproperty_set.all()) if not properties: return None return PropertyForm(properties, initial=props)
def post(self, *args, **kwargs): self.object = self.get_object() has_perm = self.request.user.get_profile().has_perm if not has_perm(Perm.edit_device_info_generic, self.object.venture): return HttpResponseForbidden( "You don't have permission to edit this.") self.property_form = self.get_property_form() if 'propertiessave' in self.request.POST: properties = list(self.object.venture_role.roleproperty_set.all()) self.property_form = PropertyForm(properties, self.request.POST) if self.property_form.is_valid(): messages.success(self.request, "Properties updated.") self.save_properties(self.object, self.property_form.cleaned_data) return HttpResponseRedirect(self.request.path) elif 'save-tags' in self.request.POST: tags = self.request.POST.get('tags', '') self.object.untag_all() self.object.tag(tags, Language.en, self.request.user) messages.success(self.request, "Tags updated.") return HttpResponseRedirect(self.request.path) else: return super(Info, self).post(*args, **kwargs) return super(Info, self).get(*args, **kwargs)