|
5 | 5 | from django.utils import timezone as tz |
6 | 6 |
|
7 | 7 | from parking_permits.customer_permit import CustomerPermit |
8 | | -from parking_permits.models import Customer, ParkingPermit |
| 8 | +from parking_permits.models import Announcement, Customer, ParkingPermit |
9 | 9 | from parking_permits.models.order import SubscriptionCancelReason |
10 | 10 | from parking_permits.models.parking_permit import ( |
11 | 11 | ContractType, |
12 | 12 | ParkingPermitEndType, |
13 | 13 | ParkingPermitStatus, |
14 | 14 | ) |
15 | | -from parking_permits.services.mail import PermitEmailType, send_permit_email |
| 15 | +from parking_permits.services.mail import ( |
| 16 | + PermitEmailType, |
| 17 | + send_announcement_emails, |
| 18 | + send_permit_email, |
| 19 | +) |
16 | 20 | from parking_permits.services.parkkihubi import sync_with_parkkihubi |
17 | 21 |
|
18 | 22 | logger = logging.getLogger("django") |
19 | 23 | db_logger = logging.getLogger("db") |
20 | 24 |
|
21 | 25 |
|
| 26 | +def handle_announcement_emails(): |
| 27 | + announcements = Announcement.objects.filter(emails_handled=False) |
| 28 | + logger.info(f"Found unhandled announcements: {announcements.count()}") |
| 29 | + for announcement in announcements: |
| 30 | + customers = Customer.objects.filter( |
| 31 | + permits__parking_zone__in=announcement.parking_zones.all(), |
| 32 | + permits__status=ParkingPermitStatus.VALID, |
| 33 | + ).distinct() |
| 34 | + logger.info( |
| 35 | + f"Found {customers.count()} customers for announcement {announcement.pk}" |
| 36 | + ) |
| 37 | + send_announcement_emails(customers, announcement) |
| 38 | + announcement.emails_handled = True |
| 39 | + announcement.save() |
| 40 | + logger.info(f"Announcement {announcement.pk} emails handled") |
| 41 | + |
| 42 | + |
22 | 43 | def automatic_expiration_of_permits(): |
23 | 44 | logger.info("Automatically ending permits started...") |
24 | 45 | now = tz.localtime(tz.now()) |
|
0 commit comments