def test_markup_choice(self): """ Check the distinction between Creole and Markdown pages """ offering = CourseOffering.objects.get(slug=TEST_COURSE_SLUG) memb = Member.objects.get(offering=offering, person__userid="ggbaker") p = Page(offering=offering, label="Test") p.save() v1 = PageVersion(page=p, title="T1", wikitext='A //test//.', editor=memb, comment="original page") v1.save() self.assertEqual(v1.html_contents(), '<p>A <em>test</em>.</p>') v2 = PageVersion(page=p, title="T1", wikitext='A *test*.', editor=memb, comment="original page") v2.set_markup('markdown') v2.save() self.assertEqual(v2.html_contents(), '<p>A <em>test</em>.</p>')
def test_markup_choice(self): """ Check the distinction between Creole and Markdown pages """ offering = CourseOffering.objects.get(slug=TEST_COURSE_SLUG) memb = Member.objects.get(offering=offering, person__userid="ggbaker") p = Page(offering=offering, label="Test") p.save() v1 = PageVersion(page=p, title="T1", wikitext='A //test//.', editor=memb, comment="original page") v1.save() self.assertEqual(v1.html_contents(), '<p>A <em>test</em>.</p>') v2 = PageVersion(page=p, title="T1", wikitext='A *test*.', editor=memb, comment="original page") v2.set_markup('markdown') v2.save() self.assertEqual(v2.html_contents(), '<p>A <em>test</em>.</p>')
def convert_content(request, course_slug, page_label=None): """ Convert between wikicreole and HTML (AJAX called in editor when switching editing modes) """ if request.method != 'POST': return ForbiddenResponse(request, 'POST only') if 'to' not in request.POST: return ForbiddenResponse(request, 'must send "to" language') if 'data' not in request.POST: return ForbiddenResponse(request, 'must sent source "data"') offering = get_object_or_404(CourseOffering, slug=course_slug) to = request.POST['to'] data = request.POST['data'] if to == 'html': # convert wikitext to HTML # temporarily change the current version to get the result (but don't save) if page_label: page = get_object_or_404(Page, offering=offering, label=page_label) pv = page.current_version() else: # create temporary Page for conversion during creation p = Page(offering=offering) pv = PageVersion(page=p) pv.wikitext = data pv.diff_from = None result = {'data': pv.html_contents()} return HttpResponse(json.dumps(result), content_type="application/json") else: # convert HTML to wikitext converter = HTMLWiki([]) try: wiki = converter.from_html(data) except converter.ParseError: wiki = '' result = {'data': wiki} return HttpResponse(json.dumps(result), content_type="application/json")
def convert_content(request, course_slug, page_label=None): """ Convert between wikicreole and HTML (AJAX called in editor when switching editing modes) """ if request.method != 'POST': return ForbiddenResponse(request, 'POST only') if 'to' not in request.POST: return ForbiddenResponse(request, 'must send "to" language') if 'data' not in request.POST: return ForbiddenResponse(request, 'must sent source "data"') offering = get_object_or_404(CourseOffering, slug=course_slug) to = request.POST['to'] data = request.POST['data'] if to == 'html': # convert wikitext to HTML # temporarily change the current version to get the result (but don't save) if page_label: page = get_object_or_404(Page, offering=offering, label=page_label) pv = page.current_version() else: # create temporary Page for conversion during creation p = Page(offering=offering) pv = PageVersion(page=p) pv.wikitext = data pv.diff_from = None result = {'data': pv.html_contents()} return HttpResponse(json.dumps(result), content_type="application/json") else: # convert HTML to wikitext converter = HTMLWiki([]) try: wiki = converter.from_html(data) except converter.ParseError: wiki = '' result = {'data': wiki} return HttpResponse(json.dumps(result), content_type="application/json")