1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import os
16
17 from os.path import join
18 from bodhi.widgets import NewUpdateForm
19 from turbogears import expose, controllers, identity, config, url, flash
20
21 update_form = NewUpdateForm()
22
24
25 build_dir = config.get('build_dir')
26 packages = []
27
29 """ Cache a list of packages used for the package AutoCompleteField """
30 try:
31 self.packages = os.listdir(self.build_dir)
32 except (OSError, TypeError):
33 flash("Warning: build_dir either invalid or not set in app.cfg")
34
35 @identity.require(identity.not_anonymous())
36 @expose(template="bodhi.templates.form")
37 - def index(self, *args, **kw):
40
41 @expose(format="json")
43 """
44 Called automagically by the AutoCompleteWidget.
45 If a package is specified (or 'pkg-'), return a list of available
46 n-v-r's. This method also auto-completes packages.
47 """
48 matches = []
49 if not self.packages: self.build_pkglist()
50 if name[-1] == '-' and name[:-1] and name[:-1] in self.packages:
51 name = name[:-1]
52 for version in os.listdir(join(self.build_dir, name)):
53 for release in os.listdir(join(self.build_dir, name, version)):
54 matches.append('-'.join((name, version, release)))
55 else:
56 for pkg in self.packages:
57 if name == pkg:
58 for version in os.listdir(join(self.build_dir, name)):
59 for release in os.listdir(join(self.build_dir, name,
60 version)):
61 matches.append('-'.join((name, version, release)))
62 break
63 elif pkg.startswith(name):
64 matches.append(pkg)
65 matches.reverse()
66 return dict(pkgs=matches)
67