跳转到主要内容

TurboGears2插件式事件和日历应用程序

项目描述

关于calendarevents

calendarevents是一个针对TurboGears2的可插拔日历和事件应用程序。它允许创建与应用程序内部定义的实体相关联的事件。

Calendarevents通过定义新的事件类型支持多个日历和事件类型,通过定义新的事件类型,可以定义事件如何与外部实体(如描述事件的博客文章)相关联。

在显示事件时,如果可用,将提供当天的天气信息和事件位置。

安装

calendarevents可以从pypi或bitbucket安装

easy_install tgapp-calendarevents

应该对大多数用户都适用

插入calendarevents

在您的应用程序 config/app_cfg.py 中导入 plug

from tgext.pluggable import plug

然后在 文件末尾 调用plug并传递calendarevents

plug(base_config, 'calendarevents', event_types=[...])

event_types 参数中至少定义一个事件类型。事件类型的定义在事件类型部分中解释。

您将能够通过 http://localhost:8080/calendarevents 访问日历。

事件类型

calendarevents需要应用程序定义至少一个EventType才能工作。

事件类型必须从 calendarevents.EventType 类继承定义,例如,要定义一个与描述音乐会本身的文章相关联的音乐会事件

from tw2.core.js import js_function
from tw2.core.resources import JSLink, CSSLink

class Concert(EventType):
    name = 'Concert'
    resources = [
        JSLink(modname='calendarevents.public', filename='js/calendarevents.js'),
        CSSLink(modname='calendarevents.public', filename='css/fullcalendar.css')
    ]
    events = {'eventClick': js_function('calendarevents.eventClick'),
              'dayClick': js_function('calendarevents.dayClick')}

    def get_linkable_entities(self, calendar):
        return [(a.uid, a.title) for a in model.DBSession.query(model.Article)]

    def get_linked_entity_info(self, event):
        return model.DBSession.query(model.Article).get(event.linked_entity_id).title

    def get_linked_entity_url(self, event):
        return tg.url('/blog/view/%s' % event.linked_entity_id)

plug(base_config, 'calendarevents', event_types=[Concert()])

事件类型还可以指定一些附加选项来改变calendevents的行为。如果EventType将类属性force_redirect = True指定为,则每当打开事件页面时,用户将被重定向到链接实体URL。此外,EventType还可以通过暴露一个calendar_data(self, event) -> dict方法来更新日历信息,该方法可以返回事件的任何附加信息(例如,它可以标记事件为全天或非全天)。

仅当您想使用fullcalendar事件中的js_hooks时才需要resources。资源应该是注入的资源列表。

events是用于覆盖js_hooks的注入js方法。

js_hooks

如果您想使用js_hooks,您必须在事件类型中注入资源,请参阅上一节。目前支持的js_hooks事件有eventClickdayClick

.js钩子脚本的示例

(function(w) {
  w.calendarevents = {
    eventClick: function(base_url, event, view) {
      window.location.href = base_url+event.uid;
    },
    dayClick: function(base_url, date, allDay, view) {
    }
  };
})(window);

注意:如果您注入了js_hooks,则替换了默认行为。注意:从版本0.2.0开始,日期包含点击的日期的moment

暴露的部分

calendarevents公开了一个部分,用于在其它页面中渲染事件框

  • calendarevents.partials:event(event) - 渲染事件框

日历部分

calendarevents.partials:calendar(cal, view='month', all_day_slot=False, start_from=datetime.utcnow())

日历部分公开了一个仅包含日历的部分,接受的参数为

  • cal -> (必需) 日历对象,目前js事件仅由分配给该日历的event_type管理

    该日历

  • event_sources -> 一个以下格式的字典

    {'event_sources': [{'events': availability_events_list,
                        'color': 'Blue',
                        'text_color': ''},
                       {'events': occupation_events_list,
                        'color': 'Red',
                        'text_color': ''}]}

    colortext_color是可选的,events应该是event.calendar_data属性的列表,如果您没有提供,则事件从cal对象中获取

  • start_from -> (datetime) 日历的起始日期

  • view -> (String) (默认值“month”) 日历视图的类型(《month’、‘basicWeek’、‘basicDay’、‘agendaWeek’、‘agendaDay’、‘custom_days’)

  • all_day_slot -> (Bool) (默认值:False) 事件插槽显示全天还是实际时间槽

  • slot_minutes -> (Int或String) (默认值:’00:15:00’或15) 插槽持续时间,如果slot_minutes < 60

  • first_hour -> (Int或String) (默认值:’08:00:00’或8) 显示的第一个小时

  • time_format -> (String) (默认值:”HH:mm”) 时间显示格式

  • column_format -> (String) (默认值:”D/M”) 列日期显示格式

  • first_day -> (Int) (默认值:0) 周的第一天

  • day_to_show -> (Int) (默认值:8) 视图中显示的天数

  • slot_label_interval -> (String) (默认值:’01:00:00’) 插槽标签间隔

实用工具

calendarvents.lib.utils中,您可以找到一些用于查看和管理事件和日历的实用工具

  • create_calendar(name, events_type) - 创建一个新的日历,events_type应该是一个字符串

  • get_calendar(calendar_id) - 获取给定calendar_id的日历

  • create_event(cal, name, summary, datetime, location, linked_entity_type, linked_entity_id, end_time) - 创建一个新的calendar_event

  • get_event(event_id) - 获取指定 event_idcalendar_event

  • get_calendar_events_from_datetime(calendar, start_time, active) - 获取给定日历从指定 start_time 开始的所有活跃的 calendar_event

  • get_calendar_day_events(calendar, start_time, active) - 获取给定日历和指定 start_time 的所有活跃 calendar_event

  • get_calendar_events_in_range(calendar, start_time, end_time, active) - 获取给定日历和指定时间范围(start_time - end_time)的所有活跃 calendar_event

  • deactivate_event(event_id) - 使 calendar_event 失效,默认情况下,标准的获取事件工具只检索活跃的事件

  • activate_event(event_id) - 将 calendar_event 设置为活跃状态

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

tgapp-calendarevents-0.2.1.tar.gz (110.9 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面