initrd {{ release.netboot_initrd_url(arch, platform) }}
append {{ release.netboot_args(arch, platform) }} vga=791
- {% module NetBootMenuSeparator() %}
+ {% module BootMenuSeparator() %}
label {{ release.sname }}.novga
menu label {{ _("Install in text mode") }}
append {{ release.netboot_args(arch, platform) }} console=ttyS0,115200 novga
{% end %}
- {% module NetBootMenuSeparator() %}
+ {% module BootMenuSeparator() %}
label {{ release.sname }}.back
menu label {{ _("Back...") }}
-menu begin {{ id }}
+menu begin {{ slug }}
menu title {{ title }}
- label {{ id }}.back
+ label {{ slug }}.back
menu label {{ _("Back...") }}
menu exit
- {% module NetBootMenuSeparator() %}
+ {% module BootMenuSeparator() %}
- {% for r in [r for r in releases if r.is_netboot_capable()] %}{% module NetBootMenuConfig(r, arch=arch, platform=platform) %}{% end %}
+ {% for r in [r for r in releases if r.is_netboot_capable()] %}{% module BootMenuConfig(r, arch=arch, platform=platform) %}{% end %}
menu end
menu title {{ _("IPFire boot menu") }} ({{ arch }})
{% if latest_release %}
- {% module NetBootMenuConfig(latest_release, arch=arch, platform=platform) %}
- {% module NetBootMenuSeparator() %}
+ {% module BootMenuConfig(latest_release, arch=arch, platform=platform) %}
+ {% module BootMenuSeparator() %}
{% end %}
{% if stable_releases %}
- {% module NetBootMenuHeader(_("Stable releases"), stable_releases, arch=arch, platform=platform) %}
+ {% module BootMenuHeader(_("Stable releases"), stable_releases, arch=arch, platform=platform) %}
{% end %}
{% if development_releases %}
- {% module NetBootMenuHeader(_("Development releases"), development_releases, arch=arch, platform=platform) %}
+ {% module BootMenuHeader(_("Development releases"), development_releases, arch=arch, platform=platform) %}
{% end %}
{% if arch == "x86_64" %}
"BlogPost" : blog.PostModule,
"BlogPosts" : blog.PostsModule,
+ # Boot
+ "BootMenuConfig" : boot.MenuConfigModule,
+ "BootMenuHeader" : boot.MenuHeaderModule,
+ "BootMenuSeparator" : boot.MenuSeparatorModule,
+
# Location
"Map" : ui_modules.MapModule,
"MirrorItem" : ui_modules.MirrorItemModule,
"MirrorsTable" : ui_modules.MirrorsTableModule,
- "NetBootMenuConfig" : ui_modules.NetBootMenuConfigModule,
- "NetBootMenuHeader" : ui_modules.NetBootMenuHeaderModule,
- "NetBootMenuSeparator" : ui_modules.NetBootMenuSeparatorModule,
"ProgressBar" : ui_modules.ProgressBarModule,
"FireinfoDeviceTable" : ui_modules.FireinfoDeviceTableModule,
"FireinfoDeviceAndGroupsTable" : ui_modules.FireinfoDeviceAndGroupsTableModule,
import logging
import os
+import re
import tornado.httpserver
import tornado.ioloop
import tornado.locale
import tornado.options
import tornado.web
+import unicodedata
from . import base
+from . import ui_modules
BASEDIR = os.path.dirname(__file__)
class MenuGPXEHandler(BootBaseHandler):
-
"""
menu.gpxe
"""
self.render("netboot/menu.cfg", latest_release=latest_release,
stable_releases=stable_releases, development_releases=development_releases,
arch=self.arch, platform=self.platform)
+
+
+class MenuConfigModule(ui_modules.UIModule):
+ def render(self, release, arch=None, platform=None):
+ return self.render_string("netboot/menu-config.cfg", release=release,
+ arch=arch, platform=platform)
+
+
+class MenuHeaderModule(ui_modules.UIModule):
+ def render(self, title, releases, arch=None, platform=None):
+ # Remove any non-ASCII characters
+ try:
+ slug = unicodedata.normalize("NFKD", title)
+ except TypeError:
+ pass
+
+ # Remove excessive whitespace
+ slug = re.sub(r"[^\w]+", " ", slug)
+
+ slug = "-".join(slug.split()).lower()
+
+ return self.render_string("netboot/menu-header.cfg", slug=slug,
+ title=title, releases=releases, arch=arch, platform=platform)
+
+
+class MenuSeparatorModule(ui_modules.UIModule):
+ def render(self):
+ return self.render_string("netboot/menu-separator.cfg")
#!/usr/bin/python
-import re
import tornado.web
-import unicodedata
from .. import database
mirrors=mirrors, preferred_mirrors=preferred_mirrors)
-class NetBootMenuConfigModule(UIModule):
- def render(self, release, arch=None, platform=None):
- return self.render_string("netboot/menu-config.cfg", release=release,
- arch=arch, platform=platform)
-
-
-class NetBootMenuHeaderModule(UIModule):
- def render(self, title, releases, arch=None, platform=None):
- id = unicodedata.normalize("NFKD", str(title)).encode("ascii", "ignore")
- id = re.sub(r"[^\w]+", " ", id)
- id = "-".join(id.lower().strip().split())
-
- return self.render_string("netboot/menu-header.cfg", id=id,
- title=title, releases=releases, arch=arch, platform=platform)
-
-
-class NetBootMenuSeparatorModule(UIModule):
- def render(self):
- return self.render_string("netboot/menu-separator.cfg")
-
-
class ProgressBarModule(UIModule):
def render(self, value, colour=None):
value *= 100