From f255ac45303bef3093d8ff05063e6ae8550f2c1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=ABl=20M=C3=A9liani?= <m.meliani@neogeo-online.net>
Date: Wed, 19 Jun 2013 12:10:07 +0200
Subject: [PATCH] Moved create_mapfile() in mapfile.py

---
 src/mapfile.py  |  93 ++++++++++++++++++++++++++++++++++++
 src/maptools.py | 123 ------------------------------------------------
 src/server.py   |   2 +-
 3 files changed, 94 insertions(+), 124 deletions(-)
 delete mode 100644 src/maptools.py

diff --git a/src/mapfile.py b/src/mapfile.py
index dbe4ecf..83ad131 100644
--- a/src/mapfile.py
+++ b/src/mapfile.py
@@ -698,6 +698,99 @@ class MapfileWorkspace(Workspace):
             raise ValueError("Bad storage type '%s'." % s_type)
 
 
+def create_mapfile(path, map_name, data):
+    if os.path.exists("%s.map" % path):
+        raise KeyExists(map_name)
+
+    mf = mapscript.mapObj()
+    mf.name = map_name
+    
+    # The following could be defined in <mapfile.py>:
+
+    mf.web.metadata.set("ows_name", map_name)
+    mf.web.metadata.set("ows_title", data.get("title", map_name))
+    mf.web.metadata.set("ows_abstract", data.get("abstract", ""))
+
+    # Set default values:
+    # It should be configurable to the future.
+
+    # mf.web.metadata.set("ows_keywordlist", "")
+    # mf.web.metadata.set("ows_keywordlist_vocabulary", "")
+    # + ows_keywordlist_[vocabulary’s name]_items
+    # mf.web.metadata.set("wms_onlineresource", "")
+    # mf.web.metadata.set("wfs_onlineresource", "")
+    # mf.web.metadata.set("wms_service_onlineresource", "")
+    # mf.web.metadata.set("wfs_service_onlineresource", "")
+    mf.web.metadata.set("wms_srs", "EPSG:4326")
+    mf.web.metadata.set("wfs_srs", "EPSG:4326")
+    mf.web.metadata.set("wms_bbox_extended", "true")
+    # mf.web.metadata.set("wms_resx", "")
+    # mf.web.metadata.set("wms_resy", "")
+
+    mf.web.metadata.set("ows_schemas_location", 
+                        "http://schemas.opengeospatial.net")
+    mf.web.metadata.set("ows_updatesequence", "foo")
+    mf.web.metadata.set("ows_addresstype", "foo")
+    mf.web.metadata.set("ows_address", "foo")
+    mf.web.metadata.set("ows_city", "foo")
+    mf.web.metadata.set("ows_stateorprovince", "foo")
+    mf.web.metadata.set("ows_postcode", "foo")
+    mf.web.metadata.set("ows_contactperson", "foo")
+    mf.web.metadata.set("ows_contactposition", "foo")
+    mf.web.metadata.set("ows_contactorganization", "foo")
+    mf.web.metadata.set("ows_contactelectronicmailaddress", "foo")
+    mf.web.metadata.set("ows_contactfacsimiletelephone", "foo")
+    mf.web.metadata.set("ows_contactvoicetelephone", "foo")
+    mf.web.metadata.set("wms_fees", "none")
+    mf.web.metadata.set("wfs_fees", "none")
+    mf.web.metadata.set("wms_accessconstraints", "none")
+    mf.web.metadata.set("wfs_accessconstraints", "none")
+    # mf.web.metadata.set("ows_attribution_logourl_format", "")
+    # mf.web.metadata.set("ows_attribution_logourl_height", "")
+    # mf.web.metadata.set("ows_attribution_logourl_href", "")
+    # mf.web.metadata.set("ows_attribution_logourl_width", "")
+    # mf.web.metadata.set("ows_attribution_onlineresource", "")
+    # mf.web.metadata.set("ows_attribution_title", "")
+
+    mf.web.metadata.set("wms_enable_request", 
+                        "GetCapabilities GetMap GetFeatureInfo GetLegendGraphic")
+    mf.web.metadata.set("wfs_enable_request", 
+                        "GetCapabilities DescribeFeatureType GetFeature")
+    mf.web.metadata.set("ows_sld_enabled", "true")
+    mf.web.metadata.set("wms_getcapabilities_version", "1.3.0")
+    mf.web.metadata.set("wfs_getcapabilities_version", "1.0.0")
+    # mf.web.metadata.set("wms_getmap_formatlist", "")
+    # mf.web.metadata.set("wms_getlegendgraphic_formatlist", "")
+    mf.web.metadata.set("wms_feature_info_mime_type",
+                        "application/vnd.ogc.gml,text/plain")
+                        # TODO: text/html
+    mf.web.metadata.set("wms_encoding", "UTF-8")
+    mf.web.metadata.set("wfs_encoding", "UTF-8")
+
+    # mf.web.metadata.set("wms_timeformat", "")
+    # mf.web.metadata.set("wms_languages", "")
+    # mf.web.metadata.set("wms_layerlimit", "")
+    # mf.web.metadata.set("wms_rootlayer_abstract", "")
+    # mf.web.metadata.set("wms_rootlayer_keywordlist", "")
+    # mf.web.metadata.set("wms_rootlayer_title", "")
+    # mf.web.metadata.set("wfs_maxfeatures", "")
+    # mf.web.metadata.set("wfs_feature_collection", "")
+    # mf.web.metadata.set("wfs_namespace_uri", "")
+    # mf.web.metadata.set("wfs_namespace_prefix", "")
+
+    mf.status = mapscript.MS_ON
+    mf.setSize(256,256)
+    mf.maxsize = 4096
+    mf.resolution = 96
+    mf.imagetype = 'png'
+    mf.imagecolor.setRGB(255,255,255)
+    mf.setProjection("init=epsg:4326")
+    mf.setExtent(-180,-90,180,90)
+    mf.units = mapscript.MS_DD
+
+    mf.save("%s.map" % path)
+
+
 class Mapfile(MetadataMixin):
     """
     """
diff --git a/src/maptools.py b/src/maptools.py
deleted file mode 100644
index 23b5e0e..0000000
--- a/src/maptools.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/env python2.7
-# -*- coding: utf-8 -*-
-
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#                                                                       #
-#   MapServer REST API is a python wrapper around MapServer which       #
-#   allows to manipulate a mapfile in a RESTFul way. It has been        #
-#   developped to match as close as possible the way the GeoServer      #
-#   REST API acts.                                                      #
-#                                                                       #
-#   Copyright (C) 2011-2013 Neogeo Technologies.                        #
-#                                                                       #
-#   This file is part of MapServer Rest API.                            #
-#                                                                       #
-#   MapServer Rest API is free software: you can redistribute it        #
-#   and/or modify it under the terms of the GNU General Public License  #
-#   as published by the Free Software Foundation, either version 3 of   #
-#   the License, or (at your option) any later version.                 #
-#                                                                       #
-#   MapServer Rest API is distributed in the hope that it will be       #
-#   useful, but WITHOUT ANY WARRANTY; without even the implied warranty #
-#   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the     #
-#   GNU General Public License for more details.                        #
-#                                                                       #
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-from webapp import KeyExists
-import metadata
-
-import mapscript
-import os.path
-
-def create_mapfile(path, map_name, data):
-    if os.path.exists("%s.map" % path):
-        raise KeyExists(map_name)
-
-    mf = mapscript.mapObj()
-    mf.name = map_name
-    
-    # The following could be defined in <mapfile.py>:
-
-    mf.web.metadata.set("ows_name", map_name)
-    mf.web.metadata.set("ows_title", data.get("title", map_name))
-    mf.web.metadata.set("ows_abstract", data.get("abstract", ""))
-
-    # Set default values:
-    # It should be configurable to the future.
-
-    # mf.web.metadata.set("ows_keywordlist", "")
-    # mf.web.metadata.set("ows_keywordlist_vocabulary", "")
-    # + ows_keywordlist_[vocabulary’s name]_items
-    # mf.web.metadata.set("wms_onlineresource", "")
-    # mf.web.metadata.set("wfs_onlineresource", "")
-    # mf.web.metadata.set("wms_service_onlineresource", "")
-    # mf.web.metadata.set("wfs_service_onlineresource", "")
-    mf.web.metadata.set("wms_srs", "EPSG:4326")
-    mf.web.metadata.set("wfs_srs", "EPSG:4326")
-    mf.web.metadata.set("wms_bbox_extended", "true")
-    # mf.web.metadata.set("wms_resx", "")
-    # mf.web.metadata.set("wms_resy", "")
-
-    mf.web.metadata.set("ows_schemas_location", 
-                        "http://schemas.opengeospatial.net")
-    mf.web.metadata.set("ows_updatesequence", "foo")
-    mf.web.metadata.set("ows_addresstype", "foo")
-    mf.web.metadata.set("ows_address", "foo")
-    mf.web.metadata.set("ows_city", "foo")
-    mf.web.metadata.set("ows_stateorprovince", "foo")
-    mf.web.metadata.set("ows_postcode", "foo")
-    mf.web.metadata.set("ows_contactperson", "foo")
-    mf.web.metadata.set("ows_contactposition", "foo")
-    mf.web.metadata.set("ows_contactorganization", "foo")
-    mf.web.metadata.set("ows_contactelectronicmailaddress", "foo")
-    mf.web.metadata.set("ows_contactfacsimiletelephone", "foo")
-    mf.web.metadata.set("ows_contactvoicetelephone", "foo")
-    mf.web.metadata.set("wms_fees", "none")
-    mf.web.metadata.set("wfs_fees", "none")
-    mf.web.metadata.set("wms_accessconstraints", "none")
-    mf.web.metadata.set("wfs_accessconstraints", "none")
-    # mf.web.metadata.set("ows_attribution_logourl_format", "")
-    # mf.web.metadata.set("ows_attribution_logourl_height", "")
-    # mf.web.metadata.set("ows_attribution_logourl_href", "")
-    # mf.web.metadata.set("ows_attribution_logourl_width", "")
-    # mf.web.metadata.set("ows_attribution_onlineresource", "")
-    # mf.web.metadata.set("ows_attribution_title", "")
-
-    mf.web.metadata.set("wms_enable_request", 
-                        "GetCapabilities GetMap GetFeatureInfo GetLegendGraphic")
-    mf.web.metadata.set("wfs_enable_request", 
-                        "GetCapabilities DescribeFeatureType GetFeature")
-    mf.web.metadata.set("ows_sld_enabled", "true")
-    mf.web.metadata.set("wms_getcapabilities_version", "1.3.0")
-    mf.web.metadata.set("wfs_getcapabilities_version", "1.0.0")
-    # mf.web.metadata.set("wms_getmap_formatlist", "")
-    # mf.web.metadata.set("wms_getlegendgraphic_formatlist", "")
-    mf.web.metadata.set("wms_feature_info_mime_type",
-                        "application/vnd.ogc.gml,text/plain")
-                        # TODO: text/html
-    mf.web.metadata.set("wms_encoding", "UTF-8")
-    mf.web.metadata.set("wfs_encoding", "UTF-8")
-
-    # mf.web.metadata.set("wms_timeformat", "")
-    # mf.web.metadata.set("wms_languages", "")
-    # mf.web.metadata.set("wms_layerlimit", "")
-    # mf.web.metadata.set("wms_rootlayer_abstract", "")
-    # mf.web.metadata.set("wms_rootlayer_keywordlist", "")
-    # mf.web.metadata.set("wms_rootlayer_title", "")
-    # mf.web.metadata.set("wfs_maxfeatures", "")
-    # mf.web.metadata.set("wfs_feature_collection", "")
-    # mf.web.metadata.set("wfs_namespace_uri", "")
-    # mf.web.metadata.set("wfs_namespace_prefix", "")
-
-    mf.status = mapscript.MS_ON
-    mf.setSize(256,256)
-    mf.maxsize = 4096
-    mf.resolution = 96
-    mf.imagetype = 'png'
-    mf.imagecolor.setRGB(255,255,255)
-    mf.setProjection("init=epsg:4326")
-    mf.setExtent(-180,-90,180,90)
-    mf.units = mapscript.MS_DD
-
-    mf.save("%s.map" % path)
diff --git a/src/server.py b/src/server.py
index de4ff1c..87e6b8b 100755
--- a/src/server.py
+++ b/src/server.py
@@ -79,7 +79,7 @@ class mapfiles(object):
         path = tools.mk_mapfile_path(map_name)
 
         with webapp.mightConflict(message="Mapfile '{exception}' already exists."):
-            maptools.create_mapfile(path, map_name, data)
+            mapfile.create_mapfile(path, map_name, data)
 
         webapp.Created("%s/maps/%s%s" % (web.ctx.home, map_name, (".%s" % format) if format else ""))
 
-- 
GitLab