def list_current(request, *args, **kwargs): """资产管理>资产维修管理""" # TODO 2015-03-23 # 添加字段 # 所属位置 # 修改API文档 if request.method == 'GET': page_info = get_page_info(request) cache.set('asset_repair_list', json.dumps(request.GET)) title, q = list_query(request.GET) paginator = Paginator(q, page_info['page_size']) records = list(paginator.page(page_info['page_num']).object_list) return create_success_dict( data={ 'page': page_info['page_num'], 'page_count': paginator.num_pages, 'page_size': page_info['page_size'], 'record_count': paginator.count, 'records': records, })
def get_teacherloginlog(request): client = _get_conn() if not client: return table = client.banbantong.teacherloginlog try: page_info = get_page_info(request) start_date = request.GET.get('start_date') end_date = request.GET.get('end_date') lesson_period = request.GET.get('lesson_period') country_name = request.GET.get('country_name') town_name = request.GET.get('town_name') school_name = request.GET.get('school_name') grade_name = request.GET.get('grade_name') class_name = request.GET.get('class_name') lesson_name = request.GET.get('lesson_name') teacher_name = request.GET.get('teacher_name') cond = {} if start_date: s = datetime.datetime.combine(parse_date(start_date), datetime.time.min) cond['created_at'] = {'$gte': s} if end_date: e = datetime.datetime.combine(parse_date(end_date), datetime.time.max) if 'created_at' not in cond: cond['created_at'] = {} cond['created_at']['$lte'] = e if lesson_period: cond['lesson_period_sequence'] = lesson_period if country_name: cond['country_name'] = country_name if town_name: cond['town_name'] = town_name if school_name: cond['school_name'] = school_name if grade_name: cond['grade_name'] = grade_name if class_name: cond['class_name'] = class_name if lesson_name: cond['lesson_name'] = {'$regex': lesson_name} if teacher_name: cond['teacher_name'] = {'$regex': teacher_name} fields = [ 'uuid', 'province_name', 'city_name', 'country_name', 'town_name', 'school_name', 'grade_name', 'class_name', 'teacher_name', 'lesson_period_sequence', 'lesson_name', 'created_at', 'time_used' ] proj = {} for i in fields: proj[i] = True proj['_id'] = False skip = (page_info['page_num'] - 1) * page_info['page_size'] limit = page_info['page_size'] cursor = table.find(spec=cond, fields=proj, skip=skip, limit=limit, sort=[('created_at', pymongo.DESCENDING)]) record_count = cursor.count() page_count = (record_count + limit - 1) / limit records = [] for row in cursor: records.append(row) cursor.close() client.close() return create_success_dict( data={ 'records': records, 'page': page_info['page_num'], 'page_size': page_info['page_size'], 'record_count': record_count, 'page_count': page_count, }) except: logger.exception('') return create_failure_dict(msg='系统错误')
def list_current(request, *args, **kwargs): page_info = get_page_info(request) edu_background = request.GET.get('edu_background') sex = request.GET.get('sex') status = request.GET.get('status') start_date = request.GET.get('start_date') end_date = request.GET.get('end_date') teacher_name = request.GET.get('teacher_name') title = request.GET.get('title') trans_2_pinyin = request.GET.get('trans2pinyin', False) terms = models.Term.objects.filter(deleted=False) q = models.Teacher.objects.filter(deleted=False) if edu_background: q = q.filter(edu_background=edu_background) if sex: if sex == u'男': sex = 'male' else: sex = 'female' q = q.filter(sex=sex) recount_status = False if status: if status == u'授课': q = q.annotate(status_count=Count('lessonteacher')).filter( lessonteacher__class_uuid__grade__term__in=terms) else: if terms: q = q.annotate(status_count=Count('lessonteacher')).exclude( lessonteacher__class_uuid__grade__term__in=terms) recount_status = True else: q = q.annotate(status_count=Count('lessonteacher')) recount_status = True else: q = q.annotate(status_count=Count('lessonteacher')) recount_status = True if start_date and end_date: s = parse_date(start_date) e = parse_date(end_date) s = datetime.datetime.combine(s, datetime.time.min) e = datetime.datetime.combine(e, datetime.time.max) q = q.filter(register_at__range=(s, e)) if teacher_name: q = q.filter(name__contains=teacher_name) if title: q = q.filter(title=title) q = q.values('uuid', 'sequence', 'name', 'sex', 'edu_background', 'birthday', 'title', 'register_at', 'mobile', 'qq', 'status_count', 'remark') if recount_status: q = list(q) for one in q: if one['status_count'] > 0: obj = models.Teacher.objects.get(uuid=one['uuid']) if not obj.lessonteacher_set.filter( class_uuid__grade__term__in=terms): one['status_count'] = 0 if trans_2_pinyin == 'true': q = list(q) for o in q: o.update(trans2pinyin(o['name'])) page_data = db_utils.pagination(q, **page_info) return create_success_dict( data={ 'records': model_list_to_dict(page_data['records']), 'page': page_data['page_num'], 'page_size': page_data['page_size'], 'record_count': page_data['record_count'], 'page_count': page_data['page_count'], })
def resource_store(request, *args, **kwargs): """资源使用>卫星资源接收日志""" school_year = request.GET.get('school_year') term_type = request.GET.get('term_type') start_date = request.GET.get('start_date') end_date = request.GET.get('end_date') town_name = request.GET.get('town_name') point_name = request.GET.get('point_name') q = models.EduPointResourceReceLog.objects.all().order_by('-rece_time') if school_year: q = q.filter(school_year=school_year) if term_type: q = q.filter(term_type=term_type) if town_name: q = q.filter(town_name=town_name) if point_name: q = q.filter(point_name=point_name) if start_date and end_date: # 按自然日期查询 s = parse_date(start_date) e = parse_date(end_date) s = datetime.datetime.combine(s, datetime.time.min) e = datetime.datetime.combine(e, datetime.time.max) q = q.filter(rece_time__range=(s, e)) page_info = get_page_info(request) total_resource_size = q.aggregate(total=Sum('rece_size')).get('total', 0) total_resource_count = q.aggregate(total=Sum('rece_count')).get('total', 0) q = q.values('id', 'school_year', 'term_type', 'town_name', 'point_name', 'rece_time', 'rece_count', 'rece_size', 'rece_type').distinct() # 添加一个uuid,与id是一样的 map(lambda x: x.setdefault('uuid', x['id']), q) paginator = Paginator(q, page_info['page_size']) records = paginator.page(page_info['page_num']).object_list # 每条卫星接收日志的详细信息是一起返回 for record in records: obj = models.EduPointResourceReceLog.objects.get(id=record['uuid']) details = obj.edupointresourcerecelogdetail_set.all() d_len = details.count() # 资源文件详细 details = details.values('type', 'size', 'count') # 按资源文件最多排序, 相同数量比较大小 details = sorted(details, key=lambda x: (x['count'], x['size']), reverse=True) # 每个种类的详细情况 if d_len <= 5: record['details'] = details else: record['details'] = details[:5] # 余下的全部整个'其他' other_type_count = reduce(lambda x, y: x + y, map(lambda x: x['count'], details[5:])) other_type_size = reduce(lambda x, y: x + y, map(lambda x: x['size'], details[5:])) record['details'].append({'type': u'其他', 'count': other_type_count, 'size': other_type_size}) ret = create_success_dict(data={ 'page': page_info['page_num'], 'page_count': paginator.num_pages, 'page_size': page_info['page_size'], 'record_count': paginator.count, 'records': model_list_to_dict(records), 'total_resource_size': total_resource_size, 'total_resource_count': total_resource_count, }) return ret