mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-11-04 00:52:03 +01:00 
			
		
		
		
	Create Hello Asso checkout intents
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
		@@ -1,13 +1,13 @@
 | 
			
		||||
# Copyright (C) 2020 by Animath
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
from datetime import date
 | 
			
		||||
from datetime import date, datetime
 | 
			
		||||
 | 
			
		||||
from django.contrib.sites.models import Site
 | 
			
		||||
from django.core.validators import MaxValueValidator, MinValueValidator
 | 
			
		||||
from django.db import models
 | 
			
		||||
from django.template import loader
 | 
			
		||||
from django.urls import reverse_lazy
 | 
			
		||||
from django.urls import reverse_lazy, reverse
 | 
			
		||||
from django.utils import timezone
 | 
			
		||||
from django.utils.crypto import get_random_string
 | 
			
		||||
from django.utils.encoding import force_bytes
 | 
			
		||||
@@ -16,6 +16,8 @@ from django.utils.text import format_lazy
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from phonenumber_field.modelfields import PhoneNumberField
 | 
			
		||||
from polymorphic.models import PolymorphicModel
 | 
			
		||||
 | 
			
		||||
from tfjm import helloasso
 | 
			
		||||
from tfjm.tokens import email_validation_token
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -564,6 +566,46 @@ class Payment(models.Model):
 | 
			
		||||
        default=False,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    def get_checkout_intent(self):
 | 
			
		||||
        if self.checkout_intent_id is None:
 | 
			
		||||
            return None
 | 
			
		||||
        return helloasso.get_checkout_intent(self.checkout_intent_id)
 | 
			
		||||
 | 
			
		||||
    def create_checkout_intent(self):
 | 
			
		||||
        checkout_intent = self.get_checkout_intent()
 | 
			
		||||
        if checkout_intent is not None:
 | 
			
		||||
            return checkout_intent
 | 
			
		||||
 | 
			
		||||
        from participation.models import Tournament
 | 
			
		||||
        tournament = self.registrations.first().team.participation.tournament \
 | 
			
		||||
            if not self.final else Tournament.final_tournament()
 | 
			
		||||
        year = datetime.now().year
 | 
			
		||||
        base_site = "https://" + Site.objects.first().domain
 | 
			
		||||
        checkout_intent = helloasso.create_checkout_intent(
 | 
			
		||||
            amount=100 * self.amount,
 | 
			
		||||
            name=f"Participation au TFJM² {year} - {tournament.name}",
 | 
			
		||||
            back_url=base_site + reverse('registration:update_payment', args=(self.id,)),
 | 
			
		||||
            error_url=base_site + reverse('registration:update_payment', args=(self.id,)),
 | 
			
		||||
            return_url=base_site + reverse('registration:update_payment', args=(self.id,)),
 | 
			
		||||
            contains_donation=False,
 | 
			
		||||
            metadata=dict(
 | 
			
		||||
                users=[
 | 
			
		||||
                    dict(user_id=registration.user.id,
 | 
			
		||||
                         first_name=registration.user.first_name,
 | 
			
		||||
                         last_name=registration.user.last_name,
 | 
			
		||||
                         email=registration.user.email,)
 | 
			
		||||
                    for registration in self.registrations.all()
 | 
			
		||||
                ],
 | 
			
		||||
                payment_id=self.id,
 | 
			
		||||
                final=self.final,
 | 
			
		||||
                tournament_id=tournament.id,
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        self.checkout_intent_id = checkout_intent["id"]
 | 
			
		||||
        self.save()
 | 
			
		||||
 | 
			
		||||
        return checkout_intent
 | 
			
		||||
 | 
			
		||||
    def get_absolute_url(self):
 | 
			
		||||
        return reverse_lazy("registration:update_payment", args=(self.pk,))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user