Put history HEADER.cgi under Chef control.
[chef.git] / cookbooks / planet / files / default / history_cgi / HEADER.cgi
1 #!/usr/bin/env python
2
3 from time import time
4 from os import stat, environ
5 from re import search
6
7 def nice_size(file):
8     size = stat(file).st_size
9     KB = 1024.
10     MB = 1024. * KB
11     GB = 1024. * MB
12     TB = 1024. * GB
13     
14     if size < KB:
15         size, suffix = size, ''
16     elif size < MB:
17         size, suffix = size/KB, 'KB'
18     elif size < GB:
19         size, suffix = size/MB, 'MB'
20     elif size < TB:
21         size, suffix = size/GB, 'GB'
22     else:
23         size, suffix = size/TB, 'TB'
24     
25     if size < 10:
26         return '%.1f %s' % (round(size,1), suffix)
27     else:
28         return '%d %s' % (round(size), suffix)
29
30 def nice_time(time):
31     if time < 15:
32         return 'moments'
33     if time < 90:
34         return '%d seconds' % time
35     if time < 60 * 60 * 1.5:
36         return '%d minutes' % (time / 60.)
37     if time < 24 * 60 * 60 * 1.5:
38         return '%d hours' % (time / 3600.)
39     if time < 7 * 24 * 60 * 60 * 1.5:
40         return '%d days' % (time / 86400.)
41     if time < 30 * 24 * 60 * 60 * 1.5:
42         return '%d weeks' % (time / 604800.)
43
44     return '%d months' % (time / 2592000.)
45
46 def file_info(file, name):
47     size = nice_size(file)
48     hash = search(r'\w{32}', open(file+'.md5', 'r').read()).group(0)
49     date = nice_time(time() - stat(file).st_mtime)
50
51     return '<b><a href="%(file)s">%(name)s</a></b><br><b>%(size)s</b>, created %(date)s ago.<br><small>md5: %(hash)s</small>.' % locals()
52
53 planet_link = file_info('history-latest.osm.bz2', 'Latest Full History Planet XML File')
54 planet_pbf_link = file_info('../../pbf/full-history/history-latest.osm.pbf', 'Latest Full History Planet PBF File')
55
56 print """
57 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
58 <html>
59  <head>
60   <title>Index of /planet/full-history</title>
61   <link href="../../style.css" rel="stylesheet" type="text/css">
62  </head>
63  <body>
64 <img id="logo" src="../../logo.png" alt="OSM logo" width="128" height="128">
65 <h1>Planet OSM</h1>
66
67 <p>
68 The files found here are complete copies of the OpenStreetMap.org
69 database, including editing history. These are published under an 
70 Open Data Commons Open Database License 1.0 licensed. For more 
71 information, <a href="http://wiki.openstreetmap.org/wiki/Planet.osm/full">see the project wiki</a>.
72 </p>
73
74 <table id="about">
75   <tr>
76     <th>
77         <h2>Complete OSM Data History</h2>
78     </th>
79     <th>
80         <h2>Using The Data</h2>
81     </th>
82     <th>
83         <h2>Extracts &amp; Mirrors</h2>
84     </th>
85   </tr>
86   <tr>
87     <td>
88         <p>%(planet_link)s</p>
89         <p>%(planet_pbf_link)s</p>
90         <p>
91         The full history planet file contains the full editing history of the OpenStreetMap
92         database in both XML and custom PBF formats.
93         </p>
94     </td>
95     <td>
96         <p>
97         You are granted permission to use OpenStreetMap data by 
98         <a href="http://osm.org/copyright">the OpenStreetMap License</a>, which also describes 
99         your obligations.
100         </p>
101         <p>
102         You can <a href="http://wiki.openstreetmap.org/wiki/Planet.osm/full#Processing">process the file</a>
103         or extracts with a variety of tools, although some tools for processing OSM data will 
104         only work on 'current' planets and will not process a 'history' planet available here.
105         </p>
106     </td>
107     <td>
108         <p>
109         The complete history planet is extremely large, so you may prefer to use one of
110         <a href="http://wiki.openstreetmap.org/wiki/Planet.osm/full#Extracts">the available extracts</a>
111         (individual countries or states) from third parties. 
112         </p>
113     </td>
114   </tr>
115 </table>
116
117 <p>
118 If you find data within OpenStreetMap that you believe is an infringement of someone else's copyright, then please make contact with the <a href="http://wiki.openstreetmap.org/wiki/Data_working_group">OpenStreetMap Data Working Group</a>.
119 </p>
120 """ % locals()