コード例 #1
0
 def handleAdd(self, action):
     data, errors = self.extractData()
     if errors:
         self.status = self.formErrorsMessage
         return
     urlobj = urlparse.urlparse(data['remote_url'])
     qsl=urlparse.parse_qsl(urlobj.query)
     query = []
     for v in qsl:
         if v[0].lower() in ('service', 'request', 'version'):
             continue
         else:
             query.append(v)
     if urlobj.scheme not in ['http', 'https']:
         IStatusMessage(self.request).addStatusMessage(
             _(u"Invalid URL - must be http or https"), "error")
         return
     if not urlobj.hostname:
         IStatusMessage(self.request).addStatusMessage(
             _(u"Invalid URL - no hostname qualified"), "error")
         return
     url = urlparse.urlunparse([urlobj.scheme, urlobj.netloc,
                                 urlobj.path, urlobj.params,
                                 urllib.urlencode(query),
                                 urlobj.fragment])
     try:
         if data['protocol'] == 'wms':
             wms = WebMapService(url)
         elif data['protocol'] == 'wmts':
             wms = WebMapTileService(url)
         elif data['protocol'] == 'tms':
             wms = TileMapService(url)
     except (urllib2.HTTPError, ServiceException) as e:
         IStatusMessage(self.request).addStatusMessage(e, "error")
         return
     title= wms.identification.title
     desc = wms.identification.abstract
     tags = wms.identification.keywords
     obj = self.createAndAdd(data)
     if obj is not None:
         obj.setTitle(title)
         obj.setDescription(desc)
         if tags:
             obj.setSubject(tags)
         obj.remote_url = url
         # mark only as finished if we get the new object
         self._finishedAdd = True
         IStatusMessage(self.request).addStatusMessage(
                                     _(u"Item created"), "info")
コード例 #2
0
 def handleCancel(self, action):
     IStatusMessage(self.request).addStatusMessage(
             _(u"Add New Item operation cancelled"), "info")
     self.request.response.redirect(self.nextURL())
     notify(AddCancelledEvent(self.context))