示例#1
0
文件: views.py 项目: ren2881971/c28
def topic_edit(request, id):
	topic = Topic.objects.get(id = id)
	if request.method == 'POST':
		form = EditTopicForm(instance = topic, data = request.POST)
		if form.is_valid():
			result = form.save()
			return HttpResponseRedirect('/topic/action/success')
	else:
		form = EditTopicForm(instance = topic)
		return render_to_response('topic_edit.html', {'form':form}, 
			context_instance = RequestContext(request))
示例#2
0
def edit_topic(request, committee_id, topic_id=None):
    if request.method == 'POST':
        if topic_id:
            t = Topic.objects.get(pk=topic_id)
            if request.user != t.creator:
                return HttpResponseForbidden()
        else:
            t = None
        edit_form = EditTopicForm(data=request.POST, instance=t)
        links_formset = LinksFormset(request.POST)
        if edit_form.is_valid() and links_formset.is_valid():
            topic = edit_form.save(commit=False)
            if topic_id:
                topic.id = topic_id
            else:  # new topic
                topic.creator = request.user
            topic.save()
            edit_form.save_m2m()
            links = links_formset.save(commit=False)
            ct = ContentType.objects.get_for_model(topic)
            for link in links:
                link.content_type = ct
                link.object_pk = topic.id
                link.save()

            m = request.user.message_set.create()
            m.message = 'Topic has been updated.'
            m.save()
            return HttpResponseRedirect(
                reverse('topic-detail', args=[topic.id]))

    if request.method == 'GET':
        if topic_id:  # editing existing topic
            t = Topic.objects.get(pk=topic_id)
            if request.user != t.creator:
                return HttpResponseForbidden()
            edit_form = EditTopicForm(instance=t)
            ct = ContentType.objects.get_for_model(t)
            links_formset = LinksFormset(
                queryset=Link.objects.filter(content_type=ct, object_pk=t.id))
        else:  # create new topic for given committee
            c = Committee.objects.get(pk=committee_id)
            edit_form = EditTopicForm(initial={'committees': [c]})
            links_formset = LinksFormset(queryset=Link.objects.none())
    return render_to_response('committees/edit_topic.html',
                              context_instance=RequestContext(
                                  request, {
                                      'edit_form': edit_form,
                                      'links_formset': links_formset,
                                  }))
示例#3
0
def edit_topic(request, committee_id, topic_id=None):
    if request.method == 'POST':
        if topic_id:
            t = Topic.objects.get(pk=topic_id)
            if not t.can_edit(request.user):
                return HttpResponseForbidden()
        else:
            t = None
        edit_form = EditTopicForm(data=request.POST, instance=t)
        links_formset = LinksFormset(request.POST)
        if edit_form.is_valid() and links_formset.is_valid():
            topic = edit_form.save(commit=False)
            if topic_id:
                topic.id = topic_id
            else:  # new topic
                topic.creator = request.user
            topic.save()
            edit_form.save_m2m()
            links = links_formset.save(commit=False)
            ct = ContentType.objects.get_for_model(topic)
            for link in links:
                link.content_type = ct
                link.object_pk = topic.id
                link.save()

            messages.add_message(request, messages.INFO,
                                 'Topic has been updated')
            return HttpResponseRedirect(
                reverse('topic-detail', args=[topic.id]))

    if request.method == 'GET':
        if topic_id:  # editing existing topic
            t = Topic.objects.get(pk=topic_id)
            if not t.can_edit(request.user):
                return HttpResponseForbidden()
            edit_form = EditTopicForm(instance=t)
            ct = ContentType.objects.get_for_model(t)
            links_formset = LinksFormset(queryset=Link.objects.filter(
                content_type=ct, object_pk=t.id))
        else:  # create new topic for given committee
            c = Committee.objects.get(pk=committee_id)
            edit_form = EditTopicForm(initial={'committees': [c]})
            links_formset = LinksFormset(queryset=Link.objects.none())
    return render_to_response('committees/edit_topic.html',
                              context_instance=RequestContext(request,
                                                              {
                                                                  'edit_form': edit_form,
                                                                  'links_formset': links_formset,
                                                                  }))
示例#4
0
def post(type, id):
    if not session['loggedUser']:
        return abort(401)
    query = None
    redirectTo = None
    result = None
    form = None

    cursor = g.db.cursor()
    if type == "topic":
        form = EditTopicForm(request.form)
        if not form.validate():
            cursor.close()
            g.db.commit()
            return view.render(id, None, editTopicForm=form)
        query = 'SELECT poster_id FROM Topic WHERE id = %s'
        cursor.execute(query, [id])
        result = cursor.fetchone()[0]
        redirectTo = "/topics/view/" + str(id) + "/"
    elif type == "reply":

        query = 'SELECT poster_id, topic_id FROM Reply WHERE id = %s'
        cursor.execute(query, [id])
        get = cursor.fetchone()
        if len(request.form['content']) < 1 or len(request.form['content']) > 5000:
            cursor.close()
            g.db.commit()
            return redirect('/topics/view/' + str(get[1]))
        result = get[0]
        redirectTo = "/topics/view/" + str(get[1]) + "/"
    elif type == "password":
        id = session['loggedUser'][0]
        form = EditPasswordForm(request.form)
        if not form.validate():
            return renderPassword(form)
        query = 'SELECT password FROM RegUser WHERE id = %s'
        cursor.execute(query, [id])
        get = cursor.fetchone()
        if not str(get[0]) == bcrypt.hashpw(str(form['oldpassword'].data), str(get[0])):
            cursor.close()
            g.db.commit()
            return renderPassword(form, error=u'Väärä salasana')
        result = id
        redirectTo = "/topics/"

    if not result == session['loggedUser'][0]:
        return abort(401)

    if type == "topic":
        query = 'UPDATE Topic SET title = %s, content = %s WHERE id =%s'
        cursor.execute(query, [form['title'].data, form['content'].data, id])
    elif type == "reply":
        query = 'UPDATE Reply SET content = %s WHERE id =%s'
        cursor.execute(query, [request.form['content'], id])
    elif type == "password":
        password = bcrypt.hashpw(str(form['newpassword'].data), bcrypt.gensalt())
        query = 'UPDATE RegUser SET password = %s WHERE id =%s'
        cursor.execute(query, [password, id])


    cursor.close()
    g.db.commit()
    return redirect(redirectTo)