def all_secrets(request): data = request.POST size = data.get("size", 50) timestamp = data.get("time") if not timestamp: return json_response_error(PARAM_REQUIRED, "time") time_type = data.get("type", "after") if time_type not in ["before", "after"]: return json_response_error(PARAM_REQUIRED, "type") try: size = int(size) timestamp = int(timestamp) size = min(size, 100) if time_type == "before": secrets = ( Secret.objects.filter(create_time__lt=timestamp_to_datetime(timestamp)).order_by("-id").all()[:size] ) else: secrets = ( Secret.objects.filter(create_time__gte=timestamp_to_datetime(timestamp)).order_by("-id").all()[:size] ) except Exception, e: return json_response_error(DATA_ERROR, e)
def secrets(request, group_id): data = request.POST size = int(data.get("size", 50)) timestamp = int(data.get("time")) if not timestamp: return json_response_error(PARAM_REQUIRED, "time") time_type = data.get("type") if time_type not in ["before", "after"]: return json_response_error(PARAM_REQUIRED, "type") size = min(size, 100) if time_type == "before": secrets = ( Secret.objects.filter(create_time__lt=timestamp_to_datetime(timestamp), group_id=group_id) .order_by("-id") .all()[:size] ) else: secrets = ( Secret.objects.filter(create_time__gte=timestamp_to_datetime(timestamp), group_id=group_id) .order_by("-id") .all()[:size] ) result = {"secrets": []} for secret in secrets: hot = Comment.objects.filter(secret_id=secret.id).count() result["secrets"].append( {"id": secret.id, "content": secret.content, "hot": hot, "time": datetime_to_timestamp(secret.create_time)} ) return json_response_ok(result)
def my_secrets(request): data = request.POST size = data.get("size", 50) timestamp = data.get("time") if not timestamp: return json_response_error(PARAM_REQUIRED, "time") time_type = data.get("type", "after") if time_type not in ["before", "after"]: return json_response_error(PARAM_REQUIRED, "type") user = request.META["user"] try: size = int(size) timestamp = int(timestamp) size = min(size, 100) group_ids = [relation.group_id for relation in GroupUserRelation.objects.filter(user_id=user.id).all()] if time_type == "before": secrets = ( Secret.objects.filter(create_time__lt=timestamp_to_datetime(timestamp), group_id__in=group_ids) .order_by("-id") .all()[:size] ) else: secrets = ( Secret.objects.filter(create_time__gte=timestamp_to_datetime(timestamp), group_id__in=group_ids) .order_by("-id") .all()[:size] ) except Exception, e: return json_response_error(DATA_ERROR, e)
def notice(request): data = request.REQUEST size = int(data.get("size", 50)) timestamp = int(data.get("time")) if not timestamp: return json_response_error(PARAM_REQUIRED, "time") time_type = data.get("type", "after") if time_type not in ["before", "after"]: return json_response_error(PARAM_REQUIRED, "type") size = min(size, 100) user = request.META["user"] if time_type == "before": notices = ( Notice.objects.filter(receive_user_id=user.id) .filter(status=0) .filter(create_time__lt=timestamp_to_datetime(timestamp)) .order_by("-id") .all()[:size] ) else: notices = ( Notice.objects.filter(receive_user_id=user.id) .filter(status=0) .filter(create_time__gte=timestamp_to_datetime(timestamp)) .order_by("-id") .all()[:size] ) result = {"notices": []} for notice in notices: try: reply_id = notice.comment_id comment = Comment.objects.get(id=reply_id) secret = Secret.objects.get(id=comment.secret_id) r = { "id": notice.id, "reply_id": reply_id, "secret": { "id": secret.id, "group_id": secret.group_id, "content": secret.content, "time": datetime_to_timestamp(secret.create_time), }, "reply_time": datetime_to_timestamp(comment.create_time), "reply_content": comment.content, } if comment.reply_to_id: replied_content = Comment.objects.get(id=comment.reply_to_id).content r["replied_content"] = replied_content result["notices"].append(r) except Exception as e: return json_response_error(DATA_ERROR, e) return json_response_ok(result)
def comments(request, secret_id): data = request.REQUEST size = int(data.get("size", 50)) timestamp = int(data.get("time")) if not timestamp: return json_response_error(PARAM_REQUIRED, "time") time_type = data.get("type", "after") if time_type not in ["before", "after"]: return json_response_error(PARAM_REQUIRED, "type") size = min(size, 100) if time_type == "before": comments = ( Comment.objects.filter(secret_id=secret_id) .filter(create_time__lt=timestamp_to_datetime(timestamp)) .order_by("-id") .all()[:size] ) else: comments = ( Comment.objects.filter(secret_id=secret_id) .filter(create_time__gte=timestamp_to_datetime(timestamp)) .order_by("-id") .all()[:size] ) result = {"comments": []} for comment in comments: if comment.reply_to_id: replied_floor = Comment.objects.get(id=comment.reply_to_id).floor result["comments"].append( { "id": comment.id, "content": comment.content, "time": datetime_to_timestamp(comment.create_time), "floor": comment.floor, "replied_floor": replied_floor, } ) else: result["comments"].append( { "id": comment.id, "content": comment.content, "time": datetime_to_timestamp(comment.create_time), "floor": comment.floor, } ) return json_response_ok(result)
def mine(request): data = request.REQUEST size = int(data.get("size", 50)) timestamp = int(data.get("time")) if not timestamp: return json_response_error(PARAM_REQUIRED, "time") time_type = data.get("type", "after") if time_type not in ["before", "after"]: return json_response_error(PARAM_REQUIRED, "type") size = min(size, 100) user = request.META["user"] if time_type == "before": secrets = ( Secret.objects.filter(author_id=user.id) .filter(create_time__lt=timestamp_to_datetime(timestamp)) .order_by("-id") .all()[:size] ) else: secrets = ( Secret.objects.filter(author_id=user.id) .filter(create_time__gte=timestamp_to_datetime(timestamp)) .order_by("-id") .all()[:size] ) result = {"secrets": []} for secret in secrets: result["secrets"].append( { "id": secret.id, "time": datetime_to_timestamp(secret.create_time), "content": secret.content, "group_id": secret.group_id, } ) return json_response_ok(result)