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