]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blobdiff - webapp/ui_modules.py
Merge branch 'master' of ssh://git.ipfire.org/pub/git/ipfire.org
[people/shoehn/ipfire.org.git] / webapp / ui_modules.py
index 53b8df239f0fb73e7ce9d5d2c51e24b727fc1421..e74049115df0e930f9fc237fef6f2cfc24e2f4aa 100644 (file)
@@ -13,9 +13,6 @@ import tornado.locale
 import tornado.web
 import unicodedata
 
-import backend
-import backend.stasy
-
 class UIModule(tornado.web.UIModule):
        @property
        def accounts(self):
@@ -68,6 +65,94 @@ class AdvertisementModule(UIModule):
                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)
@@ -114,7 +199,7 @@ class NewsItemModule(UIModule):
                # Get name of author
                author = self.accounts.find(author)
                if author:
-                       return author.cn
+                       return author.name
                else:
                        _ = self.locale.translate
                        return _("Unknown author")
@@ -225,14 +310,33 @@ class PlanetEntryModule(UIModule):
                        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]
@@ -243,109 +347,6 @@ class TrackerPeerListModule(UIModule):
                        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",