Created
May 1, 2021 13:04
-
-
Save guilhermecarvalhocarneiro/864302dc763dd004a8d86ce82ced4361 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db import models | |
from nuvols.core.models import Base | |
from django.db.models.signals import pre_save | |
from django.dispatch import receiver | |
import hashlib | |
import hmac | |
import datetime | |
class Cupom(Base): | |
titulo = models.CharField(verbose_name='Título', max_length=150, null=True) | |
desconto_real = models.FloatField(verbose_name='Valor do desconto em real', null=True, blank=True) | |
desconto_percentual = models.FloatField(verbose_name='Valor do desconto em percentual', null=True, blank=True) | |
inicio = models.DateField() | |
fim = models.DateField() | |
descricao = models.CharField(verbose_name='Descrição sobre o cupom', max_length=250, blank=True, null=True) | |
token = models.CharField(max_length=10, blank=True, null=True) | |
def __str__(self): | |
return f"Cupom {self.titulo} gravado com sucesso." | |
class Meta: | |
verbose_name = 'Cupom de desconto' | |
verbose_name_plural = 'Cupons de desconto' | |
fields_display = ['titulo', 'inicio', 'fim', 'desconto_real', 'desconto_percentual'] | |
class UsuarioCupom(Base): | |
fk_usuario = models.ForeignKey('usuario.Cliente', verbose_name='Usuário que utilizou o cupom', | |
on_delete=models.PROTECT) | |
fk_cupom = models.ForeignKey(Cupom, verbose_name='Cupom utilizado pelo usuário', on_delete=models.PROTECT) | |
fk_atendimento = models.ForeignKey('atendimento.Agendamento', verbose_name='Agendamneto que foi utilizado o ' | |
'cupom', on_delete=models.PROTECT) | |
class Meta: | |
verbose_name = 'Utilização do cupom pelo usuário' | |
verbose_name_plural = 'Utilizações dos cupons pelos usuários' | |
fields_display = ['fk_usuario__email', 'fk_cupom', 'fk_atendimento'] | |
# Signals | |
@receiver(pre_save, sender=Cupom) | |
def gerar_token(sender, instance, **kwargs): | |
try: | |
if instance.token is None: | |
obj_data = f"{instance.inicio}{instance.titulo}{instance.fim}{datetime.datetime.utcnow()}" | |
instance.token = hmac.new(bytes(obj_data, 'utf-8'), digestmod=hashlib.blake2s).hexdigest()[:8] | |
except Exception as error: | |
pass |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment