示例#1
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,
                                                                  }))
示例#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,
                                  }))