~aelkner/schooltool/cando_merge_fix

« back to all changes in this revision

Viewing changes to src/schooltool/cando/browser/model.py

  • Committer: Alan Elkner
  • Date: 2012-11-12 05:59:01 UTC
  • mfrom: (132.1.10 schooltool.cando)
  • Revision ID: aelkner@gmail.com-20121112055901-d8phjpbnulvwu2jv
Created NodeCatalog and SkillSetCatalog
New indexed AggregateNodesTable that mixes nodes with skillsets and skills
Got rid of skill layers from nodes-only table filter

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
from schooltool.cando.interfaces import ILayerContainer, ILayer
51
51
from schooltool.cando.interfaces import INodeContainer, INode
52
52
from schooltool.cando.interfaces import ISkillSetContainer
 
53
from schooltool.cando.interfaces import IDocumentContainer
53
54
from schooltool.cando.model import Layer, LayerLink
54
55
from schooltool.cando.model import Node, NodeLink
55
56
from schooltool.cando.model import _expand_nodes, getOrderedByHierarchy
449
450
                       css_classes={'table': 'data'})
450
451
 
451
452
 
 
453
def get_skill_layers():
 
454
    layers = set()
 
455
    documents = IDocumentContainer(ISchoolToolApplication(None))
 
456
    for document in documents.values():
 
457
        hierarchy_layers = list(document.getOrderedHierarchy())
 
458
        if len(hierarchy_layers) >= 2:
 
459
            layers.add(hierarchy_layers[-2])
 
460
        if len(hierarchy_layers) >= 1:
 
461
            layers.add(hierarchy_layers[-1])
 
462
    return tuple(layers)
 
463
 
 
464
 
452
465
class NodesTableFilter(table.ajax.TableFilter):
453
466
 
454
467
    search_title = _("ID, title, label or description")
472
485
 
473
486
    def layers(self):
474
487
        result = []
 
488
        skill_layers = get_skill_layers()
475
489
        layers = getOrderedByHierarchy(self.layerContainer().values())
476
 
        items = [(l.__name__, l) for l in layers]
 
490
        items = [(l.__name__, l) for l in layers
 
491
                 if l not in skill_layers]
477
492
        for id, layer in items:
478
493
            checked = not self.manager.fromPublication
479
494
            if self.search_layer_ids in self.request: