import tornado.web
import unicodedata
-import backend
-import backend.stasy
-
class UIModule(tornado.web.UIModule):
@property
def accounts(self):
return self.render_string("modules/ads/%s.html" % where, ad=ad)
+class FireinfoDeviceTableModule(UIModule):
+ def render(self, devices):
+ return self.render_string("fireinfo/modules/table-devices.html",
+ devices=devices)
+
+
+class FireinfoDeviceAndGroupsTableModule(UIModule):
+ def render(self, devices):
+ _ = self.locale.translate
+
+ groups = {}
+
+ for device in devices:
+ if not groups.has_key(device.cls):
+ groups[device.cls] = []
+
+ groups[device.cls].append(device)
+
+ # Sort all devices
+ for key in groups.keys():
+ groups[key].sort()
+
+ # Order the groups by their name
+ groups = groups.items()
+ groups.sort()
+
+ return self.render_string("fireinfo/modules/table-devices-and-groups.html",
+ groups=groups)
+
+
+class FireinfoGeoTableModule(UIModule):
+ def render(self, items):
+ countries = []
+ other_countries = []
+ for code, value in items:
+ # Skip the satellite providers in this ranking
+ if code in (None, "A1", "A2"):
+ continue
+
+ name = self.geoip.get_country_name(code)
+
+ # Don't add countries with a small share on the list
+ if value < 0.01:
+ other_countries.append(name)
+ continue
+
+ country = tornado.database.Row({
+ "code" : code,
+ "name" : name,
+ "value" : value,
+ })
+ countries.append(country)
+
+ # Sort the list of small countries by alphabet
+ other_countries.sort()
+
+ return self.render_string("fireinfo/modules/table-geo.html",
+ countries=countries, other_countries=other_countries)
+
+
+class LanguageNameModule(UIModule):
+ def render(self, language):
+ _ = self.locale.translate
+
+ if language == "de":
+ return _("German")
+ elif language == "en":
+ return _("English")
+ elif language == "es":
+ return _("Spanish")
+ elif language == "fr":
+ return _("French")
+ elif language == "it":
+ return _("Italian")
+ elif language == "nl":
+ return _("Dutch")
+ elif language == "pl":
+ return _("Polish")
+ elif language == "pt":
+ return _("Portuguese")
+ elif language == "ru":
+ return _("Russian")
+ elif language == "tr":
+ return _("Turkish")
+
+ return language
+
+
class MapModule(UIModule):
def render(self, latitude, longitude):
return self.render_string("modules/map.html", latitude=latitude, longitude=longitude)
# Get name of author
author = self.accounts.find(author)
if author:
- return author.cn
+ return author.name
else:
_ = self.locale.translate
return _("Unknown author")
entry=entry, show_avatar=show_avatar)
+class ProgressBarModule(UIModule):
+ def render(self, value, colour=None):
+ value *= 100
+
+ return self.render_string("modules/progress-bar.html",
+ colour=colour, value=value)
+
+
+class TalkCallLogModule(UIModule):
+ def render(self, calls):
+ return self.render_string("talk/modules/call-log.html", calls=calls)
+
+
+class TalkOngoingCallsModule(UIModule):
+ def render(self, calls):
+ return self.render_string("talk/modules/ongoing-calls.html", calls=calls)
+
+
class TrackerPeerListModule(UIModule):
def render(self, peers):
# Guess country code and hostname of the host
for peer in peers:
country_code = self.geoip.get_country(peer["ip"])
if country_code:
- country_code = country_code.lower()
- peer["country_code"] = country_code or "unknown"
+ peer["country_code"] = country_code.lower()
+ else:
+ peer["country_code"] = "unknown"
try:
peer["hostname"] = socket.gethostbyaddr(peer["ip"])[0]
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",