예제 #1
0
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))