Skip to content

Commit 6f6d16a

Browse files
committed
Remove pdf_url
- the field is no longer used - it hasn't been used since migrating to Django
1 parent 1807b56 commit 6f6d16a

File tree

5 files changed

+23
-86
lines changed

5 files changed

+23
-86
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 5.1.2 on 2024-10-31 14:40
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("donations", "0015_rename_last_name_donor_f_name"),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name="donor",
15+
name="pdf_url",
16+
),
17+
]

backend/donations/models/main.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,6 @@ class Donor(models.Model):
404404

405405
geoip = models.JSONField(verbose_name=_("Geo IP"), blank=True, null=False, default=dict)
406406

407-
pdf_url = models.URLField(verbose_name=_("PDF URL"), blank=True, null=False, default="", max_length=255)
408407
filename = models.CharField(verbose_name=_("filename"), blank=True, null=False, default="", max_length=100)
409408
has_signed = models.BooleanField(verbose_name=_("has signed"), db_index=True, default=False)
410409

backend/donations/views/cron.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def get(self, request):
104104
donor.f_name,
105105
donor.email,
106106
donor.has_signed,
107-
donor.pdf_file.url if donor.pdf_file else donor.pdf_url,
107+
donor.pdf_file.url if donor.pdf_file else "",
108108
donor.ngo.name,
109109
donor.ngo.email,
110110
donor.ngo.is_accepting_forms,

backend/donations/views/donations_download.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,8 @@ def _get_address_details(donation_object: Donor) -> Dict[str, str]:
253253

254254

255255
def _get_pdf_url(donation: Donor) -> str:
256-
# The 'pdf_file' property has priority over the old 'pdf_url' one
257256
if donation.pdf_file:
258257
source_url = donation.pdf_file.url
259-
elif donation.pdf_url:
260-
source_url = donation.pdf_url
261258
else:
262259
source_url = ""
263260

backend/importer/tasks/donor_forms.py

Lines changed: 5 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
11
import logging
2-
import tempfile
32
from typing import List
43

5-
import requests
6-
from django.conf import settings
7-
from django.core.files import File
84
from django.db.models import Count, Q, QuerySet
95
from django_q.tasks import async_task
10-
from pypdf import PdfReader
11-
from requests import Response
12-
from sentry_sdk import capture_message
136

147
from donations.models.main import Donor, Ngo
158

16-
from ..extract import DATA_ZONES, extract_data
17-
189
logger = logging.getLogger(__name__)
1910

2011

@@ -37,11 +28,9 @@ def import_donor_forms_task(batch_size: int = 50, run_async: bool = False, dry_r
3728
index: int = 0
3829
processed_form_ids: List[int] = []
3930
for index, ngo in enumerate(ngos_by_number_of_donors):
40-
donor_forms_for_ngo: List[int] = (
41-
Donor.objects.exclude(pdf_url="")
42-
.filter(ngo=ngo, pdf_file="", date_created__gte="2023-12-31")
43-
.values_list("pk", flat=True)[: batch_size + 1]
44-
)
31+
donor_forms_for_ngo: List[int] = Donor.objects.filter(
32+
ngo=ngo, pdf_file="", date_created__gte="2023-12-31"
33+
).values_list("pk", flat=True)[: batch_size + 1]
4534

4635
processed_form_ids.extend(donor_forms_for_ngo)
4736

@@ -68,71 +57,6 @@ def execute_import(index, processed_form_ids: List[int], run_async: bool, dry_ru
6857
def import_donor_forms(ids: List[int], dry_run: bool):
6958
"""
7059
Download and re-upload the donation form files one by one
60+
XXX: Will be removed
7161
"""
72-
target_donors: QuerySet[Donor] = Donor.objects.filter(pk__in=ids).order_by("pk")
73-
74-
logger.info("Found %s donors to import", target_donors.count())
75-
76-
attempted_donors: int = 0
77-
transferred_donors: int = 0
78-
79-
donor: Donor
80-
for attempted_donors, donor in enumerate(target_donors):
81-
82-
logger.debug("Processing donation: %s", donor.pk)
83-
84-
if not donor.pdf_url.startswith("http"):
85-
logger.debug("Skipped form %s: PDF URL does not start with http", donor.pk)
86-
continue
87-
88-
r: Response = requests.get(donor.pdf_url)
89-
if r.status_code != 200:
90-
error_message = f"Donation form request status: {r.status_code} for donor {donor.pk}"
91-
logger.warning(error_message)
92-
93-
if settings.ENABLE_SENTRY:
94-
capture_message(error_message, level="error")
95-
96-
continue
97-
98-
with tempfile.TemporaryFile() as fp:
99-
fp.write(r.content)
100-
fp.seek(0)
101-
donor.pdf_file.save("donation_form.pdf", File(fp), save=False)
102-
fp.seek(0)
103-
reader = PdfReader(fp)
104-
page = reader.pages[0]
105-
106-
try:
107-
donor.set_cnp(extract_data(page, DATA_ZONES["cnp"]))
108-
donor.initial = extract_data(page, DATA_ZONES["father"])
109-
110-
donor.set_address_helper(
111-
street_name=extract_data(page, DATA_ZONES["street_name"]),
112-
street_number=extract_data(page, DATA_ZONES["street_number"]),
113-
street_bl=extract_data(page, DATA_ZONES["street_bl"]),
114-
street_sc=extract_data(page, DATA_ZONES["street_sc"]),
115-
street_et=extract_data(page, DATA_ZONES["street_et"]),
116-
street_ap=extract_data(page, DATA_ZONES["street_ap"]),
117-
)
118-
except Exception as e:
119-
logger.error("Error extracting data from PDF: %s for donor %s", e, donor.pk)
120-
continue
121-
122-
logger.debug("New form file: %s", donor.pdf_file)
123-
124-
if not dry_run:
125-
donor.save()
126-
else:
127-
logger.info("Dry run: not saving the donor form")
128-
129-
transferred_donors += 1
130-
131-
if transferred_donors:
132-
logger.info("Transferred %d out of %d donors", transferred_donors, attempted_donors + 1)
133-
else:
134-
error_message = f"No donors were transferred for the following list of {attempted_donors + 1} IDs: {ids}"
135-
logger.error(error_message)
136-
137-
if settings.ENABLE_SENTRY:
138-
capture_message(error_message, level="error")
62+
...

0 commit comments

Comments
 (0)