def create_topic(request, course_slug): """ Form to create a new discussion topic """ course, view = _get_course_and_view(request, course_slug) if view is None: # course is an HttpResponse in this case return course if request.method == 'POST': form = discussion_topic_form_factory(view, data=request.POST) if form.is_valid(): topic = form.save(commit=False) topic.offering = course topic.author = _get_member(request.user.username, view, course_slug) topic.save() messages.add_message(request, messages.SUCCESS, 'Discussion topic created successfully.') return HttpResponseRedirect( reverse('offering:discussion:view_topic', kwargs={ 'course_slug': course_slug, 'topic_slug': topic.slug })) else: form = discussion_topic_form_factory(view) return render(request, 'discuss/create_topic.html', { 'course': course, 'form': form })
def edit_topic(request, course_slug, topic_slug): """ Form to edit a recently posted discussion topic (5 min window) """ course, view = _get_course_and_view(request, course_slug) if view is None: # course is an HttpResponse in this case return course topic = get_object_or_404(DiscussionTopic, slug=topic_slug, offering=course) if topic.author.person.userid != request.user.username: return HttpResponseForbidden() if (datetime.datetime.now() - topic.created_at) > datetime.timedelta(minutes = 5): raise Http404 if request.method == 'POST': creole = topic.get_creole() form = discussion_topic_form_factory(view, data=request.POST, creole=creole, instance=topic) if form.is_valid(): form.save() messages.add_message(request, messages.SUCCESS, 'Discussion topic edited successfully.') return HttpResponseRedirect(reverse('discuss.views.view_topic', kwargs={'course_slug': course_slug, 'topic_slug': topic.slug})) else: form = discussion_topic_form_factory(view, creole=None, instance=topic) return render(request, 'discuss/edit_topic.html', {'course': course, 'topic': topic, 'form': form})
def create_topic(request, course_slug): """ Form to create a new discussion topic """ course, view = _get_course_and_view(request, course_slug) if view is None: # course is an HttpResponse in this case return course if request.method == 'POST': form = discussion_topic_form_factory(view, data=request.POST) if form.is_valid(): topic = form.save(commit=False) topic.offering = course topic.author = _get_member(request.user.username, view, course_slug) topic.save() messages.add_message(request, messages.SUCCESS, 'Discussion topic created successfully.') return HttpResponseRedirect(reverse('offering:discussion:view_topic', kwargs={'course_slug': course_slug, 'topic_slug': topic.slug})) else: form = discussion_topic_form_factory(view) return render(request, 'discuss/create_topic.html', {'course': course, 'form': form})