src/templates/fireinfo/driver.html \
src/templates/fireinfo/index.html \
src/templates/fireinfo/i-use-1.png \
- src/templates/fireinfo/model-detail.html \
src/templates/fireinfo/profile.html \
src/templates/fireinfo/stats-admin.html \
src/templates/fireinfo/stats-cpus-detail.html \
return self._process_devices(res)
- def get_device_percentage(self, subsystem, vendor, model, when=None):
- res = self.db.get("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id), \
- devices AS (SELECT * FROM profiles \
- LEFT JOIN fireinfo_profiles_devices ON profiles.id = fireinfo_profiles_devices.profile_id \
- LEFT JOIN fireinfo_devices ON fireinfo_profiles_devices.device_id = fireinfo_devices.id) \
- SELECT COUNT(*)::float / (SELECT COUNT(*) FROM devices) AS percentage FROM devices \
- WHERE devices.subsystem = %s AND devices.vendor = %s AND devices.model = %s",
- when, subsystem, vendor, model)
-
- if res:
- return res.percentage
-
- def get_device_in_profile(self, subsystem, vendor, model, limit=10, when=None):
- res = self.db.query("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id), \
- profiles_with_device AS (SELECT DISTINCT fireinfo_profiles.public_id FROM profiles \
- LEFT JOIN fireinfo_profiles ON profiles.id = fireinfo_profiles.id \
- LEFT JOIN fireinfo_profiles_devices ON profiles.id = fireinfo_profiles_devices.profile_id \
- LEFT JOIN fireinfo_devices ON fireinfo_profiles_devices.device_id = fireinfo_devices.id \
- WHERE fireinfo_devices.subsystem = %s AND fireinfo_devices.vendor = %s \
- AND fireinfo_devices.model = %s) \
- SELECT * FROM profiles_with_device ORDER BY RANDOM() LIMIT %s",
- when, subsystem, vendor, model, limit)
-
- return (r.public_id for r in res)
-
def get_network_zones_map(self, when=None):
res = self.db.get("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
SELECT COUNT(NULLIF(has_red, FALSE))::float / (SELECT COUNT(*) FROM profiles) AS has_red, \
+++ /dev/null
-{% extends "../base.html" %}
-
-{% block title %}{{ vendor_name }} - {{ model_name or model_id }}{% end block %}
-
-{% block body %}
- <div class="page-header">
- <h2>
- <a href="/vendor/{{ subsystem }}/{{ vendor_id }}">{{ vendor_name }}</a>
- - {{ model_name or model_id }}
- </h2>
- </div>
-
- <p>
- {{ _("This device is installed on approximately %.2f%% of all systems.") % percentage }}
- </p>
-
- {% if profiles %}
- <p>
- {{ _("Here are some random profiles which have this device:") }}
- </p>
- <ul>
- {% for public_id in profiles %}
- <li>
- <a href="/profile/{{ public_id }}">{{ public_id }}</a>
- </li>
- {% end %}
- </ul>
- {% end %}
-{% end block %}
</p>
<p class="mb-0">
- <a class="vendor" href="/device/{{ d.subsystem }}/{{ d.vendor }}">{{ d.vendor_string }}</a>
- ‐
- <a href="/device/{{ d.subsystem }}/{{ d.vendor }}/{{ d.model }}">
- {{ d.model_string or "N/A (%s)" % d.model }}
- </a>
+ <a href="/device/{{ d.subsystem }}/{{ d.vendor }}">{{ d.vendor_string }}</a>
+ ‐ {{ d.model_string or "N/A (%s)" % d.model }}
{% if d.driver %}
(<a href="/device/driver/{{ d.driver }}">{{ d.driver }}</a>)
(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", fireinfo.RandomProfileHandler),
(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})", fireinfo.DeviceVendorCompatHandler),
- (r"/model/(pci|usb)/([0-9a-f]{4})/([0-9a-f]{4})", fireinfo.DeviceModelCompatHandler),
])
# i-use.ipfire.org
self.redirect("/device/%s/%s" % (subsystem, vendor_id))
-class DeviceModelHandler(BaseHandler):
- def get(self, subsystem, vendor, model):
- percentage = self.fireinfo.get_device_percentage(subsystem, vendor,
- model, when=self.when)
- percentage *= 100
-
- profiles = self.fireinfo.get_device_in_profile(subsystem, vendor,
- model, when=self.when)
-
- vendor_name = self.fireinfo.get_vendor_string(subsystem, vendor)
- model_name = self.fireinfo.get_model_string(subsystem, vendor, model)
-
- self.render("fireinfo/model-detail.html", profiles=profiles,
- vendor_id=vendor, vendor_name=vendor_name,
- model_id=model, model_name=model_name,
- percentage=percentage, subsystem=subsystem)
-
-
class DeviceModelCompatHandler(BaseHandler):
def get(self, subsystem, vendor_id, model_id):
self.redirect("/device/%s/%s/%s" % (subsystem, vendor_id, model_id))