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): ...@@ -45,19 +45,21 @@ class ComponentDB(lazydb.LazyDB):
def __generate_packages(self, doc): def __generate_packages(self, doc):
components = {} components = {}
for pkg in doc.getElementsByTagName("Package"): for pkg in doc.childNodes:
partOf = pkg.getElementsByTagName("PartOf")[0].firstChild.data if pkg.nodeType == pkg.ELEMENT_NODE and pkg.tagName == "Package":
pkgName = pkg.getElementsByTagName("Name")[0].firstChild.data partOf = pkg.getElementsByTagName("PartOf")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName) pkgName = pkg.getElementsByTagName("Name")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName)
return components return components
def __generate_sources(self, doc): def __generate_sources(self, doc):
components = {} components = {}
for spec in doc.getElementsByTagName("SpecFile"): for spec in doc.childNodes:
src = spec.getElementsByTagName("Source")[0] if spec.nodeType == spec.ELEMENT_NODE and spec.tagName == "SpecFile":
partOf = src.getElementsByTagName("PartOf")[0].firstChild.data src = spec.getElementsByTagName("Source")[0]
pkgName = src.getElementsByTagName("Name")[0].firstChild.data partOf = src.getElementsByTagName("PartOf")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName) pkgName = src.getElementsByTagName("Name")[0].firstChild.data
components.setdefault(partOf, []).append(pkgName)
return components return components
def __generate_components(self, doc): 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): ...@@ -53,15 +53,21 @@ class PackageDB(lazydb.LazyDB):
self.odb = inary.db.itembyrepo.ItemByRepo(self.__obsoletes) self.odb = inary.db.itembyrepo.ItemByRepo(self.__obsoletes)
self.rpdb = inary.db.itembyrepo.ItemByRepo(self.__replaces) self.rpdb = inary.db.itembyrepo.ItemByRepo(self.__replaces)
## Generate functions look sooo ugly
def __generate_replaces(self, doc): def __generate_replaces(self, doc):
for x in doc.getElementsByTagName("Package"): for node in doc.childNodes:
if x.getElementsByTagName("Replaces"): if node.nodeType == node.ELEMENT_NODE and node.tagName == "Package":
return x.getElementsByTagName("Name")[0].firstChild.data if node.getElementsByTagName("Replaces"):
node.getElementsByTagName("Name")[0].firstChild.data
def __generate_obsoletes(self, doc): def __generate_obsoletes(self, doc):
distribution = doc.getElementsByTagName("Distribution")[0] distribution = doc.getElementsByTagName("Distribution")[0]
obsoletes = distribution and distribution.getElementsByTagName("Obsoletes")[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: if not obsoletes or src_repo:
return [] return []
...@@ -70,8 +76,10 @@ class PackageDB(lazydb.LazyDB): ...@@ -70,8 +76,10 @@ class PackageDB(lazydb.LazyDB):
def __generate_packages(self, doc): def __generate_packages(self, doc):
pdict={} pdict={}
for x in doc.getElementsByTagName("Package"): for node in doc.childNodes:
pdict[x.getElementsByTagName("Name")[0].firstChild.data]= gzip.zlib.compress(x.toxml('utf-8')) 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 return pdict
def __generate_revdeps(self, doc): def __generate_revdeps(self, doc):
...@@ -81,8 +89,9 @@ class PackageDB(lazydb.LazyDB): ...@@ -81,8 +89,9 @@ class PackageDB(lazydb.LazyDB):
name = node.getElementsByTagName('Name')[0].firstChild.data name = node.getElementsByTagName('Name')[0].firstChild.data
deps = node.getElementsByTagName('RuntimeDependencies') deps = node.getElementsByTagName('RuntimeDependencies')
if deps: if deps:
for dep in deps.getElementsByTagName("Dependency"): for dep in deps:
revdeps.setdefault(dep.childNodes[0].data, set()).add((name, dep.toxml('utf-8'))) for i in dep.getElementsByTagName('Dependency'):
revdeps.setdefault(i.firstChild.data, set()).add((name, i.toxml('utf-8')))
return revdeps return revdeps
......
...@@ -25,6 +25,7 @@ import inary.util ...@@ -25,6 +25,7 @@ import inary.util
import inary.context as ctx import inary.context as ctx
import inary.db.lazydb as lazydb import inary.db.lazydb as lazydb
from inary.file import File from inary.file import File
import inary.sxml.xmlext as xmlext
class RepoError(inary.Error): class RepoError(inary.Error):
pass pass
...@@ -49,10 +50,11 @@ class RepoOrder: ...@@ -49,10 +50,11 @@ class RepoOrder:
try: try:
#FIXME:Burada bir sakatlık çıkacak #FIXME:Burada bir sakatlık çıkacak
node = [x for x in repo_doc.getElementsByTagName("Repo")][-1] #2018-03-12 dedim ama ben gunler oncesinden dedim
repo_node = node.createElement("Repo") node = [x for x in repo_doc.childNodes if x.nodeType == x.ELEMENT_NODE and x.tagName == "Repo"][-1]
except ExpatError as err: repo_node = repo_doc.appendChild(node.createElement("Repo"))
raise("Can not created Repo tag: {}".format(err)) except Exception:
repo_node = repo_doc.appendChild(repo_doc.createElement("Repo"))
name_node = repo_node.createElement("Name") name_node = repo_node.createElement("Name")
name_node.appendChild(node.createTextNode(repo_name)) name_node.appendChild(node.createTextNode(repo_name))
...@@ -77,10 +79,10 @@ class RepoOrder: ...@@ -77,10 +79,10 @@ class RepoOrder:
for r in repo_doc.getElementsByTagName("Repo"): for r in repo_doc.getElementsByTagName("Repo"):
if r.getElementsByTagName("Name")[0].firstChild.data == repo_name: if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
status_node = r.getElementsByTagName("Status")[0].firstChild.data status_node = r.getElementsByTagName("Status")[0]
#FIXME: Program burda göt olacak print(dir(status_node))
if status_node: if status_node:
status_node.childNodes[0].hide() status_node.childNodes[0].data
status_node.insertData(status) status_node.insertData(status)
else: else:
status_node = r.insertTag("Status") status_node = r.insertTag("Status")
...@@ -104,7 +106,7 @@ class RepoOrder: ...@@ -104,7 +106,7 @@ class RepoOrder:
for r in repo_doc.getElementsByTagName("Repo"): for r in repo_doc.getElementsByTagName("Repo"):
if r.getElementsByTagName("Name")[0].firstChild.data == repo_name: if r.getElementsByTagName("Name")[0].firstChild.data == repo_name:
r.hide() repo_doc.removeChild(r)
self._update(repo_doc) self._update(repo_doc)
...@@ -180,7 +182,7 @@ class RepoDB(lazydb.LazyDB): ...@@ -180,7 +182,7 @@ class RepoDB(lazydb.LazyDB):
return dom.documentElement return dom.documentElement
try: try:
return minidom.parse(index_path) return minidom.parse(index_path).documentElement
except ExpatError as e: except ExpatError as e:
raise RepoError(_("Error parsing repository index information. Index file does not exist or is malformed.")) raise RepoError(_("Error parsing repository index information. Index file does not exist or is malformed."))
...@@ -195,7 +197,13 @@ class RepoDB(lazydb.LazyDB): ...@@ -195,7 +197,13 @@ class RepoDB(lazydb.LazyDB):
def add_repo(self, name, repo_info, at = None): def add_repo(self, name, repo_info, at = None):
repo_path = inary.util.join_path(ctx.config.index_dir(), name) 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") urifile_path = inary.util.join_path(ctx.config.index_dir(), name, "uri")
open(urifile_path, "w").write(repo_info.indexuri.get_uri()) open(urifile_path, "w").write(repo_info.indexuri.get_uri())
self.repoorder.add(name, repo_info.indexuri.get_uri()) self.repoorder.add(name, repo_info.indexuri.get_uri())
......
...@@ -124,7 +124,7 @@ class SourceDB(lazydb.LazyDB): ...@@ -124,7 +124,7 @@ class SourceDB(lazydb.LazyDB):
rev_deps = [] rev_deps = []
for pkg, dep in rvdb: for pkg, dep in rvdb:
node = minidom.parseString(dep) node = minidom.parseString(dep).documentElement
dependency = inary.analyzer.dependency.Dependency() dependency = inary.analyzer.dependency.Dependency()
dependency.package = node.childNodes[0].data dependency.package = node.childNodes[0].data
if node.attributes(): 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