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})
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})
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, })
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})
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})
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})
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()
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()
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()
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})
def user_state(request): state = State() state.add_all(TextTranslation.objects.filter(user=request.user)) return state.to_response(extra={"success": True})
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})
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()