Skip to content

Instantly share code, notes, and snippets.

@jacobh
Created April 26, 2012 07:22
Show Gist options
  • Save jacobh/2497125 to your computer and use it in GitHub Desktop.
Save jacobh/2497125 to your computer and use it in GitHub Desktop.
paginating markdown
class Session(models.Model):
course = models.ForeignKey(Course, related_name='sessions')
name = models.CharField(max_length=100)
content = models.TextField()
def pages(self):
def add_h1(string):
return "# %s" % string
return map(add_h1, re.split(r'\n#[^#]', self.content))
def get_page(self, page_number):
if page_number < 1:
raise Exception("Page number must be 1 or greater")
elif page_number > len(self.pages())-1:
raise Exception("Page doesn't exist")
Page = namedtuple('Page', ['content', 'next', 'previous'])
if page_number < len(self.pages())-1:
next = '%s%d/' % (self.get_absolute_url(), page_number+1)
else: next = None
if page_number > 1:
previous = '%s%d/' % (self.get_absolute_url(), page_number-1)
else: previous = None
return Page(self.pages()[page_number], next, previous)
{% extends 'base.html' %}
{% load markup %}
{% block main %}
<section id="main">
<hr>
{{ page.content|markdown }}
<hr>
{% if page.previous %}
<a href="{{ page.previous }}">&#60;&#60; previous</a>
{% endif %}
{% if page.next %}
<a href="{{ page.next }}">next &#62;&#62;</a>
{% else %}
<a href="#">complete session!</a>
{% endif %}
</section>
{% endblock %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment