Fix clearing attributes via @set.

This commit is contained in:
Greg Taylor 2009-03-30 00:37:24 +00:00
parent 4426f776fd
commit 4af854271a

View file

@ -595,16 +595,22 @@ class Object(models.Model):
if self.has_attribute(attribute): if self.has_attribute(attribute):
# Attribute already exists, update it. # Attribute already exists, update it.
attrib_obj = Attribute.objects.filter(attr_object=self).filter(attr_name__iexact=attribute)[0] attrib_obj = Attribute.objects.filter(attr_object=self).filter(attr_name__iexact=attribute)[0]
attrib_obj.attr_value = new_value if new_value.strip() == '':
attrib_obj.save() # If you do something like @set me=SOMEATTR:, destroy the attrib.
attrib_obj.delete()
else:
# Otherwise, save over the existing attribute's value.
attrib_obj.attr_value = new_value
attrib_obj.save()
else: else:
# Attribute object doesn't exist, create it. if new_value.strip() != '':
new_attrib = Attribute() # Attribute object doesn't exist, create it.
new_attrib.attr_name = attribute new_attrib = Attribute()
new_attrib.attr_value = new_value new_attrib.attr_name = attribute
new_attrib.attr_object = self new_attrib.attr_value = new_value
new_attrib.attr_hidden = False new_attrib.attr_object = self
new_attrib.save() new_attrib.attr_hidden = False
new_attrib.save()
def has_attribute(self, attribute): def has_attribute(self, attribute):
""" """