annotate contrib/sawmill/web/templates/details.html @ 487:f208b139190b

sawmill: Made html head elements HTML 4.01 compatible. Small tweak while finding tree packager in detail view.
author Sascha Teichmann <teichmann@intevation.de>
date Sun, 26 Sep 2010 07:43:26 +0000
parents 283154e189d9
children a0d19e20fb89
rev   line source
473
d8012571f9e1 sawmill: removed trailing whitespace
Sascha Teichmann <teichmann@intevation.de>
parents: 472
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 "http://www.w3.org/TR/html4/loose.dtd">
486
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
3 <html>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
4 <%@include file="header.inc" %>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
5
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
6 <div class="css_prison">
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
7 <h1><%= escape(description) %></h1>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
8 <%= header %>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
9 <table class="statustable">
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
10 <tr>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
11 <th class="statustablehead">Status</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
12 <th class="statustablehead">Package</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
13 <th class="statustablehead">Revision</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
14 <th class="statustablehead">Start</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
15 <th class="statustablehead">Stop</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
16 <th class="statustablehead">Duration</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
17 <th class="statustablehead">Notes</th>
283154e189d9 sawmill: Moved python blocks in templates to make them more readable.
Sascha Teichmann <teichmann@intevation.de>
parents: 485
diff changeset
18 </tr>
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
19 <%
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
20 from cgi import escape
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 from xml.sax.saxutils import quoteattr
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
22
475
7be221f41f58 sawmill: Added 'powered by Tree Packager' line in details view.
Sascha Teichmann <teichmann@intevation.de>
parents: 474
diff changeset
23 from datetime import date, datetime
482
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
24
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
25 def nn(s, d=""):
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
26 if not s: return d
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
27 return escape(s)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
28
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
29 def pretty_time(t, format="%H:%M:%S"):
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
30 if not t: return "&lt;unknown&gt;"
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
31 return t.strftime(format)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
32
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
33 def pretty_timedelta(a, b):
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
34 if a is None or b is None: return "&lt;unknown&gt;"
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
35 td = a - b
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
36 secs = td.days * 24*3600 + td.seconds
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
37 out = []
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
38 if secs > 3600:
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
39 hs = secs // 3600
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
40 out.append("%dh" % hs)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
41 secs %= 3600
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
42 if secs > 60:
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
43 ms = secs // 60
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
44 out.append("%dm" % ms)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
45 secs %= 60
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
46 if secs > 0 or not out:
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
47 out.append("%ds" % secs)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
48 return " ".join(out)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
49
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
50 def date_from_datetime(x):
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
51 if not x: return None
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
52 return date(x.year, x.month, x.day)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
53
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
54 def sort_by_start(a, b):
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
55 a_start = a.build_start
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
56 b_start = b.build_start
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
57 if not a_start and not b_start: return 0
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
58 if not a_start: return 1
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
59 if not b_start: return -1
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
60 return cmp(a_start, b_start)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
61
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
62 def create_tags_link(tag_url):
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
63 return quoteattr(tag_url.replace(
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
64 "svn://anonsvn.kde.org/home/kde",
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
65 "http://websvn.kde.org"))
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
66
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
67 track_items = sorted(track_items, cmp=sort_by_start, reverse=True)
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
68
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
69 last_date = None
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
70
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
71 STATUS2CLASS = {
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
72 'creating_binary_package': 'inprogress',
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
73 'creating_source_package': 'inprogress',
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
74 'source_package_created': 'inprogress',
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
75 'binary_package_created': 'finished'
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
76 }
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
77
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
78 STATUS2MSG = {
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
79 'creating_binary_package': 'building binary packages',
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
80 'creating_source_package': 'building source package',
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
81 'source_package_created': 'preparing build envrionment',
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
82 'binary_package_created': 'success'
a89f73f7c965 sawmill: Rearranged the postion of some python code in the details template to
Sascha Teichmann <teichmann@intevation.de>
parents: 481
diff changeset
83 }
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
84
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
85 for track_item in track_items:
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
86 # for all track items
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
87 curr_date = date_from_datetime(track_item.build_start)
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
88 if curr_date != last_date:
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
89 last_date = curr_date
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
90 %>
481
9c7e1d957d6b sawmill: Not all displayed times are in UTC so the
Sascha Teichmann <teichmann@intevation.de>
parents: 480
diff changeset
91 <tr class="date_row"><td colspan="6"><%= pretty_time(last_date, "%Y-%m-%d") %> (times in UTC)</td></tr>
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
92 <%
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
93 # date changed
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
94 %>
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
95 <tr class="<%= STATUS2CLASS.get(track_item.build_status, 'error') %>">
478
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
96 <td><%= STATUS2MSG.get(track_item.build_status, 'error') %></td>
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
97 <td style="font-weight:bold;"><%= nn(track_item.track) %></td>
484
2e947f508553 sawmill: Improved HTML 4.01 transitional compat a bit.
Sascha Teichmann <teichmann@intevation.de>
parents: 483
diff changeset
98 <td align="right"><%
474
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
99 tags = track_item.build_tags
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
100 if tags:
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
101 # a tag
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
102 %>
478
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
103 <a href=<%= create_tags_link(tags) %>><strong><%= nn(track_item.revision) %></strong></a>
474
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
104 <%
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
105 else:
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
106 # not a tag
484
2e947f508553 sawmill: Improved HTML 4.01 transitional compat a bit.
Sascha Teichmann <teichmann@intevation.de>
parents: 483
diff changeset
107 %><%= nn(track_item.revision) %><%
474
a8f77807d710 sawmill: create links for tag builds
Sascha Teichmann <teichmann@intevation.de>
parents: 473
diff changeset
108 # end if tags
484
2e947f508553 sawmill: Improved HTML 4.01 transitional compat a bit.
Sascha Teichmann <teichmann@intevation.de>
parents: 483
diff changeset
109 %></td>
478
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
110 <td align="right"><%= pretty_time(track_item.build_start) %></td>
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
111 <td align="right"><%= pretty_time(track_item.build_stop) %></td>
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
112 <td align="right"><%= pretty_timedelta(track_item.stop, track_item.build_start) %></td>
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
113 <td>
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
114 <%
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
115 for log_desc, log_path in track_item.build_logs:
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
116 # for all logs
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
117 %>
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
118 [<a href=<%= quoteattr("%s/%s" % (base_dir, log_path)) %>><%= nn(log_desc) %></a>]
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
119 <%
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
120 # for all logs
484
2e947f508553 sawmill: Improved HTML 4.01 transitional compat a bit.
Sascha Teichmann <teichmann@intevation.de>
parents: 483
diff changeset
121 %></td>
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
122 </tr>
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
123 <%
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
124 # for all track itemes
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
125 %>
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
126
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
127 </table>
475
7be221f41f58 sawmill: Added 'powered by Tree Packager' line in details view.
Sascha Teichmann <teichmann@intevation.de>
parents: 474
diff changeset
128 <hr>
478
7504ed4437e1 sawmill: short start and stop to %H:%M:%S because
Sascha Teichmann <teichmann@intevation.de>
parents: 477
diff changeset
129 report generated at <%= pretty_time(datetime.now(), "%Y-%m-%d %H:%M:%S") %>, powered
475
7be221f41f58 sawmill: Added 'powered by Tree Packager' line in details view.
Sascha Teichmann <teichmann@intevation.de>
parents: 474
diff changeset
130 by <a href="http://treepkg.wald.intevation.org">Tree Packager</a>
485
a55a521b7a31 Moved the saegewerk table layout completely into header and footer
Sascha Teichmann <teichmann@intevation.de>
parents: 484
diff changeset
131 </div>
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
132
483
28aa6ac933fb sawmill: moved wald's table layout into common header and footer
Sascha Teichmann <teichmann@intevation.de>
parents: 482
diff changeset
133 <%@include file="footer.inc" %>
452
333232953771 Initial check-in of sawmill a simple mod_python based
Sascha Teichmann <teichmann@intevation.de>
parents:
diff changeset
134 </html>
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)