U
    V)g-                     @   s   d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlZdd	 Zd
d ZG dd deZdS )    N)BaseCommand)PersonLink
LINK_TYPESRole)Point)dms2dec)datetime)Timec                 C   s    | t |d  t |d  }d S )N<   i  )float)dmsdd r   -/web/HOS/person/management/commands/ingest.py	dms_to_dd
   s    r   c                 C   s   |   d}g }d|krdd|krdd|krdd|krd|d |d |d |d |d d|krv|d |D ]}|| qz|S )N ZpatronofZscienceZ	educationzPatron of Science Educationand)lowersplitremoveappend)r   r   Z
final_listwordr   r   r   
split_text   s     





r   c                   @   s    e Zd ZdZdd Zdd ZdS )Commandz3Reads a CSV file and saves the data to the databasec                 C   s   |j dtd d S )Ncsv_file)type)add_argumentstr)selfparserr   r   r   add_arguments"   s    zCommand.add_argumentsc              	   O   s  |d }dd t D }t|p}t|}|D ]X}|d  \}}	d|krttdd|}
ttdd|	}d|kr~dnd	}d
|	krd
nd}|d	kr|
 }
|dkr| }nt|}
t|	}t	||
}|d }t
|}g }|D ](}tjj|  d\}}|| qtjj|d |d |d t|d |d}|jj|  | D ]>\}}||krJ|rJt || d }tjj|||d qJq0W 5 Q R X d S )Nr   c                 S   s   g | ]}|d  qS )   r   ).0xr   r   r   
<listcomp>'   s     z"Command.handle.<locals>.<listcomp>
coordinate.z[^0-9\.] NSEWr   )nameNameZGenderZLocalityDate)r0   genderlocalityyearr)   r   )linkr   person)r   opencsvZ
DictReaderr   r   resubr   r   r   r   objectsget_or_createstriptitler   r   createintrolesadditemsindexr   )r"   argsoptionsr   Zlink_type_listfreaderrowZdms_latitudeZdms_longitudeZlatitudeZ	longitudeZlatitude_hemisphereZlongitude_hemispherelocationZrole_strZ	row_rolesrB   roleZrole_objcreatedr7   Z	link_typer6   r   r   r   handle%   sP    



zCommand.handleN)__name__
__module____qualname__helpr$   rN   r   r   r   r   r      s   r   )r9   django.core.management.baser   Zperson.modelsr   r   r   r   django.contrib.gis.geosr   Zdms2dec.dms_convertr   r	   Zastropy.timer
   r:   r   r   r   r   r   r   r   <module>   s   