from . import blog
from . import boot
from . import download
+from . import fireinfo
from . import iuse
from . import location
from . import mirrors
"LanguageName" : ui_modules.LanguageNameModule,
"ProgressBar" : ui_modules.ProgressBarModule,
- "FireinfoDeviceTable" : ui_modules.FireinfoDeviceTableModule,
- "FireinfoDeviceAndGroupsTable" : ui_modules.FireinfoDeviceAndGroupsTableModule,
- "FireinfoGeoTable" : ui_modules.FireinfoGeoTableModule,
+ "FireinfoDeviceTable" : fireinfo.DeviceTableModule,
+ "FireinfoDeviceAndGroupsTable" : fireinfo.DeviceAndGroupsTableModule,
+ "FireinfoGeoTable" : fireinfo.GeoTableModule,
},
# Call this when a page wasn't found
# fireinfo.ipfire.org
self.add_handlers(r"fireinfo(\.dev)?\.ipfire\.org", [
- (r"/", FireinfoIndexHandler),
- (r"/device/driver/(.*)", FireinfoDeviceDriverDetail),
- (r"/device/vendors", FireinfoDeviceVendorsHandler),
- (r"/device/(pci|usb)/([0-9a-f]{4})", FireinfoDeviceVendorHandler),
- (r"/device/(pci|usb)/([0-9a-f]{4})/([0-9a-f]{4})", FireinfoDeviceModelHandler),
+ (r"/", fireinfo.IndexHandler),
+ (r"/device/driver/(.*)", fireinfo.DeviceDriverDetail),
+ (r"/device/vendors", fireinfo.DeviceVendorsHandler),
+ (r"/device/(pci|usb)/([0-9a-f]{4})", fireinfo.DeviceVendorHandler),
+ (r"/device/(pci|usb)/([0-9a-f]{4})/([0-9a-f]{4})", fireinfo.DeviceModelHandler),
# Show profiles
- (r"/profile/random", FireinfoRandomProfileHandler),
- (r"/profile/([a-z0-9]{40})", FireinfoProfileDetailHandler),
+ (r"/profile/random", fireinfo.RandomProfileHandler),
+ (r"/profile/([a-z0-9]{40})", fireinfo.ProfileDetailHandler),
# Send profiles.
- (r"/send/([a-z0-9]+)", FireinfoProfileSendHandler),
+ (r"/send/([a-z0-9]+)", fireinfo.ProfileSendHandler),
# Stats handlers
- (r"/statistics", FireinfoStatsHandler),
- (r"/statistics/processors", FireinfoStatsProcessorsHandler),
- (r"/statistics/processors/(arm|x86)", FireinfoStatsProcessorDetailHandler),
- (r"/statistics/geo-locations", FireinfoStatsGeoHandler),
- (r"/statistics/languages", FireinfoStatsLanguagesHandler),
- (r"/statistics/memory", FireinfoStatsMemoryHandler),
- (r"/statistics/networking", FireinfoStatsNetworkingHandler),
- (r"/statistics/releases", FireinfoStatsReleasesHandler),
- (r"/statistics/virtualization", FireinfoStatsVirtualHandler),
+ (r"/statistics", fireinfo.StatsHandler),
+ (r"/statistics/processors", fireinfo.StatsProcessorsHandler),
+ (r"/statistics/processors/(arm|x86)", fireinfo.StatsProcessorDetailHandler),
+ (r"/statistics/geo-locations", fireinfo.StatsGeoHandler),
+ (r"/statistics/languages", fireinfo.StatsLanguagesHandler),
+ (r"/statistics/memory", fireinfo.StatsMemoryHandler),
+ (r"/statistics/networking", fireinfo.StatsNetworkingHandler),
+ (r"/statistics/releases", fireinfo.StatsReleasesHandler),
+ (r"/statistics/virtualization", fireinfo.StatsVirtualHandler),
# Compat handlers
(r"/stats", tornado.web.RedirectHandler, { "url" : "/statistics" }),
(r"/stats/network", tornado.web.RedirectHandler, { "url" : "/statistics/networking" }),
(r"/stats/oses", tornado.web.RedirectHandler, { "url" : "/statistics/releases" }),
(r"/stats/virtual", tornado.web.RedirectHandler, { "url" : "/statistics/virtualization" }),
- (r"/vendor/(pci|usb)/([0-9a-f]{4})", FireinfoDeviceVendorCompatHandler),
- (r"/model/(pci|usb)/([0-9a-f]{4})/([0-9a-f]{4})", FireinfoDeviceModelCompatHandler),
+ (r"/vendor/(pci|usb)/([0-9a-f]{4})", fireinfo.DeviceVendorCompatHandler),
+ (r"/model/(pci|usb)/([0-9a-f]{4})/([0-9a-f]{4})", fireinfo.DeviceModelCompatHandler),
])
# i-use.ipfire.org
#!/usr/bin/python
-
-
import datetime
import hwdata
import logging
from .. import fireinfo
from . import base
+from . import ui_modules
-class FireinfoBaseHandler(base.BaseHandler):
- def cut_string(self, s, limit=15):
- if len(s) > limit:
- s = s[:limit] + "..."
-
- return s
-
- def render(self, *args, **kwargs):
- kwargs.update({
- "cut_string" : self.cut_string,
- })
-
- return BaseHandler.render(self, *args, **kwargs)
-
+class BaseHandler(base.BaseHandler):
@property
def when(self):
return self.get_argument_date("when", None)
self[key] = val
-class FireinfoProfileSendHandler(FireinfoBaseHandler):
+class ProfileSendHandler(BaseHandler):
def check_xsrf_cookie(self):
# This cookie is not required here.
pass
self.finish("Your profile was successfully saved to the database.")
-class FireinfoIndexHandler(FireinfoBaseHandler):
+class IndexHandler(BaseHandler):
def _profile_not_found(self, profile_id):
self.set_status(404)
self.render("fireinfo/profile-notfound.html", profile_id=profile_id)
self.redirect("/profile/%s" % profile_id)
-class FireinfoProfileDetailHandler(FireinfoIndexHandler):
+class ProfileDetailHandler(BaseHandler):
def get(self, profile_id):
profile = self.fireinfo.get_profile(profile_id, when=self.when)
self.render("fireinfo/profile-detail.html", profile=profile)
-class FireinfoRandomProfileHandler(FireinfoBaseHandler):
+class RandomProfileHandler(BaseHandler):
def get(self):
profile_id = self.fireinfo.get_random_profile(when=self.when)
if profile_id is None:
self.redirect("/profile/%s" % profile_id)
-class FireinfoDeviceDriverDetail(FireinfoBaseHandler):
+class DeviceDriverDetail(BaseHandler):
def get(self, driver):
self.render("fireinfo/driver.html", driver=driver,
driver_map=self.fireinfo.get_driver_map(driver, when=self.when))
-class FireinfoDeviceVendorsHandler(FireinfoBaseHandler):
+class DeviceVendorsHandler(BaseHandler):
def get(self):
vendors = self.fireinfo.get_vendor_list(when=self.when)
self.render("fireinfo/vendors.html", vendors=vendors)
-class FireinfoStatsHandler(FireinfoBaseHandler):
+class StatsHandler(BaseHandler):
def get(self):
self.render("fireinfo/stats.html")
-class FireinfoStatsProcessorsHandler(FireinfoBaseHandler):
+class StatsProcessorsHandler(BaseHandler):
def get(self):
avg, stddev, min, max = self.fireinfo.get_cpu_clock_speeds(when=self.when)
arch_map = self.fireinfo.get_arch_map(when=self.when)
return self.render("fireinfo/stats-cpus.html", **data)
-class FireinfoStatsProcessorDetailHandler(FireinfoBaseHandler):
+class StatsProcessorDetailHandler(BaseHandler):
def get(self, platform):
assert platform in ("arm", "x86")
platform=platform, flags=flags)
-class FireinfoStatsMemoryHandler(FireinfoBaseHandler):
+class StatsMemoryHandler(BaseHandler):
def get(self):
avg, stddev, min, max = self.fireinfo.get_memory_amounts(when=self.when)
amounts = self.fireinfo.get_common_memory_amounts(when=self.when)
return self.render("fireinfo/stats-memory.html", **data)
-class FireinfoStatsReleasesHandler(FireinfoBaseHandler):
+class StatsReleasesHandler(BaseHandler):
def get(self):
data = {
"releases" : self.fireinfo.get_releases_map(when=self.when),
return self.render("fireinfo/stats-oses.html", **data)
-class FireinfoStatsVirtualHandler(FireinfoBaseHandler):
+class StatsVirtualHandler(BaseHandler):
def get(self):
data = {
"hypervisors" : self.fireinfo.get_hypervisor_map(when=self.when),
return self.render("fireinfo/stats-virtual.html", **data)
-class FireinfoStatsGeoHandler(FireinfoBaseHandler):
+class StatsGeoHandler(BaseHandler):
def get(self):
return self.render("fireinfo/stats-geo.html",
geo_locations = self.fireinfo.get_geo_location_map(when=self.when))
-class FireinfoStatsLanguagesHandler(FireinfoBaseHandler):
+class StatsLanguagesHandler(BaseHandler):
def get(self):
return self.render("fireinfo/stats-languages.html",
languages = self.fireinfo.get_language_map(when=self.when))
-class FireinfoStatsNetworkingHandler(FireinfoBaseHandler):
+class StatsNetworkingHandler(BaseHandler):
def get(self):
network=self.fireinfo.get_network_zones_map(when=self.when)
return self.render("fireinfo/stats-network.html", network=network)
-class FireinfoDeviceVendorHandler(FireinfoBaseHandler):
+class DeviceVendorHandler(BaseHandler):
def get(self, subsystem, vendor_id):
devices = self.fireinfo.get_devices_by_vendor(subsystem, vendor_id,
when=self.when)
devices=devices)
-class FireinfoDeviceVendorCompatHandler(FireinfoBaseHandler):
+class DeviceVendorCompatHandler(BaseHandler):
def get(self, subsystem, vendor_id):
self.redirect("/device/%s/%s" % (subsystem, vendor_id))
-class FireinfoDeviceModelHandler(FireinfoBaseHandler):
+class DeviceModelHandler(BaseHandler):
def get(self, subsystem, vendor, model):
percentage = self.fireinfo.get_device_percentage(subsystem, vendor,
model, when=self.when)
percentage=percentage, subsystem=subsystem)
-class FireinfoDeviceModelCompatHandler(FireinfoBaseHandler):
+class DeviceModelCompatHandler(BaseHandler):
def get(self, subsystem, vendor_id, model_id):
self.redirect("/device/%s/%s/%s" % (subsystem, vendor_id, model_id))
-class AdminFireinfoHandler(FireinfoBaseHandler):
+class AdminFireinfoHandler(BaseHandler):
def get(self):
profiles_with_data, profiles_all = self.fireinfo.get_active_profiles(when=self.when)
}
self.render("fireinfo/stats-admin.html", **data)
+
+
+class DeviceTableModule(ui_modules.UIModule):
+ def render(self, devices):
+ return self.render_string("fireinfo/modules/table-devices.html",
+ devices=devices)
+
+
+class DeviceAndGroupsTableModule(ui_modules.UIModule):
+ def render(self, devices):
+ _ = self.locale.translate
+
+ groups = {}
+
+ for device in devices:
+ if device.cls not in groups:
+ groups[device.cls] = []
+
+ groups[device.cls].append(device)
+
+ # Sort all devices
+ for key in list(groups.keys()):
+ groups[key].sort()
+
+ # Order the groups by their name
+ groups = list(groups.items())
+ groups.sort()
+
+ return self.render_string("fireinfo/modules/table-devices-and-groups.html",
+ groups=groups)
+
+
+class GeoTableModule(ui_modules.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.backend.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 = 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)
return self.handler.backend
-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 device.cls not in groups:
- groups[device.cls] = []
-
- groups[device.cls].append(device)
-
- # Sort all devices
- for key in list(groups.keys()):
- groups[key].sort()
-
- # Order the groups by their name
- groups = list(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.backend.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 = 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