[birds] Fix importer not finishing, and add formjs

This commit is contained in:
2026-05-15 12:20:27 -04:00
parent f160f5a7b8
commit e85d6ec779
3 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,5 @@
from datetime import timedelta
import pytest
from birds.importer import (
import_birding_csv,
@ -111,6 +113,13 @@ class TestImportBirdingCSV:
goose = next(b for b in birds if b["quantity"] == 6)
assert goose is not None
def test_import_sets_stop_timestamp(self, user, birding_csv_file):
import_birding_csv(birding_csv_file, user.id)
scrobble = Scrobble.objects.filter(source="Birding CSV Import").first()
assert scrobble.stop_timestamp is not None
expected = scrobble.timestamp + timedelta(minutes=9)
assert scrobble.stop_timestamp == expected
class TestBirdingCSVImportModel:
def test_create_import_model(self, db, user):

View File

@ -2,7 +2,7 @@ import csv
import logging
import re
from collections import defaultdict
from datetime import datetime
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from django.contrib.auth import get_user_model
@ -122,9 +122,10 @@ def import_birding_csv(file_path, user_id):
)
birds_data.append(entry.asdict)
duration_minutes = parse_duration(first_row.get("Duration", ""))
logdata = BirdSightingLogData(
birds=birds_data,
duration_minutes=parse_duration(first_row.get("Duration", "")),
duration_minutes=duration_minutes,
observation_type=first_row.get("Observation Type", "").strip() or None,
distance=first_row.get("Distance", "").strip() or None,
area=first_row.get("Area", "").strip() or None,
@ -134,9 +135,12 @@ def import_birding_csv(file_path, user_id):
log_dict = logdata.asdict
stop_timestamp = timestamp + timedelta(minutes=duration_minutes) if duration_minutes else None
scrobble = Scrobble(
user=user,
timestamp=timestamp,
stop_timestamp=stop_timestamp,
source="Birding CSV Import",
birding_location=location,
log=log_dict,

View File

@ -136,3 +136,5 @@
</div>
{% endblock %}
{% block extra_js %}{{ block.super }}{{ log_form.media }}{% endblock %}