def image_editor(img_id):

    ratio = Config.IMAGE_EDITOR_RATIO
    height = Config.HEIGHT_IMAGE
    thumbnail = File()
    thumbnail_content = FileContent()
    size = (int(ratio*height), height)
    image_id = img_id
    data = request.form

    if request.method != 'GET':
        image_query = file_query(image_id, File)
        image_content = file_query(image_id, FileContent)
        image = Image.open(BytesIO(image_content.content))

# area = [int(y) for x, y in sorted(zip(request.form.keys(),
# request.form.values()))
#   if int(y) in range(0, max(image.size)) and x != "5rotate"
# and x != "6name"]
        area = [int(a) for a in (data['1x'], data['2y'], data['3width'],
                                 data['4height'])
                if int(a) in range(0, max(image.size))]
        if not data['6name']:
                raise EmptyFieldName
        elif area:

            angle = int(data["5rotate"])*-1
            area[2] = (area[0]+area[2])
            area[3] = (area[1]+area[3])
            rotated = image.rotate(angle)
            cropped = rotated.crop(area).resize(size)
            bytes_file = BytesIO()
            cropped.save(bytes_file,
                         image_query.mime.split('/')[-1].upper())
            thumbnail.md_tm = strftime("%Y-%m-%d %H:%M:%S", gmtime())
            thumbnail.size = sys.getsizeof(bytes_file.getvalue())
            thumbnail.name = data['6name']+'.' + \
                             image_query.name.split('.')[-1]
            thumbnail.mime = image_query.mime
            g.db.add(thumbnail)
            g.db.commit()
            thumbnail_content.content = bytes_file.getvalue()
            thumbnail_content.id = thumbnail.id
            g.db.add(thumbnail_content)
            g.db.commit()
            image_id = thumbnail.id
            return redirect(url_for('image_editor.cropped',
                                    id=image_id))

        else:
            g.db.rollback()
            raise BadCoordinates
    file = db(File, id=image_id).one()

    return render_template('image_editor.html',
                           ratio=ratio,
                           img_id=img_id,
                           image=file.url()
                           )