Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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)
Exemple #6
0
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)