[birds] Fix importer not finishing, and add formjs
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from birds.importer import (
|
from birds.importer import (
|
||||||
import_birding_csv,
|
import_birding_csv,
|
||||||
@ -111,6 +113,13 @@ class TestImportBirdingCSV:
|
|||||||
goose = next(b for b in birds if b["quantity"] == 6)
|
goose = next(b for b in birds if b["quantity"] == 6)
|
||||||
assert goose is not None
|
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:
|
class TestBirdingCSVImportModel:
|
||||||
def test_create_import_model(self, db, user):
|
def test_create_import_model(self, db, user):
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import csv
|
|||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
from zoneinfo import ZoneInfo
|
from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
from django.contrib.auth import get_user_model
|
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)
|
birds_data.append(entry.asdict)
|
||||||
|
|
||||||
|
duration_minutes = parse_duration(first_row.get("Duration", ""))
|
||||||
logdata = BirdSightingLogData(
|
logdata = BirdSightingLogData(
|
||||||
birds=birds_data,
|
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,
|
observation_type=first_row.get("Observation Type", "").strip() or None,
|
||||||
distance=first_row.get("Distance", "").strip() or None,
|
distance=first_row.get("Distance", "").strip() or None,
|
||||||
area=first_row.get("Area", "").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
|
log_dict = logdata.asdict
|
||||||
|
|
||||||
|
stop_timestamp = timestamp + timedelta(minutes=duration_minutes) if duration_minutes else None
|
||||||
|
|
||||||
scrobble = Scrobble(
|
scrobble = Scrobble(
|
||||||
user=user,
|
user=user,
|
||||||
timestamp=timestamp,
|
timestamp=timestamp,
|
||||||
|
stop_timestamp=stop_timestamp,
|
||||||
source="Birding CSV Import",
|
source="Birding CSV Import",
|
||||||
birding_location=location,
|
birding_location=location,
|
||||||
log=log_dict,
|
log=log_dict,
|
||||||
|
|||||||
@ -136,3 +136,5 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_js %}{{ block.super }}{{ log_form.media }}{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user