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")
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))