|
6 | 6 |
|
7 | 7 | from django.contrib.auth import password_validation
|
8 | 8 | from django.contrib import admin, messages
|
| 9 | +from django.db.models.query import QuerySet |
9 | 10 | from django.utils.translation import gettext as _
|
10 | 11 | from django import forms
|
11 | 12 | from django.contrib.auth.hashers import make_password
|
12 | 13 | from django.contrib.auth.forms import ReadOnlyPasswordHashField
|
13 | 14 | from django.urls import path, reverse
|
14 |
| -from django.http import Http404, HttpResponseRedirect |
| 15 | +from django.http import Http404, HttpRequest, HttpResponseRedirect |
15 | 16 | from django.utils.html import escape
|
16 | 17 | from django.contrib.auth.forms import AdminPasswordChangeForm, UsernameField
|
17 | 18 | from django.contrib.admin.options import IS_POPUP_VAR
|
|
22 | 23 | from django.utils.decorators import method_decorator
|
23 | 24 |
|
24 | 25 | from .models import Event, Tournament, Game, Team, Player, Manager, Substitute, Caster, PaymentStatus, TournamentMailer
|
| 26 | +from insalan.mailer import MailManager |
25 | 27 |
|
26 | 28 | sensitive_post_parameters_m = method_decorator(sensitive_post_parameters())
|
27 | 29 |
|
@@ -466,26 +468,45 @@ class MailerAdmin(admin.ModelAdmin):
|
466 | 468 | """
|
467 | 469 | Admin handler for TournamentMailer
|
468 | 470 | """
|
| 471 | + exclude = ('mail', 'number') |
| 472 | + list_display = ('mail', 'number') |
| 473 | + |
469 | 474 | def has_change_permission(self, request, obj=None):
|
470 | 475 | return False
|
471 | 476 |
|
472 | 477 | def has_delete_permission(self, request, obj=None):
|
473 | 478 | return False
|
474 | 479 |
|
475 | 480 | def add_view(self, request, form_url="", extra_context=None):
|
| 481 | + super().add_view(request, form_url, extra_context) |
476 | 482 | return self.changeform_view(request, None, form_url, {
|
477 | 483 | 'show_save_and_add_another': False,
|
478 | 484 | 'show_save_and_continue': False,
|
479 |
| - 'title': _('Envoyer un mail') |
480 |
| - }) |
| 485 | + 'title': _('Envoyer un mail'), |
| 486 | + }) |
481 | 487 |
|
482 | 488 | # replace the list url with the add one
|
483 | 489 | def get_urls(self):
|
484 |
| - urls = super().get_urls() |
485 | 490 | 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'), |
487 | 493 | ]
|
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() |
489 | 510 |
|
490 | 511 | def response_add(self, request, obj, post_url_continue=None):
|
491 | 512 | messages.info(request, _("Le mail est en cours d'envoi"))
|
|
0 commit comments