Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (19)
  • Flask-admin при редиректах меняет url как исправить?

    @89109983838 Автор вопроса
    Ответ нашёл сам!
    И заключается он в том что маны читать внимательнее надо!!! :(

    но все же укажу и здесь
    У меня нет доступа к настройкам Apache поэтому вариант таков:

    Если изменить настройки Apache нельзя, например, хостинг не предоставляет такой возможности, то можно воспользоваться промежуточным приложением WSGI для удаления yourapplication.fcgi из URL.
    Настройте .htaccess:
    <IfModule mod_fcgid.c>
       AddHandler fcgid-script .fcgi
       <Files ~ (\.fcgi)>
           SetHandler fcgid-script
           Options +FollowSymLinks +ExecCGI
       </Files>
    </IfModule>
    
    <IfModule mod_rewrite.c>
       Options +FollowSymlinks
       RewriteEngine On
       RewriteBase /
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule ^(.*)$ cgi-bin/flask-wrapper.fcgi/$1 [QSA,L]
    </IfModule>

    Теперь настроим flask-wrapper.fcgi:
    #!/home/profel/python/bin/python
    # -*- coding: utf-8 -*-
    import sys, os
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    sys.path.insert(0, ' /home/profel/site/')
    
    from flup.server.fcgi import WSGIServer
    from app import app
    
    class ScriptNameStripper(object):
       def __init__(self, app):
           self.app = app
    
       def __call__(self, environ, start_response):
           environ['SCRIPT_NAME'] = ''
           return self.app(environ, start_response)
    
    app = ScriptNameStripper(app)
    
    if __name__ == '__main__':
        WSGIServer(app).run()


    Кстати укажу на этот отрезок кода
    import sys, os
    reload(sys)
    sys.setdefaultencoding('utf8')

    С помощью его я решил проблему с выводом русских букв из файлов *.py (на хостинге и тестовом сервере .. windows).
    (по видимому консоль хостера, как и cmd не в UFT8. Для исправления недуга при старте приложения консоль перегружаем c установкой кодировки по умолчанию в UTF8. как то так.... )
    Ответ написан
  • Интеграция сайта с 1С. Где хранить товары: в 1С или в админке сайта?

    @89109983838
    если требуется в 1С фото номенклатуры и описания позиций не только для сайта, а к примеру для вывода прайсов с картинками и описаниями из 1С...
    или вы товары свои не знаете как выглядятя - а доступа к сайту нет,.
    или ЛЮБИТЕ 1С ........ и считаете 1С основай всего! :)
    то да есть смысл грузить в 1С.

    а так то вы только раздуваете базу особенно картинками, от чего тормаза! и повышаете шанс краха при обмене 1С с Opencart.

    1С для финансов а не "комбаин"... вот и логично использовать её для этого - и хранит там только Артикул, наименоване, цену (в ней формировать и грузить на сайт).

    а такто приходим к тому что быстрее, гибче и надежнее в 2 этапа:
    1) использовать Python для парсинга прайсов и сайтов постащиков для получения цен, в том числе и с маркета;
    формируем в нем же наценки;
    далее грузим розничную цену им же на сайт;
    сохраняем все в формате АРТ-ЦЕНА в файл xls;

    2) скармливаем xls в 1C

    самый нудный этап 2!!! т,к этап 1 проходит по одному счелчку и если бы не парсинг проходил за менее 10 сек (более 3000 позиций)!
    Ответ написан
  • Flask-sqlalchemy как проверить\создать\обновить строки в базе данных?

    @89109983838 Автор вопроса
    Вот после подбора и разбора параметров и ситуаций - результат такой:
    (буду признателен если кто добавит в комментариях правки по оптимизации)
    есть у нас форма с полями на типа:
    <input name=domain type="text" value="{{ data.domain }}">
    <input name=name type="text" value="{{data.name}}">
    .......... и так далее..... вьюшка получилась универсальна - 
    можно хоть сотни input добавлять прямо в шаблоне, 
    главное чтоб имена были у всех разные


    теперь сама вьюшка проверяет наличие input - он существует в базе то обновляет его значение - если нет еще то создает с присланными параметрами.

    app.route('/setting/', methods=['GET', 'POST', 'DELETE'])
    def setting():
        if not session.get('logged_in'): # проверяем залогин ли usr
            abort(404)                        
        if request.method == 'DELETE':  # Если метод HTTP = DELETE удаляем настройки для группы setting
            db.session.query(Setting).filter_by(group='setting').delete() 
            db.session.commit()
            return render_template('setting.html')
        data = {} #создаем словарь - в нем собираем данные и отправляем обратно в форму (так как разложить data = db.session.query(Setting).all() в шаблоне без переборов у меня не хватило ума... :(  , а так по-моему проще )
        if request.method == 'POST':
            for i in request.form.keys(): # обрабатываем каждый input по отдельности
                u = db.session.query(Setting).filter_by(group='setting').filter_by(key=i).first()
                if u: # если существует обновляем значением из form
                    u.value = request.form[i]                 
                    data[i] = request.form[i] # добавляем в словарь
                else:
                    db.session.add(Setting(group='setting', key=i, value=request.form[i])) # в противном случае создаем новое поле в базе данных и добавляем обратно в словарь
                    data[i] = request.form[i]
            db.session.commit() # Записать изменения в Базу данных
            return render_template('root/setting.html', data=data)  # как видите словарь ушел обратно к темплею, в указном выше примере показано как словарь раскладывается....
        u = db.session.query(Setting).filter_by(group='setting').all()   # Ну а пи простом GET запросе выгружаем все записи по группе, создаем словарь и отправляем на рендринг
        for i in u:        
            data[i.key]=i.value
        return render_template('root/setting.html', data=data)


    В результате:
    надо мне добавить в базу строку для хранения настройки какого-нибудь модуля
    - я добавляю соответственно только в теплее очередной input в его группу
    - и он сразу работает!!!!!

    Кстати таблица выглядит в models.py так:
    class Setting(db.Model):
        id = db.Column(db.Integer,primary_key = True)
        group = db.Column(db.String(32), nullable=False, default = 'NONE', index = True)
        key = db.Column(db.String(32), nullable=False, default = 'NONE', index = True)
        value = db.Column(db.Text, index = True)
        
        def get_id(self):
            return self.id
            
        def __unicode__(self):
            return self.id
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (22)