-$(document).ready(function() {
-
- //Register review form submition function
- $("#show_publications").click(
- function()
- {
- if($(".publications_autre").css('display') == 'none')
- $(".publications_autre").show();
- else
- $(".publications_autre").hide();
-
+(function() {
+
+ function getTimezoneName() {
+ tmSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0));
+ so = -1 * tmSummer.getTimezoneOffset();
+ tmWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0));
+ wo = -1 * tmWinter.getTimezoneOffset();
+
+ if (-660 == so && -660 == wo) return 'Pacific/Midway';
+ if (-600 == so && -600 == wo) return 'Pacific/Tahiti';
+ if (-570 == so && -570 == wo) return 'Pacific/Marquesas';
+ if (-540 == so && -600 == wo) return 'America/Adak';
+ if (-540 == so && -540 == wo) return 'Pacific/Gambier';
+ if (-480 == so && -540 == wo) return 'America/Anchorage';
+ if (-480 == so && -480 == wo) return 'Pacific/Pitcairn';
+ if (-420 == so && -480 == wo) return 'America/Vancouver';
+ if (-420 == so && -420 == wo) return 'America/Phoenix';
+ if (-360 == so && -420 == wo) return 'America/Edmonton';
+ if (-360 == so && -360 == wo) return 'America/Guatemala';
+ if (-360 == so && -300 == wo) return 'Pacific/Easter';
+ if (-300 == so && -360 == wo) return 'America/Winnipeg';
+ if (-300 == so && -300 == wo) return 'America/Bogota';
+ if (-240 == so && -300 == wo) return 'America/Montreal';
+ if (-240 == so && -240 == wo) return 'America/Caracas';
+ if (-240 == so && -180 == wo) return 'America/Santiago';
+ if (-180 == so && -240 == wo) return 'America/Moncton';
+ if (-180 == so && -180 == wo) return 'America/Montevideo';
+ if (-180 == so && -120 == wo) return 'America/Sao_Paulo';
+ if (-150 == so && -210 == wo) return 'America/St_Johns';
+ if (-120 == so && -180 == wo) return 'America/Godthab';
+ if (-120 == so && -120 == wo) return 'America/Noronha';
+ if (-60 == so && -60 == wo) return 'Atlantic/Cape_Verde';
+ if (0 == so && -60 == wo) return 'Atlantic/Azores';
+ if (0 == so && 0 == wo) return 'Africa/Casablanca';
+ if (60 == so && 0 == wo) return 'Europe/London';
+ if (60 == so && 60 == wo) return 'Africa/Algiers';
+ if (60 == so && 120 == wo) return 'Africa/Windhoek';
+ if (120 == so && 60 == wo) return 'Africa/Algiers';
+ if (120 == so && 120 == wo) return 'Africa/Harare';
+ if (180 == so && 120 == wo) return 'Africa/Cairo';
+ if (180 == so && 180 == wo) return 'Africa/Nairobi';
+ if (240 == so && 180 == wo) return 'Europe/Moscow';
+ if (240 == so && 240 == wo) return 'Asia/Dubai';
+ if (270 == so && 210 == wo) return 'Asia/Tehran';
+ if (270 == so && 270 == wo) return 'Asia/Kabul';
+ if (300 == so && 240 == wo) return 'Asia/Baku';
+ if (300 == so && 300 == wo) return 'Asia/Karachi';
+ if (330 == so && 330 == wo) return 'Asia/Kolkata';
+ if (345 == so && 345 == wo) return 'Asia/Kathmandu';
+ if (360 == so && 300 == wo) return 'Asia/Yekaterinburg';
+ if (360 == so && 360 == wo) return 'Asia/Colombo';
+ if (390 == so && 390 == wo) return 'Asia/Rangoon';
+ if (420 == so && 360 == wo) return 'Asia/Almaty';
+ if (420 == so && 420 == wo) return 'Asia/Bangkok';
+ if (480 == so && 420 == wo) return 'Asia/Krasnoyarsk';
+ if (480 == so && 480 == wo) return 'Australia/Perth';
+ if (540 == so && 480 == wo) return 'Asia/Irkutsk';
+ if (540 == so && 540 == wo) return 'Asia/Tokyo';
+ if (570 == so && 570 == wo) return 'Australia/Darwin';
+ if (570 == so && 630 == wo) return 'Australia/Adelaide';
+ if (600 == so && 540 == wo) return 'Asia/Yakutsk';
+ if (600 == so && 600 == wo) return 'Australia/Brisbane';
+ if (600 == so && 660 == wo) return 'Australia/Sydney';
+ if (630 == so && 660 == wo) return 'Australia/Lord_Howe';
+ if (660 == so && 600 == wo) return 'Asia/Vladivostok';
+ if (660 == so && 660 == wo) return 'Pacific/Guadalcanal';
+ if (690 == so && 690 == wo) return 'Pacific/Norfolk';
+ if (720 == so && 660 == wo) return 'Asia/Magadan';
+ if (720 == so && 720 == wo) return 'Pacific/Fiji';
+ if (720 == so && 780 == wo) return 'Pacific/Auckland';
+ if (765 == so && 825 == wo) return 'Pacific/Chatham';
+ if (780 == so && 780 == wo) return 'Pacific/Enderbury'
+ if (840 == so && 840 == wo) return 'Pacific/Kiritimati';
+ return 'GMT';
+ }
+
+ $(document).ready(function() {
+
+ //Register review form submition function
+ $("#show_publications").click(function() {
+ if($(".publications_autre").css('display') == 'none') {
+ $(".publications_autre").show();
+ }
+ else {
+ $(".publications_autre").hide();
+ }
+ });
+
+ // Activer le datepicker sur les input de classe "date"
+ $.datepicker.setDefaults($.datepicker.regional['fr']);
+ $('input:text.date').datepicker();
+
+ // Sélectionner automatiquement le fuseau horaire
+ $('select[name=fuseau]').each(function() {
+ $(this).val(getTimezoneName())
+ })
+
});
- // Activer le datepicker sur les input de classe "date"
- $.datepicker.setDefaults($.datepicker.regional['fr']);
- $('input:text.date').datepicker();
-});
+})();
# -*- encoding: utf-8 -*-
-import simplejson, uuid, datetime, caldav, vobject, uuid, random, operator
+import simplejson, uuid, datetime, caldav, vobject, uuid, random, operator, pytz
+from babel.dates import get_timezone_name
from django.contrib.auth.models import User
from django.db import models
from django.db.models import Q, Max
qs = qs.filter(titre__icontains=word)
return qs
+def build_time_zone_choices():
+ fr_names = set()
+ tzones = []
+ now = datetime.datetime.now()
+ for tzname in pytz.common_timezones:
+ tz = pytz.timezone(tzname)
+ fr_name = get_timezone_name(tz, locale='fr_FR')
+ if fr_name in fr_names:
+ continue
+ fr_names.add(fr_name)
+ offset = tz.utcoffset(now)
+ seconds = offset.seconds + offset.days * 86400
+ (hours, minutes) = divmod(seconds // 60, 60)
+ offset_str = 'UTC%+d:%d' % (hours, minutes) if minutes else 'UTC%+d' % hours
+ tzones.append((seconds, tzname, '%s - %s' % (offset_str, fr_name)))
+ tzones.sort()
+ return [(tz[1], tz[2]) for tz in tzones]
+
class Evenement(models.Model):
TYPE_CHOICES = ((u'Colloque', u'Colloque'),
(u'Conférence', u'Conférence'),
(u'Appel à contribution', u'Appel à contribution'),
(u'Journée d\'étude', u'Journée d\'étude'),
(None, u'Autre'))
-
+ TIME_ZONE_CHOICES = build_time_zone_choices()
+
uid = models.CharField(max_length = 255, default = str(uuid.uuid1()))
approuve = models.BooleanField(default=False, verbose_name=u'approuvé')
titre = models.CharField(max_length=255)
blank=True, null=True)
mots_cles = models.TextField('Mots-Clés', blank = True, null = True)
type = models.CharField(max_length=255, choices=TYPE_CHOICES)
- fuseau = TimeZoneField(verbose_name='fuseau horaire')
+ lieu = models.TextField()
debut = models.DateTimeField(default = datetime.datetime.now)
fin = models.DateTimeField(default = datetime.datetime.now)
- lieu = models.TextField()
+ fuseau = models.CharField(max_length=100, choices=TIME_ZONE_CHOICES, verbose_name='fuseau horaire')
description = models.TextField(blank = True, null = True)
#fichiers = TODO?
contact = models.TextField(blank = True, null = True)