def get_image_object(self, img_attrs): image = Image() image.id = uuid.uuid4() for k, v in img_attrs.items(): if hasattr(image, k): setattr(image, k, v) return image
def upsert_image_from_form(form): """ creates medium if it doesn't exist already adds image and medium to db.session filename is added elsewhere """ image = Image.query.filter_by(id=form.data['id']).first() if not image: image = Image() series = Series.query.filter_by(id=form.data['series_id']).first() medium_name = form.data.get('medium') if medium_name: medium = Medium.query.filter_by(name=medium_name).first() if not medium: medium = Medium(name=medium_name) else: medium = None with db.session.no_autoflush: image.series = series for k, v in form.data.items(): try: if v and v != getattr(image, k): setattr(image, k, v) except AttributeError: pass if medium: setattr(image, 'medium_id', medium.id) setattr(image, 'medium', medium) db.session.add(medium) db.session.add(image) return image