def list_timeblocks(): sf = SessionFactory.new() rows = sf.query(ValidWorkTimeBlock.id, ValidWorkTimeBlock.name, ValidWorkTimeBlock.start_time, ValidWorkTimeBlock.end_time).all() items = list() for row in rows: items.append((row[0], row[1], Utils.format_time(row[2]), Utils.format_time(row[3]))) return items
def before_add(self, entity_obj, sf, req): num = sf.query(func.count(ValidWorkTimeBlock.id)).filter(ValidWorkTimeBlock.name == entity_obj.name).scalar() if num > 0: return "名称已经存在!" num = sf.query(func.count(ValidWorkTimeBlock.id)) \ .filter(cast(ValidWorkTimeBlock.start_time, Time) == Utils.format_time(entity_obj.start_time)) \ .filter(cast(ValidWorkTimeBlock.end_time, Time) == Utils.format_time(entity_obj.end_time)).scalar() if num > 0: return "班次/时间段已经存在!" return ""
def list(self, search_text, start, limit, http_req): current_date = None if not current_date: current_date = Utils.format_date(Utils.current_datetime()) sf = SessionFactory.new() subq = sf.query(Term.name.label("term_name"), TermTaxonomy.id).filter(TermTaxonomy.term_id == Term.id).subquery() q = sf.query(ValidWorkCheckOn.id, Archives.code, Archives.name, ValidWorkTimeBlock.name, ValidWorkTimeBlock.start_time, ValidWorkTimeBlock.end_time, ValidWorkCheckOn.status_in, ValidWorkCheckOn.status_out, ValidWorkCheckOn.status_no_sign, ValidWorkCheckOn.check_in_time, ValidWorkCheckOn.check_out_time, subq.c.term_name, MinuteDiff(ValidWorkCheckOn.valid_start_time, ValidWorkCheckOn.valid_end_time).label("diff") ).select_from(ValidWorkCheckOn)\ .join(ValidWorkTimeBlock, ValidWorkCheckOn.time_block_id == ValidWorkTimeBlock.id)\ .join(Archives, ValidWorkCheckOn.archives_id == Archives.id)\ .outerjoin(subq, subq.c.id == Archives.org_id) if search_text: q = q.filter(Archives.name.contains(search_text)) q = q.order_by(Archives.name).filter(cast(ValidWorkCheckOn.valid_start_time, Date) == current_date) ds = q.offset(start).limit(limit).all() items = list() for row in ds: obj = EmptyClass() obj.id = row[0] obj.code = row[1] obj.name = row[2] obj.tb_name = row[3] obj.start_time = Utils.format_time(row[4]) obj.end_time = Utils.format_time(row[5]) obj.status_in = row[6] obj.status_out = row[7] obj.status_no_sign = row[8] obj.check_in_time = Utils.format_time(row[9]) obj.check_out_time = Utils.format_time(row[10]) obj.org_name = row[11] obj.no_work_timediff = row[12] items.append(obj.__dict__) return items