From 50b45b2c568dbffe573aaddfac8fbc3a9edd916f Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 11 Jul 2014 08:38:31 +0200 Subject: [PATCH] provide report for listing qualifications for a competence --- knowledge/qualification/configure.zcml | 12 ++++++++ knowledge/qualification/report.py | 39 ++++++++++++++++++++++++- locales/de/LC_MESSAGES/loops.mo | Bin 25793 -> 25863 bytes locales/de/LC_MESSAGES/loops.po | 8 ++++- 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/knowledge/qualification/configure.zcml b/knowledge/qualification/configure.zcml index a6ca61b..f5f1487 100644 --- a/knowledge/qualification/configure.zcml +++ b/knowledge/qualification/configure.zcml @@ -37,4 +37,16 @@ set_schema="loops.expert.report.IReportInstance" /> + + + + + + diff --git a/knowledge/qualification/report.py b/knowledge/qualification/report.py index 90a584c..b7991eb 100644 --- a/knowledge/qualification/report.py +++ b/knowledge/qualification/report.py @@ -33,7 +33,7 @@ from loops import util class QualificationOverview(ReportInstance): - type = "qualification_overview" + type = 'qualification_overview' label = u'Qualification Overview' rowFactory = WorkRow @@ -60,3 +60,40 @@ class QualificationOverview(ReportInstance): for wi in workItems.query(taskId=uid, state=self.states): result.append(wi) return result + + +class Qualifications(QualificationOverview): + + type = 'qualifications' + label = u'Qualifications' + + taskTypeNames = ('competence',) + + def getOptions(self, option): + return self.view.typeOptions(option) + + def selectObjects(self, parts): + result = [] + workItems = self.recordManager['work'] + target = self.view.context + tasks = [target] + self.getAllSubtasks(target) + for t in tasks: + uid = util.getUidForObject(t) + for wi in workItems.query(taskId=uid, state=self.states): + result.append(wi) + return result + + def getAllSubtasks(self, concept): + result = [] + for c in concept.getChildren([self.view.defaultPredicate]): + if c.conceptType in self.taskTypes: + result.append(c) + result.extend(self.getAllSubtasks(c)) + return result + + @Lazy + def taskTypes(self): + return [c for c in [self.conceptManager.get(name) + for name in self.taskTypeNames] + if c is not None] + diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index b7a08a183d6b3d77dfc1e945f4f78f49dd174b97..a98c638d83fc71ebaa3c0457ccd896eef5eb0515 100644 GIT binary patch delta 9280 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 delta 9257 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 diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index d64568b..0b403e5 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: 0.13.0\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2014-06-03 12:00 CET\n" +"PO-Revision-Date: 2014-07-11 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -849,6 +849,12 @@ msgstr "Beginn" msgid "End date" msgstr "Ende" +msgid "Start Day" +msgstr "Beginn" + +msgid "End Day" +msgstr "Ende" + msgid "Knowledge" msgstr "Kompetenzen"