~ubuntu-branches/ubuntu/maverick/pygame/maverick

« back to all changes in this revision

Viewing changes to test/util/build_page/libs/helpers.py

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2010-01-14 17:02:11 UTC
  • mfrom: (1.3.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100114170211-21eop2ja7mr9vdcr
Tags: 1.9.1release-0ubuntu1
* New upstream version (lp: #433304)
* debian/control:
  - build-depends on libportmidi-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
################################################################################
 
2
 
 
3
import re
 
4
import zipfile
 
5
 
 
6
from os.path import normpath, join, dirname, abspath
 
7
 
 
8
import safe_eval
 
9
 
 
10
from build_client.helpers import create_zip
 
11
 
 
12
from pywebsite.escape import ehtml
 
13
 
 
14
def relative_to(f, rel):
 
15
    return normpath(join(abspath(dirname(f)), rel)).strip()
 
16
 
 
17
def slug(s):
 
18
    s = s.strip().lower()
 
19
    s = re.sub('[^a-z0-9-]', '-', s)
 
20
    return re.sub('-+', '-', s)
 
21
 
 
22
def norm_le(s):
 
23
    return re.sub('\r\n|\r', '\n', s)
 
24
 
 
25
################################################################################
 
26
 
 
27
class ResultsZip(zipfile.ZipFile):
 
28
    def __init__(self, *args, **kw):
 
29
        zipfile.ZipFile.__init__(self, *args, **kw)
 
30
        self.config   = self.eval('config.txt')
 
31
        self.text_files = set(t for t in self.namelist() if t != self.installer)
 
32
 
 
33
    @property
 
34
    def installer(self):
 
35
        if 'prebuilt' in self.namelist():
 
36
            return norm_le(self.read('prebuilt')).split('\n')[2].strip()
 
37
 
 
38
    def eval(self, key):
 
39
        data = norm_le(self.read(key))
 
40
        return safe_eval.safe_eval(data)
 
41
 
 
42
    def __getattr__(self, attr):
 
43
        return self.config[attr]
 
44
 
 
45
    def archive_text(self, path):
 
46
        create_zip(path, **dict((k, self.read(k)) for k in self.text_files))
 
47
 
 
48
    def html(self, the_main):
 
49
        all_tabs = []
 
50
        slugs = []
 
51
 
 
52
        for i, f in enumerate(sorted(self.text_files)):
 
53
            fslug = slug(f)
 
54
 
 
55
            all_tabs.append (
 
56
                "<li class='t%(i)s'><a class='t%(i)s tab' href='%(fslug)s'>"
 
57
                "%(f)s</a></li>" % locals()
 
58
            )
 
59
 
 
60
            if fslug == the_main:
 
61
                contents = ehtml(self.read(f), 'utf-8')
 
62
                contents = "<div class='t%s'><pre>%s</pre></div>" % (i, contents)
 
63
 
 
64
        return '\n'.join(all_tabs), contents
 
65
        
 
66
################################################################################
 
67
 
 
68
__all__ = ['relative_to', 'slug', 'ResultsZip']
 
69
 
 
70
################################################################################
 
71
 
 
72
if __name__ == '__main__':
 
73
    rz = ResultsZip('results.zip')
 
74
    rz.printdir()
 
75
    print rz.platform_id
 
76
    rz.dump_file('bla.zip')
 
 
b'\\ No newline at end of file'