GithubHelp home page GithubHelp logo

maximechallon / inventaireparishistorique_webapp Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 5.88 MB

Application web de visualisation géographique et de catalogage des photographies de la photothèque de l'Association Paris Historique

Home Page: http://parishistoriqueinventaire.eu.pythonanywhere.com/

License: GNU General Public License v3.0

Python 79.12% CSS 0.57% JavaScript 7.46% HTML 12.85%
digital-humanities inventaire association flask python leaflet photography library-catalogue association-paris-historique

inventaireparishistorique_webapp's Introduction

Ce dépôt permet de visualiser les données de l'inventaire de la photothèque de l'association Paris Historique située dans le Marais à Paris et de cataloguer les photos directement dans un formualire.

Ce dépôt ne contient que les données ouvertes non soumises aux droits du photographe ou de l'ancien possesseur. Les données définitives sont stockées à l'association.

Veuillez contacter l'association Paris Historique pour tout renseignement, demande de consultation ou de participation à l'inventaire.

inventaireparishistorique_webapp's People

Contributors

maximechallon avatar

Watchers

 avatar  avatar

inventaireparishistorique_webapp's Issues

Statistiques

Faire une page regroupant un ensemble de statistiques et de graphiques:

  • rythme de catalogage (page existante)
  • fréquence d'utilisation des mots-clés
  • dates les plus représentées

Export photographies inventoriées

Erreur 500 Internal server error sur export photos 1 à 18 pour l'exemple. (Chrome Windows 10)

En profiter pour ajouter un envoi de mail à l'admin lors d'une telle erreur, avec les num d'inventaire demandés, e façon à faire un export manuel côté admin

Page arrondissement

Bug: file arrondissements.geojson not found (le code n'a pourtant pas été touché, ni le fichier)

Page actus

Pour y mettre mes horaires de permanence, des infos diverses comme le fonds en cours de traitement, des chiffres, etc.

Espace utilisateur

Créer une page utilisateur de manière:

  • à pouvoir changer son adresse email, son pseudo et son mot de passe
  • à pouvoir voir quelques chiffres sur son travail?

Sécurité reset password

Checker que l'adresse mail saisie dans le forgot_form est bien celle de l'utilisateur connecté, pour éviter qu'il ne reset le mot de passe d'un autre compte

Bug redirection

Dans catalogage.py entre les 108 et 110, ajouter une redirection vers un formulaire vide pour empêcher l'utilisateur d'effectuer une correction sur le formulaire qui vient d'être commité en base
Au contraire, dans le except de cette route catalogage, laisser tel qul: en cas d'échec de commit, les informations remplies restent et l'utilisateur peut les corriger pour que les données soient correctement inscrites en base

Bug visible dans error log 2020 10 09 17h58 et 22h42(Unique constraint failed)

Page catalogue

Créer un catalogue avec des filtres Vue.js et Itemjs

Bug reset password

Aucun email n'est envoyé à l'utilisateur pour changer son mot de passe

Amélioration catalogage

Au choix d'un photographe , détecter automatiquement le droit associé et la mention de don
Branche javascript

Liens vers la doc

Dans l'interface dans la navbar, créer les liens vers Documentation et FAQ dans un onglet Support

Bug MAJ photographie

Est survenu plusieurs fois

2021-01-18 00:45:24,781: Exception on /espace_personnel/editer_photographie/5122 [POST] Traceback (most recent call last): File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1284, in _execute_context cursor, statement, parameters, context File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute cursor.execute(statement, parameters) sqlite3.IntegrityError: UNIQUE constraint failed: catalogage.N_inventaire_index NO MATCH The above exception was the direct cause of the following exception: NO MATCH Traceback (most recent call last): File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app response = self.full_dispatch_request() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception reraise(exc_type, exc_value, tb) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request return self.view_functionsrule.endpoint File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask_login/utils.py", line 272, in decorated_view return func(*args, **kwargs) File "/home/ParisHistoriqueInventaire/InventaireParisHistorique/app/routes/catalogage.py", line 201, in editer_photographie db.session.commit() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/scoping.py", line 163, in do return getattr(self.registry(), name)(*args, **kwargs) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 1042, in commit self.transaction.commit() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 504, in commit self._prepare_impl() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 483, in _prepare_impl self.session.flush() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2523, in flush self._flush(objects) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2664, in _flush transaction.rollback(capture_exception=True) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 69, in exit exc_value, with_traceback=exc_tb, File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 178, in raise raise exception File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2624, in _flush flush_context.execute() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute rec.execute(self) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py", line 589, in execute uow, File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py", line 236, in save_obj update, File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py", line 995, in _emit_update_statements statement, multiparams File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1020, in execute return meth(self, multiparams, params) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_clauseelement distilled_params, File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1324, in execute_context e, statement, parameters, cursor, context File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1518, in handle_dbapi_exception sqlalchemy_exception, with_traceback=exc_info[2], from=e File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 178, in raise raise exception File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1284, in _execute_context cursor, statement, parameters, context File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: catalogage.N_inventaire_index [SQL: UPDATE catalogage SET "N_inventaire_index"=?, "N_inventaire"=?, "Legende"=?, "Auteur"=? WHERE catalogage."N_inventaire_index" = ?] [parameters: (3631, 3631, 'Le Voeu de Louis XIII : Piéta et maître-autel', 22, 5122)] (Background on this error at: http://sqlalche.me/e/gkpj)

Champs déroulants

Mettre les valeurs par défaut tout en haut de la liste déroulante pour pallier l'utilisateur qui ne touchera pas au champ s'il n'a pas l'informatiin

Bug catalogage peu d'infos

Si on ne veut rentrer que le num d'inventaire et des mots clés, il n'y a pas de commit. Le champ arrondissement semble être celui qui bloque (dataRequired implicite ?). Peut être ajouter une valeur par défaut chaîne vide dans ce champ et dans tous les autres afin de permettre le catalogage de photos dont on a peu d'informations

Error log

Envoyer un mail lors d'un bug 400 ou 500

Moteur de recherche

Créer un package indépendant (ou utiliser un package existant) afin de rechercher dans du texte libre et du texte normalisé.
A intégrer dans les filtres et le catalogue

Bug Api

2021-01-14 04:23:00,924: Exception on /api/photographie/adresse [GET] Traceback (most recent call last): File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app response = self.full_dispatch_request() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception reraise(exc_type, exc_value, tb) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request return self.view_functionsrule.endpoint File "/home/ParisHistoriqueInventaire/InventaireParisHistorique/app/routes/api.py", line 86, in recherche_photo_adresse N_rue = str(adresse_parser.parse(recherche)["numero"]) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/AdresseParser/AdresseParser.py", line 27, in parse bloc_rue, bloc_ville = self.blocs(adresse_string) File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/site-packages/AdresseParser/AdresseParser.py", line 63, in blocs if re.match("^[0-9]{5}[a-zA-Z éèàùêôî-]{0,}[0-9]{1,4}(.+)$", adresse_string): File "/home/ParisHistoriqueInventaire/.virtualenvs/env/lib/python3.7/re.py", line 173, in match return _compile(pattern, flags).match(string)

Page "Besoin d'identification"

Certaines photos ont peu d'informations, voire pas d'adresse. Afin de tenter de trouver ces infos, il est nécessaire de créer une page "Besoin d'identification" alimentée par les photos qui ont besoin de cette identification. Cela suppose:

  • de créer un nouvel attribut "besoin_identification" dans la base users, table catalogage
  • d'ajouter ce nouvel attribut dans le modèle users.py
  • de créer une case à cocher sur la page de catalogage dans formulaires.py et catalogage.html: si elle est cochée, la photo apparaîtra sur cette nouvelle page
  • de créer le template pages/besoin_identification.html
  • d'ajouter cette page dans la barre de navigation

A rajouter

Mots-clés:

  • COUPOLE (4403)

Sites:

  • INSTITUT_DE_FRANCE (4403)
  • TOUR_DE_NESLES (4401)
  • PONT_SAINT_MICHEL (4405, 4406, 4410, 4407)

Boutons API

Les boutons de recherche de la page de l'api semblent ne pas fonctionner (testé sur mobile et Chrome PC)

Export

Sur la page d'export, avoir le choix d'envoyer directement le CSV à l'administrateur

Pages d'erreur

Lors d'erreurs d'insertion en base ou d'envoi de mails, renvoyer une page dédiée ou un simple flash avec redirect

Favicon

Mettre une favicon pour éviter la 404

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.