gmba_django/app/formats.py

60 lines
1.6 KiB
Python

from enum import Enum
class DataFormat(Enum):
PERSON_DETAIL = 1
PERSON_RESOURCE = 2
PERSON_RANGE = 3
RESOURCE_DETAIL = 4
RANGE_SHAPES = 5
RANGE_DETAIL = 6
DATAFORMATS = [
{
'dataformat': DataFormat.PERSON_DETAIL,
'extension': 'csv',
'folder': 'data',
'filename': 'people_details',
'required': ['ID', 'First name', 'Biography']
},{
'dataformat': DataFormat.RESOURCE_DETAIL,
'extension': 'csv',
'folder': 'data',
'filename': 'resources',
'required': ['ID', 'Citation', 'Abstract']
},{
'dataformat': DataFormat.RANGE_DETAIL,
'extension': 'csv',
'folder': 'data',
'filename': 'ranges',
'required': ['Range_ID', 'RangeName', 'GMBA_ID']
},{
'dataformat': DataFormat.PERSON_RESOURCE,
'extension': 'csv',
'folder': 'data',
'filename': 'people_resources',
'required': ['Resource', 'Person']
},{
'dataformat': DataFormat.PERSON_RANGE,
'extension': 'csv',
'folder': 'data',
'filename': 'people_ranges',
'required': ['ID', 'Person', 'MountainRange']
},{
'dataformat': DataFormat.RANGE_SHAPES,
'extension': 'geojson',
'folder': 'geodata',
'filename': 'gmba',
'required': ['Name', 'GMBA_ID']
}
]
def detect_dataformat(row):
if row is None: return None
for fmt in DATAFORMATS:
missing_property = False
for prop in fmt['required']:
if not prop in row: missing_property = True
if not missing_property:
return fmt
return None