mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-12 00:02:25 -04:00
78 lines
2.7 KiB
Python
78 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
***************************************************************************
|
|
style.py
|
|
---------------------
|
|
Date : November 2012
|
|
Copyright : (C) 2012 by David Winslow
|
|
Email : dwins at opengeo dot com
|
|
***************************************************************************
|
|
* *
|
|
* This program 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 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************
|
|
"""
|
|
|
|
__author__ = 'David Winslow'
|
|
__date__ = 'November 2012'
|
|
__copyright__ = '(C) 2012, David Winslow'
|
|
|
|
# This will get replaced with a git SHA1 when you do a git archive
|
|
|
|
__revision__ = '$Format:%H$'
|
|
|
|
from processing.admintools.geoserver.support import ResourceInfo, url, \
|
|
xml_property
|
|
|
|
|
|
class Style(ResourceInfo):
|
|
|
|
def __init__(self, catalog, name):
|
|
super(Style, self).__init__()
|
|
assert isinstance(name, basestring)
|
|
|
|
self.catalog = catalog
|
|
self.name = name
|
|
self._sld_dom = None
|
|
|
|
@property
|
|
def href(self):
|
|
return url(self.catalog.service_url, ['styles', self.name + '.xml'])
|
|
|
|
def body_href(self):
|
|
return url(self.catalog.service_url, ['styles', self.name + '.sld'])
|
|
|
|
filename = xml_property('filename')
|
|
|
|
def _get_sld_dom(self):
|
|
if self._sld_dom is None:
|
|
self._sld_dom = self.catalog.get_xml(self.body_href())
|
|
return self._sld_dom
|
|
|
|
@property
|
|
def sld_title(self):
|
|
user_style = \
|
|
self._get_sld_dom().find('{http://www.opengis.net/sld}NamedLayer/{http://www.opengis.net/sld}UserStyle')
|
|
title_node = user_style.find('{http://www.opengis.net/sld}Title')
|
|
return (title_node.text if title_node is not None else None)
|
|
|
|
@property
|
|
def sld_name(self):
|
|
user_style = \
|
|
self._get_sld_dom().find('{http://www.opengis.net/sld}NamedLayer/{http://www.opengis.net/sld}UserStyle')
|
|
name_node = user_style.find('{http://www.opengis.net/sld}Name')
|
|
return (name_node.text if name_node is not None else None)
|
|
|
|
@property
|
|
def sld_body(self):
|
|
content = self.catalog.http.request(self.body_href())[1]
|
|
return content
|
|
|
|
def update_body(self, body):
|
|
headers = {'Content-Type': 'application/vnd.ogc.sld+xml'}
|
|
self.catalog.http.request(self.body_href(), 'PUT', body, headers)
|