From 01c19c8694894af3696f8a3a8ff00a4199aa8a6e Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Wed, 4 Feb 2009 14:15:41 +0000 Subject: [PATCH] Activate/Deactivate repository to pisi api. Thanks to Turker. BUG:COMMENT:6734 --- pisi/db/repodb.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/pisi/db/repodb.py b/pisi/db/repodb.py index 7655dc23..bc0301d9 100644 --- a/pisi/db/repodb.py +++ b/pisi/db/repodb.py @@ -33,7 +33,7 @@ medias = (cd, usb, remote, local) = range(4) class RepoOrder: def __init__(self): - self.repos = self._get_repos() + self.repos = self._get_repos() def add(self, repo_name, repo_url, repo_type="remote"): repo_doc = self._get_doc() @@ -50,11 +50,29 @@ class RepoOrder: url_node = repo_node.insertTag("Url") url_node.insertData(repo_url) + name_node = repo_node.insertTag("Status") + name_node.insertData("active") + media_node = repo_node.insertTag("Media") media_node.insertData(repo_type) 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") + if status_node: + status_node.firstChild().hide() + status_node.insertData(status) + else: + status_node = r.insertTag("Status") + status_node.insertData(status) + + self._update(repo_doc) + def remove(self, repo_name): repo_doc = self._get_doc() @@ -92,7 +110,9 @@ class RepoOrder: for r in repo_doc.tags("Repo"): media = r.getTagData("Media") name = r.getTagData("Name") - order.setdefault(media, []).append(name) + status = r.getTagData("Status") + if status != "deactive": + order.setdefault(media, []).append(name) return order @@ -174,3 +194,9 @@ class RepoDB(lazydb.LazyDB): for r in self.list_repos(): if self.get_repo_url(r) == url: return r + + def activate_repo(self, name): + self.repoorder.set_status(name, "active") + + def deactivate_repo(self, name): + self.repoorder.set_status(name, "deactive")