gen_html.py 21.9 KB
Newer Older
1 2
#!/usr/bin/env python
# -*- coding: utf-8 -*-
JeaRRo's avatar
JeaRRo committed
3
#
4
#  Copyright 2016 JeaRRo <jean.ph.navarro@gmail.com>
JeaRRo's avatar
JeaRRo committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#  http://wiki.openstreetmap.org/wiki/User:JeaRRo
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
21
#
22
'''
23
    Génération de pages statiques directement en html - version 3
24
'''
25
from __future__ import unicode_literals
JeaRRo's avatar
JeaRRo committed
26 27 28 29
from collections import OrderedDict
import os
import shutil
import logging
30
import datetime
31 32
import begin
import re
33
import pprint
34 35 36 37

import ini
import param
import mohist
JeaRRo's avatar
JeaRRo committed
38 39 40
import merimee
import overpass
import wikipedia
41
import index
JeaRRo's avatar
JeaRRo committed
42
import wkdcodes
43
import statistiques
44
import gen_doubles
45
import export
JeaRRo's avatar
JeaRRo committed
46

47

48 49 50
def get_log_date():
    return datetime.datetime.now().strftime('%Y%m%d')

JeaRRo's avatar
JeaRRo committed
51 52

def get_bandeau(dep, title, musee):
53
    ''' définir le bandeau de la page'''
54
    toCreateWp = musee.get_nb_pageToCreate()
JeaRRo's avatar
JeaRRo committed
55
    bandeau = '''<body>
56
     <div id="bandeau"> <h4 class='Titre'>{}'''.format(title)
JeaRRo's avatar
JeaRRo committed
57
    # bandeau+=''' <p id="msg">&nbsp;</p> '''
58 59
    # Ils sont {} dans wikipédia (pages départementales et grandes villes). {} n'ont pas de page dédiée.'''.format(dep['text'],musee.stats['mer'],musee.stats['wip'],toCreateWp)
    pagesWp = int(musee.stats['wip']) - int(toCreateWp)
JeaRRo's avatar
JeaRRo committed
60 61
    bandeau += '''</h4> <p><b>Pour le département {}</b>, la base Mérimée Ouverte décrit <b>{} </b>monuments historiques.
         <b>{} </b> d'entre eux ont une page dédiée dans Wikipédia.'''.format(dep['text'], musee.stats['mer'], str(pagesWp))
62

JeaRRo's avatar
JeaRRo committed
63 64
    bandeau += '''<p> OpenStreetMap connait <b>{} </b> de ces monuments.'''.format(musee.stats['osm'])
    bandeau += '''\n</div>'''
65 66
    return bandeau

JeaRRo's avatar
JeaRRo committed
67

68 69
def get_menu(dep, musee):
    '''Ecriture du menu'''
JeaRRo's avatar
JeaRRo committed
70 71
    menu = '<div id="menu">\n<ul>\n'
    # print(type(musee.salles))
72
    for salle in reversed(musee.salles):
JeaRRo's avatar
JeaRRo committed
73 74 75 76 77
        if len(salle.s_collection) > 0:
            link = dep["code"] + "_" + salle.salle['nom'] + ".html"
            onglet = salle.salle['onglet']
            titre_onglet = salle.salle['titre_onglet']
            nb_MH = '<span class="emphase">{}</span>'.format(str(len(salle.s_collection)))
78
            menu += '<li><a href="{}" title="{}" >{} {}</a></li>'.format(link, titre_onglet, nb_MH, onglet)
JeaRRo's avatar
JeaRRo committed
79 80
    menu += '<li class="retour"><a href="../../index.html" title="Autres départements" > Menu général </a></li>'
    menu += '''</ul>
81
        </div>'''
82 83
    return menu

JeaRRo's avatar
JeaRRo committed
84

85
def get_header():
JeaRRo's avatar
JeaRRo committed
86
    header = '''
87
    <div id="container">
88
    <table id="table_data" class="display nowrap" cellspacing="0" width="100%">
89 90 91
    <caption id='titre'> {}</caption>
    <thead class='heading'>
        <tr>
92 93
            <th>Description</th>
            <th>Mérimée</th>
94 95
            <th>OSM</th>
            <th>WP</th>
96 97
            <th>Remarques OSM</th>
            <th>Remarques WP</th>
98 99 100
        </tr>
    </thead>
    <tbody>
101 102 103
    '''
    return header

104

JeaRRo's avatar
JeaRRo committed
105 106 107
def get_table(salle, musee):

    table = ""
108
    l0 = "http://www.culture.gouv.fr/public/mistral/mersri_fr?ACTION=CHERCHER&FIELD_1=REF&VALUE_1="
JeaRRo's avatar
JeaRRo committed
109 110 111
    url_osm_org = url_osm_id = url_osmwp = ""
    url_josm = url_osm = url_wip = ""
    # for mh,MH in salle.s_collection.items():
112 113
    # liste des ref:mhs avec objets multiples
    double = []
JeaRRo's avatar
JeaRRo committed
114
    n = 0
115
    for mh in sorted(salle.s_collection):
JeaRRo's avatar
JeaRRo committed
116 117 118
        MH = musee.collection[mh]
        note_osm = "<b> Osm : </b>"
        note_wp = "<b> Wp : </b>"
119

120
        # Variables Champ Description
121
        if 'nom' in MH.description[mh]['mer']:
JeaRRo's avatar
JeaRRo committed
122
            description = MH.description[mh]['mer']['commune'] + ' - <b>' + MH.description[mh]['mer']['nom'] + '</b> - ' + MH.description[mh]['mer']['adresse']
123
        elif 'commune' in MH.description[mh]['wip']:
JeaRRo's avatar
JeaRRo committed
124 125 126
            description = MH.description[mh]['wip']['commune'] + ' - <b>' + MH.description[mh]['wip']['nom'] + '</b>'
        else:
            # print (mh)
127
            if 'IA' not in mh:
JeaRRo's avatar
JeaRRo committed
128 129
                commune = merimee.get_commune(mh)
                if commune == '':
130
                    print("Le ref:mh {} est inconnu dans Mérimée ouverte : Patrimoine Architectural".format(mh))
JeaRRo's avatar
JeaRRo committed
131
                    print('http://www.openstreetmap.org/browse/' + MH.description[mh]['osm']['url'])
jeaRRo's avatar
jeaRRo committed
132 133
                    logging.error("log : Le ref:mh {} est inconnu dans Mérimée ouverte : Patrimoine Architectural".format(mh))
                    logging.error("log : Voir url : http://www.openstreetmap.org/browse/{}".format(MH.description[mh]['osm']['url']))
134
            else:
JeaRRo's avatar
JeaRRo committed
135 136 137
                commune = ''
            if 'name' in MH.description[mh]['osm']['tags_mhs']:
                description = commune + ' - <b>' + MH.description[mh]['osm']['tags_mhs']['name'] + ' </b>'
138
            else:
JeaRRo's avatar
JeaRRo committed
139
                description = commune
140 141 142 143 144 145
        # Variables Champ Mérimée
            # RAS
        # Variables Champ OSM
        if 'osm' in salle.salle['nom']:
            # les urls OSM
            if 'url' in MH.description[mh]['osm']:
JeaRRo's avatar
JeaRRo committed
146
                url_osm_org = 'href="http://www.openstreetmap.org/browse/' + MH.description[mh]['osm']['url']
147 148
                type_osm = MH.description[mh]['osm']['url'].split('/')[0]
                id_osm = MH.description[mh]['osm']['url'].split('/')[1]
JeaRRo's avatar
JeaRRo committed
149 150
                url_osm_id = 'href="http://www.openstreetmap.org/edit?editor=id&' + type_osm + '=' + id_osm
                url_josm = 'href="http://localhost:8111/load_object?objects=' + type_osm[0] + id_osm
151
            # ###### les tags manquants dans OSM
152
            if len(MH.description[mh]['osm']['tags_manquants']) > 0:
153
                # Remplacer le tag manquant "wikipedia"par le lien wikipedia si présent
154 155
                if 'tag_wk' in MH.description[mh]['wip']:
                    if "wikipedia" in MH.description[mh]['osm']['tags_manquants'] and MH.description[mh]['wip']['tag_wk'] != "":
156
                        url_add_wp = '<a {}&addtags=wikipedia=fr:{}" target="hide" title="Ajout tag wikipedia avec Josm (Remote control)"> wikipedia </a>'.format(url_josm, MH.description[mh]['wip']['tag_wk'])
157 158 159 160
                        pos = MH.description[mh]['osm']['tags_manquants'].index("wikipedia")
                        MH.description[mh]['osm']['tags_manquants'][pos] = url_add_wp
                        # print(MH.description[mh]['wip']['tag_wk'])
                        # print(MH.description[mh]['osm']['tags_manquants'])
161
                # Remplacer dans les tags manquants le terme wikidata (si présent) par un lien url_josm avec ajout du qCode
162
                if "wikidata" in MH.description[mh]['osm']['tags_manquants'] and MH.description[mh]['wkd'] != "":
JeaRRo's avatar
JeaRRo committed
163 164
                    # print (MH.description[mh]['wkd'])
                    if len(MH.description[mh]['wkd']) == 1:
165
                        url_wkd = '<a {}&addtags=wikidata={}" target="hide" title="Ajout code wikidata avec Josm (Remote control)"> {} </a>'.format(url_josm, MH.description[mh]['wkd'][0], MH.description[mh]['wkd'][0])
166 167 168
                        MH.description[mh]['osm']['tags_manquants'][-1] = url_wkd
                    else:
                        # Multiples codes Wikidata
JeaRRo's avatar
JeaRRo committed
169 170 171 172 173
                        MH.description[mh]['osm']['tags_manquants'][-1] = ', '.join(MH.description[mh]['wkd'])

                note_osm += ", ".join(MH.description[mh]['osm']['tags_manquants'])
            else:
                note_osm = ""
174 175 176
            if MH.description[mh]['osm']['mhs_bis'] is not None:
                # Traitement des doubles
                # pprint.pprint(MH.description[mh]['osm']['mhs_bis'])
177 178 179
                # note_osm += ' <a href="http://www.openstreetmap.org/browse/' + MH.description[mh]['osm']['mhs_bis'][0][0] + '" target="_blank" title="Monument en double dans OSM"> Double OSM </a>'
                double.append(mh)
            # print(note_osm)
180 181
            # recherche des urls WP
            if 'wikipedia' in MH.description[mh]['osm']['tags_mhs']:
JeaRRo's avatar
JeaRRo committed
182 183 184
                url_osmwp = 'href="https://fr.wikipedia.org/wiki/' + MH.description[mh]['osm']['tags_mhs']['wikipedia']
            else:
                url_osmwp = ""
185
        # Variables champ Wikipédia
JeaRRo's avatar
JeaRRo committed
186 187
        if 'wip' in salle.salle['nom']:
            # les infos manquantes dans wikipédia
188
            if 'infos_manquantes' in MH.description[mh]['wip']:
JeaRRo's avatar
JeaRRo committed
189 190 191 192
                # print(MH.description[mh]['wip'])
                if len(MH.description[mh]['wip']['infos_manquantes']) > 0:
                    # print(MH.description[mh]['wip']['infos_manquantes'])
                    if "redlink" in MH.description[mh]['wip']['infos_manquantes'][0]:
193
                        # Page à créer avec lien
JeaRRo's avatar
JeaRRo committed
194 195 196
                        MH.description[mh]['wip']['infos_manquantes'][0] = '<a href="http://fr.wikipedia.org' + MH.description[mh]['wip']['infos_manquantes'][0] + '" target="_blank" title = "Page wikipédia à créer">A créer</a>'
                        note_wp += ", ".join(MH.description[mh]['wip']['infos_manquantes'])
                        # print (note_wp)
197
                    else:
JeaRRo's avatar
JeaRRo committed
198
                        note_wp += ", ".join(MH.description[mh]['wip']['infos_manquantes'])
199
                else:
JeaRRo's avatar
JeaRRo committed
200 201 202
                    note_wp += ""
            if 'mhs_ter' in MH.description[mh]['wip']:
                note_wp += ', <a href="' + MH.description[mh]['wip']['mhs_ter']['url'] + '#' + MH.description[mh]['wip']['mhs_ter']['id'] + '" target="_blank" \
203
                        title="Monument en triple dans WP"> Triple WP </a>'
JeaRRo's avatar
JeaRRo committed
204 205
            elif 'mhs_ter' not in MH.description[mh]['wip'] and 'mhs_bis' in MH.description[mh]['wip']:
                note_wp += ', <a href="' + MH.description[mh]['wip']['mhs_bis']['url'] + '#' + MH.description[mh]['wip']['mhs_bis']['id'] + '" target="_blank" \
206
                        title="Monument en double dans WP"> Double WP </a>'
207 208
            # recherche des urls WP
            if 'url' in MH.description[mh]['wip']:
JeaRRo's avatar
JeaRRo committed
209 210 211
                url_wip = MH.description[mh]['wip']['url'] + "#" + MH.description[mh]['wip']['id']
            else:
                url_wip = ""
212
    ###########################################
JeaRRo's avatar
JeaRRo committed
213
        # debut de la table
214
        table += '''<tr>'''
JeaRRo's avatar
JeaRRo committed
215 216 217
        # colonne description
        table += '''           <td class="desc">{}</td>'''.format(description)
        # colonne mérimée
218
        if 'ERR' in mh:
JeaRRo's avatar
JeaRRo committed
219
            table += ''' <td class="lien">  ----  </td>'''
220
        else:
JeaRRo's avatar
JeaRRo committed
221 222
            table += ''' <td class="lien"><a href="{}{}" target="_blank" title="La fiche dans la base Mérimée">{}</a></td>'''.format(l0, mh, mh)
        # colonne OSM
223
        if 'osm' in salle.salle['nom']:
JeaRRo's avatar
JeaRRo committed
224
            table += '''<td class="lien"><a {}" target="_blank" title="Voir sur OpenStreetMap.org"> ORG </a> -
225
            <a {}" target="_blank" title="Editer avec ID"> ID </a> - <a {}" target="hide" title="Editer avec Josm"> Josm </a> </td>
226
            '''.format(url_osm_org, url_osm_id, url_josm)
227 228

        elif 'infos_osm' in MH.description[mh]:
229
            table += '''<td id="info_bloc{}" class="infoBloc" data-clipboard-target="#data{}"> Tags pour OSM'''.format(n, n)
JeaRRo's avatar
JeaRRo committed
230
            table += '''   <div id="bloc{}" class="dialogBloc">
231 232
                            <ul><div id="data{}">{}</ul>
                        </div>'''.format(n, n, MH.description[mh]['infos_osm'])
JeaRRo's avatar
JeaRRo committed
233 234 235
            table += '''</td> '''
            # print(MH.description[mh]['infos_osm'])
            n += 1
236
        else:
JeaRRo's avatar
JeaRRo committed
237
            table += '''<td class="lien">  ----  </td>'''
238

239
        # colonne WP
JeaRRo's avatar
JeaRRo committed
240 241 242
        if url_wip and url_osmwp:
            table += '''<td class="lien"> <a href="{}" target="_blank" title="Description sur page Wp départementale">  WP1 </a> -
          <a {}" target="_blank" title ="Lien direct à partir du tag wikipedia sur Osm" > WP2 </a> </td>'''.format(url_wip, url_osmwp)
243
        elif url_wip and not url_osmwp:
JeaRRo's avatar
JeaRRo committed
244 245
            url_wip = MH.description[mh]['wip']['url'] + "#" + MH.description[mh]['wip']['id']
            table += '''<td class="lien"> <a href="{}" target="_blank" title="Description sur page Wp départementale">  WP1 </a> </td>'''.format(url_wip)
246
        elif not url_wip and url_osmwp:
JeaRRo's avatar
JeaRRo committed
247 248
            url_osmwp = 'href="https://fr.wikipedia.org/wiki/' + MH.description[mh]['osm']['tags_mhs']['wikipedia']
            table += '''<td class="lien">  <a {}" target="_blank" title ="Lien direct à partir du tag wikipedia sur Osm" > WP2 </a> </td>'''.format(url_osmwp)
249
        else:
JeaRRo's avatar
JeaRRo committed
250 251 252 253 254
            table += '''<td class="lien">  ---- </td>'''
        # table remarques OSM et WP
        if note_osm != "<b> Osm : </b>" and note_wp != "<b> Wp : </b>":
            table += '''<td class="texte"> {} </td> <td class="texte"> {} </td> '''.format(note_osm, note_wp)
        elif note_osm != "<b> Osm : </b>" and not note_wp != "<b> Wp : </b>":
255
            table += '''<td class="texte"> {} </td> <td class="texte"></td> '''.format(note_osm)
JeaRRo's avatar
JeaRRo committed
256
        elif not note_osm != "<b> Osm : </b>" and note_wp != "<b> Wp : </b>":
257
            table += '''<td class="texte"></td> <td class="texte"> {} </td>  '''.format(note_wp)
258
        else:
259
            table += '''<td class="texte" ></td><td class="texte"></td>  '''
260

JeaRRo's avatar
JeaRRo committed
261 262 263
        # table fin
        table += '''</tr>'''
    table += ''' </tbody>
264
    </table>
265
    <iframe name="hide" style="display: None;"></iframe>
266 267
    </div>
    '''
268
    return table, double
269

JeaRRo's avatar
JeaRRo committed
270

271
def gen_pages(dep, musee):
272 273
    ''' Effacer les fichiers du répertoire du département (supprime les fichiers anciens inutiles)'''
    index.del_files(dep)
274
    '''Définir le bandeau '''
275
    titre = "Etat comparé des monuments historiques {} ({}) dans les bases Mérimée, OSM et WikiPédia".format(dep['text'], str(dep['code']))
276 277 278 279
    bandeau = get_bandeau(dep, titre, musee)
    '''Définir le menu '''
    menu = get_menu(dep, musee)
    for page in reversed(musee.salles):
JeaRRo's avatar
JeaRRo committed
280 281 282
        if len(page.s_collection) > 0:
            page_name = str(dep['code']) + '_' + page.salle['nom'] + '.html'
            # print("Construction de la page  {}.".format(page_name))
283
            print(page)
jeaRRo's avatar
jeaRRo committed
284
            logging.debug(" {}".format(page))
285
            oF = index.creer_fichier(page_name, dep)
JeaRRo's avatar
JeaRRo committed
286
            titre = " Wom : Mérimée, OpenStreetMap, Wikipédia"
287
            index.write_entete(oF, titre)
288
            oF.write(bandeau)
JeaRRo's avatar
JeaRRo committed
289 290 291 292 293
            # corriger la classe active
            menu = menu.replace('class="active"', '')
            chercher = '<li><a href="{}"'.format(page_name)
            remplacer = '<li><a class="active" href="{}"'.format(page_name)
            menu = menu.replace(chercher, remplacer)
294 295
            oF.write(menu)
            '''écrire le contenu'''
JeaRRo's avatar
JeaRRo committed
296
            header = get_header().format(page.salle['titre'])
297 298
            oF.write(header)
            ''' le tableau '''
299
            table, doubles = get_table(page, musee)
300
            oF.write(table)
301 302 303
            # Traitement des objets multiples
            if len(doubles) > 0 and page.salle['nom'] == "merosmwip":
                name = str(dep['code']) + "_doubles.html"
304
                print("mhs avec objets multiples : ", doubles)
jeaRRo's avatar
jeaRRo committed
305
                logging.debug("Mhs avec objets multiples : {}".format(doubles))
306 307 308
                gen_doubles.gen_page_double(dep, musee, doubles)
                lien = "<a href='./{}' title='Monuments en double' target='blank'> Attention : monuments multiples dans OSM </a>".format(name)
                oF.write(lien)
309
        # # '''écrire le pied de page'''
JeaRRo's avatar
JeaRRo committed
310
            index.write_footer(oF)
311 312
        # # '''fermer le fichier'''
            oF.close()
313

JeaRRo's avatar
JeaRRo committed
314

315
@begin.start
316
def main(departement: 'Analyse d\'un seul département'='all', monument: 'Analyse d\'un seul monument'='all', wk: 'Importer les codes wikidata manquants dans JOSM'=False):
317
    '''
318 319 320 321
        Obtenir la mise à jour d'un département ou d\'une liste de département (-d code_dep, code_dep, code_dep).\n
        Obtenir le dico d'un seul monument (-d code_dep -m code_Mérimée).\n
        Importer les codes Wikidata manquants dans JOSM (--wk)\n
        Attention : pour avoir le dico d'un monument, il faut donner le code de son département.
322
    '''
JeaRRo's avatar
JeaRRo committed
323
    stats = {}
324
    wkdCodes = {}
JeaRRo's avatar
JeaRRo committed
325 326
    # print(departement,monument)
    if ',' in departement:
327 328
        departement = departement.split(',')
    if monument != 'all' and departement == 'all':
329
        print('ERREUR : Vous devez préciser un code de département.')
330
        exit(3)
JeaRRo's avatar
JeaRRo committed
331 332
    if monument != 'all' and not re.match('^PA[0-9]{8}', monument):
        print('ERREUR : Code monument non conforme. ')
333
        exit(4)
334 335 336 337 338 339 340 341 342 343 344 345

    ''' Définir les répertoires de travail et les créer s'ils n'existent pas'''
    base = os.getcwd().split('/Mhs')[0]
    if not os.path.exists(base + "/Wom"):
        os.mkdir(base + '/Wom')
    base_url = base + "/Wom"
    if not os.path.exists(base + "/Mhs/log"):
        os.mkdir(base + '/Mhs/log')
    log_url = base + "/Mhs/log"
    if not os.path.exists(base + "/Wom/mp"):
        os.mkdir(base + '/Wom/mp')
    export_url = base + '/Wom/mp'
346 347

    ''' Mise en place du fichier de log  '''
jeaRRo's avatar
jeaRRo committed
348
    fname = "/var/log/wom/" + get_log_date() + ".log"
JeaRRo's avatar
JeaRRo committed
349
    # print (fname)
jeaRRo's avatar
jeaRRo committed
350
    logging.basicConfig(filename=fname, format='%(asctime)s %(levelname)s: %(message)s', level=logging.INFO, datefmt='%m/%d/%Y %H:%M')
351

352
    ''' Rechercher les Qcodes sur wikidata'''
353
    wkdCodes = wkdcodes.get_Q_codes()
354

355
    ''' Rechercher une maj de la base Mérimée'''
jeaRRo's avatar
jeaRRo committed
356
    merimee.Mise_A_Jour()
357

358
    ''' Générer la page index'''
359
    index.gen_page_index()
360

361 362 363 364
    ''' Créer l'objet de statistique  et son fichier ./stats.json'''
    st = statistiques.Statistiques()
    st.fname = './stats.json'

365
    ''' Créer l'entête du fichier d'export csv des monuments non présents dans OSM'''
JeaRRo's avatar
JeaRRo committed
366 367 368
    # exportfile = "export.csv"
    # export.write_head(exportfile)
    for fichier in ini.exportfile:
369
        export.write_head(export_url + '/' + fichier)
370 371
    # le contenu de ce fichier est créer dans mohist.py par la fonction gen_infos_osm()

JeaRRo's avatar
JeaRRo committed
372 373 374 375 376 377 378 379
    # listdepA = [
    #     '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19',
    #     '2A', '2B', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39',
    #     '40', '41', '42', '43', '44', '45', '46', '47']
    # listdepB = [
    #     '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67',
    #     '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87',
    #     '88', '89', '90', '91', '92', '93', '94', '95']
380

381
    '''Créer la liste des départements à mettre à jour'''
382 383
    if departement == 'all':
        listDep = OrderedDict(sorted(param.dic_dep.items(), key=lambda t: t[0]))
JeaRRo's avatar
JeaRRo committed
384
    elif type(departement) == list:
385
        listDep = departement
JeaRRo's avatar
JeaRRo committed
386
    else:
387
        listDep = [departement]
388
    # listDep = ['88','25','48', '52']
JeaRRo's avatar
JeaRRo committed
389
    # listDep = listdepB
JeaRRo's avatar
JeaRRo committed
390
    # print (listDep)
391
    # print(len(listDep))
392
    '''Mettre à jour les pages des départements de la liste'''
JeaRRo's avatar
JeaRRo committed
393
    for dep in listDep:
394 395 396
        if dep not in param.dic_dep:
            print('Code département inconnu, Revoir votre frappe !')
            exit(0)
397
        ''' Trouver le nom du fichier d'export '''
398
        exportFile = export_url + '/' + export.get_export_filename(param.dic_dep[dep]['code'])
399
        # print('exportFile : ', exportFile)
JeaRRo's avatar
JeaRRo committed
400
        print('------' + dep + '------')
jeaRRo's avatar
jeaRRo committed
401
        logging.info(' ------ {} ------'.format(dep))
402
        ''' Acquérir les datas'''
JeaRRo's avatar
JeaRRo committed
403 404 405 406 407
        # print('----- Acquisition des datas ------')
        museum = mohist.Musee()
        museum = overpass.get_osm(param.dic_dep[dep]['name'], museum)
        museum = merimee.get_merimee(param.dic_dep[dep]['code'], museum)
        museum = wikipedia.get_wikipedia(param.dic_dep[dep]['url_d'], museum)
408 409
        '''Associer les qcodes de wikidata à chaque MH'''
        museum.maj_Qcodes(wkdCodes)
410 411
        ''' Trier et compter '''
        museum.maj_salle()
412 413 414 415 416 417 418 419
        ''' Rechercher les monuments de la salle merosmwip dont le code wk n'est pas intégré '''
        if wk:
            museum.searchQcodes()
            exit(6)
        else:
            pass
            # print('codes wikidata non demandés')

420 421
        # pour les salles mer et merwip générer les infos à faire apparaitre dans la popup
        # Infos à ajouter dans OSM
JeaRRo's avatar
JeaRRo committed
422
        for x in [1, 5]:
JeaRRo's avatar
JeaRRo committed
423
            museum.gen_infos_osm(x, exportFile)
424
        museum.maj_stats()
425

426
        pagesToCreate = museum.get_nb_pageToCreate()
427
        # enregistrer les stats du département et des salles
JeaRRo's avatar
JeaRRo committed
428
        st.addStats(dep, museum.stats, pagesToCreate, museum.statsSalles())
429 430
        # listStatSalles = museum.statsSalles()
        # print(listStatSalles)
JeaRRo's avatar
JeaRRo committed
431 432 433

        # print('----- Statistiques globales ------')
        print("Merimée :", museum.stats['mer'])
jeaRRo's avatar
jeaRRo committed
434
        logging.info("Merimée : {}".format(museum.stats['mer']))
JeaRRo's avatar
JeaRRo committed
435
        print("OSM :", museum.stats['osm'])
jeaRRo's avatar
jeaRRo committed
436
        logging.info("OSM : {}".format(museum.stats['osm']))
JeaRRo's avatar
JeaRRo committed
437
        print("Wikipedia :", museum.stats['wip'])
jeaRRo's avatar
jeaRRo committed
438
        logging.info("Wikipedia : {}".format(int(museum.stats['wip']) - int(pagesToCreate)))
439
        print("     ---- ")
jeaRRo's avatar
jeaRRo committed
440
        logging.info(" ----------------")
JeaRRo's avatar
JeaRRo committed
441
        # print(museum)
442

JeaRRo's avatar
JeaRRo committed
443
        print(" A ajouter dans Wp : {} pages".format(pagesToCreate))
jeaRRo's avatar
jeaRRo committed
444
        logging.debug("A ajouter dans Wp : {} pages".format(pagesToCreate))
445
        ''' Générer le Html si on ne demande pas le dico d'un monument'''
JeaRRo's avatar
JeaRRo committed
446 447
        if monument == 'all':
            gen_pages(param.dic_dep[dep], museum)
448

JeaRRo's avatar
JeaRRo committed
449
    if departement == 'all':
450 451
        # faire le total des stats et afficher
        st.totalStats()
JeaRRo's avatar
JeaRRo committed
452 453
        print(st)
        # sauvegarde stats du jour
454
        st.saveStats()
JeaRRo's avatar
JeaRRo committed
455
        # générer la page html de stat
456
        statistiques.genGraphes(st.getSeriePourCent(), st.getPcSeries(), st.CalculeAugmentation(), st.getTotalMerimee())
JeaRRo's avatar
JeaRRo committed
457

JeaRRo's avatar
JeaRRo committed
458
    # Afficher le contenu d'un monument
JeaRRo's avatar
JeaRRo committed
459
    if monument != 'all':
460 461 462
        print(museum.collection[monument])
    exit()

463

464 465
if __name__ == "__main__":
    main()