def task_a(o_id): form = forms.Task_a(session.get('lang')) if data.Office.query.filter_by(id=o_id).first() is None: flash(get_lang(4), "danger") return redirect(url_for("core.root")) if current_user.role_id == 3 and data.Operators.query.filter_by(id=current_user.id).first() is None: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if current_user.role_id == 3 and o_id != data.Operators.query.filter_by(id=current_user.id).first().office_id: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if form.validate_on_submit(): if data.Task.query.filter_by(name=form.name.data).first() is not None: flash(get_lang(43), "danger") return redirect(url_for("manage_app.task_a")) db.session.add(data.Task(form.name.data, o_id)) db.session.commit() flash(get_lang(52), "info") return redirect(url_for("manage_app.offices", o_id=o_id)) return render_template("task_add.html", form=form, offices=data.Office.query, serial=data.Serial.query, tasks=data.Task.query, operators=data.Operators.query, navbar="#snb1", dropdown="#dropdown-lvl" + str(o_id), hash="#t3" + str(o_id), ptitle="Add new task")
def all_offices(): if current_user.role_id == 3: flash(get_lang(17), "danger") return redirect(url_for('core.root')) page = request.args.get('page', 1, type=int) if page > int(data.Serial.query.count() / 10) + 1: flash(get_lang(4), 'danger') return redirect(url_for('manage_app.all_offices')) pagination = data.Serial.query.order_by( data.Serial.p, data.Serial.timestamp.desc ()).paginate(page, per_page=10, error_out=False) return render_template('all_offices.html', officesp=pagination.items, pagination=pagination, len=len, ptitle="All Offices", serial=data.Serial.query, offices=data.Office.query, tasks=data.Task.query, users=data.User.query, operators=data.Operators.query, navbar="#snb1", hash="#da2")
def serial_rt(t_id): if data.Task.query.filter_by(id=t_id).first() is None: flash(get_lang(54), "danger") return redirect(url_for("manage_app.all_offices")) sr = data.Serial.query.filter_by(task_id=t_id) if current_user.role_id == 3 and data.Operators.query.filter_by( id=current_user.id).first() is None: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if current_user.role_id == 3 and t_id != data.Operators.query.filter_by( id=current_user.id).first().office_id: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if sr.first() is None: flash(get_lang(23), "danger") return redirect(url_for("manage_app.task", o_id=t_id)) for f in sr: w = data.Waiting.query.filter_by(office_id=f.office_id, number=f.number).first() db.session.delete(f) if w is not None: db.session.delete(w) db.session.commit() flash(get_lang(24), "info") return redirect(url_for("manage_app.task", o_id=t_id))
def task_d(t_id): task = data.Task.query.filter_by(id=t_id).first() if task is None: flash(get_lang(4), "danger") return redirect(url_for("core.root")) if current_user.role_id == 3 and oid is data.Operators.query.filter_by(id=current_user.id).first(): flash(get_lang(17), "danger") return redirect(url_for('core.root')) if current_user.role_id == 3 and task.office_id != data.Operators.query.filter_by(id=current_user.id).first().office_id: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if data.Serial.query.filter(and_(data.Serial.task_id == t_id, data.Serial.number != 100)).count() > 0: flash(get_lang(46), "danger") return redirect(url_for("manage_app.task", o_id=t_id)) evil = data.Serial.query.filter_by(task_id=t_id, number=100).first() if evil is not None: db.session.delete(evil) db.session.delete(data.Task.query.filter_by(id=t_id).first()) db.session.commit() flash(get_lang(51), "info") return redirect(url_for("manage_app.offices", o_id=task.office_id))
def office_a(): if current_user.role_id == 3: flash(get_lang(17), "danger") return redirect(url_for('core.root')) form = forms.Offices_a(defLang=session.get('lang')) if form.validate_on_submit(): if data.Office.query.filter_by(name=form.name. data).first() is not None: flash(get_lang(42), "danger") return redirect(url_for("manage_app.all_offices")) db.session.add(data.Office(form.name.data, form.prefix.data.upper())) db.session.commit() flash(get_lang(45), "info") return redirect(url_for("manage_app.all_offices")) return render_template("office_add.html", form=form, ptitle="Adding new office", offices=data.Office.query, tasks=data.Task.query, operators=data.Operators.query, navbar="#snb1", hash="#da3", serial=data.Serial.query)
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'))
def offices(o_id): ofc = data.Office.query.filter_by(id=o_id).first() if ofc is None: flash(get_lang(4), "danger") return redirect(url_for("manage_app.all_offices")) if current_user.role_id == 3 and data.Operators.query.filter_by(id=current_user.id).first() is None: flash(get_lang(17), "danger") return redirect(url_for('core.root')) form = forms.Offices_a(upd=ofc.prefix, defLang=session.get('lang')) page = request.args.get('page', 1, type=int) if page > int(data.Serial.query.filter_by(office_id=o_id).count() / 10) + 1: flash(get_lang(4), 'danger') return redirect(url_for('manage_app.offices', o_id=o_id)) pagination = data.Serial.query.filter_by( office_id=o_id).order_by(data. Serial.p).order_by(data.Serial .number.desc()).paginate( page, per_page=10, error_out=False) if form.validate_on_submit(): mka = data.Office.query.filter_by(name=form.name.data) for f in mka: if f.id != o_id: flash(get_lang(42), "danger") return redirect(url_for("manage_app.offices", o_id=o_id)) ofc.name = form.name.data ofc.prefix = form.prefix.data.upper() db.session.commit() flash(get_lang(44), "info") return redirect(url_for('manage_app.offices', o_id=o_id)) form.name.data = ofc.name form.prefix.data = ofc.prefix.upper() return render_template('offices.html', form=form, officesp=pagination.items, pagination=pagination, ptitle="Office : " + ofc.prefix + str(ofc.name), o_id=o_id, ooid=ofc, len=len, serial=data.Serial.query, offices=data.Office.query, tasks=data.Task.query, users=data.User.query, operators=data.Operators.query, navbar="#snb1", dropdown="#dropdown-lvl" + str(o_id), hash="#t1" + str(o_id))
def serial_ra(): if data.Office.query.first() is None: flash(get_lang(54), "danger") return redirect(url_for("manage_app.all_offices")) if current_user.role_id == 3: flash(get_lang(17), "danger") return redirect(url_for('core.root')) sr = data.Serial.query if sr.first() is None: flash(get_lang(21), "danger") return redirect(url_for("manage_app.all_offices")) for f in sr: w = data.Waiting.query.filter_by(office_id=f.office_id, number=f.number).first() db.session.delete(f) if w is not None: db.session.delete(w) db.session.commit() flash(get_lang(22), "info") return redirect(url_for("manage_app.all_offices"))
def task(o_id): form = forms.Task_a(session.get('lang')) task = data.Task.query.filter_by(id=o_id).first() if task is None: flash(get_lang(4), "danger") return redirect(url_for("core.root")) if current_user.role_id == 3 and data.Operators.query.filter_by(id=current_user.id).first() is None: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if current_user.role_id == 3 and task.office_id != data.Operators.query.filter_by(id=current_user.id).first().office_id: flash(get_lang(17), "danger") return redirect(url_for('core.root')) ofc = data.Office.query.filter_by(id=task.office_id).first() page = request.args.get('page', 1, type=int) if page > int(data.Serial.query.filter_by(task_id=o_id).count() / 10) + 1: flash(get_lang(4), 'danger') return redirect(url_for('manage_app.task', o_id=o_id)) pagination = data.Serial.query.filter_by( task_id=o_id).order_by(data.Serial .timestamp .desc()).paginate( page, per_page=10, error_out=False) if form.validate_on_submit(): mka = data.Task.query.filter_by(name=form.name.data) for f in mka: if f.id != o_id: flash(get_lang(43), "danger") return redirect(url_for("manage_app.task", o_id=o_id)) task.name = form.name.data db.session.add(task) db.session.commit() flash(get_lang(50), "info") return redirect(url_for("manage_app.task", o_id=o_id)) if not form.errors: form.name.data = task.name return render_template('tasks.html', form=form, ptitle="Task : " + task.name, tasksp=pagination.items, pagination=pagination, serial=data.Serial.query, o_id=o_id, len=len, offices=data.Office.query, tasks=data.Task.query, users=data.User.query, operators=data.Operators.query, task=task, navbar="#snb1", dropdown="#dropdown-lvl" + str(task.office_id), hash="#tt" + str(task.office_id) + str(o_id))
def office_da(): if current_user.role_id == 3: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if data.Office.query.count() <= 0: flash(get_lang(53), "danger") return redirect(url_for("manage_app.all_offices")) if data.Serial.query.count() > data.Office.query.count(): flash(get_lang(46), "danger") return redirect(url_for("manage_app.all_offices")) for s in data.Serial.query: db.session.delete(s) for f in data.Office.query: for t in data.Task.query.filter_by(office_id=f.id): db.session.delete(t) db.session.delete(f) db.session.commit() flash(get_lang(47), "info") return redirect(url_for("manage_app.all_offices"))
def office_d(o_id): if current_user.role_id == 3: flash(get_lan(17), "danger") return redirect(url_for('core.root')) if data.Office.query.filter_by(id=o_id).first() is None: flash(get_lang(4), "danger") return redirect(url_for("manage_app.offices", o_id=o_id)) if data.Serial.query.filter(and_(data.Serial.office_id == o_id, data.Serial.number != 100) ).count() > 0: flash(get_lang(46), "danger") return redirect(url_for("manage_app.offices", o_id=o_id)) for t in data.Task.query.filter_by(office_id=o_id): if t is not None: db.session.delete(t) db.session.delete(data.Office.query.filter_by(id=o_id).first()) db.session.commit() flash(get_lang(47), "info") return redirect(url_for("manage_app.all_offices"))
def root(n=None): b = None form = forms.Login(session.get('lang')) if n is not None and n == 'a': n = True elif n is not None and n == 'b': b = True elif n is None: n = False else: flash(get_lang(4), "danger") return redirect(url_for('core.root')) if data.User.query.first() is None: flash(get_lang(4), "danger") return redirect(url_for('core.root')) # Check if default password and account dpass = False if data.User.query.filter_by(id=1).first().verify_password('admin'): dpass = True if form.validate_on_submit(): if current_user.is_authenticated: flash(get_lang(4), "danger") return redirect(url_for('core.root')) user = data.User.query.filter_by(name=form.name.data).first() if user is not None: if user.verify_password(form.password.data): if form.rm.data: login_user(user, remember=True) else: login_user(user) flash(get_lang(16), "info") if b: s = str(session.get('next_url', '/')) session['next_url'] = None return redirect(s) else: if current_user.role_id == 3: return redirect( url_for('manage_app.offices', o_id=data.Operators.query.filter_by( id=current_user.id).first().office_id)) else: return redirect(url_for('manage_app.manage')) flash(get_lang(17), "danger") return redirect(url_for("core.root", n='a')) flash(get_lang(17), "danger") return redirect(url_for("core.root", n='a')) return render_template("index.html", operators=data.Operators.query, ptitle="Free Queue Manager", form=form, n=n, dpass=dpass)
def manage(): ofc = data.Operators.query.filter_by(id=current_user.id).first() if current_user.role_id == 3 and ofc is None: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if ofc is None: ofc = 0 else: ofc = ofc.id return render_template("manage.html", ptitle="Management", navbar="#snb1", ooid=ofc, serial=data.Serial.query, offices=data.Office.query, operators=data.Operators.query, tasks=data.Task.query)
def search(): if current_user.role_id == 3: flash(get_lang(17), "danger") return redirect(url_for('core.root')) form = forms.Search_s(session.get('lang')) if form.validate_on_submit() or request.args.get("page"): from sqlalchemy.sql import and_ terms = [] counter = 0 global pll if request.args.get("page"): ll = pll else: ll = [form.number.data, form.date.data, form.tl.data] pll = ll for l in ll: counter += 1 if l is not None: if counter == 1: if len(str(l)) >= 2: terms.append("number=" + str(ll[0])) elif counter == 2: if len(str(l)) >= 2: terms.append( "date='" + ll[1].strftime('%Y-%m-%d') + "'") elif counter == 3: if l != 0: terms.append("office_id=" + str(ll[2])) if len(terms) == 0: flash(get_lang(48), "danger") return redirect(url_for("manage_app.search")) serials = data.Serial.query.filter(and_(*terms)) if serials.first() is None or serials.order_by(data.Serial.id.desc()).first() == 100: flash(get_lang(49), "info") return redirect(url_for("manage_app.search")) page = request.args.get('page', 1, type=int) if page > int(data.Serial.query.filter(and_(*terms)).count() / 10) + 1: flash(get_lang(4), 'danger') return redirect(url_for('manage_app.search')) pagination = data.Serial.query.filter( and_(*terms)).order_by(data.Serial .timestamp .desc()).paginate( page, per_page=10, error_out=False) return render_template("search_r.html", serials=serials, ptitle="Tickets search", offices=data.Office.query, tasks=data.Task.query, users=data.User.query, pagination=pagination, serialsp=pagination.items, operators=data.Operators.query, len=len, navbar="#snb1", hash="#da1", serial=data.Serial.query) return render_template("search.html", form=form, ptitle="Tickets search", offices=data.Office.query, tasks=data.Task.query, operators=data.Operators.query, navbar="#snb1", hash="#da1", serial=data.Serial.query)
def serial(t_id): ex_functions.mse() form = forms.Touch_name(session.get('lang')) tsk = data.Task.query.filter_by(id=t_id).first() if tsk is None: flash(get_lang(4), "danger") return redirect(url_for("core.root")) if not form.validate_on_submit() and data.Touch_store.query.first().n: ts = data.Touch_store.query.filter_by(id=0).first() tnumber = False if data.Printer.query.first().value == 2: tnumber = True return render_template("touch.html", title=ts.title, tnumber=tnumber, ts=ts, done=False, bgcolor=ts.bgcolor, ptitle="Touch Screen - Enter name ", alias=data.Aliases.query.first(), a=4, dire='multimedia/', form=form) nm = form.name.data n = True if data.Touch_store.query.first().n else False o_id = data.Task.query.filter_by(id=t_id).first().office_id ln = data.Serial.query.filter_by(office_id=o_id).order_by( data.Serial.timestamp.desc()).first().number sr = data.Serial.query.filter_by(number=ln + 1, office_id=o_id, task_id=t_id).first() if sr is None: if n: # registered db.session.add(data.Serial(ln + 1, o_id, t_id, nm, True)) else: # printed db.session.add(data.Serial(ln + 1, o_id, t_id, None, False)) # adding printer support q = data.Printer.query.first() ppt = data.Task.query.filter_by(id=t_id).first() oot = data.Office.query.filter_by(id=o_id).first() tnum = data.Serial.query.filter_by(office_id=o_id, p=False).count() cuticket = data.Serial.query.filter_by(office_id=o_id, p=False).first() tnum -= 1 langu = data.Printer.query.first().langu # to solve Linux printer permissions if os.name == 'nt': # to solve windows shared printers import win_printer from pythoncom import CoInitialize as coli coli() chk = win_printer.check_win_p() chl = len(win_printer.listpp()) if chl >= 1 and chk is True: if langu == 'ar': win_printer.printwin_ar( q.product, oot.prefix + '.' + str(ln + 1), oot.prefix + str(oot.name), tnum, ppt.name, oot.prefix + '.' + str(cuticket.number), ip=current_app.config['LOCALADDR']) else: win_printer.printwin( q.product, oot.prefix + '.' + str(ln + 1), oot.prefix + str(oot.name), tnum, ppt.name, oot.prefix + '.' + str(cuticket.number), l=langu, ip=current_app.config['LOCALADDR']) # FIX Issue printer on windows p = True else: p = None else: # To Fix 1: Fail safe drivers. [FIXED] try: p = ppp.assign(int(q.vendor), int(q.product), int(q.in_ep), int(q.out_ep)) except Exception: p = None if p is None: flash(get_lang(19), 'danger') flash(get_lang(20), "info") if os.name == 'nt': flash(get_lang(57), "info") elif platform == "linux" or platform == "linux2": flash(get_lang(58), "info") return redirect(url_for('cust_app.ticket')) if os.name != 'nt': if langu == 'ar': ppp.printit_ar(p, oot.prefix + '.' + str(ln + 1), oot.prefix + str(oot.name), tnum, u'' + ppt.name, oot.prefix + '.' + str(cuticket.number)) else: ppp.printit(p, oot.prefix + '.' + str(ln + 1), oot.prefix + str(oot.name), tnum, u'' + ppt.name, oot.prefix + '.' + str(cuticket.number), lang=langu) db.session.commit() else: flash(get_lang(4), 'danger') return redirect(url_for('core.root')) for a in range(data.Waiting.query.count(), 11): for b in data.Serial.query.filter_by(p=False).order_by( data.Serial.timestamp): if data.Waiting.query.filter_by(office_id=b.office_id, number=b.number, task_id=b.task_id).first() is None: db.session.add( data.Waiting(b.number, b.office_id, b.task_id, nm, n)) db.session.commit() return redirect(url_for("core.touch", a=1))
def pull(o_id): # FIX: pulling tickets by task_id instead of office_id # to allow for pulling form specific office if data.Task.query.filter_by(id=o_id).first() is None: flash(get_lang(4), "danger") return redirect(url_for("manage_app.task", o_id=o_id)) if current_user.role_id == 3 and data.Operators.query.filter_by( id=current_user.id).first() is None: flash(get_lang(17), "danger") return redirect(url_for('core.root')) if current_user.role_id == 3 and data.Task.query.filter_by( id=o_id).first().office_id != data.Operators.query.filter_by( id=current_user.id).first().office_id: flash(get_lang(17), "danger") return redirect(url_for('core.root')) # Loading up the 10 waiting list if data.Serial.query.filter_by(p=False).count() >= 0: for a in range(data.Waiting.query.count(), 11): for b in data.Serial.query.filter_by(p=False).order_by( data.Serial.timestamp): if data.Waiting.query.filter_by( office_id=b.office_id, number=b.number, task_id=b.task_id).first() is None: db.session.add( data.Waiting(b.number, b.office_id, b.task_id, b.name, b.n)) db.session.commit() else: flash(get_lang(25), "danger") return redirect(url_for("manage_app.task", o_id=o_id)) cs = data.Waiting.query.filter_by(task_id=o_id).first() if cs is None: flash(get_lang(25), "danger") return redirect(url_for("manage_app.task", o_id=o_id)) # Fix: pulling tickets by task_id instead of office_id # have to switch positions theTask = data.Task.query.filter_by(id=o_id).first() ocs = data.Office.query.filter_by(id=theTask.office_id).first() toc = theTask.name # adding to current waiting cl = data.Waiting_c.query.first() cl.ticket = ocs.prefix + str(cs.number) cl.oname = ocs.prefix + str(ocs.name) cl.tname = toc cl.n = cs.n cl.name = cs.name data.db.session.add(cl) db.session.commit() # Adding text to speech lang = data.Display_store.query.first() tnumber = data.Printer.query.first().value office = cl.oname # --- Reassigning cs seems to fix it # Fix: pulling tickets by task_id instead of office_id # modifying removing from waiting with task_id cs = data.Waiting.query.filter_by(task_id=o_id).first() if cs is None: flash(get_lang(25), "danger") return redirect(url_for("manage_app.task", o_id=o_id)) sr = data.Serial.query.filter_by(office_id=cs.office_id, task_id=cs.task_id, number=cs.number).first() if sr is None: flash(get_lang(25), "danger") return redirect(url_for("manage_app.task", o_id=o_id)) sr.p = True sr.pdt = datetime.utcnow() # Fix: adding pulled by feature to tickets sr.pulledBy = current_user.id db.session.add(sr) db.session.delete(cs) db.session.commit() flash(get_lang(26), "info") return redirect(url_for("manage_app.task", o_id=o_id))