Ejemplo n.º 1
0
def upload_hex_img(id):
    hex = Hexagon.query.get(id)
    if hex.user_id != current_user.id:
        return json.dumps({'success': False})

    if 'file' not in request.files:
        return json.dumps({'success': False})

    file = request.files['file']

    img = Image(hex_id=id)
    img.ext = file.mimetype.replace('image/', '')

    if (not img.ext in ['png', 'jpg', 'jpeg', 'gif'
                        ]):  # TODO: создать таблицу с расширениями файлов
        return json.dumps({'success': False})
    db.session.add(img)
    db.session.commit()

    categ_name = hex.categ.name

    create_dir("/app/static/uploadedImgs/" + categ_name)
    create_dir(f"/app/static/uploadedImgs/{categ_name}/{hex.chain.id}")
    create_dir(
        f"/app/static/uploadedImgs/{categ_name}/{hex.chain.id}/{hex.id}")

    filename = f"static/uploadedImgs/{categ_name}/{hex.chain.id}/{hex.id}/{img.id}.{img.ext}"
    if 'BG' in file.filename:
        hex.BG_img = filename
        for img in hex.imgs:
            img.is_BG = False
            db.session.add(img)

        img.is_BG = True
        db.session.add_all([hex, img])
        db.session.commit()

    try:
        file.save(os.getcwd() + "/app/" + filename)
    except BaseException:
        db.session.delete(img)
        db.session.commit()
        return json.dumps({'success': False})

    subs = current_user.subscriptions_to_me
    for sub in subs:
        create_notification(
            sub.subscriber_id,
            _('User %(username)s changed his/her hexagon in category %(categname)s',
              categname=hex.categ.name,
              username=current_user.username), 'change',
            url_for('get_hex', id=hex.id))

    return json.dumps({
        'success': True,
        'url': filename,
        'uuid': img.id,
        "isBG": img.is_BG
    })