From 13fe5fd4d801d3824e26ab47c5659a68fb23d6f5 Mon Sep 17 00:00:00 2001 From: helmutm Date: Fri, 17 Oct 2008 09:39:44 +0000 Subject: [PATCH] show concept states on listings (if appropriate) git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2922 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/common.py | 7 ++++++- browser/configure.zcml | 8 ++++++++ browser/resource.py | 2 ++ common.py | 3 ++- config/base.py | 11 +++++++++-- config/configure.zcml | 5 +++++ locales/de/LC_MESSAGES/loops.mo | Bin 7392 -> 7495 bytes locales/de/LC_MESSAGES/loops.po | 5 ++++- organize/README.txt | 7 ++++++- organize/browser/event.py | 8 ++++++-- organize/stateful/browser.py | 5 +++-- organize/stateful/view_macros.pt | 30 +++++++++++++++++------------- search/search.pt | 2 +- 13 files changed, 69 insertions(+), 24 deletions(-) diff --git a/browser/common.py b/browser/common.py index 1cab9a0..3b787c1 100644 --- a/browser/common.py +++ b/browser/common.py @@ -39,7 +39,7 @@ from zope.formlib.namedtemplate import NamedTemplate from zope.interface import Interface, implements from zope.proxy import removeAllProxies from zope.publisher.browser import applySkin -from zope.publisher.interfaces.browser import IBrowserSkinType +from zope.publisher.interfaces.browser import IBrowserSkinType, IBrowserView from zope import schema from zope.schema.vocabulary import SimpleTerm from zope.security import canAccess, checkPermission @@ -139,6 +139,9 @@ class BaseView(GenericView, I18NView): self.checkLanguage() return result + def registerPortlets(self): + pass + @Lazy def target(self): # allow for having a separate object the view acts upon @@ -289,6 +292,8 @@ class BaseView(GenericView, I18NView): request = self.request for o in objs: view = component.queryMultiAdapter((o, request), name='index.html') + #if view is None: + # view = component.queryMultiAdapter((o, request), IBrowserView) if view is None: view = BaseView(o, request) yield view diff --git a/browser/configure.zcml b/browser/configure.zcml index 729893d..619d031 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -208,6 +208,14 @@ menu="zmi_views" title="View" /> + + + + + + + diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 02f43a035d199f6696f24f06217537ee8c94bc41..2125c46d29ce6a6ff8c7a7747b0df1669f625748 100644 GIT binary patch delta 2768 zcmYk7dra3=7>AFE23|?LWT-%5fk=U(sc42pUMg>BdBKzvgj6s@(2Rb~YG}8uT$66j zTIp( zA1GVVFm$1N2>amISMs1#_X=Sitbuv(Fm&iN%z(eaRM@X~2z_7%#6%ba`GtbmKLrk= zJqr$oD_}|piO@);CmoN#{;&m>!Cf#Jo`E{N0Mp<_j;9QslE1-_6ATfpw z(10F-F62?z4?YEb?~5Y+)>97s52? z_-v@d#jppgfCjV%8sJ7~z|AmWgxjbT!5wkJhfqVGLk%5^{og~k;%Ddz&PR49YN}xn z)KNAxlLfIo3+iwYG~lIh6kOAv{JWB;>Co_QsKdRm0KN@f*~vJ52J#EP^KfO|dD%cy zpcxtheLo-SZ~}CJ#n1q!Lj#--)8X<|^6v{<;>2xn;tn{P{#NJ~dwf0XaJ{S zF8no)4<;>UCY?t<%!fK!2A$soJwwg0{ak{IDQSf|cmukUH)H?DP>0_@13eC%cM6Vy zr=iy{jVR6FIH;rI$dcGU1L|ik)J{2^*p2#mH+RW1$hcM^DD~F6bV< z1)bLh&B%MuYx@~Az;;M7!e5cSiN=72^B4+?BIiK;RKslVe=`*gycYQZ^h0%^iUa>aej$xJ zq@g@$>PnyiEr6bZDrjJ9p$6-rnQMWbft_*u1vr)V9_ZG!L$~rLnDASDk&1iucbt$! zzPx6AAzfiO^o0q~6_vtk;bLeewn80lht7KjdUjrcuKWw=ypzxX&cZqH;!yIhqf+wb zN)|yKltWWn7u!vccfu3UKwpnM2z~Dm)bU492j4<7_Z{@CoP}oQPpJJQ?&K6WB%S!y@=T^!}fRW+0u(g)j@+E`tWP1e)n;$keb7y727@ zDjup<=*sp&19=BdfQO)eHs@l0Um6-76qyd4p9MYrxzLpsL#}s6Fa_{lRDrsR+oQiM zjdhhJRCHP$J2K(zJD*KX+qow>DY1!`t~8&8ETcLR#=^VMT(l4^L+ldNX z$kT8usz(-cYF;Lxsc12pfmWgW(Q3aGlc|hA9=%57My*HQ4NFNUI-Vx|9&{txjLh+P zWEsowWuqokj{F?mfh_Y;PDict^HoNDHrk4=L)W*J z_G;;wQ`S(?P?=d%TUA%TzM`R~t~QfeX7=jJs+!sw+mkc18)_QXwSAeozgv&Og8ahq dZJP&tl03{8H*L(!xom1~oLkv8DScnJ{{amc?~MQe delta 2666 zcmYk;drX#99Ki8If)S#^t5FJRm=qwSTr5OUF;l2i6z`Wb#E??U%u8Cmf7q(EVQX0~ zyKIeVZ8~d%@dvgn+iYgFIqAQ0IsT%t)@6-9tkw7Xde}O9f6wPU=Xu_9e&;;rdEx8Y zpJyenCeq&ul!HV8F*qWGPW3fycJ6@59i@6Atb|UDkEvwf@84_n{hv8;w5yzJ{*TXVgi3d2OdH14ltgB{S+b{ zhhp@4CHlPw(EiuN_BI^P_~8JR+qlqyx8n(PfX`$5<#;}T<7xjJ@4(#A1Ww0vtVai4 zgya^Q(1bRk6WNMma0mLmLzvC@p@WK<9!E1gh2D4;P2?MN>3%{!;ZF|UpTM?T>% z4i1#gEL_PP^t=Qea3-2?Ef(S8v8=x{*-3*PzlaX_GS0x)(V2Y_uU|qw;R*+5){iDS zfUeLG`u)*#>VSFZ1oP1Zr=ST{U_RF6u>O8wUA(a+-q?<%v>!kpK_}W_51PiIvHc%(pbTbVKMAZ!BRO2id2%K1#%wC@pf~)0)9@-z#4OTw>59@MHVBRz|Gi$KC(P+Ch=sLN`_LA4kDxOwjXt`g=%aie{fRz}NuSlH@rGXH4GLc&pKyhP zUl>GZbRDPQ7}9qoD$oJvqW3LC_f9i9^CWuT+h_uvxD-#L<6NJ>`a6?Rte*oU(4{Sk z=jF(~VLqDZ`e-Zqy-7B5w%A7&_@5MRz9olbJKI`v*Q+ZkKuq;}I zw%4LxT!7WM3QO=cbmrYyfxYp35KZV0bcxg0P*g((I^#lgFIAuunwO;FK#h1GE=T{k zyc*k2q63|YcE|Q!bl0CpXV{0l)~T|GVk|9_btPh6>ego#@w5k3z0f=NF@Se|q{RoG2ynethqtz z1-zfS@5yj+=lPphL#!We#1dk;=U!YwxVIlBW)tbeI^tep84w2T=w S<&~9P=M(2MyFSc6nf4#upv{c{ diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index 69b1e8b..ffc763d 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: $Id$\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2008-08-22 12:00 CET\n" +"PO-Revision-Date: 2008-10-15 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -374,3 +374,6 @@ msgstr "Ende" msgid "Create loops Note" msgstr "loops-Notiz anlegen" +msgid "State information for $definition: $title" +msgstr "Status ($definition): $title" + diff --git a/organize/README.txt b/organize/README.txt index 5bc74ff..a0cd7fc 100644 --- a/organize/README.txt +++ b/organize/README.txt @@ -348,10 +348,15 @@ Events listing ... ) >>> from loops.organize.browser.event import Events - >>> listing = Events(johnC, TestRequest()) + >>> events = addAndConfigureObject(concepts, Concept, 'events', title=u'Events', + ... conceptType=concepts['query']) + >>> listing = Events(events, TestRequest()) >>> listing.getActions('portlet') [] + >>> from loops.config.base import QueryOptions + >>> component.provideAdapter(QueryOptions) + >>> list(listing.events()) [] diff --git a/organize/browser/event.py b/organize/browser/event.py index 58aa961..267eec2 100644 --- a/organize/browser/event.py +++ b/organize/browser/event.py @@ -22,11 +22,12 @@ Definition of view classes and other browser related stuff for tasks. $Id$ """ -from datetime import datetime +from datetime import datetime, timedelta from zope import interface, component from zope.app.pagetemplate import ViewPageTemplateFile from zope.cachedescriptors.property import Lazy +from cybertools.meta.interfaces import IOptions from loops.browser.action import DialogAction from loops.browser.concept import ConceptView from loops.common import adapted @@ -62,10 +63,13 @@ class Events(ConceptView): tEvent = cm['event'] hasType = cm.getTypePredicate() now = datetime.today() + delta = int(self.request.get('delta', + IOptions(adapted(self.context))('delta', [0])[0])) sort = lambda x: x.adapted.start or now relViews = (self.childViewFactory(r, self.request, contextIsSecond=True) for r in tEvent.getChildRelations([hasType], sort=None)) return sorted((rv for rv in relViews - if not rv.adapted.end or rv.adapted.end >= now), + if not rv.adapted.end or + rv.adapted.end >= now - timedelta(delta)), key=sort) diff --git a/organize/stateful/browser.py b/organize/stateful/browser.py index a2dd73a..a75d9ab 100644 --- a/organize/stateful/browser.py +++ b/organize/stateful/browser.py @@ -51,8 +51,9 @@ class StateAction(Action): @Lazy def description(self): - return (u'State information for %s: %s' % - (self.definition, self.stateObject.title)) + return _(u'State information for $definition: $title', + mapping=dict(definition=self.definition, + title=self.stateObject.title)) @Lazy def stateObject(self): diff --git a/organize/stateful/view_macros.pt b/organize/stateful/view_macros.pt index 41aa2c7..edeade9 100644 --- a/organize/stateful/view_macros.pt +++ b/organize/stateful/view_macros.pt @@ -21,21 +21,25 @@ tal:content="deftype" i18n:translate="" /> - - - -   - + + +   + diff --git a/search/search.pt b/search/search.pt index 670f19e..eecffe8 100644 --- a/search/search.pt +++ b/search/search.pt @@ -266,7 +266,7 @@ url="listConceptsForComboBox.js?searchType=" >