o
    .f                     @   s   d dl mZ d dlZd dlZedkrBd dlZd dlZd dlZd dl mZ eej	j	Z
ejd ee
 ejdd e  ed d dlmZ d dlmZ d	d
 ZG dd dZedkri	 edZeeZdS dS )    )PathN__main__DJANGO_SETTINGS_MODULEzdjphys.settingsz!I have completed the Django setup)Meeting)CourseRecordc                  C   s   t jt jB } tj D ]?}|jrJt jddt|j| d}d|v r2t jdd|| d}t jdd|| d}d	|v r?t jd
d|| d}||_	|
  t| qd S )Nz\r\n
flagsz<ul>z</?ul> z<li>(.*?)</li>z- \1z\(z(?<!\\)\\\((.*?)\\\)z
\\\(\1\\\))re	MULTILINEDOTALLr   objectsallnotessubstrmdsaveprint)r	   mtgt r   !/var/www/djphys/courses/script.pynotes_to_md   s    r   c                   @   sp   e Zd ZejejB Zedd ZdddZ	de
fddZd	d
 Zdd Zdd Zde
fddZde
fddZdS )Scripterc                 C   s  d }t | trt| }nt | tr| }|r"dd t|d D }n	dd |  D }t|}t|dkr=td|  dt }	 zt|	d	\}}|||< W n   Y nqAt
|d
d}|dd}t
|dd}	|d}
d }tjj||	|
d}t|}||_|  |S )Nc                 S   s   g | ]}| d qS )r   )rstrip.0xr   r   r   
<listcomp>1   s    z!Scripter.load.<locals>.<listcomp>rc                 S   s   g | ]}t |d ddqS )utf8encodingr   )r   r   r   r   r   r   r    3   s    # CourseDumpzFile z# is not a CourseDump formatted fileT = course_recordr   courser
   yearsemester)course__order_fieldr)   r*   )
isinstancer   r   open	readlinesiternext	Exceptiondictsplitintgetr   r   r   linesload_meetings)filepath	all_linesr6   infokvcridr(   r)   r*   crscr   r   r   load(   sF   




zScripter.loadr
   c                 C   sH   || _ |r"t|| _t| jddd| _|   |   | j  d S d S )Nwr"   r#   )r'   r   r9   r-   r8   headermeetingsclose)selfr'   filenamer   r   r   __init__P   s   
zScripter.__init__sc                 C   s   t || jd d S )N)r8   )r   r8   )rF   rI   r   r   r   writeY   s   zScripter.writec                 C   sj   |  d |  d| jj  |  d| jjj  |  d| jj  |  d| jj  |  d d S )Nr%   zcourse_record = z	course = zyear = zsemester = r
   )rJ   r'   idr(   order_fieldr)   r*   )rF   r   r   r   rC   \   s   
zScripter.headerc                 C   s   |  d tjj| jdD ][}|  d|j  |  d|j  |  d|j  dD ]}t||d}|d u r:d}|  | d|  q,|j	rM|  d	 |j
rc|  d
 |  | |j
 |  d |  d qd S )Nz
# Meetings)r'   zid = zdate = ztype = )topichomeworkreadingexamr
   r&   zhide = Trueznotes = '''''')rJ   r   r   filterr'   rK   isosession_typegetattrhider   sub_dollars)rF   mfldvalr   r   r   rD   d   s$   



zScripter.meetingsc              
   C   s  z*d }	 t | j}|dkrd }d|v r|d}ntd|  d|v r/tj|d |d< tjj	| j
|d dd}| dkrU|d }|dd  D ]}|  qMn
| dkr_|d }|r| D ]
\}}t||| qe|  td	|j d
|  n1| j
|d< t| D ]}|| }|d u s|dkr||= qtjjdi |}td|j d
|  d\}}nud|v r+z	|d\}}W n ty }	 ztd|	 d|  W Y d }	~	nd }	~	ww |dkrtt|d}n>|dkr||d< n5|dkr|dk|d< n)|dkr'g }
	 t | j}|dkr| d|
|d< n|
| q
n|||< q tyC } zt| W Y d }~d S d }~ww )NTr
   rK   zThere is a problem in date)r'   r[      r   zSaved [z] r'   z	Created [)NN=r&   zI ran into error z analyzing line )rK   typerT   rV   Truer   rQ   r   r   )r0   r6   popr   datetimer[   fromisoformatr   r   rR   r'   order_bycountdeleteitemssetattrr   rK   listkeyscreater3   r1   r2   r4   make_markdownjoinappend)rF   rX   lmeetingpk
candidatescr<   r=   oopsr6   eepsr   r   r   r7   w   s   




 





AzScripter.load_meetingsc                 C   s$   d|v rt jdd|| jd}|S |S )zv
        Convert text into acceptable markdown. This means converting single
        dollar signs into \( \).
        $z	\$(.*?)\$z\\\( \1 \\\)r   r   r   r	   rF   rI   r   r   r   r   rk      s   
zScripter.make_markdownc                 C   s   t jdd|| jd}|S )Nz\\\\\( (.*?) \\\\\)z$\1$r   rv   rw   r   r   r   rW      s   zScripter.sub_dollarsN)r
   )__name__
__module____qualname__r   r   r   r	   staticmethodrA   rH   r   rJ   rC   rD   r7   rk   rW   r   r   r   r   r   %   s    

'	Gr   Fp117i  )r+   r)   ztesting.pnsz	Wrote to z%/var/www/djphys/courses/p151-2024.txt)pathlibr   r   ra   rx   djangosysos__file__parenthomer9   insertr   environ
setdefaultsetupr   courses.modelsr   people.modelsr   r   r   r   r5   r?   r@   absoluterA   r   r   r   r   <module>   s.     *