首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >天内事件的portal_catalog查询

天内事件的portal_catalog查询
EN

Stack Overflow用户
提问于 2016-05-25 21:30:11
回答 2查看 180关注 0票数 1

是否可以在portal_catalog中查询将来的事件和当前正在运行的事件?

例如:

代码语言:javascript
复制
start >= now <= end or
start <= now <= end

或者还有其他可能的查询?

Plone 4

plone.app.event

EN

回答 2

Stack Overflow用户

发布于 2016-05-25 22:08:13

plone目录的查询选项非常有限,KeywordIndex是唯一支持or运算符的索引

一种可能的解决方案是将其分成两个查询。

代码语言:javascript
复制
from DateTime import DateTime

query_current = {}
query_current['start'] = {'query': DateTime(),
                          'range': 'min'}
query_current['end'] = {'query': DateTime(),
                        'range': 'max'}

query_future = {}
query_future['start'] = {'query': DateTime(),
                         'range': 'min'}
query_future['end'] = {'query': DateTime(),
                       'range': 'min'}


items = list(portal_catalog(**query_current)) + list(portal_catalog(**query_future))

这一点有很好的文档记录:http://docs.plone.org/4/en/develop/plone/searching_and_indexing/query.html#querying-by-date

另一种可能是Products.AdvancedQuery,但老实说,我从来没有用过它,因为我猜它不知何故死了--> http://www.dieter.handshake.de/pyprojects/zope/AdvancedQuery.html你可能无法安装它。

票数 2
EN

Stack Overflow用户

发布于 2016-05-26 05:19:30

谢谢,过几天我会试一试。

现在,这对我来说是可行的

代码语言:javascript
复制
now = localized_now(self.context)
now_timestamp = time.mktime(now.timetuple())

# get all events out of catalog
allEvents = portal_catalog(
    portal_type="Event",
    review_state="published",
    sort_on='start',
    path={'query': nav_root_path}
)
items = []
for i in allEvents:
    obj = i.getObject()
    start_timestamp = time.mktime(obj.start.timetuple())
    end_timestamp = time.mktime(obj.end.timetuple())
    if start_timestamp >= now_timestamp <= end_timestamp or\
       start_timestamp <= now_timestamp <= end_timestamp:
        items.append((i, i.start))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37438746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档