1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #============================================================================
- # This file is part of Pwman3.
- #
- # Pwman3 is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License, version 2
- # as published by the Free Software Foundation;
- #
- # Pwman3 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.
- #
- # You should have received a copy of the GNU General Public License
- # along with Pwman3; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- #============================================================================
- # Copyright (C) 2006 Ivan Kelly <ivan@ivankelly.net>
- #============================================================================
- import cElementTree as ET
- from pwman.data.nodes import Node
- from pwman.data.tags import Tag
- class Importer:
- def types(self):
- return ["pwman3", "pwman1"]
- types = classmethod(types)
-
- def get(self, type):
- if type == "pwman3":
- return Pwman3Importer()
- if type == "pwman1":
- return Pwman1Importer()
- get = classmethod(get)
-
- def import_data(self, db, file):
- pass
- class Pwman1Importer(Importer):
- def __init__(self):
- self.tagstack = []
- self.nodes = []
-
- def parse_list(self, db, list):
- lists = list.findall("PwList")
- for l in lists:
- name = l.get("name").lower().replace(' ', '')
- self.tagstack.append(name)
- self.parse_list(db, l)
- self.tagstack.pop()
- items = list.findall("PwItem")
- tags = []
- for t in self.tagstack:
- tags.append(Tag(t))
-
- for i in items:
- username = i.findtext("user")
- password = i.findtext("passwd")
- url = i.findtext("host")
- notes = "%s | %s" % (i.findtext("name"), i.findtext("launch"))
- n = Node(username, password, url, notes)
- n.set_tags(tags)
- self.nodes.append(n)
-
- def import_data(self, db, file):
- tree = ET.parse(file)
- root = tree.getroot()
- list = root.find("PwList")
- self.parse_list(db, list)
- db.addnodes(self.nodes)
- class Pwman3Importer(Importer):
- def import_data(self, db, file):
- tree = ET.parse(file)
- root = tree.getroot()
- nodes = root.findall("Node")
- nodesarray = []
- for n in nodes:
- username = n.findtext("username")
- password = n.findtext("password")
- url = n.findtext("url")
- notes = n.findtext("notes")
- node = Node(username, password, url, notes)
- tagnames = n.find("tags").findall("name")
- tags = []
- for t in tagnames:
- tags.append(Tag(t.text))
- node.set_tags(tags)
- nodesarray.append(node)
- db.addnodes(nodesarray)
-
|