diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-01 14:49:49 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-01 14:49:49 +0200 | 
| commit | 273c6c037a87c1ecff8bc0630b0254b74da1ac01 (patch) | |
| tree | 052af51c09fd546742e003f6f58813b987e4016b | |
| parent | 01e644c2a3667a9fb5d2977a51e4730e5176b4c5 (diff) | |
| download | Chimère-273c6c037a87c1ecff8bc0630b0254b74da1ac01.tar.bz2 Chimère-273c6c037a87c1ecff8bc0630b0254b74da1ac01.zip | |
Change settings to allow different JS map renderer
| -rw-r--r-- | chimere/settings.sample.py | 278 | ||||
| -rw-r--r-- | chimere/templates/chimere/blocks/head_chimere.html | 4 | ||||
| -rw-r--r-- | chimere/templatetags/chimere_tags.py | 8 | ||||
| -rw-r--r-- | chimere/widgets.py | 25 | 
4 files changed, 299 insertions, 16 deletions
| diff --git a/chimere/settings.sample.py b/chimere/settings.sample.py new file mode 100644 index 0000000..6db1464 --- /dev/null +++ b/chimere/settings.sample.py @@ -0,0 +1,278 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Don't edit this file: +# overload all theses settings in your local_settings.py file + +import os + +DEBUG = False +TEMPLATE_DEBUG = DEBUG + +# Django settings for chimere project. +PROJECT_NAME = 'Chimere' +ROOT_PATH = os.path.realpath(os.path.dirname(__file__)) + "/" + +EMAIL_HOST = 'localhost' +STATIC_URL = '/static/' +STATIC_ROOT = ROOT_PATH + 'static/' + +TINYMCE_URL = '/tinymce/' +JQUERY_JS_URLS = ('/javascript/jquery/jquery.js', +                  '/javascript/jquery-ui/jquery-ui.js',) +JQUERY_CSS_URLS = ('/javascript/jquery-ui/css/smoothness/jquery-ui.css', +                   '/javascript/jquery-ui-themes/base/jquery.ui.all.css') + +GPSBABEL = '/usr/bin/gpsbabel' +GPSBABEL_OPTIONS = 'simplify,crosstrack,error=0.005k' # simplify with an error of 5 meters +#GPSBABEL_OPTIONS = 'simplify,count=100' + +## chimere specific ## +CHIMERE_DEFAULT_ZOOM = 10 +# center of the map +CHIMERE_DEFAULT_CENTER = (-1.679444, 48.114722) +# projection used by the main map +# most public map providers use spherical mercator : 900913 +CHIMERE_EPSG_PROJECTION = 900913 +# projection displayed to the end user by openlayers +# chimere use the same projection to save its data in the database +CHIMERE_EPSG_DISPLAY_PROJECTION = 4326 +# display of shortcuts for areas +CHIMERE_DISPLAY_AREAS = True +# number of day before an event to display +# if equal to 0: disable event management +# if you change this value from 0 to a value in a production environnement +# don't forget to run the upgrade.py script to create appropriate fields in +# the database +CHIMERE_DAYS_BEFORE_EVENT = 30 +# allow feeds +CHIMERE_FEEDS = True + +CHIMERE_ICON_WIDTH = 21 +CHIMERE_ICON_HEIGHT = 25 +CHIMERE_ICON_OFFSET_X = -10 +CHIMERE_ICON_OFFSET_Y = -25 + +# display picture inside the description by default or inside a galery? +CHIMERE_MINIATURE_BY_DEFAULT = False + +# JS definition of the default map (for admin and when no map are defined in +# the application) +# cf. OpenLayers documentation for more details +CHIMERE_DEFAULT_MAP_LAYER = "new OpenLayers.Layer.OSM.Mapnik('Mapnik')" # OSM mapnik map + +CHIMERE_XAPI_URL = 'http://open.mapquestapi.com/xapi/api/0.6/' +CHIMERE_OSM_API_URL = 'api06.dev.openstreetmap.org' # test URL +CHIMERE_OSM_USER = 'test' +CHIMERE_OSM_PASSWORD = 'test' + +# as the web server need to be reloaded when property models are changed +# it could be a good idea to hide it to an admin who could'nt do that +CHIMERE_HIDE_PROPERTYMODEL = False + +# encoding for shapefile import +CHIMERE_SHAPEFILE_ENCODING = 'ISO-8859-1' + +# thumbnail +CHIMERE_THUMBS_SCALE_HEIGHT=250 +CHIMERE_THUMBS_SCALE_WIDTH=None + +CHIMERE_CSV_ENCODING = 'ISO-8859-1' + +ADMINS = ( +    # ('Your Name', 'your_email@domain.com'), +) + +MANAGERS = ADMINS + +DATABASES = { +    'default': { +        'NAME': 'ratatouille', +        'ENGINE': 'django.contrib.gis.db.backends.postgis', +        'HOST': 'localhost', +        'PORT': '5432', +        'USER': 'ratatouille', +        'PASSWORD': 'wiki', +    }, +} + +# Local time zone for this installation. Choices can be found here: +# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE +# although not all variations may be possible on all operating systems. +# If running in a Windows environment this must be set to the same as your +# system time zone. +TIME_ZONE = 'Europe/Paris' + +# Language code for this installation. All choices can be found here: +# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes +# http://blogs.law.harvard.edu/tech/stories/storyReader$15 +LANGUAGE_CODE = 'fr-fr' + +SITE_ID = 1 + +# If you set this to False, Django will make some optimizations so as not +# to load the internationalization machinery. +USE_I18N = True +USE_L10N = True + +# Absolute path to the directory that holds media. +# Example: "/home/media/media.lawrence.com/" +MEDIA_ROOT = ROOT_PATH + 'media/' + +# URL that handles the media served from MEDIA_ROOT. +# Example: "http://media.lawrence.com" +MEDIA_URL = '/media/' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( +    'django.template.loaders.filesystem.Loader', +    'django.template.loaders.app_directories.Loader', +#     'django.template.loaders.eggs.load_template_source', +) + +MIDDLEWARE_CLASSES = ( +    'django.middleware.common.CommonMiddleware', +    'django.contrib.sessions.middleware.SessionMiddleware', +    'django.contrib.auth.middleware.AuthenticationMiddleware', +    'django.middleware.doc.XViewMiddleware', +    'django.contrib.messages.middleware.MessageMiddleware' +) + +ROOT_URLCONF = 'chimere_example_project.urls' + +TEMPLATE_DIRS = [ +    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". +    # Always use forward slashes, even on Windows. +    # Don't forget to use absolute paths, not relative paths. +    ROOT_PATH + 'templates', +    ROOT_PATH + '../chimere/templates', +] + +TEMPLATE_CONTEXT_PROCESSORS = ( +    "django.contrib.auth.context_processors.auth", +    "django.core.context_processors.debug", +    "django.core.context_processors.i18n", +    "django.core.context_processors.media", +    "django.core.context_processors.static", +    "django.contrib.messages.context_processors.messages", +    "django.core.context_processors.request", +) + +INSTALLED_APPS = [ +    'django.contrib.auth', +    'django.contrib.admin', +    'django.contrib.contenttypes', +    'django.contrib.sessions', +    'django.contrib.sites', +    'django.contrib.gis', +    'django.contrib.staticfiles', +] + +# celery +try: +    import djcelery +    import kombu +    djcelery.setup_loader() +    BROKER_URL = 'django://' +    INSTALLED_APPS += ['kombu.transport.django', +                       'djcelery'] +except ImportError: +    # some import and export will not be available +    pass + +INSTALLED_APPS += [ +    'south', +    'chimere', +#   'chimere.scripts', # activate it if you want to use old migration scripts +] + +LOG_PATH = '/var/log/django/' + +CHIMERE_VIEW_RENDERER = 'openlayers' # 'openlayers' or 'leaflet' +CHIMERE_EDIT_RENDERER = 'openlayers' # 'openlayers' + +try: +    from local_settings import * +except ImportError, e: +    print 'Unable to load local_settings.py:', e + +if 'LOGGING' not in globals(): +    global LOGGING +    LOGGING = {'version': 1, +         'disable_existing_loggers': False, +        'handlers': { +            # Include the default Django email handler for errors +            # This is what you'd get without configuring logging at all. +            'mail_admins': { +                'class': 'django.utils.log.AdminEmailHandler', +                'level': 'ERROR', +                # But the emails are plain text by default - HTML is nicer +                'include_html': True, +            }, +            # Log to a text file that can be rotated by logrotate +            'logfile': { +                'class': 'logging.handlers.WatchedFileHandler', +                'filename': LOG_PATH + 'chimere.log' +            }, +        }, +        'loggers': { +            # Again, default Django configuration to email unhandled exceptions +            'django.request': { +                'handlers': ['mail_admins'], +                'level': 'ERROR', +                'propagate': True, +            }, +            # Might as well log any errors anywhere else in Django +            'django': { +                'handlers': ['logfile'], +                'level': 'ERROR', +                'propagate': False, +            }, +            # Your own app - this assumes all your logger names start with "myapp." +            'chimere': { +                'handlers': ['logfile'], +                'level': 'WARNING', # Or maybe INFO or DEBUG +                    'propogate': False +            }, +        }, +    } + + +if 'CHIMERE_SHARE_NETWORKS' not in globals(): +    # after the locals to get the right STATIC_URL + +    # share with +    global CHIMERE_SHARE_NETWORKS +    CHIMERE_SHARE_NETWORKS = ( +    ("Email", 'mailto:?subject=%(text)s&body=%(url)s', +                 STATIC_URL + 'chimere/img/email.png'), +    ("Facebook", 'http://www.facebook.com/sharer.php?t=%(text)s&u=%(url)s', +                 STATIC_URL + 'chimere/img/facebook.png'), +    ("Twitter", 'http://twitter.com/home?status=%(text)s %(url)s', +                 STATIC_URL + 'chimere/img/twitter.png'), +    ("Identi.ca", 'http://identi.ca/index.php?action=newnotice&status_textarea=%(text)s %(url)s', +                 STATIC_URL + 'chimere/img/identica.png'), +    ) + +if 'MAP_JS_URLS' not in globals(): +    global MAP_JS_URLS +    MAP_JS_URLS = { +        'openlayers':[ +            STATIC_URL + "openlayers/OpenLayers.js", +            STATIC_URL + "openlayers/SimplePanZoom.js", +            "http://www.openstreetmap.org/openlayers/OpenStreetMap.js"], +        'leaflet':[ +            STATIC_URL + "leaflet/leaflet.js" +            ] +    } + +if 'MAP_CSS_URLS' not in globals(): +    global MAP_CSS_URLS +    MAP_CSS_URLS = { +        'openlayers':["http://www.openlayers.org/api/theme/default/style.css"], +        'leaflet':[ +            STATIC_URL + "leaflet/leaflet.css", +            STATIC_URL + "leaflet/leaflet.ie.css" +        ] +    } + diff --git a/chimere/templates/chimere/blocks/head_chimere.html b/chimere/templates/chimere/blocks/head_chimere.html index 147d05b..8863f10 100644 --- a/chimere/templates/chimere/blocks/head_chimere.html +++ b/chimere/templates/chimere/blocks/head_chimere.html @@ -1,6 +1,6 @@ -{% for css_url in OSM_CSS_URLS %} +{% for css_url in MAP_CSS_URLS %}  <link rel="stylesheet" href="{{ css_url }}" />{% endfor %} -{% for js_url in OSM_JS_URLS %} +{% for js_url in MAP_JS_URLS %}  <script src="{{ js_url }}" type="text/javascript"></script>{% endfor %}  {% if routing %}<script src="{{ STATIC_URL }}chimere/js/routing-widget.js" type="text/javascript"></script>{% endif %}  <script src="{{ STATIC_URL }}chimere/js/clustering.js" type="text/javascript"></script> diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py index ed835a8..06e72ed 100644 --- a/chimere/templatetags/chimere_tags.py +++ b/chimere/templatetags/chimere_tags.py @@ -119,7 +119,7 @@ def head_jme(context):      return context_data  @register.inclusion_tag('chimere/blocks/head_chimere.html', takes_context=True) -def head_chimere(context): +def head_chimere(context, view=True):      """      Create context and display head elements (js, css, etc.) for chimere.      """ @@ -130,6 +130,8 @@ def head_chimere(context):              area = Area.objects.get(urn=area_name)          except ObjectDoesNotExist:              pass +    map_renderer = settings.CHIMERE_VIEW_RENDERER if view \ +                   else settings.CHIMERE_EDIT_RENDERER      context_data = {              "STATIC_URL": settings.STATIC_URL,              "MEDIA_URL": settings.MEDIA_URL, @@ -141,8 +143,8 @@ def head_chimere(context):              "DEFAULT_CENTER": settings.CHIMERE_DEFAULT_CENTER,              "DEFAULT_ZOOM": settings.CHIMERE_DEFAULT_ZOOM,              "MAP_LAYER": settings.CHIMERE_DEFAULT_MAP_LAYER, -            "OSM_CSS_URLS": settings.OSM_CSS_URLS, -            "OSM_JS_URLS": settings.OSM_JS_URLS, +            "MAP_CSS_URLS": settings.MAP_CSS_URLS[map_renderer], +            "MAP_JS_URLS": settings.MAP_JS_URLS[map_renderer],              'routing':settings.CHIMERE_ENABLE_ROUTING               }      return context_data diff --git a/chimere/widgets.py b/chimere/widgets.py index 45161e1..f39248c 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -248,10 +248,11 @@ class PointChooserWidget(forms.TextInput):      """      class Media:          css = { -            "all": settings.OSM_CSS_URLS + \ +            "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \                     ["%schimere/css/forms.css" % settings.STATIC_URL,]          } -        js = settings.OSM_JS_URLS + list(settings.JQUERY_JS_URLS) + \ +        js = settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \ +             list(settings.JQUERY_JS_URLS) + \               ["%schimere/js/jquery.chimere.js" % settings.STATIC_URL]      def render(self, name, value, attrs=None, area_name=''): @@ -340,10 +341,12 @@ class RouteChooserWidget(forms.TextInput):      Manage the edition of route on a map      """      class Media: -        css = {"all": settings.OSM_CSS_URLS + \ -                      ["%schimere/css/forms.css" % settings.STATIC_URL,] +        css = { +            "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \ +                   ["%schimere/css/forms.css" % settings.STATIC_URL,]          } -        js = settings.OSM_JS_URLS + list(settings.JQUERY_JS_URLS) + \ +        js = settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \ +             list(settings.JQUERY_JS_URLS) + \               ["%schimere/js/jquery.chimere.js" % settings.STATIC_URL,                "%schimere/js/edit_route_map.js" % settings.STATIC_URL,                "%schimere/js/base.js" % settings.STATIC_URL,] @@ -477,11 +480,11 @@ class AreaWidget(forms.TextInput):      """      class Media:          css = { -            "all": settings.OSM_CSS_URLS + \ +            "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \                     ["%schimere/css/forms.css" % settings.STATIC_URL,]          } -        js = settings.OSM_JS_URLS + [ -              "%schimere/js/edit_area.js" % settings.STATIC_URL, +        js = settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \ +             ["%schimere/js/edit_area.js" % settings.STATIC_URL,                "%schimere/js/base.js" % settings.STATIC_URL,]      def get_bounding_box_from_value(self, value): @@ -576,11 +579,11 @@ class ImportFiltrWidget(AreaWidget):      """      class Media:          css = { -            "all": settings.OSM_CSS_URLS + \ +            "all": settings.MAP_CSS_URLS[settings.CHIMERE_EDIT_RENDERER] + \                     ["%schimere/css/forms.css" % settings.STATIC_URL,]          } -        js = settings.OSM_JS_URLS + [ -              "%schimere/js/edit_area.js" % settings.STATIC_URL, +        js = settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER] + \ +             ["%schimere/js/edit_area.js" % settings.STATIC_URL,                "%schimere/js/base.js" % settings.STATIC_URL,]      def render(self, name, value, attrs=None): | 
