예제 #1
0
파일: controller.py 프로젝트: tinyms/Matty
    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
예제 #2
0
파일: controller.py 프로젝트: tinyms/Matty
 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 ""
예제 #3
0
파일: controller.py 프로젝트: tinyms/Matty
 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