mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-03 00:14:12 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			72 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)
 |