コード例 #1
0
ファイル: customize.py プロジェクト: yassin121/FQM
def ticket():
    """ view of ticket customization """
    if os.name == 'nt':
        from win_printer import listpp
        lll = listpp()
    else:
        lll = listp()
    ex_functions.mse()
    if current_user.role_id != 1:
        flash('Error: only administrator can access the page', 'danger')
        return redirect(url_for('core.root'))
    form = forms.Printer_f(lll, session.get('lang'))
    tc = data.Touch_store.query.first()
    pr = data.Printer.query.first()
    if form.validate_on_submit():
        if form.kind.data == 1:
            tc.n = True
            pr.value = form.value.data
            pr.active = False
            db.session.add(tc)
            db.session.add(pr)
        else:
            if form.printers.data == "00":
                flash('Error: you must have available printer, to use printed',
                      'danger')
                return redirect(url_for('cust_app.ticket'))
            f = form.printers.data
            pr.product = f
            if os.name != 'nt':
                f = f.split('_')
                pr.vendor = f[0]
                pr.product = f[1]
                pr.in_ep = int(f[2])
                pr.out_ep = int(f[3])
            tc.n = False
            pr.active = True
            pr.langu = form.langu.data
            pr.value = form.value.data
            db.session.add(tc)
            db.session.add(pr)
        db.session.commit()
        flash('Notice: settings have been updated .', 'info')
        return redirect(url_for('cust_app.ticket'))
    if not form.errors:
        if tc.n:
            form.kind.data = 1
        else:
            form.kind.data = 2
        form.printers.data = pr.vendor + '_' + pr.product
        form.printers.data += '_' + str(pr.in_ep) + '_' + str(pr.out_ep)
        form.langu.data = pr.langu
        form.value.data = pr.value
    return render_template('ticket.html',
                           navbar='#snb2',
                           ptitle='Tickets',
                           vtrue=data.Vid.query.first().enable,
                           strue=data.Slides_c.query.first().status,
                           form=form,
                           hash='#da7')
コード例 #2
0
ファイル: __init__.py プロジェクト: Firelinux/FQM
def run_app():
    app = create_app()
    create_db(app)
    appg = QApplication(sys.argv)
    if os.name != 'nt':
        # !!! it did not work creates no back-end available error !!!
        # !!! strange bug , do not remove !!!
        if listp():
            pass
    window = NewWindow(app)

    # switching the language with template folder path
    @app.route('/lang_switch/<lang>')
    def lang_switch(lang):
        session['lang'] = lang
        if current_user.is_authenticated:
            return redirect(str(request.referrer))
        return redirect(url_for('core.root'))
    @app.before_first_request
    def defLanguage():
        if session.get('lang') not in ['en', 'ar', 'fr', 'it', 'es']:
            session['lang'] = 'en'


    # Adding error handlers on main app instance
    @app.errorhandler(404)
    @app.errorhandler(500)
    @app.errorhandler(413)
    def page_not_found(error):
        if error == 413:
            flash(get_lang(55), "danger")
            if current_user.is_authenticated:
                return redirect(url_for('cust_app.multimedia', nn=1))
            return redirect(url_for('core.root'))
        flash(get_lang(56), "danger")
        return redirect(url_for('core.root'))
    # Injecting default variables to all templates

    @app.context_processor
    def inject_vars():
        # adding language support var
        ar = False
        if session.get('lang') == 'AR':
            ar = True
        # modifing side bar spacing for specific paths
        path = request.path
        adml = ['/users', '/user_a', '/admin_u', '/user_u',
                '/csvd', '/settings']
        adme = False
        if path in adml or path[:7] in adml or path[:5] in adml:
            adme = True
        return dict(path=path,
                    adme=adme, brp=Markup("<br>"), ar=ar,
                    version=version, str=str, defLang=session.get('lang'))
    QCoreApplication.processEvents()
    appg.exec_()
コード例 #3
0
def ticket():
    """ view of ticket customization """
    printers = execute('wmic printer get sharename',
                       parser='\n',
                       encoding='utf-16')[1:] if os.name == 'nt' else listp()
    form = forms.Printer_f(printers, session.get('lang'))
    tc = data.Touch_store.query.first()
    pr = data.Printer.query.first()

    if form.validate_on_submit():
        if form.kind.data == 1:
            tc.n = True
            pr.value = form.value.data
            pr.active = False
            db.session.add(tc)
            db.session.add(pr)
        else:
            if form.printers.data == "00":
                flash('Error: you must have available printer, to use printed',
                      'danger')
                return redirect(url_for('cust_app.ticket'))
            f = form.printers.data
            pr.product = f
            if os.name != 'nt':
                f = f.split('_')
                pr.vendor = f[0]
                pr.product = f[1]
                pr.in_ep = int(f[2])
                pr.out_ep = int(f[3])
            tc.n = False
            pr.active = True
            pr.langu = form.langu.data
            pr.value = form.value.data
            pr.scale = form.scale.data
            db.session.add(tc)
            db.session.add(pr)
        db.session.commit()
        flash('Notice: settings have been updated .', 'info')
        return redirect(url_for('cust_app.ticket'))
    if not form.errors:
        if tc.n:
            form.kind.data = 1
        else:
            form.kind.data = 2
        form.printers.data = pr.vendor + '_' + pr.product
        form.printers.data += '_' + str(pr.in_ep) + '_' + str(pr.out_ep)
        form.langu.data = pr.langu
        form.value.data = pr.value
        form.scale.data = pr.scale
    return render_template('ticket.html',
                           navbar='#snb2',
                           page_title='Tickets',
                           vtrue=data.Vid.query.first().enable,
                           strue=data.Slides_c.query.first().status,
                           form=form,
                           hash='#da7')
コード例 #4
0
def bundle_app(config={}):
    ''' Create a Flask app, set settings, load extensions, blueprints and create database. '''
    app = create_app(config)
    create_db(app)

    if os.name != 'nt':
        # !!! it did not work creates no back-end available error !!!
        # !!! strange bug , do not remove !!!
        if listp():
            pass

    @app.route('/language_switch/<language>')
    def language_switch(language):
        ''' Endpoint to switch the default language.

        Parameters
        ----------
            language: str
                language short form to switch to.
        '''
        session['lang'] = language

        if current_user.is_authenticated:
            return redirect(str(request.referrer))

        return redirect(url_for('core.root'))

    @app.before_first_request
    def default_language():
        ''' Set the default language before the first request. '''
        if session.get('lang') not in list(SUPPORTED_LANGUAGES.keys()):
            session['lang'] = 'en'

    @app.errorhandler(404)
    @app.errorhandler(500)
    @app.errorhandler(413)
    def page_not_found(error):
        ''' Adding error handlers on main app instance. '''
        if getattr(error, 'code', None) == 413:
            flash('Error: file uploaded is too large ', 'danger')
            if current_user.is_authenticated:
                return redirect(url_for('cust_app.multimedia', nn=1))
            return redirect(url_for('core.root'))

        getattr(error, 'code', None) != 404 and log_error(error)
        flash('Error: something wrong , or the page is non-existing', 'danger')
        return redirect(url_for('core.root'))

    @app.route('/nojs/<int:enabled_js>')
    def nojs(enabled_js):
        ''' Handle JavaScript disabled or not supported. '''
        if enabled_js == 1:
            next_url = session.get('next_url', '/')

            if next_url != '/':
                return redirect(next_url)

            return redirect(url_for('core.root'))
        return render_template('nojs.html',
                               page_title='Javascript is disabled')

    @app.context_processor
    def inject_vars():
        ''' Injecting default variables to all templates. '''
        ar = session.get('lang') == 'AR'  # adding language support var

        # modifying side bar spacing for specific paths
        path = request.path
        admin_routes = [
            '/users', '/user_a', '/admin_u', '/user_u', '/csv', '/settings'
        ]
        admin_route = any([
            path in admin_routes, path[:7] in admin_routes, path[:5]
            in admin_routes
        ])

        return dict(path=path,
                    notifications=Settings.query.first().notifications,
                    adme=admin_route,
                    brp=Markup('<br>'),
                    ar=ar,
                    current_path=request.path,
                    version=VERSION,
                    str=str,
                    defLang=session.get('lang'),
                    getattr=getattr,
                    checkId=lambda id, records: id in [i.id for i in records])

    return app
コード例 #5
0
ファイル: main.py プロジェクト: picsldev/FQM
def bundle_app(config={}):
    ''' Create a Flask app, set settings, load extensions, blueprints and create database. '''
    app = create_app(config)

    # NOTE: avoid creating or interacting with the database during migration
    if not app.config.get('MIGRATION', False):
        create_db(app, testing=app.config.get('TESTING', False))
        start_tasks(app)

    if os.name != 'nt':
        # !!! it did not work creates no back-end available error !!!
        # !!! strange bug , do not remove !!!
        if listp():
            pass

    @app.route('/language_switch/<language>')
    def language_switch(language):
        ''' Endpoint to switch the default language.

        Parameters
        ----------
            language: str
                language short form to switch to.
        '''
        session['lang'] = language

        if current_user.is_authenticated:
            return redirect(str(request.referrer))

        return redirect(url_for('core.root'))

    @app.before_first_request
    def default_language():
        ''' Set the default language before the first request. '''
        if session.get('lang') not in list(SUPPORTED_LANGUAGES.keys()):
            session['lang'] = 'en'

    @app.errorhandler(404)
    @app.errorhandler(500)
    @app.errorhandler(413)
    def page_not_found(error):
        ''' Adding error handlers on main app instance. '''
        if getattr(error, 'code', None) == 413:
            flash('Error: file uploaded is too large ', 'danger')
            if current_user.is_authenticated:
                return redirect(url_for('cust_app.multimedia', nn=1))
            return redirect(url_for('core.root'))

        getattr(error, 'code', None) != 404 and log_error(error)
        flash('Error: something wrong , or the page is non-existing', 'danger')
        return redirect(url_for('core.root'))

    @app.route('/nojs/<int:enabled_js>')
    def nojs(enabled_js):
        ''' Handle JavaScript disabled or not supported. '''
        if enabled_js == 1:
            next_url = session.get('next_url', '/')

            if next_url != '/':
                return redirect(next_url)

            return redirect(url_for('core.root'))
        return render_template('nojs.html',
                               page_title='Javascript is disabled')

    def moment_wrapper(moment):
        ''' Temproray moment wrapper to add `.toTime()` and `.toNow()`
            TODO: Remove and update Flask-Moment when PR's mereged.
        '''
        def toTime(*args, **kwargs):
            content = str(moment.fromTime(*args, **kwargs))

            return Markup(content.replace('from(', 'to('))

        def toNow(*args, **kwargs):
            content = str(moment.fromNow(*args, **kwargs))

            return Markup(content.replace('fromNow(', 'toNow('))

        setattr(moment, 'toTime', toTime)
        setattr(moment, 'toNow', toNow)
        return moment

    @app.context_processor
    def inject_vars():
        ''' Injecting default variables to all templates. '''
        ar = session.get('lang') == 'AR'  # adding language support var

        # modifying side bar spacing for specific paths
        path = request.path
        admin_routes = [
            '/users', '/user_a', '/admin_u', '/user_u', '/csv', '/settings'
        ]
        admin_route = any([
            path in admin_routes, path[:7] in admin_routes, path[:5]
            in admin_routes
        ])

        return dict(path=path,
                    adme=admin_route,
                    brp=Markup('<br>'),
                    ar=ar,
                    current_path=request.path,
                    version=VERSION,
                    str=str,
                    defLang=session.get('lang'),
                    getattr=getattr,
                    settings=Settings.get(),
                    checkId=lambda id, records: id in [i.id for i in records],
                    Serial=Serial,
                    offices=Office.query.all(),
                    moment_wrapper=moment_wrapper)

    return app