# Copyright (C) 2020 by Animath # SPDX-License-Identifier: GPL-3.0-or-later import os import requests from django.contrib.auth.models import User from django.core.management import BaseCommand class Command(BaseCommand): def handle(self, *args, **options): # noqa: C901 organization = "animath" form_slug = "tfjmm-2018" from_date = "2000-01-01" url = f"https://api.helloasso.com/v5/organizations/{organization}/forms/Event/{form_slug}/payments" \ f"?from={from_date}&pageIndex=1&pageSize=10000&retrieveOfflineDonations=false" headers = { "Accept": "application/json", "Authorization": f"Bearer {os.getenv('HELLO_ASSO_TOKEN', '')}", } http_response = requests.get(url, headers=headers) response = http_response.json() if http_response.status_code != 200: message = response["message"] self.stderr.write(f"Error while querying Hello Asso: {message}") return for payment in response: if payment["state"] != "Authorized": continue payer = payment["payer"] email = payer["email"] qs = User.objects.filter(email=email) if not qs.exists(): self.stderr.write(f"Warning: a payment was found by the email address {email}, " "but this user is unknown.") continue user = qs.get() if not user.registration.participates: self.stderr.write(f"Warning: a payment was found by the email address {email}, " "but this user is not a participant.") continue payment_obj = user.registration.payment payment_obj.valid = True payment_obj.type = "helloasso" payment_obj.additional_information = f"Identifiant de transation : {payment['id']}\n" \ f"Date : {payment['date']}\n" \ f"Reçu : {payment['paymentReceiptUrl']}\n" \ f"Montant : {payment['amount'] / 100:.2f} €" payment_obj.save() self.stdout.write(f"{payment_obj} is validated")