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')
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_()
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')
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
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