Fix property create
This commit is contained in:
parent
9c57d403b2
commit
ba947efb78
@ -103,12 +103,24 @@ def image_update(_context, image_id, values):
|
|||||||
###################
|
###################
|
||||||
|
|
||||||
|
|
||||||
def image_property_create(_context, values):
|
def image_property_create(_context, values, session=None):
|
||||||
_drop_protected_attrs(models.Image, values)
|
"""Create an ImageProperty object"""
|
||||||
image_property_ref = models.ImageProperty()
|
prop_ref = models.ImageProperty()
|
||||||
image_property_ref.update(values)
|
return _image_property_update(_context, prop_ref, values, session=session)
|
||||||
image_property_ref.save()
|
|
||||||
return image_property_ref
|
|
||||||
|
def image_property_update(_context, prop_ref, values, session=None):
|
||||||
|
"""Update an ImageProperty object"""
|
||||||
|
return _image_property_update(_context, prop_ref, values, session=session)
|
||||||
|
|
||||||
|
|
||||||
|
def _image_property_update(_context, prop_ref, values, session=None):
|
||||||
|
"""Used internally by image_property_create and image_property_update
|
||||||
|
"""
|
||||||
|
_drop_protected_attrs(models.ImageProperty, values)
|
||||||
|
prop_ref.update(values)
|
||||||
|
prop_ref.save(session=session)
|
||||||
|
return prop_ref
|
||||||
|
|
||||||
|
|
||||||
def _drop_protected_attrs(model_class, values):
|
def _drop_protected_attrs(model_class, values):
|
||||||
@ -123,6 +135,8 @@ def _drop_protected_attrs(model_class, values):
|
|||||||
def _image_update(_context, values, image_id):
|
def _image_update(_context, values, image_id):
|
||||||
"""Used internally by image_create and image_update
|
"""Used internally by image_create and image_update
|
||||||
|
|
||||||
|
:param _context: Request context
|
||||||
|
:param values: A dict of attributes to set
|
||||||
:param image_id: If None, create the image, otherwise, find and update it
|
:param image_id: If None, create the image, otherwise, find and update it
|
||||||
"""
|
"""
|
||||||
session = get_session()
|
session = get_session()
|
||||||
@ -143,10 +157,31 @@ def _image_update(_context, values, image_id):
|
|||||||
image_ref.update(values)
|
image_ref.update(values)
|
||||||
image_ref.save(session=session)
|
image_ref.save(session=session)
|
||||||
|
|
||||||
for key, value in properties.iteritems():
|
_set_properties_for_image(_context, image_ref, properties, session)
|
||||||
prop_values = {'image_id': image_ref.id,
|
|
||||||
'key': key,
|
|
||||||
'value': value}
|
|
||||||
image_property_create(_context, prop_values)
|
|
||||||
|
|
||||||
return image_get(_context, image_ref.id)
|
return image_get(_context, image_ref.id)
|
||||||
|
|
||||||
|
|
||||||
|
def _set_properties_for_image(_context, image_ref, properties, session=None):
|
||||||
|
"""
|
||||||
|
Create or update a set of image_properties for a given image
|
||||||
|
|
||||||
|
:param _context: Request context
|
||||||
|
:param image_ref: An Image object
|
||||||
|
:param properties: A dict of properties to set
|
||||||
|
:param session: A SQLAlchemy session to use (if present)
|
||||||
|
"""
|
||||||
|
orig_properties = {}
|
||||||
|
for prop_ref in image_ref.properties:
|
||||||
|
orig_properties[prop_ref.key] = prop_ref
|
||||||
|
|
||||||
|
for key, value in properties.iteritems():
|
||||||
|
prop_values = {'image_id': image_ref.id,
|
||||||
|
'key': key,
|
||||||
|
'value': value}
|
||||||
|
if key in orig_properties:
|
||||||
|
prop_ref = orig_properties[key]
|
||||||
|
image_property_update(_context, prop_ref, prop_values,
|
||||||
|
session=session)
|
||||||
|
else:
|
||||||
|
image_property_create(_context, prop_values, session=session)
|
||||||
|
@ -76,8 +76,9 @@ def get_image_meta_from_headers(response):
|
|||||||
for key, value in headers:
|
for key, value in headers:
|
||||||
key = str(key.lower())
|
key = str(key.lower())
|
||||||
if key.startswith('x-image-meta-property-'):
|
if key.startswith('x-image-meta-property-'):
|
||||||
properties[key[len('x-image-meta-property-'):]] = value
|
field_name = key[len('x-image-meta-property-'):].replace('-', '_')
|
||||||
if key.startswith('x-image-meta-'):
|
properties[field_name] = value
|
||||||
|
elif key.startswith('x-image-meta-'):
|
||||||
field_name = key[len('x-image-meta-'):].replace('-', '_')
|
field_name = key[len('x-image-meta-'):].replace('-', '_')
|
||||||
result[field_name] = value
|
result[field_name] = value
|
||||||
result['properties'] = properties
|
result['properties'] = properties
|
||||||
|
Loading…
Reference in New Issue
Block a user