import tornado.web
import unicodedata
- import backend
- import backend.stasy
-from tornado.database import Row
--
class UIModule(tornado.web.UIModule):
@property
def accounts(self):
peer["hostname"] = ""
return self.render_string("modules/tracker-peerlist.html",
- peers=[Row(p) for p in peers])
+ peers=[backend.database.Row(p) for p in peers])
- class StasyTableModule(UIModule):
- def _make_percentages(self, items):
- total = sum(items.values())
-
- for k in items.keys():
- items[k] *= 100
- items[k] /= total
-
- return items
-
- def render(self, items, sortby="key", reverse=False, percentage=False, flags=False, locale=False):
- hundred_percent = 0
- for v in items.values():
- hundred_percent += v
-
- keys = []
- if sortby == "key":
- keys = sorted(items.keys(), reverse=reverse)
- elif sortby == "percentage":
- keys = [k for k,v in sorted(items.items(), key=operator.itemgetter(1))]
- if not reverse:
- keys = reversed(keys)
- else:
- raise Exception, "Unknown sortby parameter was provided"
-
- if hundred_percent:
- _items = []
- for k in keys:
- if not percentage:
- v = items[k] * 100 / hundred_percent
- else:
- v = items[k] * 100
- _items.append((k, v))
- items = _items
-
- if items and type(items[0][0]) == type(()) :
- _ = self.locale.translate
- _items = []
- for k, v in items:
- k = _("%s to %s") % k
- _items.append((k, v))
- items = _items
-
- if locale:
- flags = False
- locales = tornado.locale.LOCALE_NAMES
- _items = []
- for k, v in items:
- if k:
- for code, locale in locales.items():
- if code.startswith(k):
- k = locale["name"].split()[0]
- _items.append((k, v))
- items = _items
-
- return self.render_string("modules/stasy-table.html", items=items, flags=flags)
-
-
- class StasyCPUCoreTableModule(StasyTableModule):
- def render(self, items):
- items = self._make_percentages(items)
-
- items = items.items()
- items.sort()
-
- return self.render_string("modules/stasy-table.html", items=items,
- flags=None #XXX
- )
-
-
- class StasyDeviceTableModule(UIModule):
- def render(self, devices):
- groups = {}
-
- for device in devices:
- if not groups.has_key(device.cls):
- groups[device.cls] = []
-
- groups[device.cls].append(device)
-
- return self.render_string("modules/stasy-table-devices.html",
- groups=groups.items())
-
-
- class StasyGeoTableModule(UIModule):
- def render(self, items):
- _ = self.locale.translate
-
- # Sort all items by value
- items = sorted(items.items(), key=operator.itemgetter(1), reverse=True)
-
- countries = []
- for code, value in items:
- country = backend.database.Row({
- "code" : code.lower(),
- "name" : _(self.geoip.get_country_name(code)),
- "value" : value * 100,
- })
- countries.append(country)
-
- return self.render_string("modules/stasy-table-geo.html", countries=countries)
-
-
class WishlistModule(UIModule):
def render(self, wishes, short=False):
return self.render_string("wishlist/modules/wishlist.html",