Skip to content

Commit e327c7c

Browse files
committed
Fix several tickets bug
1 parent 5867614 commit e327c7c

File tree

3 files changed

+45
-7
lines changed

3 files changed

+45
-7
lines changed

insalan/tickets/admin.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ def send_tickets_to_mail(self, request, queryset):
2424
Action to send tickets to mail
2525
"""
2626
for ticket in queryset:
27-
MailManager.get_mailer(EMAIL_AUTH["tournament"]["from"]).send_ticket_mail(ticket.user, ticket)
27+
if(ticket.status == Ticket.Status.VALID):
28+
MailManager.get_mailer(EMAIL_AUTH["tournament"]["from"]).send_ticket_mail(ticket.user, ticket)
2829
messages.info(request, _("Les tickets sélectionnés sont en cours d'envoi."))
2930

3031
admin.site.register(Ticket, TicketAdmin)

insalan/tournament/admin.py

+27-6
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66

77
from django.contrib.auth import password_validation
88
from django.contrib import admin, messages
9+
from django.db.models.query import QuerySet
910
from django.utils.translation import gettext as _
1011
from django import forms
1112
from django.contrib.auth.hashers import make_password
1213
from django.contrib.auth.forms import ReadOnlyPasswordHashField
1314
from django.urls import path, reverse
14-
from django.http import Http404, HttpResponseRedirect
15+
from django.http import Http404, HttpRequest, HttpResponseRedirect
1516
from django.utils.html import escape
1617
from django.contrib.auth.forms import AdminPasswordChangeForm, UsernameField
1718
from django.contrib.admin.options import IS_POPUP_VAR
@@ -22,6 +23,7 @@
2223
from django.utils.decorators import method_decorator
2324

2425
from .models import Event, Tournament, Game, Team, Player, Manager, Substitute, Caster, PaymentStatus, TournamentMailer
26+
from insalan.mailer import MailManager
2527

2628
sensitive_post_parameters_m = method_decorator(sensitive_post_parameters())
2729

@@ -466,26 +468,45 @@ class MailerAdmin(admin.ModelAdmin):
466468
"""
467469
Admin handler for TournamentMailer
468470
"""
471+
exclude = ('mail', 'number')
472+
list_display = ('mail', 'number')
473+
469474
def has_change_permission(self, request, obj=None):
470475
return False
471476

472477
def has_delete_permission(self, request, obj=None):
473478
return False
474479

475480
def add_view(self, request, form_url="", extra_context=None):
481+
super().add_view(request, form_url, extra_context)
476482
return self.changeform_view(request, None, form_url, {
477483
'show_save_and_add_another': False,
478484
'show_save_and_continue': False,
479-
'title': _('Envoyer un mail')
480-
})
485+
'title': _('Envoyer un mail'),
486+
})
481487

482488
# replace the list url with the add one
483489
def get_urls(self):
484-
urls = super().get_urls()
485490
custom_urls = [
486-
path('', self.admin_site.admin_view(self.add_view), name='mailer_add'),
491+
path('add/', self.admin_site.admin_view(self.add_view), name='tournament_tournamentmailer_add'),
492+
path('', self.admin_site.admin_view(self.changelist_view), name='tournament_tournamentmailer_changelist'),
487493
]
488-
return custom_urls + urls
494+
return custom_urls
495+
496+
def get_queryset(self, request: HttpRequest) -> QuerySet:
497+
# remove everything from the queryset
498+
TournamentMailer.objects.all().delete()
499+
500+
# create an object for each mailer
501+
for mailer in MailManager.mailers.values():
502+
mailer_obj = TournamentMailer.objects.create(
503+
mail=mailer.mail_from,
504+
number=len(mailer.queue)
505+
)
506+
mailer_obj.save()
507+
508+
# return the queryset
509+
return TournamentMailer.objects.all()
489510

490511
def response_add(self, request, obj, post_url_continue=None):
491512
messages.info(request, _("Le mail est en cours d'envoi"))

insalan/tournament/models.py

+16
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,20 @@ class TournamentMailer(models.Model):
877877
class Meta:
878878
verbose_name_plural = 'mailers' # The name displayed in the admin sidebar
879879

880+
881+
mail = models.CharField(
882+
verbose_name=_("Mail"),
883+
max_length=100,
884+
null=False,
885+
blank=True,
886+
default="",
887+
)
888+
number = models.IntegerField(
889+
verbose_name=_("Nombre de mails dans la file"),
890+
null=False,
891+
blank=True,
892+
default=0,
893+
)
880894
tournament = models.ForeignKey(
881895
Tournament,
882896
verbose_name=_("Tournoi"),
@@ -917,6 +931,8 @@ class Meta:
917931

918932
def save(self, *args, **kwargs):
919933
"""Override default save of TournamentMailer"""
934+
if self.mail != "":
935+
return super().save(*args, **kwargs)
920936
# get every players of the ongoing event
921937
players = Player.objects.filter(team__tournament__event__ongoing=True)
922938
# if the tournament is specified, filter by tournament

0 commit comments

Comments
 (0)