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))
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, }))
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, }))
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)