Skip to content
Snippets Groups Projects
Commit b6700474 authored by Neda Moeini's avatar Neda Moeini
Browse files

Validate Source and TraderType values.

parent 17e2f68a
No related branches found
No related tags found
No related merge requests found
"""Forms for the file_validator app."""
import csv
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import ClassVar
from django import forms
......@@ -69,6 +69,9 @@ class CSVUploadForm(forms.Form):
fieldnames = reader.fieldnames if reader.fieldnames is not None else []
self._validate_headers(fieldnames)
# Step 3: Validate 'Source' and 'SYSTraderTranType' values
self._validate_source_and_trader_type(reader)
return file
@staticmethod
......@@ -108,3 +111,18 @@ class CSVUploadForm(forms.Form):
if missing_columns:
msg = f"Missing required columns: {', '.join(missing_columns)}"
raise forms.ValidationError(msg)
@staticmethod
def _validate_source_and_trader_type(data: Iterable[dict]) -> None:
"""Validate that 'Source' is always 80 and 'SYSTraderTranType' is always 4."""
errors = []
for index, row in enumerate(data, start=1):
if row.get("Source") != "80":
errors.append(f"Row {index}: 'Source' must be 80, but found {row.get('Source')}.")
if row.get("SYSTraderTranType") != "4":
errors.append(f"Row {index}: 'SYSTraderTranType' must be 4, but found {row.get('SYSTraderTranType')}.")
if errors:
raise forms.ValidationError(errors)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment