def main(osm, data_dir='data', root_output='', template='template.html', index_template='index_template.html'): with open_utf8(template) as f: template = Template(f.read()) with open_utf8(index_template) as f: index_template = Template(f.read()) kommune_nr2name, kommune_name2nr = kommunenummer(cache_dir=data_dir) index_table = list() # counters for bottom of main table (what a mess) total_nbr = 0 total_osm = 0 for kommune_nr in os.listdir(data_dir): folder = os.path.join(data_dir, kommune_nr) if os.path.isdir(folder): page_filename = os.path.join(root_output, kommune_nr + '.html') warning_filename = os.path.join(root_output, 'data', kommune_nr, 'warnings.log') last_update_stamp = os.path.getmtime(folder) last_update_datetime = datetime.fromtimestamp(last_update_stamp) last_update = last_update_datetime.strftime('%Y-%m-%d %H:%M') logger.info('Kommune folder = %s', folder) table = list() info = '' info_warning = '' count_osm = 0 count_duplicate_osm = 0 for filename, data in update_osm.get_osm_files(folder): t, c_osm, c_duplicate_osm = create_rows(osm, data) table.extend(t) count_osm += c_osm count_duplicate_osm += c_duplicate_osm if filename.endswith('barnehagefakta.osm'): link = u'<a href="{href}"\ntitle="{title}">\n{text}</a>'.format(href=filename, title=u"Trykk for å laste ned "+ filename, text=filename) info += u'<p>{link} inneholder data fra NBR som noder, denne kan åpnes i JOSM.</p>'.format(link=link) if filename.endswith('barnehagefakta_familiebarnehager.osm'): link = u'<a href="{href}"\ntitle="{title}">\n{text}</a>'.format(href=filename, title=u"Trykk for å laste ned "+filename, text=filename) info += u'<p>Familiebarnehager er vanskeligere å kartlegge, disse ligger derfor i sin egen fil: {link}</p>'.format(link=link) if not_empty_file(warning_filename): link = u'<a href="{href}"\ntitle="{title}">\n{text}</a>'.format(href=warning_filename, title=u"Sjekk warnings.log", text='warnings.log') info_warning += u'<p>Sjekk gjerne {0}</p>'.format(link) if len(table) != 0: try: kommune_name = kommune_nr2name[int(kommune_nr)] + ' kommune' except KeyError as e: logger.exception('Could not translate kommune_nr = %s to a name', kommune_nr) kommune_name = 'ukjent' total_nbr += len(table) total_osm += count_osm per = (100.*count_osm)/len(table) progress = '<meter style="width:100%" value="{value}" min="{min}" max="{max}" optimum="{max}">{per} %</meter>'\ .format(value=count_osm, min=0, max=len(table), per=per) index_table.append((page_filename, u'Vis kommune', [kommune_nr, kommune_name, len(table), count_osm, progress])) page = template.render(kommune_name=kommune_name, kommune_nr=kommune_nr, table=table, info=info, info_warning=info_warning, last_update=last_update) # Kommune-folder with open_utf8(page_filename, 'w') as output: output.write(page) # total: per = (100.*total_osm)/total_nbr progress = '<meter style="width:100%" value="{value}" min="{min}" max="{max}" optimum="{max}">{per} %</meter>'\ .format(value=total_osm, min=0, max=total_nbr, per=per) total = ['Sum', '', total_nbr, total_osm, progress] info = u""" <p>Data fra <a href=https://nbr.udir.no>https://nbr.udir.no</a> og <a href=http://openstreetmap.org> openstreetmap.org</a>. Kun barnehager med taggen "no-barnehage:nsrid" blir gjenkjent. </p> <p> Trykk på en av radene i tabellen under for å vise barnehage-data for kommunen. </p> """ page = index_template.render(info=info, table=index_table, bottom_row=total) index = os.path.join(root_output, 'index.html') with open_utf8(index, 'w') as output: output.write(page) # dump progress to csv today = datetime.utcnow() td = (today - datetime(1970, 1, 1)) td_s = td.total_seconds() with open('history.csv', 'a') as f: f.write('{0},{1},{2}\n'.format(td_s, total_nbr, total_osm))