Exemple #1
0
def private_chat_state(request):
    user1 = get_user_model().objects.get(id=int(request.POST["userId"]))
    user2 = request.user

    state = State()

    existing_chat = PrivateChat.get(user1=user1, user2=user2)

    if existing_chat:
        last_message_id = None
        if "lastMessageId" in request.POST:
            last_message_id = int(request.POST["lastMessageId"])
        existing_chat.add_to_state(state,
                                   message_count=20,
                                   last_message_id=last_message_id)
        return state.to_response({"privateChatId": existing_chat.id})

    create_throttle = UserActionThrottler(request.user, "create-private-chat",
                                          24 * 60 * 60, 10)

    if not request.user.is_superuser and not create_throttle.increm():
        return ChatError.NEW_PRIVATE_CHAT_LIMIT_EXCEEDED

    private_chat = PrivateChat.get_or_create(user1, user2)
    private_chat.add_to_state(state)

    return state.to_response({"privateChatId": private_chat.id})
Exemple #2
0
def create_forum_thread(request):
    if not request.user.is_superuser:
        user_run_throttler = UserActionThrottler(request.user,
                                                 "forum-thread-create",
                                                 24 * 60 * 60, 10)
        if not user_run_throttler.increm():
            return ForumError.FORUM_THREAD_LIMIT_EXCEEDED

    title = request.POST["title"]

    if len(title) > 160:
        return ForumError.TITLE_TOO_LONG

    non_empty_url = False
    for character in title:
        if character.isalnum():
            non_empty_url = True
    if not non_empty_url:
        return ForumError.INVALID_TITLE

    forum = Forum.objects.get(id=int(request.POST["forumId"]))
    forum_thread = ForumThread.create(request.user, request.POST["title"],
                                      request.POST["message"], forum)

    state = State()
    forum_thread.publish_create_event()
    forum_thread.add_to_state(state)
    return state.to_response({"forumThreadId": forum_thread.id})
Exemple #3
0
def public_user_profile(request, profile_user):
    state = State()
    user_summary = get_public_user_class()(profile_user)
    state.add(user_summary)
    return state.to_response({
        "userId": profile_user.id,
    })
Exemple #4
0
def documentation(request):
    state = State()

    documentation_entries = DocumentationEntry.objects.all().prefetch_related("article")
    for entry in documentation_entries:
        state.add(entry)
        state.add(entry.article)

    return state.to_response({"documentationEntryId": 1})
Exemple #5
0
def recognize(request):
    if not request.FILES or len(request.FILES) == 0:
        return StorageError.NO_FILES

    files = list(request.FILES.items())
    title = request.POST['title']

    state = State()
    for name, image in files:
        data = create_anpr(image, title)
        return state.to_response(extra={"success": True, "response": data})
Exemple #6
0
def translate(request):
    if not request.FILES or len(request.FILES) == 0:
        return StorageError.NO_FILES

    files = list(request.FILES.items())
    title = request.POST['title']

    state = State()
    for name, image in files:
        public_storage_file = create_translation(request.user, image, title)
        public_storage_file.add_to_state(state)
    return state.to_response(extra={"success": True})
Exemple #7
0
def group_chat_state(request):
    group_chat = GroupChat.objects.get(id=int(request.GET["chatId"]))

    state = State(request)

    last_message_id = request.GET.get("lastMessageId", None)
    if last_message_id:
        last_message_id = int(last_message_id)

    group_chat.add_to_state(state, last_message_id)

    return state.to_response()
Exemple #8
0
def fetch_article(request):
    article_ids = request.GET.getlist("ids[]")
    article_ids = [int(x) for x in article_ids]
    if len(article_ids) > 128:
        return ContentError.REQUESTED_TOO_MANY_ARTICLES
    articles = Article.objects.filter(id__in=article_ids)

    state = State()

    for article in articles:
        if article.is_available_to(request.user):
            state.add(article)

    return state.to_response()
Exemple #9
0
def forum_thread_state(request):
    forum_thread = ForumThread.objects.get(
        id=int(request.POST["forumThreadId"]))
    if forum_thread.hidden and not request.user.is_superuser:
        return BaseError.NOT_ALLOWED

    forum_view_throttler = ActionThrottler(
        request.visitor.unique() + "-forum-thread-" + str(forum_thread.id) +
        "-view", 60 * 60 * 24, 1)
    if forum_view_throttler.increm():
        forum_thread.increment_num_views()

    state = State(request)
    forum_thread.add_to_state(state, request)
    return state.to_response()
Exemple #10
0
def add_entry(request):
    title = request.POST.get("title", "Unnamed entry" + str(datetime.datetime.now()))
    url_name = request.POST.get("urlName", slugify(title))
    is_visible = json.loads(request.POST.get("isVisible", "false"))

    article = Article(author_created=request.user, name=title)

    if "content" in request.POST:
        article.markup = request.POST["content"]

    with transaction.atomic():
        article.save()
        entry = BlogEntry.objects.create(url_name=url_name, article=article, visible=is_visible)

    state = State()
    entry.add_to_state(state)
    return state.to_response({"blogEntryId": entry.id})
Exemple #11
0
def user_state(request):
    state = State()
    state.add_all(TextTranslation.objects.filter(user=request.user))
    return state.to_response(extra={"success": True})
Exemple #12
0
def main_forum_view(request):
    main_forum = Forum.objects.get(id=1)
    state = State(request)
    main_forum.add_to_state(state)
    return state.to_response(extra={"forumId": main_forum.id})
Exemple #13
0
def forum_state(request):
    forum = Forum.objects.get(id=int(request.POST["forumId"]))
    state = State(request)
    forum.add_to_state(state)
    return state.to_response()