def edit(id, yymm, dd): if (not _check_yymmdd(yymm, dd=dd)): abort(400) person = Person.get(id) if person is None: abort(404) yymmdd = date(int(yymm[:4]), int(yymm[4:]), int(dd)) worklog = WorkLog.get(id, yymm, dd) item = dict( id=person.id, yymm=yymm, name=person.get_display(), yymmdd=yymmdd.strftime('%Y/%m/%d(%a)'), absence=worklog.absence, work_in=worklog.work_in if worklog.work_in is not None else '', work_out=worklog.work_out if worklog.work_out is not None else '') if worklog is None: abort(404) if person.staff: form = WorkLogFormStaff(obj=worklog) else: if worklog.absence: form = WorkLogFormRemarks(obj=worklog) else: form = WorkLogForm(obj=worklog) if form.validate_on_submit(): worklog.populate_form(form) try: db.session.add(worklog) try: db.session.commit() if (person.staff) and (worklog.value is None): update_worklog_value.delay(id, yymm, dd) if not person.staff: update_performlogs_enabled(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') except ValidationError as e: flash(e, 'danger') if person.staff: return render_template('worklogs/edit_staff.pug', id=id, yymm=yymm, form=form, item=item) return render_template('worklogs/edit.pug', id=id, yymm=yymm, form=form, item=item)
def edit(id, yymm, dd): if (not _check_yymmdd(yymm, dd=dd)): abort(400) person = Person.get(id) if person is None: abort(404) yymmdd = date(int(yymm[:4]), int(yymm[4:]), int(dd)) item = dict(name=person.get_display(), yymmdd=yymmdd.strftime('%Y/%m/%d(%a)')) performlog = PerformLog.get(id, yymm, dd) if performlog is None: abort(404) if person.is_idm(): form = PerformLogsFormIDM(obj=performlog) else: form = PerformLogsForm(obj=performlog) if form.validate_on_submit(): performlog.populate_form(form) try: performlog.validate() if performlog.absence_add: if bool(performlog.absencelog): performlog.absencelog.deleted = False else: absencelog = AbsenceLog() performlog.absencelog = absencelog else: if bool(performlog.absencelog): performlog.absencelog.deleted = True db.session.add(performlog) worklog = WorkLog.get(id, yymm, dd) performlog.sync_to_worklog(worklog) try: db.session.commit() update_performlogs_enabled.delay(id, yymm) update_absencelog_enabled.delay(id, yymm) update_worklog_value.delay(id, yymm, dd) flash('実績の更新ができました', 'success') return redirect(url_for('performlogs.index', id=id, yymm=yymm)) except Exception as e: db.session.rollback() flash('実績更新時にエラーが発生しました "{}"'.format(e), 'danger') except ValidationError as e: flash(e, 'danger') return render_template('performlogs/edit.pug', id=id, yymm=yymm, item=item, form=form)
def post(idm): person = Person.query.filter(Person.idm == idm).first() if person is None: return jsonify({"name": "該当者無し"}), 404 cache.set('person.id', None) cache.set('person.idm', None) now = datetime.now() yymm = now.strftime('%Y%m') dd = now.day hhmm = now.strftime('%H:%M') worklog = WorkLog.get(person.id, yymm, dd) if worklog is None: worklog = WorkLog(person_id=person.id, yymm=yymm, dd=dd) worklog.absence = False if not bool(worklog.work_in): worklog.work_in = hhmm else: worklog.work_out = hhmm worklog.value = None worklog.break_t = None worklog.over_t = None worklog.presented = True db.session.add(worklog) if not person.staff: performlog = PerformLog.get(person.id, yymm, dd) if performlog is None: performlog = PerformLog(person_id=person.id, yymm=yymm, dd=dd) performlog.sync_from_worklog(worklog) db.session.add(performlog) try: db.session.commit() update_worklog_value.delay(person.id, yymm, dd) if not person.staff: update_performlogs_enabled.delay(person.id, yymm) update_absencelog_enabled.delay(person.id, yymm) except Exception as e: db.session.rollback() return jsonify({"message": "{}".format(e)}), 500 if bool(worklog.work_out): result = dict( work_in = worklog.work_in, work_out = worklog.work_out ) return jsonify(result), 200 result = dict( work_in = worklog.work_in, work_out = '--:--' ) return jsonify(result), 201
def create(id, yymm, dd): if (not _check_yymmdd(yymm, dd=dd)): abort(400) person = Person.get(id) if person is None: abort(404) yymmdd = date(int(yymm[:4]), int(yymm[4:]), int(dd)) item = dict(id=person.id, yymm=yymm, name=person.get_display(), yymmdd=yymmdd.strftime('%Y/%m/%d(%a)')) if not person.staff: flash('職員以外は勤怠登録はできません。実績登録で行ってください ', 'danger') return redirect(url_for('worklogs.index', id=id, yymm=yymm)) form = WorkLogFormStaff() if form.validate_on_submit(): worklog = WorkLog(person_id=id, yymm=yymm, dd=dd) worklog.populate_form(form) try: db.session.add(worklog) try: db.session.commit() if (person.staff) and (worklog.value is None): update_worklog_value.delay(id, yymm, dd) flash('勤怠の追加ができました', 'success') return redirect(url_for('worklogs.index', id=id, yymm=yymm)) except Exception as e: db.session.rollback() flash('勤怠追加時にエラーが発生しました "{}"'.format(e), 'danger') except ValidationError as e: flash(e, 'danger') return render_template('worklogs/edit_staff.pug', id=id, yymm=yymm, form=form, item=item)
def update(id, yymm): update_performlogs_enabled.delay(id, yymm) update_absencelog_enabled.delay(id, yymm) update_worklog_value.delay(id, yymm) return redirect(url_for('performlogs.index', id=id, yymm=yymm))
def update(id, yymm): update_worklog_value.delay(id, yymm) return redirect(url_for('worklogs.index', id=id, yymm=yymm))