]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - webapp/backend/netboot.py
BIO: Make this work for pxelinux.
[people/shoehn/ipfire.org.git] / webapp / backend / netboot.py
CommitLineData
5470bdf1
MT
1#!/usr/bin/python
2
3from databases import Databases
4from misc import Singleton
5
6
7class MenuEntry(object):
8 def __init__(self, _data):
9 self._data = _data
10 self.submenu = None
11
12 @property
13 def id(self):
14 return self._data.get("id")
15
16 @property
17 def type(self):
18 return self._data.get("type", "root")
19
20 @property
21 def title(self):
22 return self._data.get("title", "")
23
24 @property
25 def description(self):
26 return self._data.get("description", "")
27
28 @property
29 def item(self):
30 if self.type == "config":
31 return self._data.get("item")
32
33 @property
34 def submenu_level(self):
35 if self.type == "header":
36 return int(self._data.get("item"))
37
38
39class NetBoot(object):
40 __metaclass__ = Singleton
41
42 @property
43 def db(self):
44 return Databases().webapp
45
46 def get_menu(self, level=0):
47 menu = []
48
31c90b72 49 for m in self.db.query("SELECT * FROM boot_menu WHERE level = %s ORDER by level,prio", level):
5470bdf1
MT
50 m = MenuEntry(m)
51
52 if m.type == "header":
53 m.submenu = self.get_menu(m.submenu_level)
54
fd852409 55 elif m.type == "config":
31c90b72
MT
56 c = self.db.get("SELECT * FROM boot WHERE id = %s", m.item)
57 if c:
58 m._data.update(c)
fd852409 59
5470bdf1
MT
60 menu.append(m)
61
62 return menu
63
64 def get_config(self, id):
5470bdf1 65 return self.db.get("SELECT * FROM boot WHERE id = %s", id)