def list(self, request): """ 获取登录用户所在的班级列表 ``GET`` `account/profile/class_list <http://192.168.1.222:8080/v1/account/profile/class_list>`_ """ try: from oa.helpers import user_access_list user = request.user code_list = [c.code for c in user_access_list(user)] school_level = True if "manage_school_tile" in code_list else False if school_level: school = request.user.teacher.school group,created = Group.objects.get_or_create(name="全园班级",school_id=school.id,type=3,creator=school.creator,grade_id=0) group_pks = [group.id] queryset = Group.objects.filter(pk__in=group_pks).all() else: group_wx_pks = [gv.id for gv in request.user.teacher.groups.all()] group_oa_pks = [go.group_id for go in GroupTeacher.objects.filter(teacher=request.user.teacher)] group_pks = group_wx_pks + group_oa_pks queryset = Group.objects.filter(pk__in=group_pks).all() return query_range_filter(request.GET, queryset, "classes") except ObjectDoesNotExist: pass try: group = request.user.student.group queryset = Group.objects.filter(id=group.id).all() return query_range_filter(request.GET, queryset, "classes") except ObjectDoesNotExist: pass return rc.NOT_FOUND
def by_class(self, request): """ 获取学生列表 ``GET`` `students/by_class/ <http://192.168.1.222:8080/v1/students/by_class>`_ :param class_id: 学生所在班级 id """ class_id = request.GET.get("class_id") if not class_id: return rc.BAD_REQUEST from oa.helpers import user_access_list user = request.user code_list = [c.code for c in user_access_list(user)] school_level = True if "manage_school_tile" in code_list else False if school_level: try: group = Group.objects.get(pk=class_id) # queryset = Group.objects.filter(school__pk=group.school_id).exclude(type=3) queryset = GroupHandler().read(request) print queryset,'qqqqqqqqqqqqqqqqqqqqqq' except ObjectDoesNotExist, e: return rc.not_here(e) return query_range_filter(request.GET, queryset, "students")
def read(self, request,): """ 与某人的沟通记录 ``GET`` `messages/history/ <http://192.168.1.222:8080/v1/messages/history>`_ :param uid: 用户 id """ params = request.GET user_id = request.GET.get("uid") try: recipient = User.objects.get(pk=user_id) except User.DoesNotExist: return rc.NOT_HERE messages = Message.objects.get_conversation_between(request.user, recipient) # Update all the messages that are unread. message_pks = [m.pk for m in messages] unread_list = MessageRecipient.objects.filter(message__in=message_pks, user=request.user, read_at__isnull=True) now = get_datetime_now() unread_list.update(read_at=now) return query_range_filter(params, messages, "messages")
def read(self, request,): """ 班级记录查询接口 ``GET`` `messages/history_to_class/ <http://192.168.1.222:8080/v1/messages/history_to_class>`_ :param class_id:班级 id :param since_id:返回ID比since_id大的评论,默认为0。 :param max_id:返回ID小于或等于max_id的评论,默认为0。 :param count:单页返回的记录条数,默认为50 :param page:结果的页码,默认为1 """ params = request.GET class_id = request.GET.get("class_id") since_id = request.GET.get("since_id","0") max_id = request.GET.get("max_id","0") count = request.GET.get("count","0") page = request.GET.get("page","0") try: group = Group.objects.get(pk=class_id) except Group.DoesNotExist: return rc.NOT_HERE contents = MessageToClass.objects.filter(group=group) contents = contents.filter(id__gte=since_id) if since_id!='0' else contents contents = contents.filter(id__lte=max_id) if max_id!='0' else contents return query_range_filter(params, contents, "messages")
def get(self, request): """ 获得某条瓦片的评论详细信息 ``GET`` `comments/show/ <http://192.168.1.222:8080/v1/comments/show>`_ :param tid: 瓦片 id. :param comment_id: 某条评论的 id """ params = request.GET # single one comment_id = params.get("comment_id") if comment_id: try: return Comment.objects.get(pk=comment_id, is_removed=False, is_public=True) except Comment.DoesNotExist: return rc.NOT_HERE # all tid = params.get("tid") ct = ContentType.objects.get_by_natural_key("kinger", "tile") queryset = Comment.objects.filter(object_pk=tid, content_type=ct) \ .filter(is_removed=False, is_public=True).order_by("-submit_date") return query_range_filter(params, queryset, "comments")
def read(self, request): """ 获取某个活动的信息 ``GET`` :param id: 某个活动的 id """ params = request.GET active_id = params.get("id") user_id = params.get("uid") class_id = params.get("class_id") if active_id: try: active = Activity.objects.get(pk=active_id) return active except Activity.DoesNotExist: return rc.NOT_HERE if not user_id and not class_id: return rc.bad_request( "user_id or class_id is requierd") q = Q(user__pk=user_id) if user_id else Q(group__pk=class_id) queryset = Activity.objects.filter(q).order_by("-start_time","-id") return query_range_filter(params, queryset, "actives")
def sub_category(self, request): """ 获取某个父类的子类 ``GET`` `tiles/categorys/subcategory <http://192.168.1.222:8080/v1/tiles/categorys/subcategory>`_ """ self.fields = ('category_id','name','parent_id','parent_name','sort') is_tips = request.GET.get('is_tips', False) parent_id = request.GET.get('parent_id') identity = request.GET.get('identity') try: if parent_id: # 特定父类的子类 qs = TileCategory.objects.get_one_parent_sub(parent_id) else: # 某个类型的子类 qs = TileCategory.objects.get_category(layer='sub', tips=is_tips, identity=identity) return query_range_filter(request.GET, qs, "categorys") except Exception, e: print e return rc.BAD_REQUEST
def read(self, request): ''' 获取瓦片类型列表 ``GET`` `tiles/types/ <http://192.168.1.222:8080/v1/tiles/types>`_ ''' qs = TileType.objects.all() return query_range_filter(request.GET, qs, "types")
def read(self, request): ''' 获得瓦片标签列表 ``GET`` `tiles/tags/ <http://192.168.1.222:8080/v1/tiles/tags>`_ ''' qs = TileTag.objects.all() return query_range_filter(request.GET, qs, "tags")
def read(self, request): """ 获得所有内容(教师使用) ``GET`` `tiles/ <http://192.168.1.222:8080/v1/tiles>`_ :param uid: 用户 id. 用于查询与某用户相关的瓦片 :param class_id: 班级 id, 查询用户所在班级相关的瓦片 获得某条内容的详细信息 ``GET`` `tiles/show/ <http://192.168.1.222:8080/v1/tiles/show>`_ :param id: 某个瓦片的 id """ params = request.GET tile_id = params.get("id") user_id = params.get("uid") class_id = params.get("class_id") if tile_id: try: tile = Tile.objects.get(pk=tile_id) tile.api_count += 1 tile.save() add_daily_record_visitor(request.user,tile) pro = request.user.get_profile() pro.last_access = datetime.datetime.now() pro.save() return tile except Tile.DoesNotExist: return rc.NOT_HERE if not user_id and not class_id: #return rc.BAD_REQUEST return rc.bad_request( "user_id or class_id is requierd") q = Q(user__pk=user_id) if user_id else Q(group__pk=class_id) queryset = Tile.objects.filter(q).exclude(new_type_id=4).order_by("-microsecond","-id") mictime = request.GET.get("mictime", "") if mictime: queryset = queryset.filter(microsecond__lte=mictime) return query_range_filter(params, queryset, "tiles")
def list(self, request): """ 获取登录用户所在的班级列表 ``GET`` `account/profile/class_list <http://192.168.1.222:8080/v1/account/profile/class_list>`_ """ try: queryset = request.user.teacher.groups.all() return query_range_filter(request.GET, queryset, "classes") except ObjectDoesNotExist: pass try: group = request.user.student.group queryset = Group.objects.filter(id=group.id).all() return query_range_filter(request.GET, queryset, "classes") except ObjectDoesNotExist: pass return rc.NOT_FOUND
def read(self, request): params = request.GET type_id = params.get("type_id") q = Q() if type_id: try: type = CommentTemplaterType.objects.get(pk=type_id) q = Q(type__pk=type_id) except CommentTemplaterType.DoesNotExist: return rc.NOT_HERE queryset = CommentTemplater.objects.filter(q) return query_range_filter(params, queryset, "templaters")
def parent_category(self, request): """ 获取父类 ``GET`` `tiles/categorys <http://192.168.1.222:8080/v1/tiles/categorys>`_ """ self.fields = ('category_id','name','sort') identity = request.GET.get('identity') is_tips = request.GET.get('is_tips', False) qs = TileCategory.objects.get_category(layer='parent', tips=is_tips, identity=identity) return query_range_filter(request.GET, qs, "categorys")
if not class_id: return rc.BAD_REQUEST from oa.helpers import user_access_list user = request.user code_list = [c.code for c in user_access_list(user)] school_level = True if "manage_school_tile" in code_list else False if school_level: try: group = Group.objects.get(pk=class_id) # queryset = Group.objects.filter(school__pk=group.school_id).exclude(type=3) queryset = GroupHandler().read(request) print queryset,'qqqqqqqqqqqqqqqqqqqqqq' except ObjectDoesNotExist, e: return rc.not_here(e) return query_range_filter(request.GET, queryset, "students") else: try: queryset = Student.objects.filter(group__pk=class_id) except ObjectDoesNotExist, e: return rc.not_here(e) return query_range_filter(request.GET, queryset, "students") def read(self, request, category=None): func = getattr(self, category) if not func and not callable(func): return rc.FORBIDDEN return func(request)
def read(self, request): qs = CommentTemplaterType.objects.all() return query_range_filter(request.GET, qs, "types")
pass try: log = Access_log() log.type = 2 log.user = request.user log.url = request.get_full_path() log.save() except: pass mictime = request.GET.get("mictime", "") if mictime: qs = qs.filter(microsecond__lte=mictime) #return query_range_filter(request.GET, qs, "tiles") rs = query_range_filter(request.GET, qs, "tiles") self.cache_last_tile_id(rs,request.user) return rs def for_baby_with_promotion(self, request): ''' ``by_babys`` + ``by_tags`` 接口的所有内容(家长使用) ``GET`` `tiles/by_babys_with_push/ <http://192.168.1.222:8080/v1/tiles/by_babys_with_push>`_ ''' qs = Tile.objects.get_tiles_all_login(request.user) qs = qs.exclude(new_type_id=4)