--- /dev/null
+{% extends "../base.html" %}
+
+{% block header %}
+ <header class="jumbotron subhead" id="overview">
+ <div class="container">
+ <h1>{{ _("Fireinfo") }}</h1>
+ <p class="lead">{{ _("A hardware data collection tool for IPFire") }}</p>
+ </div>
+ </header>
+{% end header %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}Fireinfo{% end block %}
+
+{% block body %}
+ <div class="row">
+ <div class="span12">
+ {% if lang == "de" %}
+ <p class="lead">
+ <strong>Fireinfo</strong> ist ein Tool, welches anonym Informationen
+ über die in IPFire-Systemen verbaute Hardware sammelt.
+ </p>
+ <p class="lead">
+ Diese Daten sollen den Entwicklern helfen zu erkennen, welche
+ Hardware am häufigsten eingesetzt wird und sind auch hilfreich
+ um Hardware-Probleme ausfindig zu machen.
+ </p>
+ {% else %}
+ <p class="lead">
+ <strong>Fireinfo</strong> is a tool that anonymously collects statistical
+ data from IPFire systems.
+ </p>
+ <p class="lead">
+ These data should help the developers to learn
+ which hardware is used most often to run an IPFire system, but is also
+ handy when it comes to debugging hardware problems.
+ </p>
+ {% end %}
+ <hr>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span8 offset2 well">
+ {% if lang == "de" %}
+ <p>
+ Bitte geben Sie die Profil-ID von ihrem System ein, welche
+ Sie auf der Fireinfo-Seite des Webinterfaces finden können:
+ </p>
+ {% else %}
+ <p>
+ Please enter the profile ID of your system, which can be found
+ on the fireinfo page on the web interface, to see your profile:
+ </p>
+ {% end %}
+
+ <hr>
+
+ <form method="POST" action="">
+ <div class="input-append">
+ <input type="text" class="span7" name="profile_id" value=""
+ placeholder="{{ _("Profile ID") }}"><button type="submit" class="btn">{{ _("Show") }}</button>
+ </div>
+ {% raw xsrf_form_html() %}
+ </form>
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ vendor_name }} - {{ model_name or model_id }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ vendor_name }} - {{ model_name or model_id }}</h1>
+ </div>
+
+ <p>
+ {{ _("This device is installed on approximately %.2f%% of all systems.") % percentage }}
+ </p>
+
+ <h2>{{ _("Feedback") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Im IPFire-Wiki befindet sich eine Sektion mit Kommentaren und Ratschlägen
+ zu dieser Hardware. Diese werden von der Community gesammelt.
+ </p>
+ {% else %}
+ <p>
+ In the IPFire wiki is a section that keeps comments or instructions on
+ the hardware. These information is maintained by the community.
+ </p>
+ {% end %}
+
+ <p>
+ {{ _("Go to the wiki") }}:
+ <a href="http://wiki.ipfire.org/{{ lang }}/hardware/fireinfo/{{ bus }}/{{ vendor_id }}/{{ model_id }}">{{ vendor_name }} - {{ model_name or model_id }}</a>
+ </p>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Profile") }} {{ profile.public_id }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Profile") }} <small>{{ profile.public_id }}</small></h1>
+ </div>
+
+ <div class="row">
+ <div class="span6">
+ <h3>{{ _("Operating system") }}</h3>
+ <table class="table">
+ <tr>
+ <td>
+ {{ _("Version") }}
+ </td>
+ <td>
+ {{ profile.release }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Architecture") }}
+ </td>
+ <td>
+ {{ profile.cpu.arch }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Kernel version") }}
+ </td>
+ <td>
+ {{ profile.kernel }}
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="span6">
+ {% if profile.hypervisor %}
+ <h3>{{ _("Hypervisor") }}</h3>
+ <p>
+ {{ _("This machine is running in a virtual environment.") }}
+ </p>
+
+ <table class="table">
+ <tr>
+ <td>
+ {{ _("Vendor") }}
+ </td>
+ <td>
+ {{ profile.hypervisor.vendor }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Type") }}
+ </td>
+ <td>
+ {{ profile.hypervisor.type }}
+ </td>
+ </tr>
+ </table>
+ {% else %}
+ <h3>{{ _("Hardware vendor") }}</h3>
+ <table class="table">
+ <tr>
+ <td>
+ {{ _("Vendor") }}
+ </td>
+ <td>
+ {{ profile.vendor or _("Unknown") }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Model") }}
+ </td>
+ <td>
+ {{ profile.model or _("Unknown") }}
+ </td>
+ </tr>
+ </table>
+ {% end %}
+ </div>
+ </div>
+
+ <hr>
+
+ {% if profile.network %}
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("Network") }}</h2>
+ <p>
+ {{ _("Enabled network zones") }}
+
+ {% for zone in ("GREEN", "RED", "BLUE", "ORANGE") %}
+ {% if profile.network.has_zone(zone.lower()) %}
+ {% if zone == "GREEN" %}
+ <span class="label label-success">{{ _(zone) }}</span>
+ {% elif zone == "RED" %}
+ <span class="label label-important">{{ _(zone) }}</span>
+ {% elif zone == "ORANGE" %}
+ <span class="label label-warning">{{ _(zone) }}</span>
+ {% elif zone == "BLUE" %}
+ <span class="label label-info">{{ _(zone) }}</span>
+ {% end %}
+ {% end %}
+ {% end %}
+ </p>
+ </div>
+ </div>
+ {% end %}
+
+ <hr>
+
+ <h2>{{ _("Hardware") }}</h2>
+ <div class="row">
+ <div class="span6">
+ <table class="table">
+ <tr>
+ <td colspan="2">
+ <strong>{{ _("CPU") }}</strong>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Vendor") }}
+ </td>
+ <td>
+ <a href="/stats/cpus">{{ profile.cpu.vendor }}</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Model") }}
+ </td>
+ <td>
+ {{ profile.cpu.model_string or _("Not available") }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Cores") }}
+ </td>
+ <td>
+ {{ profile.cpu.count }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Speed") }}
+ </td>
+ <td>
+ {{ profile.cpu.speed }} MHz
+ {% if profile.cpu.speed != profile.cpu.bogomips %}
+ (Bogomips: {{ profile.cpu.bogomips }})
+ {% end %}
+ </td>
+ </tr>
+ {% if profile.cpu.vendor != "ARM" %}
+ <tr>
+ <td>
+ {{ _("Supported features") }}
+ </td>
+ <td>
+ {% if profile.cpu.capable_64bit %}
+ <span class="label label-success">{{ _("64 bit capable") }}</span>
+ {% end %}
+
+ {% if profile.cpu.capable_pae %}
+ <span class="label label-success">{{ _("PAE capable") }}</span>
+ {% end %}
+
+ {% if profile.cpu.capable_virt %}
+ <span class="label label-success">{{ _("VT-x/AMD-V") }}</span>
+ {% end %}
+ </td>
+ </tr>
+ {% end %}
+ </table>
+ </div>
+
+ <div class="span6">
+ <table class="table">
+ <tr>
+ <td>
+ {{ _("Memory size") }}
+ </td>
+ <td>
+ {{ format_size(profile.memory) }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("System disk size") }}
+ </td>
+ <td>
+ {{ format_size(profile.root_size) }}
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <hr>
+
+ {% if profile.devices %}
+ <h3>{{ _("Peripherial devices") }}</h3>
+ {% module StasyDeviceTable(profile.devices) %}
+ <hr>
+ {% end %}
+
+ <h3>{{ _("Signature images") }}</h3>
+ <ul class="unstyled">
+ {% for i in range(1) %}
+ <li>
+ <!-- XXX need some bbcode here -->
+ <a href="http://i-use.ipfire.org/profile/{{ profile.public_id }}/{{ i }}.png">
+ <img src="http://i-use.ipfire.org/profile/{{ profile.public_id }}/{{ i }}.png"
+ alt="{{ _("Signature image") }}" />
+ </a>
+ </li>
+ {% end %}
+ </ul>
+
+ <div class="pull-right">
+ <p>
+ {{ _("Last update") }}: {{ locale.format_date(profile.updated) }}
+ </p>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Profile not found") }}}{% end block %}
+
+{% block body %}
+ <img class="pull-right" src="{{ static_url("images/error/404.png") }}" alt="{{ _("Error") }}" />
+ <div class="page-header">
+ <h1>404 - {{ _("Profile not found") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <p>
+ {% if lang == "de" %}
+ Es wurden keine Daten für das Profil <code>{{ profile_id }}</code>
+ gefunden.
+ {% else %}
+ There was no profile data found for profile <code>{{ profile_id }}</code>.
+ {% end %}
+ </p>
+ <p>
+ {% if lang == "de" %}
+ Der Eigentümer dieses Profils hat möglicherweise der Veröffentlichung
+ der Daten nicht zugestimmt oder diese abgeschaltet.
+ {% else %}
+ The profile owner has probably not submitted any data
+ or recently disabled the transmission.
+ {% end %}
+ </p>
+ <p>
+ {% if lang == "de" %}
+ Falls dieses Profil Ihr eigenes ist, so können Sie die Veröffentlichung
+ im Web-Interface
+ <a href="http://wiki.ipfire.org/de/fireinfo/my_profile" target="_blank">einschalten</a>.
+ {% else %}
+ If this is your own profile, you can
+ <a href="http://wiki.ipfire.org/en/fireinfo/my_profile" target="_blank">enable</a>
+ the submission on the web user interface.
+ {% end %}
+ </p>
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Admin") }}{% end block %}
+
+{% block body %}
+ <h3>Need a headline</h3>
+
+ <table>
+ <tr>
+ <td>
+ {{ _("Sending profiles") }}
+ </td>
+ <td>
+ {{ profiles_count }} / {{ profiles_count_all }}
+ </td>
+ </tr>
+ <tr>
+ <td>
+ {{ _("Archive size") }}
+ </td>
+ <td>
+ {{ archives_count }}
+ </td>
+ </tr>
+ </table>
+{% end block %}
+
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("CPU flags") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Processor flags") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ {% if lang == "de" %}
+ <p>
+ Diese Seite untersucht CPUs und ihre Funktionalitäten.
+ Anhand dieser Graphen können die Entwickler einige Entscheidungen
+ über die Betriebssystemkonfiguration treffen.
+ </p>
+ {% else %}
+ <p>
+ On this page we will examine which CPUs provide a specific feature.
+ These charts will help the IPFire developers to make decisions about
+ the operating system configuration.
+ </p>
+ {% end %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("CPUs that support 64 bits") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Wieviele Prozessoren unterstützen die 64-Bit-Architektur?
+ </p>
+ {% else %}
+ <p>
+ How many CPUs support the 64-bit architecture?
+ </p>
+ {% end %}
+ {% module StasyTable(cpus_lm, sortby="percentage") %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("CPUs with PAE") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Diese Grafik zeigt uns wieviele Prozessoren das PAE-Flag unterstützen.
+ </p>
+ {% else %}
+ <p>
+ This chart shows us which CPUs have got the PAE flag.
+ </p>
+ {% end %}
+ {% module StasyTable(cpus_pae, sortby="percentage") %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("CPUs that support virtualization") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Für zukünftige Planungen ist es nötig zu wissen, ob genug
+ Hardware mit Virtualisierungsunterstützung vorhanden ist
+ (Intels VT-x and AMD-V).
+ </p>
+ {% else %}
+ <p>
+ For future planning it is important to know if there is enough hardware
+ support for virtualization like VT-x and AMD-V.
+ </p>
+ {% end %}
+ {% module StasyTable(cpus_virt, sortby="percentage") %}
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Processors") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Hardware: CPUs") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <a href="/stats/cpuflags">{{ _("See statistics about common CPU flags") }}</a>
+ <hr>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("Vendors") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Eine Aufstellung über den beliebtesten Prozessor-Hersteller:
+ </p>
+ {% else %}
+ <p>
+ This chart shows us which vendors is the most favorite for the CPUs
+ used in IPFire.
+ </p>
+ {% end %}
+ {% module StasyTable(cpu_vendors, sortby="percentage") %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("Speed") }}</h2>
+ <p>
+ {{ _("The average speed of all systems in the database is: <strong>%.2f MHz</strong>.") % average_speed }}
+ <br>
+ {{ _("All together, there are <strong>%s bogomips</strong> out there.") % locale.friendly_number(bogomips) }}
+ </p>
+ {% module StasyTable(cpu_speeds) %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("CPU core counter") }}</h2>
+ <p>
+ {{ _("See a breakdown of the CPU cores that are installed on the IPFire systems.") }}
+ </p>
+ {% module StasyCPUCoreTable(cpu_cores) %}
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Geo locations") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Geo locations") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ {% if lang == "de" %}
+ <p>
+ Dieses Diagramm zeigt in welchem Land IPFire am häufigsten
+ eingesetzt wird.
+ </p>
+ {% else %}
+ <p>
+ This chart shows us in which country IPFire is running.
+ </p>
+ {% end %}
+ {% module StasyGeoTable(geo_locations) %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("Language selection") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Dies gibt einen Überblick über die Häufigkeit der ausgewählten
+ Sprachen.
+ </p>
+ {% else %}
+ <p>
+ This will give a short overview about what languages are configured
+ on the IPFire webinterface.
+ </p>
+ {% end %}
+ {% module StasyTable(languages, sortby="percentage", locale=True) %}
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Memory") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Memory") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <p>
+ {{ _("The average amount of memory of all systems in the database is: <strong>%.2f MB</strong>.") % average_memory }}
+ </p>
+ {% module StasyTable(memory) %}
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Network") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Network configuration") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ {% if lang == "de" %}
+ <p>
+ Diese Grafik zeigt uns die beliebteste Netzwerkkonfiguration.
+ </p>
+ {% else %}
+ <p>
+ This chart shows us which is the most favourite network configuration.
+ </p>
+ {% end %}
+ {% module StasyTable(network_zones, sortby="percentage", percentage=True) %}
+ </div>
+ </div>
+{% end block %}
+
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Operating system") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Releases") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ {% module StasyTable(releases, sortby="percentage") %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("Architectures") }}</h2>
+ {% module StasyTable(arches, sortby="percentage") %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h3>{{ _("Kernels") }}</h3>
+ {% if lang == "de" %}
+ <p>
+ Dies zeigt uns, welche Kernel am häufigsten verwendet werden.
+ </p>
+ {% else %}
+ <p>
+ This chart gives an overview about what kernel the machines are
+ runnning.
+ </p>
+ {% end %}
+ {% module StasyTable(kernels, sortby="percentage") %}
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Virtualization") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("Virtualization support") }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ {% if lang == "de" %}
+ <p>
+ IPFire läuft hervorragend in virtuellen Umgebungen.
+ </p>
+ <p>
+ Dieser Graph gibt Aufschluss darüber, wieviele Systeme
+ virtuell laufen.
+ </p>
+ {% else %}
+ <p>
+ IPFire is running very well in a virtual environment.
+ </p>
+ <p>
+ See this chart to get a clue about how many machines are running
+ virtually.
+ </p>
+ {% end %}
+ {% module StasyTable(is_virtual, sortby="percentage") %}
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ <h2>{{ _("Hypervisors") }}</h2>
+ {% if lang == "de" %}
+ <p>
+ Diese Systeme werden eingesetzt um IPFire zu virtualisieren:
+ </p>
+ {% else %}
+ <p>
+ This is a list of all hypervisor vendors that IPFire is running on.
+ </p>
+ {% end %}
+ {% module StasyTable(hypervisor_vendors, sortby="percentage") %}
+ </div>
+ </div>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("Statistics") }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ _("fireinfo statistics") }}</h1>
+ </div>
+
+ <ul class="thumbnails">
+ <li class="span4">
+ <div class="thumbnail">
+ <img src="{{ static_url("images/tux/ipfire_tux_256x256.png") }}" alt="">
+ <div class="caption">
+ <h3>
+ <a href="/stats/oses">
+ {{ _("IPFire versions") }}
+ </a>
+ </h3>
+ <p>
+ {% if lang == "de" %}
+ Übersicht über die aktuell laufenden Versionen der
+ IPFire Systeme.
+ {% else %}
+ Get an overview over all currently running versions
+ of IPFire.
+ {% end %}
+ </p>
+ </div>
+ </div>
+ </li>
+ <li class="span4">
+ <div class="thumbnail">
+ <img src="{{ static_url("images/tux/ipfire_tux_256x256.png") }}" alt="">
+ <div class="caption">
+ <h3>
+ <a href="/stats/geo">
+ {{ _("Geo locations") }}
+ </a>
+ </h3>
+ <p>
+ {% if lang == "de" %}
+ Zeigt eine Verteilung über die Länder, in
+ denen IPFire-Systeme laufen.
+ {% else %}
+ Shows a plot from all the countries in which
+ IPFire systems are running.
+ {% end %}
+ </p>
+ </div>
+ </div>
+ </li>
+ <li class="span4">
+ <div class="thumbnail">
+ <img src="{{ static_url("images/tux/ipfire_tux_256x256.png") }}" alt="">
+ <div class="caption">
+ <h3>
+ <a href="/stats/cpus">
+ {{ _("Hardware: CPUs") }}
+ </a>
+ </h3>
+ <p>
+ {% if lang == "de" %}
+ Zeigt Informationen über die Prozessortypen,
+ Hersteller und Geschwindigkeiten.
+ {% else %}
+ Shows information about processor types, vendors
+ and clock speeds.
+ {% end %}
+ </p>
+ <h4>
+ <a href="/stats/cpuflags">
+ {{ _("CPU features") }}
+ </a>
+ </h4>
+ </div>
+ </div>
+ </li>
+ <li class="span4">
+ <div class="thumbnail">
+ <img src="{{ static_url("images/tux/ipfire_tux_256x256.png") }}" alt="">
+ <div class="caption">
+ <h3>
+ <a href="/stats/memory">
+ {{ _("Hardware: Memory") }}
+ </a>
+ </h3>
+ <p>
+ {% if lang == "de" %}
+ Zeigt Informationen über die durchschnittlich
+ verbaute Menge an Arbeitsspeicher und mehr.
+ {% else %}
+ Shows information about the average installed
+ amount of RAM.
+ {% end %}
+ </p>
+ </div>
+ </div>
+ </li>
+ <li class="span4">
+ <div class="thumbnail">
+ <img src="{{ static_url("images/tux/ipfire_tux_256x256.png") }}" alt="">
+ <div class="caption">
+ <h3>
+ <a href="/stats/network">
+ {{ _("Network") }}
+ </a>
+ </h3>
+ <p>
+ {% if lang == "de" %}
+ Zeigt Grafiken über die beliebteste
+ Netzwerkkonfiguration.
+ {% else %}
+ Shows plots about the favourite network
+ configurations.
+ {% end %}
+ </p>
+ </div>
+ </div>
+ </li>
+ <li class="span4">
+ <div class="thumbnail">
+ <img src="{{ static_url("images/tux/ipfire_tux_256x256.png") }}" alt="">
+ <div class="caption">
+ <h3>
+ <a href="/stats/virtual">
+ {{ _("Virtualization") }}
+ </a>
+ </h3>
+ <p>
+ {% if lang == "de" %}
+ Welcher Hypervisor wird am häufigsten eingesetzt?
+ Wieviele Systeme laufen in einer virtuellen
+ Umgebung?
+ {% else %}
+ Which hypervisor is the most common one?
+ How many systems are running in a virtual
+ environment?
+ {% end %}
+ </p>
+ </div>
+ </div>
+ </li>
+ </ul>
+{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ vendor_name }}{% end block %}
+
+{% block body %}
+ <div class="page-header">
+ <h1>{{ vendor_name }}</h1>
+ </div>
+
+ <div class="row">
+ <div class="span12">
+ {% if lang == "de" %}
+ <p>
+ Dies ist eine Aufstellung über alle Geräte von
+ <strong>{{ vendor_name }}</strong> in der Datenbank.
+ {% else %}
+ <p>
+ This is a list of all devices this database knows about from
+ <strong>{{ vendor_name }}</strong>.
+ </p>
+ {% end %}
+
+ {% module StasyDeviceTable(models) %}
+ </div>
+ </div>
+{% end block %}