Spreadsheet import: a sheet with no status column, or a blank status cell, turns every undated row into an application #468
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#468
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-09-29 in a read-only review of postulo at
95348908d, readingParsedRow.becomesand parsing a sheet with no Status column.Checked again on 2026-10-01 against
mainat0a5cad587: still present. The code is now atcore/csv_import.py:796(the default),:843(the skipped empty cell) and:812-830(becomes;:830is the unreachable line); the module docstring, the template and the wiki have not moved.ParsedRow.statusdefaults to"applied", and an empty cell is skipped beforemap_statussees it, sobecomesalways reachesif self.status: return "application". Its last branch, commented "No status column at all: the date is the only evidence either way", can never run. The #222 change meant a stated, non-draft status to decide; a missing status was meant to fall back to the date, and does not.core/csv_import.py:801(status: str = "applied"),:848(if key == "ignore" or not value: continue),:817-835(becomes;:835is unreachable). The texts that describe the old rule:templates/core/import_csv.html:34and the module docstring (core/csv_import.py:7-9) say "rows without one become listings"; the wiki's Backups and your data (step 4 of the spreadsheet import) says the same.('applied', 'application')for every row, andperformcreates Applied applications with an "Applied on an unknown date" entry and no listings. A row whose Status cell is blank behaves the same.statusto""and set it only from a non-empty status cell;becomesthen falls back to the date as its comment intends, andperformalready usesrow.status or "applied". Update the page text, the module docstring and the wiki to the rule the code follows: a stated status decides (draft is a listing, anything else an application), and without one the date decides. Related to #222 (closed), whose CSV change left this case behind.Done when
tests/test_csv_import.pyimports a sheet with no Status column and one with a blank Status cell, both without dates, and asserts that each row becomes a listing and no application is created.