Repository :
http://git.fedorahosted.org/cgit/
On branch : master
---------------------------------------------------------------
commit 58afd2a870f6e43e2a4fbee6dc5cb52c1c689075
Author: Matt Domsch <matt(a)domsch.com>
Date: Thu Aug 15 13:36:57 2013 -0500
welcome page: display sites that have no hosts
The previous (faster) query was only returning sites that had defined
child hosts. That's not right. So revert to the slower method, using
list() to speed up selectresults.
---------------------------------------------------------------
server/mirrormanager/controllers.py | 2 +-
server/mirrormanager/model.py | 49 +---------------------------------
2 files changed, 3 insertions(+), 48 deletions(-)
diff --git a/server/mirrormanager/controllers.py b/server/mirrormanager/controllers.py
index a1d2696..f7e1e8c 100644
--- a/server/mirrormanager/controllers.py
+++ b/server/mirrormanager/controllers.py
@@ -847,7 +847,7 @@ class Root(controllers.RootController):
@identity.require(identity.not_anonymous())
def index(self):
if admin_group in identity.current.groups:
- sites = all_sites_and_hosts()
+ sites = Site.select().orderBy('name')
else:
sites = user_sites(identity)
return {"sites":sites}
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index 2fcda5e..69d8cb6 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -121,56 +121,11 @@ class SiteAdmin(SQLObject):
def my_site(self):
return self.site
-
-class MiniSite(object):
- def __init__(self, id, name):
- self.id = id
- self.name = name
- self.hosts = []
-
-class MiniHost(object):
- def __init__(self, id, name):
- self.id = id
- self.name = name
-
-def _min_sites_and_hosts(results):
- sites = []
- site = None
- current_site = None
- for (site_id, site_name, host_id, host_name) in results:
- if current_site != site_id:
- site = MiniSite(site_id, site_name)
- sites.append(site)
- current_site = site_id
- host = MiniHost(host_id, host_name)
- site.hosts.append(host)
- return sites
-
def user_sites(identity):
result = []
- query_result = Site.select(join=INNERJOINOn(Site, SiteAdmin, AND(SiteAdmin.q.siteID
== Site.q.id,
+ sites = Site.select(join=INNERJOINOn(Site, SiteAdmin, AND(SiteAdmin.q.siteID ==
Site.q.id,
SiteAdmin.q.username
== identity.current.user_name)))
- for site in query_result:
- for h in site.hosts:
- result.append((site.id, site.name, h.id, h.name))
-
- sites = _min_sites_and_hosts(result)
- return sites
-
-def all_sites_and_hosts():
- def _all_sites_and_hosts():
- sql = 'SELECT site.id AS site_id, site.name AS site_name, host.id AS
host_id, host.name AS host_name '
- sql += 'FROM site, host '
- sql += 'WHERE '
- sql += 'host.site_id = site.id '
- sql += 'GROUP BY site.id, site.name, host.id, host.name '
- sql += 'ORDER BY site.name, host.name '
- result = Site._connection.queryAll(sql)
- return result
-
- sites = _min_sites_and_hosts(_all_sites_and_hosts())
- return sites
-
+ return list(sites)
class HostCategory(SQLObject):
class sqlmeta: