from django import template
from django.utils.datastructures import SortedDict
-from ..models import Section
+from ..models import Lesson, Section
+from librarian.dcparser import WLURI, Person
register = template.Library()
@register.inclusion_tag("catalogue/snippets/carousel.html")
def catalogue_carousel():
- return {
- }
+ lessons_count = Lesson.objects.filter(type__in=('course', 'synthetic')).count()
+ if 1 < lessons_count % 10 < 5 and lessons_count / 10 % 10 != 1:
+ lessons_desc = u'kompletne lekcje'
+ else:
+ lessons_desc = u'kompletnych lekcji'
+ return locals()
@register.inclusion_tag("catalogue/snippets/section_buttons.html")
def catalogue_section_buttons():
"object_list": Section.objects.all()
}
-@register.inclusion_tag("catalogue/snippets/chosen_topics.html")
-def catalogue_chosen_topics():
- return {
- }
-
@register.inclusion_tag("catalogue/snippets/section_box.html")
def section_box(section):
lessons = SortedDict()
- for lesson in section.lesson_set.all():
+ lesson_lists = [alist for alist in [
+ list(section.lesson_set.all()),
+ list(section.lessonstub_set.all())
+ ] if alist]
+ while lesson_lists:
+ min_index, min_list = min(enumerate(lesson_lists), key=lambda x: x[1][0].order)
+ lesson = min_list.pop(0)
+ if not min_list:
+ lesson_lists.pop(min_index)
+
if lesson.level not in lessons:
- lessons[lesson.level] = SortedDict()
- if lesson.depth not in lessons[lesson.level]:
- lessons[lesson.level][lesson.depth] = []
- lessons[lesson.level][lesson.depth].append(lesson)
+ newdict = SortedDict()
+ newdict['synthetic'] = []
+ newdict['course'] = []
+ lessons[lesson.level] = newdict
+ if lesson.type not in lessons[lesson.level]:
+ lessons[lesson.level][lesson.type] = []
+ lessons[lesson.level][lesson.type].append(lesson)
return {
+ "section": section,
"lessons": lessons,
}
+@register.inclusion_tag("catalogue/snippets/lesson_nav.html")
+def lesson_nav(lesson):
+ if lesson.type == 'course':
+ root = lesson.section
+ siblings = Lesson.objects.filter(type='course', level=lesson.level, section=root)
+ mark_level = False
+ link_other_level = True
+ else:
+ root = None
+ siblings = Lesson.objects.filter(type=lesson.type)
+ mark_level = link_other_level = lesson.type == 'course'
+ return {
+ "lesson": lesson,
+ "root": root,
+ "siblings": siblings,
+ "mark_level": mark_level
+ }
+
+@register.inclusion_tag("catalogue/snippets/lesson_link.html")
+def lesson_link(uri):
+ try:
+ return {'lesson': Lesson.objects.get(slug=WLURI(uri).slug)}
+ except Lesson.DoesNotExist:
+ return {}
+
+@register.filter
+def person_list(persons):
+ return u", ".join(Person.from_text(p).readable() for p in persons)
+
# FIXME: Move to fnpdjango
import feedparser