예제 #1
0
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")
예제 #2
0
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")
예제 #3
0
파일: core.py 프로젝트: Firelinux/FQM
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))
예제 #4
0
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))
예제 #5
0
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)
예제 #6
0
파일: __init__.py 프로젝트: Firelinux/FQM
 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'))
예제 #7
0
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))
예제 #8
0
파일: core.py 프로젝트: Firelinux/FQM
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"))
예제 #9
0
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))
예제 #10
0
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"))
예제 #11
0
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"))
예제 #12
0
파일: core.py 프로젝트: Firelinux/FQM
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
파일: core.py 프로젝트: Firelinux/FQM
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))
예제 #16
0
파일: core.py 프로젝트: Firelinux/FQM
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))