Exemplo n.º 1
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)
Exemplo n.º 2
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)
Exemplo n.º 3
0
def index(yymm):
    items = AbsenceLog.query.filter(AbsenceLog.yymm == yymm).order_by(
        AbsenceLog.yymm, AbsenceLog.dd).all()
    today = date_x.yymm_dd(yymm, 1)
    first = today
    last = first + relativedelta(months=1)
    prev = first - relativedelta(months=1)
    this = date.today()
    kw = dict(yymm=yymm,
              today=today.date,
              prev=prev.date.strftime('%Y%m'),
              next=last.date.strftime('%Y%m'),
              this=this.strftime('%Y%m'),
              items=items)
    return render_template('absencelogs/index.pug', **kw)
Exemplo n.º 4
0
def index(yymm):
    today = date_x.yymm_dd(yymm, 1)
    first = today
    last = first + relativedelta(months=1)
    prev = first - relativedelta(months=1)
    this = date.today()
    items = SummaryService.get_all(yymm)
    foot = make_foot(items)
    kw = dict(yymm=yymm,
              today=today.date,
              prev=prev.date.strftime('%Y%m'),
              next=last.date.strftime('%Y%m'),
              this=this.strftime('%Y%m'),
              items=items,
              foot=foot)
    return render_template('summarys/index.pug', **kw)
Exemplo n.º 5
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)
Exemplo n.º 6
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)
Exemplo n.º 7
0
def report(yymm):
    today = date_x.yymm_dd(yymm, 1)
    items = SummaryService.get_all(yymm)
    foot = make_foot(items)
    kw = dict(yymm=yymm, today=today.date, items=items, foot=foot)
    return render_template('summarys/report.pug', **kw)