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