2.1 --- a/actions/EventAggregatorNewEvent.py Wed Mar 17 01:36:28 2010 +0100
2.2 +++ b/actions/EventAggregatorNewEvent.py Mon Mar 22 00:27:34 2010 +0100
2.3 @@ -15,6 +15,11 @@
2.4 from MoinMoin.PageEditor import PageEditor
2.5 import EventAggregatorSupport
2.6
2.7 +try:
2.8 + import pytz
2.9 +except ImportError:
2.10 + pytz = None
2.11 +
2.12 Dependencies = ['pages']
2.13
2.14 # Action class and supporting functions.
2.15 @@ -41,9 +46,18 @@
2.16 request = self.request
2.17 form = request.form
2.18
2.19 - # Handle advanced and basic forms.
2.20 + # Handle advanced and basic forms, and enable/disable certain fields.
2.21
2.22 show_advanced = form.get("advanced") and not form.get("basic")
2.23 + show_end_date = form.get("end-day") and not form.get("hide-end-date") or form.get("show-end-date")
2.24 + show_times = (form.get("start-hour") or form.get("end-hour")) and not form.get("hide-times") or form.get("show-times")
2.25 +
2.26 + show_zone_regime = form.get("regime") and not form.get("show-offsets") and \
2.27 + not form.get("hide-zone") or form.get("show-regime")
2.28 + show_zone_offsets = form.get("start-offset") and not form.get("show-regime") and \
2.29 + not form.get("hide-zone") or form.get("show-offsets")
2.30 +
2.31 + show_zones = show_zone_regime or show_zone_offsets
2.32
2.33 # Prepare the category list.
2.34
2.35 @@ -79,45 +93,13 @@
2.36 del topics[i]
2.37 break
2.38
2.39 - # Initialise hour and minute lists.
2.40 -
2.41 - start_hour_list = []
2.42 - start_hour_list.append('<option value=""></option>')
2.43 - start_minute_list = []
2.44 - start_minute_list.append('<option value=""></option>')
2.45 - end_hour_list = []
2.46 - end_hour_list.append('<option value=""></option>')
2.47 - end_minute_list = []
2.48 - end_minute_list.append('<option value=""></option>')
2.49 -
2.50 - start_hour = self._get_input(form, "start-hour")
2.51 - end_hour = self._get_input(form, "end-hour")
2.52 - start_minute = self._get_input(form, "start-minute")
2.53 - end_minute = self._get_input(form, "end-minute")
2.54 -
2.55 - # Prepare hour and minute lists, selecting specified values.
2.56 -
2.57 - for hour in range(0, 24):
2.58 - selected = self._get_selected(hour, start_hour)
2.59 - start_hour_list.append('<option value="%02d" %s>%02d</option>' % (hour, selected, hour))
2.60 - selected = self._get_selected(hour, end_hour)
2.61 - end_hour_list.append('<option value="%02d" %s>%02d</option>' % (hour, selected, hour))
2.62 -
2.63 - for minute in range(0, 60):
2.64 - selected = self._get_selected(minute, start_minute)
2.65 - start_minute_list.append('<option value="%02d" %s>%02d</option>' % (minute, selected, minute))
2.66 - selected = self._get_selected(minute, end_minute)
2.67 - end_minute_list.append('<option value="%02d" %s>%02d</option>' % (minute, selected, minute))
2.68 -
2.69 # Initialise month lists.
2.70
2.71 start_month_list = []
2.72 - start_month_list.append('<option value=""></option>')
2.73 end_month_list = []
2.74 - end_month_list.append('<option value=""></option>')
2.75
2.76 - start_month = self._get_input(form, "start-month", 0)
2.77 - end_month = self._get_input(form, "end-month", 0)
2.78 + start_month = self._get_input(form, "start-month", EventAggregatorSupport.getCurrentMonth())
2.79 + end_month = self._get_input(form, "end-month", start_month)
2.80
2.81 # Prepare month lists, selecting specified months.
2.82
2.83 @@ -128,6 +110,20 @@
2.84 selected = self._get_selected(month, end_month)
2.85 end_month_list.append('<option value="%02d" %s>%s</option>' % (month, selected, month_label))
2.86
2.87 + # Initialise regime lists.
2.88 +
2.89 + regime_list = []
2.90 + regime_list.append('<option value=""></option>')
2.91 +
2.92 + regime = form.get("regime", [None])[0]
2.93 +
2.94 + # Prepare regime lists, selecting specified regimes.
2.95 +
2.96 + if pytz is not None:
2.97 + for pytz_regime in pytz.common_timezones:
2.98 + selected = self._get_selected(pytz_regime, regime)
2.99 + regime_list.append('<option value="%s" %s>%s</option>' % (pytz_regime, selected, pytz_regime))
2.100 +
2.101 # Permitting configuration of the template name.
2.102
2.103 template_default = getattr(request.cfg, "event_aggregator_new_event_template", "EventTemplate")
2.104 @@ -138,24 +134,38 @@
2.105 "category_list" : "\n".join(category_list),
2.106
2.107 "start_month_list" : "\n".join(start_month_list),
2.108 - "start_hour_list" : "\n".join(start_hour_list),
2.109 - "start_minute_list" : "\n".join(start_minute_list),
2.110 + "end_month_list" : "\n".join(end_month_list),
2.111 +
2.112 + "regime_list" : "\n".join(regime_list),
2.113 + "use_regime_label" : _("Using local time"),
2.114
2.115 - "end_month_list" : "\n".join(end_month_list),
2.116 - "end_hour_list" : "\n".join(end_hour_list),
2.117 - "end_minute_list" : "\n".join(end_minute_list),
2.118 + "show_end_date_label" : _("Specify end date"),
2.119 + "hide_end_date_label" : _("End event on same day"),
2.120 +
2.121 + "show_times_label" : _("Specify times"),
2.122 + "hide_times_label" : _("No start and end times"),
2.123 +
2.124 + "show_offsets_label" : _("Specify UTC offsets"),
2.125 + "show_regime_label" : _("Specify location"),
2.126 + "hide_zone_label" : _("Make times apply everywhere"),
2.127
2.128 "start_label" : _("Start date (day, month, year)"),
2.129 "start_day_default" : form.get("start-day", [""])[0],
2.130 "start_year_default" : form.get("start-year", [""])[0] or EventAggregatorSupport.getCurrentYear(),
2.131 "start_time_label" : _("Start time (hour, minute, second)"),
2.132 + "start_hour_default" : form.get("start-hour", [""])[0],
2.133 + "start_minute_default" : form.get("start-minute", [""])[0],
2.134 "start_second_default" : form.get("start-second", [""])[0],
2.135 + "start_offset_default" : form.get("start-offset", [""])[0],
2.136
2.137 "end_label" : _("End date (day, month, year) - if different"),
2.138 - "end_day_default" : form.get("end-day", [""])[0],
2.139 - "end_year_default" : form.get("end-year", [""])[0],
2.140 + "end_day_default" : form.get("end-day", [""])[0] or form.get("start-day", [""])[0],
2.141 + "end_year_default" : form.get("end-year", [""])[0] or form.get("start-year", [""])[0],
2.142 "end_time_label" : _("End time (hour, minute, second)"),
2.143 + "end_hour_default" : form.get("end-hour", [""])[0],
2.144 + "end_minute_default" : form.get("end-minute", [""])[0],
2.145 "end_second_default" : form.get("end-second", [""])[0],
2.146 + "end_offset_default" : form.get("end-offset", [""])[0] or form.get("start-offset", [""])[0],
2.147
2.148 "title_label" : _("Event title/summary"),
2.149 "title_default" : form.get("title", [""])[0],
2.150 @@ -176,7 +186,7 @@
2.151 "parent_default" : form.get("parent", [""])[0],
2.152
2.153 "advanced_label" : _("Show advanced options"),
2.154 - "basic_label" : _("Show basic options"),
2.155 + "basic_label" : _("Hide advanced options"),
2.156 }
2.157
2.158 # Prepare the output HTML.
2.159 @@ -185,35 +195,28 @@
2.160 <table>
2.161 <tr>
2.162 <td class="label"><label>%(title_label)s</label></td>
2.163 - <td>
2.164 + <td colspan="2">
2.165 <input name="title" type="text" size="40" value="%(title_default)s" />
2.166 </td>
2.167 </tr>
2.168 <tr>
2.169 <td class="label"><label>%(start_label)s</label></td>
2.170 - <td>
2.171 + <td colspan="2" style="white-space: nowrap">
2.172 <input name="start-day" type="text" value="%(start_day_default)s" size="2" />
2.173 <select name="start-month">
2.174 %(start_month_list)s
2.175 </select>
2.176 <input name="start-year" type="text" value="%(start_year_default)s" size="4" />
2.177 </td>
2.178 - </tr>
2.179 - <tr>
2.180 - <td class="label"><label>%(start_time_label)s</label></td>
2.181 - <td>
2.182 - <select name="start-hour">
2.183 - %(start_hour_list)s
2.184 - </select>
2.185 - <select name="start-minute">
2.186 - %(start_minute_list)s
2.187 - </select>
2.188 - <input name="start-second" type="text" value="%(start_second_default)s" size="2" />
2.189 - </td>
2.190 - </tr>
2.191 + </tr>''' % d
2.192 +
2.193 + # End date controls.
2.194 +
2.195 + if show_end_date:
2.196 + html += '''
2.197 <tr>
2.198 <td class="label"><label>%(end_label)s</label></td>
2.199 - <td>
2.200 + <td colspan="2" style="white-space: nowrap">
2.201 <input name="end-day" type="text" value="%(end_day_default)s" size="2" />
2.202 <select name="end-month">
2.203 %(end_month_list)s
2.204 @@ -222,33 +225,156 @@
2.205 </td>
2.206 </tr>
2.207 <tr>
2.208 - <td class="label"><label>%(end_time_label)s</label></td>
2.209 + <td class="label">
2.210 + <input name="hide-end-date" type="submit" value="%(hide_end_date_label)s" />
2.211 + </td>
2.212 + </tr>''' % d
2.213 + else:
2.214 + html += '''
2.215 + <tr>
2.216 + <td class="label">
2.217 + <input name="show-end-date" type="submit" value="%(show_end_date_label)s" />
2.218 + </td>
2.219 + </tr>''' % d
2.220 +
2.221 + # Generic time information.
2.222 +
2.223 + if show_times:
2.224 +
2.225 + # Start time controls.
2.226 +
2.227 + html += '''
2.228 + <tr>
2.229 + <td class="label"><label>%(start_time_label)s</label></td>
2.230 + <td style="white-space: nowrap">
2.231 + <input name="start-hour" type="text" value="%(start_hour_default)s" size="2" maxlength="2" />
2.232 + <input name="start-minute" type="text" value="%(start_minute_default)s" size="2" maxlength="2" />
2.233 + <input name="start-second" type="text" value="%(start_second_default)s" size="2" maxlength="2" />
2.234 + </td>''' % d
2.235 +
2.236 + # Offset information displayed.
2.237 +
2.238 + if show_zone_offsets:
2.239 + html += '''
2.240 <td>
2.241 - <select name="end-hour">
2.242 - %(end_hour_list)s
2.243 + UTC <input name="start-offset" type="text" value="%(start_offset_default)s" size="6" maxlength="6" />
2.244 + </td>''' % d
2.245 +
2.246 + # Regime information displayed.
2.247 +
2.248 + elif show_zone_regime:
2.249 + html += '''
2.250 + <td>
2.251 + %(use_regime_label)s
2.252 + </td>''' % d
2.253 +
2.254 + html += '''
2.255 + </tr>'''
2.256 +
2.257 + # End time controls.
2.258 +
2.259 + html += '''
2.260 + <tr>
2.261 + <td class="label"><label>%(end_time_label)s</label></td>
2.262 + <td style="white-space: nowrap">
2.263 + <input name="end-hour" type="text" value="%(end_hour_default)s" size="2" maxlength="2" />
2.264 + <input name="end-minute" type="text" value="%(end_minute_default)s" size="2" maxlength="2" />
2.265 + <input name="end-second" type="text" value="%(end_second_default)s" size="2" maxlength="2" />
2.266 + </td>''' % d
2.267 +
2.268 + # Offset information displayed.
2.269 +
2.270 + if show_zone_offsets:
2.271 + html += '''
2.272 + <td>
2.273 + UTC <input name="end-offset" type="text" value="%(end_offset_default)s" size="6" maxlength="6" />
2.274 + </td>''' % d
2.275 +
2.276 + # Regime information displayed.
2.277 +
2.278 + elif show_zone_regime:
2.279 + html += '''
2.280 + <td>
2.281 + <select name="regime">
2.282 + %(regime_list)s
2.283 </select>
2.284 - <select name="end-minute">
2.285 - %(end_minute_list)s
2.286 - </select>
2.287 - <input name="end-second" type="text" value="%(end_second_default)s" size="2" />
2.288 - </td>
2.289 + </td>''' % d
2.290 +
2.291 + # Controls for removing times.
2.292 +
2.293 + html += '''
2.294 </tr>
2.295 <tr>
2.296 + <td class="label">
2.297 + <input name="hide-times" type="submit" value="%(hide_times_label)s" />
2.298 + </td>
2.299 + <td></td>''' % d
2.300 +
2.301 + # Time zone controls.
2.302 +
2.303 + if show_zones:
2.304 +
2.305 + # Offset information displayed.
2.306 +
2.307 + if show_zone_offsets:
2.308 + html += '''
2.309 + <td>
2.310 + <input name="show-regime" type="submit" value="%(show_regime_label)s" />''' % d
2.311 +
2.312 + # Regime information displayed.
2.313 +
2.314 + elif show_zone_regime:
2.315 + html += '''
2.316 + <td>
2.317 + <input name="show-offsets" type="submit" value="%(show_offsets_label)s" />''' % d
2.318 +
2.319 + # To remove zone information.
2.320 +
2.321 + html += '''
2.322 + <input name="hide-zone" type="submit" value="%(hide_zone_label)s" />
2.323 + </td>''' % d
2.324 +
2.325 + # No time zone information shown.
2.326 +
2.327 + else:
2.328 + html += '''
2.329 + <td>
2.330 + <input name="show-regime" type="submit" value="%(show_regime_label)s" />
2.331 + <input name="show-offsets" type="submit" value="%(show_offsets_label)s" />
2.332 + </td>''' % d
2.333 +
2.334 + html += '''
2.335 + </tr>'''
2.336 +
2.337 + # Controls for adding times.
2.338 +
2.339 + else:
2.340 + html += '''
2.341 + <tr>
2.342 + <td class="label">
2.343 + <input name="show-times" type="submit" value="%(show_times_label)s" />
2.344 + </td>
2.345 + </tr>''' % d
2.346 +
2.347 +
2.348 + # Various basic controls.
2.349 +
2.350 + html += '''
2.351 + <tr>
2.352 <td class="label"><label>%(description_label)s</label></td>
2.353 - <td>
2.354 + <td colspan="2">
2.355 <input name="description" type="text" size="40" value="%(description_default)s" />
2.356 </td>
2.357 </tr>
2.358 <tr>
2.359 <td class="label"><label>%(location_label)s</label></td>
2.360 - <td>
2.361 + <td colspan="2">
2.362 <input name="location" type="text" size="40" value="%(location_default)s" />
2.363 </td>
2.364 </tr>
2.365 <tr>
2.366 - <tr>
2.367 <td class="label"><label>%(link_label)s</label></td>
2.368 - <td>
2.369 + <td colspan="2">
2.370 <input name="link" type="text" size="40" value="%(link_default)s" />
2.371 </td>
2.372 </tr>''' % d
2.373 @@ -261,7 +387,7 @@
2.374 html += '''
2.375 <tr>
2.376 <td class="label"><label>%(topics_label)s</label></td>
2.377 - <td>
2.378 + <td colspan="2">
2.379 <input name="topics" type="text" size="20" value="%(topic)s" />
2.380 <input name="remove-topic-%(topic_number)s" type="submit" value="%(remove_topic_label)s" />
2.381 </td>
2.382 @@ -270,7 +396,7 @@
2.383 html += '''
2.384 <tr>
2.385 <td></td>
2.386 - <td>
2.387 + <td colspan="2">
2.388 <input name="add-topic" type="submit" value="%(add_topic_label)s" />
2.389 </td>
2.390 </tr>''' % d
2.391 @@ -281,14 +407,14 @@
2.392 html += '''
2.393 <tr>
2.394 <td></td>
2.395 - <td>
2.396 + <td colspan="2">
2.397 <input name="basic" type="submit" value="%(basic_label)s" />
2.398 <input name="advanced" type="hidden" value="true" />
2.399 </td>
2.400 </tr>
2.401 <tr>
2.402 <td class="label"><label>%(category_label)s</label></td>
2.403 - <td class="content">
2.404 + <td colspan="2" class="content">
2.405 <select multiple="multiple" name="category">
2.406 %(category_list)s
2.407 </select>
2.408 @@ -296,19 +422,19 @@
2.409 </tr>
2.410 <tr>
2.411 <td class="label"><label>%(template_label)s</label></td>
2.412 - <td>
2.413 + <td colspan="2">
2.414 <input name="template" type="text" size="40" value="%(template_default)s" />
2.415 </td>
2.416 </tr>
2.417 <tr>
2.418 <td class="label"><label>%(parent_label)s</label></td>
2.419 - <td>
2.420 + <td colspan="2">
2.421 <input name="parent" type="text" size="40" value="%(parent_default)s" />
2.422 </td>
2.423 </tr>
2.424 <tr>
2.425 <td></td>
2.426 - <td class="buttons">
2.427 + <td colspan="2" class="buttons">
2.428 %(buttons_html)s
2.429 </td>
2.430 </tr>
2.431 @@ -317,7 +443,7 @@
2.432 html += '''
2.433 <tr>
2.434 <td></td>
2.435 - <td>
2.436 + <td colspan="2">
2.437 <input name="advanced" type="submit" value="%(advanced_label)s" />
2.438 %(category_list)s
2.439 <input name="parent" type="hidden" value="%(parent_default)s" />
2.440 @@ -326,7 +452,7 @@
2.441 </tr>
2.442 <tr>
2.443 <td></td>
2.444 - <td class="buttons">
2.445 + <td colspan="2" class="buttons">
2.446 %(buttons_html)s
2.447 </td>
2.448 </tr>
2.449 @@ -377,8 +503,12 @@
2.450 link = form.get("link", [None])[0]
2.451 topics = form.get("topics", [])
2.452
2.453 - start_zone = form.get("start-zone", [None])[0]
2.454 - end_zone = form.get("end-zone", [None])[0]
2.455 + regime = form.get("regime", [None])[0]
2.456 + start_offset = form.get("start-offset", [None])[0]
2.457 + end_offset = form.get("end-offset", [None])[0]
2.458 +
2.459 + start_zone = regime or start_offset
2.460 + end_zone = regime or end_offset
2.461
2.462 # Validate certain fields.
2.463