From 85d58d864e0eab34f5dfdb6ed5a05b5faf7970ed Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Thu, 10 Jan 2013 16:51:12 +0100 Subject: [PATCH] some curriculum --- curriculum/models.py | 3 ++ .../templates/curriculum/competence_list.html | 49 ++++++++++++++++- curriculum/views.py | 52 ++++++++++++++++--- 3 files changed, 96 insertions(+), 8 deletions(-) diff --git a/curriculum/models.py b/curriculum/models.py index 399536b..debc487 100644 --- a/curriculum/models.py +++ b/curriculum/models.py @@ -28,6 +28,9 @@ class Competence(models.Model): def __unicode__(self): return self.name + def for_level(self, level): + return self.competencelevel_set.get(level=level) + class Level(models.Model): name = models.CharField(_('name'), max_length=255) slug = models.SlugField(_('slug')) diff --git a/curriculum/templates/curriculum/competence_list.html b/curriculum/templates/curriculum/competence_list.html index 7e50338..cd4ad2f 100755 --- a/curriculum/templates/curriculum/competence_list.html +++ b/curriculum/templates/curriculum/competence_list.html @@ -1,9 +1,54 @@ {% extends "base.html" %} -{% block title %}Katalog kompetencji{% endblock %} +{% block title %}Katalog kompetencji medialnych i informacyjnych{% endblock %} {% block body %} -

Katalog kompetencji

+

Katalog kompetencji medialnych i informacyjnych

+
+

Poziom edukacyjny:

+{% if errors.level %}

{{ errors.level }}

{% endif %} +edukacja formalna: + +edukacja ustawiczna: + +

Kategorie kompetencji:

+{% if errors.competences %}

{{ errors.competences }}

{% endif %} + + +
+ +{% if chosen_competences %} + +{% for section, competences in chosen_competences.items %} +

{{ section }}

+ {% for competence in competences %} +

{{ competence }}

+ {{ competence.for_level_.description }} + {% endfor %} +{% endfor %} + +{% endif %} {% endblock %} \ No newline at end of file diff --git a/curriculum/views.py b/curriculum/views.py index 4239f11..32e91e0 100644 --- a/curriculum/views.py +++ b/curriculum/views.py @@ -1,19 +1,59 @@ -from .models import Competence, Section, Level - - +from django.db import models from django.views.generic import DetailView, ListView +from django.utils.datastructures import SortedDict +from .models import Competence, Section, Level, CompetenceLevel + class CompetenceDetailView(DetailView): model = Competence + class CompetencesView(ListView): model = Competence def get_context_data(self, **kwargs): - print 'kwargs', kwargs context = super(CompetencesView, self).get_context_data(**kwargs) + context['levels'] = Level.objects.all() + context['sections'] = Section.objects.all() + + errors = {} + + try: + level = Level.objects.get(slug=self.request.GET.get('level')) + except Level.DoesNotExist: + level = None + context['level'] = level + + comp_ids = set() + for c in self.request.GET.getlist('c'): + try: + comp_ids.add(int(c)) + except ValueError: + pass + context['comp_ids'] = comp_ids + sect_ids = set() + for c in self.request.GET.getlist('s'): + try: + sect_ids.add(int(c)) + except ValueError: + pass + context['sect_ids'] = sect_ids - queryset = self.get_queryset() + if not (comp_ids or sect_ids): + if level: + errors["competences"] = "Please!" + elif level is None: + errors["level"] = "Please!" + else: + chosen_competences = SortedDict() + for competence in Competence.objects.filter( + models.Q(pk__in=comp_ids) | models.Q(section__pk__in=sect_ids)): + try: + competence.for_level_ = competence.for_level(level) + except CompetenceLevel.DoesNotExist: + pass + chosen_competences.setdefault(competence.section, []).append(competence) + context['chosen_competences'] = chosen_competences + context["errors"] = errors return context - -- 2.20.1