def save_change(self, request, model, form, formsets=None): """ custom redirection back to thread page on portal """ out = super(PostAdmin, self).save_change(request, model, form, formsets) if isinstance(out, HttpResponseRedirect) and 'admin_redirect_after_change' in request.session: out = HttpResponseRedirect(request.session['admin_redirect_after_change']) del request.session['admin_redirect_after_change'] thr = form.instance.target if isinstance(thr, TopicThread): # invalidate cached thread posts delete_cached_object(get_key_comments_on_thread__spec_filter(None, thr)) delete_cached_object(get_key_comments_on_thread__by_submit_date(None, thr)) return out
def add_post(content, thread, user = False, nickname = False, email = '', ip='0.0.0.0', parent = None): """ PARAMS content: post content thread: TopicThread instance ip: IP address """ # invalidate cached thread posts delete_cached_object(get_key_comments_on_thread__by_submit_date(None, thread)) delete_cached_object(get_key_comments_on_thread__spec_filter(None, thread)) content = filter_banned_strings(content) comment_set = get_comments_on_thread(thread).order_by('-parent') CT_THREAD = ContentType.objects.get_for_model(TopicThread) if comment_set.count() > 0 and not parent: parent = comment_set[0] elif parent: parent = get_cached_object_or_404(Comment, pk = parent) if (user): cmt = Comment( content=content, subject='', ip_address=ip, target_ct=CT_THREAD, target_id=thread.id, parent=parent, user=user, ) cmt.save() # post is viewed by its autor make_objects_viewed(user, (cmt,)) elif nickname: cmt = Comment( content=content, subject='', ip_address=ip, target_ct=CT_THREAD, target_id=thread.id, parent=parent, nickname=nickname, email=email, ) cmt.save() else: raise Exception("Either user or nickname param required!")