diff --git a/knowledge/qualification/report.py b/knowledge/qualification/report.py index 494bb97..0bbc0b0 100644 --- a/knowledge/qualification/report.py +++ b/knowledge/qualification/report.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2014 Helmut Merz helmutm@cy55.de +# Copyright (c) 2015 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,6 +22,7 @@ Qualification management report definitions. from zope.cachedescriptors.property import Lazy +from cybertools.composer.report.base import LeafQueryCriteria, CompoundQueryCriteria from cybertools.util.jeep import Jeep from loops.expert.report import ReportInstance from loops.organize.work.report import WorkRow @@ -39,13 +40,12 @@ class QualificationOverview(ReportInstance): rowFactory = WorkRow - fields = Jeep((task, party, workTitle, dayStart, dayEnd, state,)) - #partyState,)) # +deadline? + fields = Jeep((task, party, workTitle, dayStart, dayEnd, state, + partyState,)) # +deadline? - defaultOutputFields = fields + defaultOutputFields = Jeep(list(fields)[:-1]) defaultSortCriteria = (party, task,) - def getOptions(self, option): return self.view.options(option) @@ -53,6 +53,14 @@ class QualificationOverview(ReportInstance): def states(self): return self.getOptions('report_select_state' or ('planned',)) + @property + def queryCriteria(self): + crit = self.context.queryCriteria or [] + f = self.fields.partyState + crit.append( + LeafQueryCriteria(f.name, f.operator, 'active', f)) + return CompoundQueryCriteria(crit) + def selectObjects(self, parts): result = [] workItems = self.recordManager['work'] @@ -112,6 +120,11 @@ class PersonQualifications(QualificationOverview): def getOptions(self, option): return self.view.typeOptions(option) + @property + def queryCriteria(self): + crit = self.context.queryCriteria or [] + return CompoundQueryCriteria(crit) + def selectObjects(self, parts): workItems = self.recordManager['work'] person = self.view.context diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 8067eef..0b5e42c 100644 Binary files a/locales/de/LC_MESSAGES/loops.mo and b/locales/de/LC_MESSAGES/loops.mo differ diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index fea27fa..ebbbfc5 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.1\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2015-03-17 12:00 CET\n" +"PO-Revision-Date: 2015-03-20 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -1134,6 +1134,9 @@ msgstr "Bemerkung" msgid "desc_transition_comments" msgstr "Notizen zum Statusübergang." +msgid "contact_states" +msgstr "Kontaktstatus" + # state names msgid "accepted" @@ -1202,6 +1205,12 @@ msgstr "unklassifiziert" msgid "verified" msgstr "verifiziert" +msgid "prospective" +msgstr "künftig" + +msgid "inactive" +msgstr "inaktiv" + # transitions msgid "accept" @@ -1276,6 +1285,15 @@ msgstr "verifizieren" msgid "work" msgstr "bearbeiten" +msgid "activate" +msgstr "aktivieren" + +msgid "inactivate" +msgstr "inaktiv setzen" + +msgid "reset" +msgstr "zurücksetzen" + # calendar msgid "Monday" diff --git a/organize/stateful/contact.py b/organize/stateful/contact.py index 77f0ed8..d4db17b 100644 --- a/organize/stateful/contact.py +++ b/organize/stateful/contact.py @@ -40,12 +40,12 @@ def contactStates(): return StatesDefinition('contact_states', State('prospective', 'prospective', ('activate', 'inactivate',), color='blue'), - State('active', 'active', ('retract', 'inactivate',), + State('active', 'active', ('reset', 'inactivate',), color='green'), - State('inactive', 'inactive', ('activate',), + State('inactive', 'inactive', ('activate', 'reset'), color='x'), Transition('activate', 'activate', 'active'), - Transition('retract', 'retract', 'prospective'), + Transition('reset', 'reset', 'prospective'), Transition('inactivate', 'inactivate', 'inactive'), initialState='active') diff --git a/organize/work/report.py b/organize/work/report.py index 648a4af..65e77d7 100644 --- a/organize/work/report.py +++ b/organize/work/report.py @@ -81,6 +81,18 @@ class DurationField(Field): class PartyStateField(StateField): + def getValue(self, row): + context = row.context + if context is None: + return None + party = util.getObjectForUid(context.party) + ptype = adapted(party.conceptType) + stdefs = IOptions(ptype)('organize.stateful') or [] + if self.statesDefinition in stdefs: + stf = getAdapter(party, IStateful, + name=self.statesDefinition) + return stf.state + def getContext(self, row): if row.context is None: return None