LINUX.ORG.RU

Сообщения ivn86

 

pyunpack и uwsgi

Пишу приложение на Django. Есть необходимость подгрузить файл формата CAB и распаковать его. Распаковка посредством pyunpack:

# views.py
from pyunpack import Archive
...
def upload_cab(request):
    ...
    try:
        Archive(filename).extractall(extract_path)
    except Exception as e:
        raise e

Код нормально работает в PyCharm, но на тестовом сервере (CentOS 7, uwsgi+Nginx) в e падает ошибка:

patool can not unpack /usr/sbin/uwsgi: unrecognized option '--non-interactive' getopt_long() error

Ошибка одна и та же как в случае uwsgi установленном через yum, так и через pip. В лог uwsgi (опция logto в uwsgi.ini) никаких ошибок не падает.

Так же в этом же проекте добавил консольную опцию к manage.py (через management.commands), где используется аналогичный код — проблем нет, архив распаковывается. Т.е. проблему локализовал до uwsgi.

 , ,

ivn86 ()

SQLAlchemy теряет атрибуты String при сохранении

Всем привет! У меня маленький опыт программирования на Flask, поэтому вопрос задам, возможно, глупый, но самостоятельно найти решение не смог. Столкнулся с непонятным поведением SQLalchemy. Исходные данные:

db = SQLAlchemy(app)
class User(db.Model):
    password = db.Column(db.String(255))
    # password = db.Column(db.Integer())
...
 
def user_update(user_id):
    user_form = model_form(User, Form)
    user = models.User.query.get(user_id)
    form = user_form(request.form, user)
    if request.method == 'POST':
        form.populate_obj(user)
        db.session.commit()
        return redirect(url_for('user_view', user_id=user.id))
    return render_template('user_detail.html', form=form, user=user)

(Копия тут)

На форме WTF атрибут password не передаётся.

Суть вопроса: при сохранении модели атрибут password сбрасывается до " если он текстовый (db.Text/db.String) и остаётся неизменным, если отличен от текстового (db.Integer/db.DateTime). Т.е. если форма не передала значения текстовых атрибутов — значения будут переписаны пустой строкой (при default=NULL). Если обновлять ручками через shell — всё нормально. Как пофиксить?

P.S. Задал вопрос на python@conference.jabber.ru, но там молчат.

 , , ,

ivn86 ()

Поиск, группировка по имени и сжатие файлов

В каталоге есть файлы, имеющие общее начало названия (если конкретно, то timestamp). Задача сгруппировать эти файлы, например, по первым 6 символам и сжать в архив с названием из этих 6 символов. Все файлы находятся на одном уровне и должны паковаться без относительных путей. У меня получилось следующее:

for i in $(ls -1 $SRC | cut -c 1-6 | uniq); do
  find $SRC -name "$i*" -printf "%f\n" | tar -zcf $TARGET/$i.tgz -C $SRC --files-from -
done

Можно ли решить эту задачу менее костыльным способом? Какие предложения по улучшению и оптимизации?

 , , ,

ivn86 ()

RSS подписка на новые темы