Skip to content

Commit d32f257

Browse files
Merge pull request #5967 from uktrade/bugfix/TET-981-stova-ingestion-data
Bugfix/tet 981 stova ingestion data
2 parents 7ba24e6 + 83ad352 commit d32f257

File tree

5 files changed

+69
-5
lines changed

5 files changed

+69
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Generated by Django 4.2.17 on 2025-02-19 08:24
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('company_activity', '0028_update_stova_event_fields_to_match_actual'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='stovaattendee',
15+
name='attendee_questions',
16+
field=models.CharField(blank=True, max_length=255, null=True),
17+
),
18+
migrations.AlterField(
19+
model_name='stovaevent',
20+
name='city',
21+
field=models.CharField(blank=True, max_length=255, null=True),
22+
),
23+
migrations.AlterField(
24+
model_name='stovaevent',
25+
name='contact_info',
26+
field=models.TextField(blank=True, default=''),
27+
),
28+
migrations.AlterField(
29+
model_name='stovaevent',
30+
name='country',
31+
field=models.CharField(blank=True, max_length=255, null=True),
32+
),
33+
migrations.AlterField(
34+
model_name='stovaevent',
35+
name='location_country',
36+
field=models.CharField(blank=True, max_length=255, null=True),
37+
),
38+
]

datahub/company_activity/models/stova_attendee.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class StovaAttendee(models.Model):
3131
email = models.CharField(max_length=MAX_LENGTH)
3232
first_name = models.CharField(max_length=MAX_LENGTH)
3333
last_name = models.CharField(max_length=MAX_LENGTH)
34-
attendee_questions = models.CharField(max_length=MAX_LENGTH)
34+
attendee_questions = models.CharField(max_length=MAX_LENGTH, blank=True, null=True)
3535

3636
company_name = models.CharField(max_length=MAX_LENGTH)
3737
category = models.CharField(max_length=MAX_LENGTH)

datahub/company_activity/models/stova_event.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ class StovaEvent(models.Model):
2727
modified_by = models.CharField(max_length=MAX_LENGTH, blank=True, default='')
2828

2929
client_contact = models.CharField(max_length=MAX_LENGTH, blank=True, default='')
30-
contact_info = models.CharField(max_length=MAX_LENGTH, blank=True, default='')
30+
contact_info = models.TextField(blank=True, default='')
3131

32-
country = models.CharField(max_length=MAX_LENGTH)
33-
city = models.CharField(max_length=MAX_LENGTH)
32+
country = models.CharField(max_length=MAX_LENGTH, blank=True, null=True)
33+
city = models.CharField(max_length=MAX_LENGTH, blank=True, null=True)
3434
state = models.CharField(max_length=MAX_LENGTH)
3535
timezone = models.CharField(max_length=MAX_LENGTH, blank=True, null=True, default='')
3636
url = models.TextField(blank=True, null=True)
@@ -44,7 +44,7 @@ class StovaEvent(models.Model):
4444
end_date = models.DateTimeField(null=True, blank=True)
4545

4646
location_state = models.CharField(max_length=MAX_LENGTH, blank=True)
47-
location_country = models.CharField(max_length=MAX_LENGTH)
47+
location_country = models.CharField(max_length=MAX_LENGTH, blank=True, null=True)
4848
location_address1 = models.CharField(max_length=MAX_LENGTH)
4949
location_address2 = models.CharField(max_length=MAX_LENGTH, blank=True)
5050
location_address3 = models.CharField(max_length=MAX_LENGTH, blank=True)

datahub/company_activity/tasks/ingest_stova_attendees.py

+6
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ def get_or_create_company(values: dict) -> Company | None:
180180
:returns: An existing `Company` if found or a newly created `Company`.
181181
"""
182182
company_name = values['company_name']
183+
if company_name == '' or company_name is None:
184+
logger.info(
185+
f'No company name available, skipping attendee {values["stova_attendee_id"]}',
186+
)
187+
return
188+
183189
company = Company.objects.filter(name__iexact=company_name).first()
184190
if company:
185191
return company

datahub/company_activity/tests/test_tasks/test_stova_attendee_ingestion_task.py

+20
Original file line numberDiff line numberDiff line change
@@ -527,3 +527,23 @@ def test_stova_attendee_does_not_create_attendee_when_interaction_fails(
527527
task._process_record(data)
528528

529529
assert StovaAttendee.objects.count() == 0
530+
531+
@pytest.mark.django_db
532+
@pytest.mark.parametrize(
533+
'company_name',
534+
(
535+
'',
536+
None,
537+
),
538+
)
539+
def test_get_or_create_company__returns_when_company_name_empty(
540+
self, s3_object_processor, test_file_path, caplog, company_name,
541+
):
542+
"""Tests empty company names are logged and no company is created."""
543+
data = {'stova_attendee_id': 1234, 'company_name': company_name}
544+
ingestion_task = StovaAttendeeIngestionTask(test_file_path, s3_object_processor)
545+
546+
with caplog.at_level(logging.INFO):
547+
company = ingestion_task.get_or_create_company(data)
548+
assert 'No company name available, skipping attendee 1234' in caplog.text
549+
assert company is None

0 commit comments

Comments
 (0)