Kaydet (Commit) a4fea6f6 authored tarafından Suleyman Poyraz's avatar Suleyman Poyraz

Fixed database libraries are work weel. But repodb not work now. Should looking up.

üst 10558bc0
......@@ -45,19 +45,21 @@ class ComponentDB(lazydb.LazyDB):
def __generate_packages(self, doc):
components = {}
for pkg in doc.getElementsByTagName("Package"):
partOf = pkg.getElementsByTagName("PartOf")[0].firstChild.data
pkgName = pkg.getElementsByTagName("Name")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName)
for pkg in doc.childNodes:
if pkg.nodeType == pkg.ELEMENT_NODE and pkg.tagName == "Package":
partOf = pkg.getElementsByTagName("PartOf")[0].firstChild.data
pkgName = pkg.getElementsByTagName("Name")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName)
return components
def __generate_sources(self, doc):
components = {}
for spec in doc.getElementsByTagName("SpecFile"):
src = spec.getElementsByTagName("Source")[0]
partOf = src.getElementsByTagName("PartOf")[0].firstChild.data
pkgName = src.getElementsByTagName("Name")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName)
for spec in doc.childNodes:
if spec.nodeType == spec.ELEMENT_NODE and spec.tagName == "SpecFile":
src = spec.getElementsByTagName("Source")[0]
partOf = src.getElementsByTagName("PartOf")[0].firstChild.data
pkgName = src.getElementsByTagName("Name")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName)
return components
def __generate_components(self, doc):
......
Mon Mar 12 17:21:59 2018 +0300 5052192f Son bir şans daha versen sevgilim... [Suleyman Poyraz]
diff --git a/inary/db/repodb.py b/inary/db/repodb.py
index 1ed56b04..5aa219a9 100644
--- a/inary/db/repodb.py
+++ b/inary/db/repodb.py
@@ -16,7 +16,8 @@ _ = __trans.gettext
import os
-import ciksemel
+import xml.dom.minidom as minidom
+from xml.parsers.expat import ExpatError
import inary
import inary.uri
@@ -47,33 +48,39 @@ class RepoOrder:
repo_doc = self._get_doc()
try:
- node = [x for x in repo_doc.tags("Repo")][-1]
- repo_node = node.appendTag("Repo")
- except IndexError:
- repo_node = repo_doc.insertTag("Repo")
+ #FIXME:Burada bir sakatlık çıkacak
+ node = [x for x in repo_doc.getElementsByTagName("Repo")][-1]
+ repo_node = node.createElement("Repo")
+ except ExpatError as err:
+ raise("Can not created Repo tag: {}".format(err))
- name_node = repo_node.insertTag("Name")
- name_node.insertData(repo_name)
+ name_node = repo_node.createElement("Name")
+ name_node.appendChild(node.createTextNode(repo_name))
+ repo_node.appendChild(name_node)
- url_node = repo_node.insertTag("Url")
- url_node.insertData(repo_url)
+ url_node = repo_node.createElement("Url")
+ url_node.appendChild(node.createTextNode(repo_url))
+ repo_node.appendChild(url_node)
- name_node = repo_node.insertTag("Status")
- name_node.insertData("active")
+ status_node = repo_node.createElement("Status")
+ status_node.appendChild(node.createTextNode("active"))
+ repo_node.appendChild(status_node)
- media_node = repo_node.insertTag("Media")
- media_node.insertData(repo_type)
+ media_node = repo_node.createElement("Media")
+ media_node.appendChild(node.createTextNode(repo_type))
+ repo_node.appendChild(media_node)
self._update(repo_doc)
def set_status(self, repo_name, status):
repo_doc = self._get_doc()
- for r in repo_doc.tags("Repo"):
- if r.getTagData("Name") == repo_name:
- status_node = r.getTag("Status")
+ for r in repo_doc.getElementsByTagName("Repo"):
+ if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
+ status_node = r.getElementsByTagName("Status")[0].firstChild.data
+ #FIXME: Program burda göt olacak
if status_node:
- status_node.firstChild().hide()
+ status_node.childNodes[0].hide()
status_node.insertData(status)
else:
status_node = r.insertTag("Status")
@@ -83,11 +90,11 @@ class RepoOrder:
def get_status(self, repo_name):
repo_doc = self._get_doc()
- for r in repo_doc.tags("Repo"):
- if r.getTagData("Name") == repo_name:
- status_node = r.getTag("Status")
+ for r in repo_doc.getElementsByTagName("Repo"):
+ if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
+ status_node = r.getElementsByTagName("Status").firstChild.data
if status_node:
- status = status_node.firstChild().data()
+ status = status_node.childNodes[0].data
if status in ["active", "inactive"]:
return status
return "inactive"
@@ -95,8 +102,8 @@ class RepoOrder:
def remove(self, repo_name):
repo_doc = self._get_doc()
- for r in repo_doc.tags("Repo"):
- if r.getTagData("Name") == repo_name:
+ for r in repo_doc.getElementsByTagName("Repo"):
+ if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
r.hide()
self._update(repo_doc)
@@ -113,7 +120,7 @@ class RepoOrder:
def _update(self, doc):
repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
- open(repos_file, "w").write("{}\n".format(doc.toPrettyString()))
+ open(repos_file, "w").write("{}\n".format(doc.toprettyxml()))
self._doc = None
self.repos = self._get_repos()
@@ -121,9 +128,11 @@ class RepoOrder:
if self._doc is None:
repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
if os.path.exists(repos_file):
- self._doc = ciksemel.parse(repos_file)
+ self._doc = minidom.parse(repos_file).documentElement
else:
- self._doc = ciksemel.newDocument("REPOS")
+ impl = minidom.getDOMImplementation()
+ dom = impl.createDocument(None, "REPOS", None)
+ self._doc = dom.documentElement
return self._doc
@@ -131,10 +140,10 @@ class RepoOrder:
repo_doc = self._get_doc()
order = {}
- for r in repo_doc.tags("Repo"):
- media = r.getTagData("Media")
- name = r.getTagData("Name")
- status = r.getTagData("Status")
+ for r in repo_doc.getElementsByTagName("Repo"):
+ media = r.getElementsByTagName("Media")[0].firstChild.data
+ name = r.getElementsByTagName("Name")[0].firstChild.data
+ status = r.getElementsByTagName("Status")[0].firstChild.data
order.setdefault(media, []).append(name)
return order
@@ -166,11 +175,13 @@ class RepoDB(lazydb.LazyDB):
if not os.path.exists(index_path):
ctx.ui.warning(_("{} repository needs to be updated").format(repo_name))
- return ciksemel.newDocument("INARY")
+ impl = minidom.getDOMImplementation()
+ dom = impl.createDocument(None, "INARY", None)
+ return dom.documentElement
try:
- return ciksemel.parse(index_path)
- except Exception as e:
+ return minidom.parse(index_path)
+ except ExpatError as e:
raise RepoError(_("Error parsing repository index information. Index file does not exist or is malformed."))
def get_repo(self, repo):
@@ -196,25 +207,25 @@ class RepoDB(lazydb.LazyDB):
def get_source_repos(self, only_active=True):
repos = []
for r in self.list_repos(only_active):
- if self.get_repo_doc(r).getTag("SpecFile"):
+ if self.get_repo_doc(r).getElementsByTagName("SpecFile")[0]:
repos.append(r)
return repos
def get_binary_repos(self, only_active=True):
repos = []
for r in self.list_repos(only_active):
- if not self.get_repo_doc(r).getTag("SpecFile"):
+ if not self.get_repo_doc(r).getElementsByTagName("SpecFile")[0]:
repos.append(r)
return repos
- def list_repos(self, only_active=True):
+ def list_repos(self, only_active=True):
temp = []
for x in self.repoorder.get_order():
if not only_active:
temp.append(x)
elif self.repo_active(x) == True:
temp.append(x)
- return temp
+ return temp
def list_repo_urls(self, only_active=True):
repos = []
@@ -241,13 +252,13 @@ class RepoDB(lazydb.LazyDB):
def get_distribution(self, name):
doc = self.get_repo_doc(name)
- distro = doc.getTag("Distribution")
- return distro and distro.getTagData("SourceName")
+ distro = doc.getElementsByTagName("Distribution")[0]
+ return distro.firstChild.data and distro.getElementsByTagName("SourceName")[0].firstChild.data
def get_distribution_release(self, name):
doc = self.get_repo_doc(name)
- distro = doc.getTag("Distribution")
- return distro and distro.getTagData("Version")
+ distro = doc.getElementsByTagName("Distribution")[0]
+ return distro.firstChild.data and distro.getElementsByTagName("Version")[0].firstChild.data
def check_distribution(self, name):
if ctx.get_option('ignore_check'):
@@ -268,4 +279,3 @@ class RepoDB(lazydb.LazyDB):
self.deactivate_repo(name)
raise IncompatibleRepoError(
_("Repository '{}' is not compatible with your distribution. Repository is disabled.").format(name))
-
......@@ -53,15 +53,21 @@ class PackageDB(lazydb.LazyDB):
self.odb = inary.db.itembyrepo.ItemByRepo(self.__obsoletes)
self.rpdb = inary.db.itembyrepo.ItemByRepo(self.__replaces)
## Generate functions look sooo ugly
def __generate_replaces(self, doc):
for x in doc.getElementsByTagName("Package"):
if x.getElementsByTagName("Replaces"):
return x.getElementsByTagName("Name")[0].firstChild.data
for node in doc.childNodes:
if node.nodeType == node.ELEMENT_NODE and node.tagName == "Package":
if node.getElementsByTagName("Replaces"):
node.getElementsByTagName("Name")[0].firstChild.data
def __generate_obsoletes(self, doc):
distribution = doc.getElementsByTagName("Distribution")[0]
obsoletes = distribution and distribution.getElementsByTagName("Obsoletes")[0]
src_repo = doc.getElementsByTagName("SpecFile")[0] is not None
try:
src_repo = doc.getElementsByTagName("SpecFile")[0]
except:
src_repo = None
if not obsoletes or src_repo:
return []
......@@ -70,8 +76,10 @@ class PackageDB(lazydb.LazyDB):
def __generate_packages(self, doc):
pdict={}
for x in doc.getElementsByTagName("Package"):
pdict[x.getElementsByTagName("Name")[0].firstChild.data]= gzip.zlib.compress(x.toxml('utf-8'))
for node in doc.childNodes:
if node.nodeType == node.ELEMENT_NODE and node.tagName == "Package":
name = node.getElementsByTagName('Name')[0].firstChild.data
pdict[name]= gzip.zlib.compress(node.toxml('utf-8'))
return pdict
def __generate_revdeps(self, doc):
......@@ -81,8 +89,9 @@ class PackageDB(lazydb.LazyDB):
name = node.getElementsByTagName('Name')[0].firstChild.data
deps = node.getElementsByTagName('RuntimeDependencies')
if deps:
for dep in deps.getElementsByTagName("Dependency"):
revdeps.setdefault(dep.childNodes[0].data, set()).add((name, dep.toxml('utf-8')))
for dep in deps:
for i in dep.getElementsByTagName('Dependency'):
revdeps.setdefault(i.firstChild.data, set()).add((name, i.toxml('utf-8')))
return revdeps
......
......@@ -25,6 +25,7 @@ import inary.util
import inary.context as ctx
import inary.db.lazydb as lazydb
from inary.file import File
import inary.sxml.xmlext as xmlext
class RepoError(inary.Error):
pass
......@@ -49,10 +50,11 @@ class RepoOrder:
try:
#FIXME:Burada bir sakatlık çıkacak
node = [x for x in repo_doc.getElementsByTagName("Repo")][-1]
repo_node = node.createElement("Repo")
except ExpatError as err:
raise("Can not created Repo tag: {}".format(err))
#2018-03-12 dedim ama ben gunler oncesinden dedim
node = [x for x in repo_doc.childNodes if x.nodeType == x.ELEMENT_NODE and x.tagName == "Repo"][-1]
repo_node = repo_doc.appendChild(node.createElement("Repo"))
except Exception:
repo_node = repo_doc.appendChild(repo_doc.createElement("Repo"))
name_node = repo_node.createElement("Name")
name_node.appendChild(node.createTextNode(repo_name))
......@@ -77,10 +79,10 @@ class RepoOrder:
for r in repo_doc.getElementsByTagName("Repo"):
if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
status_node = r.getElementsByTagName("Status")[0].firstChild.data
#FIXME: Program burda göt olacak
status_node = r.getElementsByTagName("Status")[0]
print(dir(status_node))
if status_node:
status_node.childNodes[0].hide()
status_node.childNodes[0].data
status_node.insertData(status)
else:
status_node = r.insertTag("Status")
......@@ -104,7 +106,7 @@ class RepoOrder:
for r in repo_doc.getElementsByTagName("Repo"):
if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
r.hide()
repo_doc.removeChild(r)
self._update(repo_doc)
......@@ -180,7 +182,7 @@ class RepoDB(lazydb.LazyDB):
return dom.documentElement
try:
return minidom.parse(index_path)
return minidom.parse(index_path).documentElement
except ExpatError as e:
raise RepoError(_("Error parsing repository index information. Index file does not exist or is malformed."))
......@@ -195,7 +197,13 @@ class RepoDB(lazydb.LazyDB):
def add_repo(self, name, repo_info, at = None):
repo_path = inary.util.join_path(ctx.config.index_dir(), name)
os.makedirs(repo_path)
###########
try:
os.makedirs(repo_path)
except:
pass
#FIXME: FileExistError errno: 17
#When addind repo there are the same as name empty dirs it should remove it
urifile_path = inary.util.join_path(ctx.config.index_dir(), name, "uri")
open(urifile_path, "w").write(repo_info.indexuri.get_uri())
self.repoorder.add(name, repo_info.indexuri.get_uri())
......
......@@ -124,7 +124,7 @@ class SourceDB(lazydb.LazyDB):
rev_deps = []
for pkg, dep in rvdb:
node = minidom.parseString(dep)
node = minidom.parseString(dep).documentElement
dependency = inary.analyzer.dependency.Dependency()
dependency.package = node.childNodes[0].data
if node.attributes():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment