Beispiel #1
0
def edit(id, yymm, dd):
    try:
        date_x.yymm_dd(yymm, dd)
    except ValueError:
        abort(400)
    person = Person.get_or_404(id)
    worklog = WorkLogService.get_or_new(id, yymm, dd)
    if person.staff:
        form = WorkLogFormStaff(obj=worklog)
    else:
        form = WorkLogForm(obj=worklog)
    if form.validate_on_submit():
        try:
            if person.staff:
                worklog.update_staff(form)
            else:
                worklog.update_no_staff(form)
            update_worklogs_value.delay(id, yymm, dd)
            if not person.staff:
                update_performlogs_enabled.delay(id, yymm)
            flash('勤怠の登録ができました', 'success')
            return redirect(url_for('worklogs.index', id=id, yymm=yymm))
        except Exception as e:
            db.session.rollback()
            flash('勤怠登録時にエラーが発生しました {}'.format(e), 'danger')
            app.logger.exception(e)
    kw = dict(
        id = id,
        yymm = yymm,
        dd = dd,
        form = form,
        item = worklog
    )
    return render_template('worklogs/edit.pug', **kw)
Beispiel #2
0
def edit(id, yymm, dd):
    try:
        date_x.yymm_dd(yymm, dd)
    except ValueError:
        abort(400)
    person = Person.get_or_404(id)
    if person.staff:
        flash('職員はこの画面はサポートしておりません', 'danger')
        return redirect(url_for('index'))
    performlog = PerformLogService.get_or_new(id, yymm, dd)
    if check_idm(person):
        form = PerformLogFormIDM(obj=performlog)
    else:
        form = PerformLogForm(obj=performlog)
    if form.validate_on_submit():
        try:
            performlog.update(form)
            update_worklogs_value.delay(id, yymm, dd)
            update_performlogs_enabled.delay(id, yymm)
            flash('実績の登録ができました', 'success')
            return redirect(url_for('performlogs.index', id=id, yymm=yymm))
        except Exception as e:
            db.session.rollback()
            flash('実績登録時にエラーが発生しました {}'.format(e), 'danger')
            app.logger.exception(e)
    kw = dict(id=id, yymm=yymm, dd=dd, form=form, item=performlog)
    return render_template('performlogs/edit.pug', **kw)
Beispiel #3
0
def index():
    today = date.today()
    yesterday1 = today - relativedelta(days=1)
    yesterday2 = today - relativedelta(days=2)
    yesterday3 = today - relativedelta(days=3)
    prev = today - relativedelta(months=1)
    Item = namedtuple(
        'Item',
        ('name', 'idm', 'staff', 'caption', 'url', 'caption1', 'url1',
         'caption2', 'url2', 'caption3', 'url3', 'url_performlogs',
         'utl_performlogs_report', 'url_performlogs_report1', 'url_worklogs',
         'url_worklogs_report', 'url_worklogs_report1'))
    if current_user.is_staff():
        persons = Person.query.filter(Person.enabled == True).order_by(
            Person.staff, Person.name).all()
    else:
        persons = (Person.get_or_404(current_user.person_id), )
    items = []
    for person in persons:
        item = Item(
            person.display_or_name,
            check_idm(person),
            person.staff,
            _get_caption(person, today),
            _get_url(person, today),
            _get_caption(person, yesterday1),
            _get_url(person, yesterday1),
            _get_caption(person, yesterday2),
            _get_url(person, yesterday2),
            _get_caption(person, yesterday3),
            _get_url(person, yesterday3),
            url_for('performlogs.index',
                    id=person.id,
                    yymm=today.strftime('%Y%m')),
            url_for('performlogs.report',
                    id=person.id,
                    yymm=today.strftime('%Y%m')),
            url_for('performlogs.report',
                    id=person.id,
                    yymm=prev.strftime('%Y%m')),
            url_for('worklogs.index',
                    id=person.id,
                    yymm=today.strftime('%Y%m')),
            url_for('worklogs.report',
                    id=person.id,
                    yymm=today.strftime('%Y%m')),
            url_for('worklogs.report',
                    id=person.id,
                    yymm=prev.strftime('%Y%m')),
        )
        items.append(item)
    return render_template('index.pug', items=items)
Beispiel #4
0
def destroy(id):
    item = Person.get_or_404(id)
    if bool(item.recipient):
        db.session.delete(item.recipient)
    db.session.delete(item)
    try:
        db.session.commit()
        flash('利用者の削除ができました', 'success')
    except Exception as e:
        db.session.rollback()
        flash('利用者削除時にエラーが発生しました {}'.format(e), 'danger')
        app.logger.exception(e)
    return redirect(url_for('persons.index'))
Beispiel #5
0
def edit(id):
    item = Person.get_or_404(id)
    form = PersonForm(obj=item)
    if form.validate_on_submit():
        form.populate_obj(item)
        db.session.add(item)
        try:
            db.session.commit()
            flash('利用者の変更ができました', 'success')
            return redirect(url_for('persons.index'))
        except Exception as e:
            db.session.rollback()
            flash('利用者変更時にエラーが発生しました {}'.format(e), 'danger')
            app.logger.exception(e)
    return render_template('persons/edit.pug', id=id, form=form)
Beispiel #6
0
def destroy(id, yymm, dd):
    person = Person.get_or_404(id)
    if person.staff:
        flash('職員はこの画面はサポートしておりません', 'danger')
        return redirect(url_for('index'))
    performlog = PerformLogService.get_or_404((id, yymm, dd))
    worklog = WorkLogService.get_or_404((id, yymm, dd))
    if not check_idm(person):
        if bool(performlog.work_in) or bool(performlog.work_out) or bool(
                worklog.value):
            flash('利用者のICカードをタッチしてください', 'danger')
            return redirect(url_for('performlogs.index', id=id, yymm=yymm))
    try:
        performlog.delete()
        update_performlogs_enabled.delay(id, yymm)
        flash('実績の削除ができました', 'success')
    except Exception as e:
        db.session.rollback()
        flash('実績削除時にエラーが出ました {}'.format(e), 'danger')
        app.logger.exception(e)
    return redirect(url_for('performlogs.index', id=id, yymm=yymm))
Beispiel #7
0
def index(id, yymm):
    person = Person.get_or_404(id)
    if person.staff:
        flash('職員はこの画面はサポートしておりません', 'danger')
        return redirect(url_for('index'))
    today = date_x.yymm_dd(yymm, 1)
    first = today
    last = first + relativedelta(months=1)
    prev = first - relativedelta(months=1)
    this = date.today()
    items = []
    while first.date < last.date:
        ym = first.date.strftime('%Y%m')
        d = first.date.day
        performlog = PerformLogService.get_or_new(id, ym, d)
        items.append(performlog)
        first += relativedelta(days=1)
    Foot = namedtuple('Foot', ('presented', 'pickup', 'visit', 'meal',
                               'medical', 'experience', 'outemp', 'outside'))
    foot = Foot(
        len([i for i in items if i.presented]),
        len([i for i in items if i.pickup_in]) +
        len([i for i in items if i.pickup_out]),
        len([i for i in items if bool(i.visit) and i.visit > 0]),
        len([i for i in items if i.meal]),
        len([i for i in items if bool(i.medical) and i.medical > 0]),
        len([i for i in items if bool(i.experience) and i.experience > 0]),
        len([i for i in items if bool(i.company_id)]),
        len([i for i in items if i.outside]),
    )
    kw = dict(id=id,
              yymm=yymm,
              today=today.date,
              name=person.display_or_name,
              prev=prev.date.strftime('%Y%m'),
              next=last.date.strftime('%Y%m'),
              this=this.strftime('%Y%m'),
              items=items,
              foot=foot)
    return render_template('performlogs/index.pug', **kw)
Beispiel #8
0
def index(id, yymm):
    person = Person.get_or_404(id)
    today = date_x.yymm_dd(yymm, 1)
    first = today
    last = first + relativedelta(months=1)
    prev = first - relativedelta(months=1)
    this = date.today()
    items = []
    while first.date < last.date:
        ym = first.date.strftime('%Y%m')
        d = first.date.day
        worklog = WorkLogService.get_or_new(id, ym, d)
        items.append(worklog)
        first += relativedelta(days=1)
    Foot = namedtuple('Foor', ('presented', 'value', 'break_t', 'over_t', 'absence', 'late', 'leave'))
    foot = Foot(
        len([i for i in items if i.presented]),
        sum([i.value for i in items if i.value is not None]),
        sum([i.break_t for i in items if i.break_t is not None]),
        sum([i.over_t for i in items if i.over_t is not None]),
        len([i for i in items if i.absence]),
        len([i for i in items if i.late]),
        len([i for i in items if i.leave]),
    )
    kw = dict(
        id = id,
        yymm = yymm,
        staff = person.staff,
        name = person.name,
        today = today.date,
        this = this.strftime('%Y%m'),
        prev = prev.date.strftime('%Y%m'),
        next = last.date.strftime('%Y%m'),
        items = items,
        foot = foot
    )
    return render_template('worklogs/index.pug', **kw)