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

refactor(API): Imports: nouvelle class CSVImportApiView générique (qui check le format, la taille max, et si déjà uploadé) #4936

Open
wants to merge 4 commits into
base: raphodn/backend-api-filters-utils
Choose a base branch
from

Conversation

raphodn
Copy link
Member

@raphodn raphodn commented Jan 17, 2025

Quoi

Suite de #4934

Baby step pour commencer à factoriser les premières étapes de traitement d'un fichier CSV :

  • check sur le format
  • check sur le taille maximale
  • calcul du hash md5 (utile pour checker si le fichier a déjà été importé)

Du coup dans PurchaseImport le check pour savoir si le fichier a déjà été importé se fait en amont maintenant :

  • pour renvoyer une erreur early
  • et isoler la logique du processing ligne par ligne (qui sera remplacé par Validata 🤖 )

f"Ce fichier est au format {self.file.content_type}, merci d'exporter votre fichier au format CSV et réessayer."
)

def _get_file_digest(self):
Copy link
Member Author

Choose a reason for hiding this comment

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

je l'ai mis ici car j'aimerais à terme rajouter la logique "fichier identique ?" pour les imports cantines/diagnostics. enfin je ne suis pas 100% certain de sa faisabilité, en tout cas on ne stock pas le md5 actuellement pour ces imports, mais ca serait utile pour tous les futurs !

@raphodn raphodn changed the title refactor(API): Imports: nouvelle class CSVImportApiView générique refactor(API): Imports: nouvelle class CSVImportApiView générique (qui check le format, la taille max, et si déjà uploadé) Jan 23, 2025
from simple_history.utils import update_change_reason

logger = logging.getLogger(__name__)


class CSVImportApiView(APIView):
Copy link
Member Author

Choose a reason for hiding this comment

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

pour info, dans ce commentaire - #4896 (comment) - je me pose la question si c'est une classe DRF qu'on doit utiliser, ou plutôt un simple fichier utils python avec les différentes méthodes

Copy link
Member Author

Choose a reason for hiding this comment

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

parce que ces appels "super()", et l'utilisation un peu magique de "self.", ce n'est pas très très joli je trouve ^^

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.

1 participant