def thread_label_view(thread_id): thread = Thread.get(thread_id) if not thread: abort(HTTPStatus.BAD_REQUEST) labels = ThreadLabel.filter(thread=thread.id) return jsonify({ 'thread': thread_id, 'labels': [label.text for label in labels], })
def delete_post(board, thread_num, post_num, rape_msg): last_deletion = False th = Thread.get(db.Key.from_path( "Board", board, "Thread", thread_num )) [post] = [p for p in th.posts if p.get('post') == post_num] logging.info("found: %r" % post) key = post.get("key") if key: post.pop("key", None) post.pop("image", None) info = blobstore.BlobInfo.get( blobstore.BlobKey(key)) info.delete() try: th.images.remove(post.get("key")) except: pass logging.info("removed image %r" % post) else: last_deletion = True post['text'] = 'Fuuuuuu' post['text_html'] = 'Fuuuuuu' post['rainbow_html'] = u'<b>' + rape_msg + '</b>' th.put() Cache.delete( ( dict(Board=board), ) ) r = Render(board, thread_num) #kind of shit: r.create(th.posts[0]) for a_post in th.posts[1:]: r.append(a_post) r.save() #FIXME: update records in memcache return last_deletion
def create_answer_view(): next_page = request.form['next'] text = request.form['text'] thread_id = request.form['thread'] if not (text and thread_id): abort(HTTPStatus.BAD_REQUEST) answer = Answer.create( text=text[:65535], thread=thread_id, author=current_user.id, created_at=datetime.now(), ) current_user.msg_count += 1 current_user.save() thread = Thread.get(thread_id) thread.last_answer_time = answer.created_at thread.save() return redirect(next_page)
def thread_view(thread_id): thread = Thread.get(thread_id) forum = Forum.get(thread.forum) section = Section.get(thread.section) parent_section = Section.get(section.parent) author = User.get(thread.author) answers_query = """ SELECT answer.id answer_id, answer.text answer_text, answer.rating answer_rating, answer.created_at answer_created_at, answer.is_off_topic answer_is_off_topic, user.id user_id, user.username username, user.msg_count user_msg_count, user.msg_signature user_signature, user.registered_at user_registered_at FROM answer INNER JOIN user ON answer.author = user.id WHERE answer.thread = %(thread_id)s ORDER BY answer.created_at; """ cursor = get_connector().cursor() cursor.execute(answers_query, {'thread_id': thread.id}) answers = [ Answer( id=answer_id, text=answer_text, rating=answer_rating, created_at=answer_created_at, is_off_topic=answer_is_off_topic, author=User( id=user_id, username=username, msg_count=user_msg_count, msg_signature=user_signature, registered_at=user_registered_at, ) ) for ( answer_id, answer_text, answer_rating, answer_created_at, answer_is_off_topic, user_id, username, user_msg_count, user_signature, user_registered_at, ) in cursor ] labels_query = """ SELECT thread_label.id label_id, thread_label.text label_text FROM threads_labels INNER JOIN thread_label ON threads_labels.label = thread_label.id WHERE threads_labels.thread = %(thread_id)s; """ cursor = get_connector().cursor() cursor.execute(labels_query, {'thread_id': thread.id}) labels = [ ThreadLabel(id=label_id, text=label_text) for label_id, label_text in cursor ] cursor.close() return render_template( 'thread.html', forum=forum, parent_section=parent_section, section=section, author=author, thread=thread, labels=labels, answers=answers, )