示例#1
0
def editReply(request, reply_id):
    reply = get_object_or_404(Reply, pk=reply_id)
    if not (reply.posted_by == request.user or request.user in reply.topic.category.moderated_by.all()):
        return HttpResponseForbidden()

    if request.POST:
        form = ReplyForm(request.POST, request.FILES, instance=reply)
        if form.is_valid():
            form.save()
            #redirect to prev page
            return HttpResponseRedirect(reply.get_url_with_fragment())
    else:
        # message should be original input, not the rendered one
        form = ReplyForm(instance=reply, initial={'message': reply.message.raw})

    return render_to_response('dinette/edit_reply.html', {'replyform': form, 'reply_id': reply_id}, context_instance=RequestContext(request))
示例#2
0
def postReply(request):
    mlogger.info("in post reply.................")
    freply = ReplyForm(request.POST, request.FILES)

    if not freply.is_valid():
        d = {"is_valid": "false", "response_html": freply.as_table()}
        if request.FILES:
            json_data = "<textarea>" + json.dumps(d) + "</textarea>"
        else:
            json_data = json.dumps(d)
        return HttpResponse(json_data, content_type=json_mimetype)

    #code which checks for flood control
    if (datetime.now() - (request.user.dinette_profile.last_posttime)
        ).seconds <= settings.FLOOD_TIME:
        #oh....... user trying to flood us Stop him
        d2 = {
            "is_valid":
            "flood",
            "errormessage":
            "You have posted message too recently. Please wait a while before trying again."
        }
        if request.FILES:
            json_data = "<textarea>" + json.dumps(d2) + "</textarea>"
        else:
            json_data = json.dumps(d2)
        return HttpResponse(json_data, content_type=json_mimetype)

    reply = freply.save(commit=False)
    #only if there is any file
    if len(request.FILES.keys()) == 1:
        if (request.FILES['file'].content_type.find("image") >= 0):
            reply.attachment_type = "image"
        else:
            reply.attachment_type = "text"

        reply.filename = request.FILES['file'].name

    reply.posted_by = request.user
    mlogger.debug("toipcid= %s" % request.POST['topicid'])
    reply.topic = Ftopics.objects.get(pk=request.POST['topicid'])
    #Assigning user rank
    mlogger.debug("Assigning an user rank, and last posted datetime")
    assignUserElements(request.user)
    reply.save()
    payload = {'reply': reply}
    mlogger.debug("what is the replymesage = %s" % reply.message)
    response_html = render_to_string('dinette/replydetail_frag.html', payload,
                                     RequestContext(request))
    mlogger.debug("what is the response = %s " % response_html)

    d2 = {"is_valid": "true", "response_html": response_html}

    #     if request.FILES :
    #         #this the required for ajax file uploads
    #         json_data = "<textarea>"+json.dumps(d2)+"</textarea>"
    #     else:
    json_data = json.dumps(d2)

    return HttpResponse(json_data, content_type=json_mimetype)
示例#3
0
def topic_detail(request, categoryslug, topic_slug , pageno = 1):
    topic = get_object_or_404(Ftopics, slug = topic_slug)
    show_moderation_items = False
    if request.user in topic.category.moderated_by.all():
        show_moderation_items = True
    #some body has viewed this topic
    topic.viewcount = topic.viewcount + 1
    topic.save()
    #we also need to display the reply form
    replylist = topic.reply_set.all()
    reply_page_size = getattr(settings , "REPLY_PAGE_SIZE", 10)
    replyform = ReplyForm()
    payload = {'topic': topic, 'replyform':replyform,'reply_list':replylist, 'show_moderation_items':show_moderation_items, "reply_page_size": reply_page_size}
    return render_to_response("dinette/topic_detail.html", payload, RequestContext(request))