Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add aggregator parser #3196

Merged
merged 117 commits into from
Sep 20, 2022
Merged

Add aggregator parser #3196

merged 117 commits into from
Sep 20, 2022

Conversation

LePetitTim
Copy link
Contributor

No description provided.

@cypress
Copy link

cypress bot commented Jul 28, 2022



Test summary

22 0 0 0


Run details

Project Geotrek-admin
Status Passed
Commit fa4ed9e ℹ️
Started Sep 19, 2022 3:45 PM
Ended Sep 19, 2022 3:49 PM
Duration 04:14 💡
OS Linux Ubuntu - 20.04
Browser Electron 94

View run in Cypress Dashboard ➡️


This comment has been generated by cypress-bot as a result of this project's GitHub integration settings. You can manage this integration in this project's settings in the Cypress Dashboard

@codecov
Copy link

codecov bot commented Jul 28, 2022

Codecov Report

Base: 97.94% // Head: 98.10% // Increases project coverage by +0.16% 🎉

Coverage data is based on head (b72044e) compared to base (34c4143).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3196      +/-   ##
==========================================
+ Coverage   97.94%   98.10%   +0.16%     
==========================================
  Files         273      275       +2     
  Lines       19262    19767     +505     
==========================================
+ Hits        18866    19393     +527     
+ Misses        396      374      -22     
Impacted Files Coverage Δ
geotrek/api/v2/serializers.py 99.88% <100.00%> (ø)
geotrek/common/management/commands/import.py 100.00% <100.00%> (ø)
geotrek/common/parsers.py 91.54% <100.00%> (+5.97%) ⬆️
geotrek/core/filters.py 100.00% <100.00%> (ø)
geotrek/core/models.py 96.69% <100.00%> (+0.05%) ⬆️
geotrek/infrastructure/filters.py 100.00% <100.00%> (ø)
geotrek/infrastructure/models.py 100.00% <100.00%> (ø)
geotrek/infrastructure/parsers.py 100.00% <100.00%> (ø)
geotrek/outdoor/filters.py 100.00% <100.00%> (ø)
geotrek/outdoor/models.py 99.67% <100.00%> (+0.01%) ⬆️
... and 24 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@LePetitTim LePetitTim force-pushed the add_aggregator_parser branch 3 times, most recently from 676e222 to c781dca Compare August 1, 2022 13:44
@LePetitTim LePetitTim requested a review from a team August 1, 2022 15:39
Copy link

@numahell numahell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je fais un première review, il manque le changelog. Je regarde le reste plus tard.

@@ -12,7 +12,7 @@ class Command(BaseCommand):

def add_arguments(self, parser):
parser.add_argument('parser', help='Parser class name in var/conf/parsers.py (or dotted syntax in python path)')
parser.add_argument('shapefile', nargs="?")
parser.add_argument('filename', nargs="?")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be documented (in install/imports.rst maybe)

@LePetitTim LePetitTim force-pushed the add_aggregator_parser branch from 0a81e3b to 6819ccd Compare August 2, 2022 13:11
@@ -12,7 +12,7 @@ class Command(BaseCommand):

def add_arguments(self, parser):
parser.add_argument('parser', help='Parser class name in var/conf/parsers.py (or dotted syntax in python path)')
parser.add_argument('shapefile', nargs="?")
parser.add_argument('filename', nargs="?", help='Optional file which will be use to feed database')
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
parser.add_argument('filename', nargs="?", help='Optional file which will be use to feed database')
parser.add_argument('filename', nargs="?", help='Optional file used to feed database')

plus court, c'est mieux

@LePetitTim LePetitTim force-pushed the add_aggregator_parser branch 3 times, most recently from bdd9d28 to 6661937 Compare August 3, 2022 14:37
Copy link

@numahell numahell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je continue de lire et essayer de tout comprendre, voilà déjà des retours


class GeotrekParser(AttachmentParserMixin, Parser):
"""
url_categories: url of the categories in api v2 (example: 'category': '/api/v2/touristiccontent_category/')
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est peut-être plus "anglais" de dire "categories url", et donc la variable categories_url, mais rien d'obligatoire non plus

geotrek/common/tests/test_parsers.py Show resolved Hide resolved
geotrek/trekking/parsers.py Show resolved Hide resolved
geom = GEOSGeometry(geom)
return geom

def next_row(self):
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Est-ce que tu peux expliciter dans la docstring pourquoi on a besoin de surcharger cette méthode ?
et notamment l'usage de self.next_url

"""
model = None
next_url = ''
url = None
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Préciser quelque part que c'est mieux sans le / à la fin, sinon ça ne fonctionne pas

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça peut être dans le message d'erreur par exemple


def next_row(self):
self.next_url = f"{self.url}/api/v2/trek"
return super().next_row()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Peut-être qu'avec une variable endpoint_url ou un truc comme ça, y a moyen de ne pas être obligé de surcharger cette méthode ?

@marcantoinedupre
Copy link
Contributor

J'ai eu une pensée pour le fait que le GTA aggrégateur et les GTAs aggrégés doivent être sur la même version du code. Comme il y aura forcément des moments où ce ne sera pas le cas (brièvement, par exemple pour les màj). Je me dis que l'avoir en tête au niveau de la gestion des erreurs est pas mal. Pour échouer gracieusement.

@LePetitTim LePetitTim force-pushed the add_aggregator_parser branch 2 times, most recently from c1883ac to 9ca79e7 Compare August 4, 2022 13:54
@amandine-sahl
Copy link
Contributor

amandine-sahl commented Aug 5, 2022

Quelques retours après tests sur des APIs en 2.85.0 et en 2.82.2

Globalement ça fonctionne bien et c'est assez simple à mettre en oeuvre

Messages :

  • Globalement il y a très peu de messages, ce qui est un peu dommage.
  • Quand une catégorie n'existe pas, le contenu n'est pas importé sans que ce soit signalé à l'utilisateur

Attachments :

  • Les médias accessibilités ne sont pas importés
  • Les thumbnails (favoris) ne ressortent pas
  • Les fichiers liés n'ont pas de miniature de prévisualisation
  • La licence n'est pas importée

Suppression des contenus :
Par défaut le parseur supprime tous les éléments de la catégorie du parseur. Pour aggréger des données de plusieurs sources il faut spécifier delete = False. Ce qui fait que les données ne sont pas supprimées. Hors si dans une source un contenu est supprimé il apparaît toujours.

Import différentiel :
Les parseurs traitent l'ensemble des données à chaque import pour des questions de performances il serait intéressant de ne récupérer que les données modifiées grâce au paramètre updated_after.

GeotrekSignageParser:

  • lors de l'import les fichiers liés ne sont pas importés avec un WARNING 1 geotrek.common.parsers Failed to fetch [...] after 3 times. Status code : 403.

GeotrekTouristicContentParser:

  • Fichiers liés non importés

@LePetitTim
Copy link
Contributor Author

Par défaut le parseur supprime tous les éléments de la catégorie du parseur. Pour aggréger des données de plusieurs sources il faut spécifier delete = False. Ce qui fait que les données ne sont pas supprimées. Hors si dans une source un contenu est supprimé il apparaît toujours.

Tu as regardé avec les dernières modifications ?

@amandine-sahl
Copy link
Contributor

amandine-sahl commented Aug 5, 2022

Je viens de mettre à jour Geotrek et de re-tester et j'ai toujours le même comportement.
1 - Création d'un POI dans geotrekdemo
2 - Parseur d'import
3 - Suppression du POI dans geotrekdemo
4 - Parseur d'import
=> Le Poi est toujours dans la base d'aggrégation

class DemoGeotrekPOIParser(GeotrekPOIParser):
  delete = False
  url = "https://geotrekdemo.ecrins-parcnational.fr"

@amandine-sahl
Copy link
Contributor

Autre point, je m'interroge sur la gestion des structures, pour le moment, si je ne me trompe pas elles ne sont pas prisent en compte.

@LePetitTim LePetitTim force-pushed the add_aggregator_parser branch 5 times, most recently from ce6985e to 983bfd6 Compare August 8, 2022 13:56
@LePetitTim
Copy link
Contributor Author

Je viens de mettre à jour Geotrek et de re-tester et j'ai toujours le même comportement. 1 - Création d'un POI dans geotrekdemo 2 - Parseur d'import 3 - Suppression du POI dans geotrekdemo 4 - Parseur d'import => Le Poi est toujours dans la base d'aggrégation

class DemoGeotrekPOIParser(GeotrekPOIParser):
  delete = False
  url = "https://geotrekdemo.ecrins-parcnational.fr"

En effet il y avait une erreur. La gestion de la suppression fonctionne dorénavant.

@Chatewgne Chatewgne merged commit 05ef0ef into master Sep 20, 2022
@submarcos submarcos deleted the add_aggregator_parser branch September 30, 2022 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants