+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 = backend.database.Row({
+ "code" : code,
+ "name" : name,
+ "value" : value,
+ })
+ countries.append(country)
+
+ 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
+
+