-
Notifications
You must be signed in to change notification settings - Fork 10
/
license_template_manager.py
113 lines (91 loc) · 3.75 KB
/
license_template_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# -*- coding: utf-8 -*-
#******************************************************************************
#
# Metatools
# ---------------------------------------------------------
# Metadata browser/editor
#
# Copyright (C) 2011-2016 NextGIS ([email protected])
#
# This source 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.
#
# This code 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.
#
# A copy of the GNU General Public License is available on the World Wide Web
# at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
# to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.
#
#******************************************************************************
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtXml import *
import os, codecs
class LicenseTemplateManager:
SUBFOLDER = 'templates/license'
EXT = '.xml'
def __init__(self, basePluginPath):
self.basePluginPath = unicode(basePluginPath)
def getTemplatesPath(self):
return os.path.join(self.basePluginPath, self.SUBFOLDER)
def getTemplateFilePath(self, templateName):
return os.path.join(self.getTemplatesPath(), unicode(templateName) + self.EXT)
def getTemplateList(self):
templatesList = []
for filename in os.listdir(self.getTemplatesPath()):
name, ext = os.path.splitext(filename)
if ext == self.EXT:
templatesList.append(name)
return templatesList
def loadTemplate(self, templateName):
# TODO: more cheks on struct!
template = LicenseTemplate()
templateFile = QFile(self.getTemplateFilePath(templateName))
xmlTemplate = QDomDocument()
xmlTemplate.setContent(templateFile)
root = xmlTemplate.documentElement()
nameElement = root.elementsByTagName("Name").at(0)
versionElement = root.elementsByTagName("Version").at(0)
descriptionElement = root.elementsByTagName("Description").at(0)
template.name = nameElement.childNodes().at(0).nodeValue()
template.version = versionElement.childNodes().at(0).nodeValue()
template.description = descriptionElement.childNodes().at(0).nodeValue()
return template
def saveTemplate(self, template):
xmlTemplate = QDomDocument()
# create root
root = xmlTemplate.createElement("LicenseTemplate")
xmlTemplate.appendChild(root)
# set name
element = xmlTemplate.createElement("Name")
textNode = xmlTemplate.createTextNode(template.name)
element.appendChild(textNode)
root.appendChild(element)
# set version
element = xmlTemplate.createElement("Version")
textNode = xmlTemplate.createTextNode(template.version)
element.appendChild(textNode)
root.appendChild(element)
# set desc
element = xmlTemplate.createElement("Description")
textNode = xmlTemplate.createTextNode(template.description)
element.appendChild(textNode)
root.appendChild(element)
templateFile = codecs.open(self.getTemplateFilePath(template.name), "w", encoding="utf-8")
templateFile.write(unicode(xmlTemplate.toString()))
templateFile.close()
def removeTemplate(self, templateName):
os.remove(self.getTemplateFilePath(templateName))
class LicenseTemplate:
def __init__(self, name = None, version = None, description = None):
self.name = name
self.version = version
self.description = description
def stringRepresentation(self):
return self.name + '::' + self.version + '::' + self.description