1 # -*- coding: iso-8859-1 -*- 2 """ 3 MoinMoin - EventAggregatorUpdate Action 4 5 @copyright: 2012, 2013 by Paul Boddie <paul@boddie.org.uk> 6 @license: GNU GPL (v2 or later), see COPYING.txt for details. 7 """ 8 9 from EventAggregatorSupport.Actions import get_date_functions 10 from EventAggregatorSupport import * 11 from MoinDateSupport import getParameterMonth 12 from MoinMoin.Page import Page 13 from MoinMoin import config 14 15 Dependencies = ['pages'] 16 17 # Action function. 18 19 def execute(pagename, request): 20 21 """ 22 On the given 'pagename', for the given 'request', write a page fragment 23 producing the rendered calendar information for inclusion in an existing Web 24 page. Since the page is not processed, all necessary parameters need to be 25 supplied in the request. 26 """ 27 28 form = get_form(request) 29 page = Page(request, pagename) 30 31 # Find settings from the request parameters only. 32 33 calendar_name = form.get("calendar", [None])[0] 34 category_names = form.get("category", []) 35 search_pattern = form.get("search", [None])[0] 36 remote_sources = form.get("source", []) 37 name_usage = getParameter(request, "names", "weekly") 38 template_name = getParameter(request, "template") 39 parent_name = getParameter(request, "parent") 40 mode = getParameter(request, "mode", "calendar") 41 raw_resolution = getParameter(request, "raw-resolution") 42 resolution = getParameter(request, "resolution", mode == "day" and "date" or "month") 43 map_name = getParameter(request, "map") 44 45 # The underlying dimensions of the calendar are supplied in special 46 # parameters. 47 48 raw_calendar_start = getParameter(request, "calendarstart") 49 raw_calendar_end = getParameter(request, "calendarend") 50 51 # Different modes require different levels of precision by default. 52 53 resolution = mode == "calendar" and "month" or resolution 54 55 # Determine the limits of the calendar. 56 57 get_date, _get_form_date = get_date_functions(raw_resolution) 58 59 original_calendar_start = calendar_start = get_date(raw_calendar_start) 60 original_calendar_end = calendar_end = get_date(raw_calendar_end) 61 62 wider_calendar_start = getParameterMonth(getParameter(request, "wider-start")) 63 wider_calendar_end = getParameterMonth(getParameter(request, "wider-end")) 64 65 get_date, _get_form_date = get_date_functions(resolution) 66 67 calendar_start = get_date(getParameter(request, "start")) or calendar_start 68 calendar_end = get_date(getParameter(request, "end")) or calendar_end 69 70 # Get the events according to the resolution of the calendar. 71 72 all_shown_events, first, last = getEventsUsingParameters( 73 category_names, search_pattern, remote_sources, calendar_start, calendar_end, 74 resolution, request) 75 76 # Define a view of the calendar, retaining useful navigational information. 77 78 view = View(page, calendar_name, 79 raw_calendar_start, raw_calendar_end, 80 original_calendar_start, original_calendar_end, 81 calendar_start, calendar_end, 82 wider_calendar_start, wider_calendar_end, 83 first, last, category_names, remote_sources, search_pattern, template_name, 84 parent_name, mode, raw_resolution, resolution, name_usage, map_name) 85 86 send_headers = get_send_headers(request) 87 send_headers(["Content-Type: text/html; charset=%s" % config.charset]) 88 request.write(view.render(all_shown_events)) 89 90 # vim: tabstop=4 expandtab shiftwidth=4