a
    =(\a&                     @   s  d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlZd dlmZ d dlZd dlmZ d dlZd dlZdZd	Zd
ZdZdZejjdddddZdd Zdd Zdd Zdd Zdd Zdd Z dd Z!d d! Z"e#d"kre"ej$d#d  dS )$    N)urlparseparse_qs)BeautifulSoup)urljoin)pprint)
IMAPClientpolicyzhttps://sso.golf.co.nz/zPhttps://sso.golf.co.nz/login?v=http%3a%2f%2fedge.live.golf.co.nz%2fvalidate.aspxz9https://edge.live.golf.co.nz/Controls/CalendarHelper.ashxzIhttps://edge.live.golf.co.nz/Shared/Tournaments/Setup/Competition_ng.aspxzWhttps://edge.live.golf.co.nz/Shared/api/MemberQuickSearchService.aspx/SearchClubMemberszfeeminder.nztaranakicowsandsheepeatingdjango_pairs)hostuserpassworddatabasec                 C   s|   | d D ]}|D ]
}d|_ qq| d D ]}|D ]
}d|_ q.q&| d D ]}|D ]
}d|_ qLqD| d D ]}|D ]
}d|_ qjqbd S )NzA2:E61 zG2:H61zJ2:L61zN2:O61)value)sheetrowcell r   1/var/www/taranaki_pairs/entries/taranaki_pairs.py	ClearData   s    


r   c                  C   s\  d} t | }|d }t| t }d}|| | }d}|D ]}|j|dtt	|d d |j|d|d d |j|d	|d d |j|d
|d d |j|d|d	 d |j|d|d
 d |j|d|d d |j|d|d d |j|d|d d |j|d|d d |j|d|d d |j|d|d d |d7 }qD|j
| d d S )NzTaranaki Pairs Master.xlsxZ2021zSELECT id, p1_surname, p1_firstname, p1_id, p1_gender, p1_index, p2_surname, p2_firstname, p2_id, p2_gender, p2_index, paid FROM entries_players WHERE 1         )r   columnr   r                  
            	      )filename)openpyxlZload_workbookr   mydbcursorexecutefetchallr   nextitersave)r(   wbr   mycursorsqlrowsZ	row_indexr   r   r   r   	FillSheet+   s0    



r5   c                 C   sF   dddddd|d}ddi}| j tt||d}| }|d d	 S )
Nfalser   true)ZexcludeHomeClubMembersZfilterByClubIdZincludeAffiliatedMembersZincludeCasualGolfersZincludeResignedMembersZincludeSocialMembersZ
searchTextzContent-Typezapplication/json)dataheadersdZResults)postmember_datajsondumps)sidpayloadr9   resresultr   r   r   get_member_dataI   s    
rD   c                   C   s   d S )Nr   r   r   r   r   UpdateScores]   s    rE   c                 C   s<   |dkr"t | d d d d dS t | d d d d	 dS )
NMg     @Y@g     @\@g      Q@gP@r   g      Y@D   g     P@)round)indexZgenderr   r   r   GetHandicap`   s    rJ   c              	   C   s   t d d}|  }|| | }|D ]x}t|d |d }t|d |d }t|| dkrl|| }nt||d d }|d }d}||||||d	 f q*|   t d
 d S )Nz%Calculating Player and Team HandicapszPSELECT id, p1_index, p1_gender, p2_index, p2_gender FROM entries_players WHERE 1r   r   r   r   r!   zNUPDATE entries_players SET p1_hcap = %s, p2_hcap = %s, hcap = %s WHERE id = %sr   zDone with calculations)printr+   r,   r-   rJ   absmincommit)r*   r3   r+   r4   r   p1_hcapp2_hcaphcapr   r   r   UpdateHandicapse   s     

rR   c                  C   s  t d tdddd} | dd | d t d	 | g d
}t d | |g d}t d t }| D ]P\}}t	j
|d tjd}|d}|drvi }|d}	|	 D ]x}
d}t|
d d}|D ]X}|d}t|dkr|d  }|d  }|dr,|r(|d7 }d}|||< qqt d|d |d  d|d  d |d  d  |d!  d" |d!  d# |d$  d |d%  d |d&  d' }t | |||d |d f qvt  t d( W d    n1 s0    Y  d S ))NzProcessing Emailzchristini.co.nz   F)r   portsslZjohnZdogma02zTaranaki Pairs.2021z	Logged in)NOTZDELETEDrV   ZSEENzFetching messages)FLAGSzRFC822.SIZEZRFC822z
BODY[TEXT]zDone fetchings   RFC822r   SubjectzTaranaki Pairs Entryr   z


:r   r   zClub ID2TzProcessing {}/{}zTeam CaptainzSecond PlayerzINSERT INTO entries_players ( year , p1_name, p1_id_reg, p1_id, p2_name, p2_id_reg, p2_id,  address, phone, email)                        VALUES ( '2021', %s, 'z', 'z', %s, 'zClub ID2z$',                                 'z','zContact AddressZPhoneEmailz!') ON DUPLICATE KEY UPDATE id=id zDone with Email)rK   r   loginZselect_foldersearchZfetchr*   r+   itemsemailmessage_from_bytesr	   defaultget
startswithget_payloadwalkstrsplitlenstripformatr,   rN   )clientmessagesresponser2   
message_idr8   email_messagesubjectrecordZpbifoundlineslinevalskeyr   r3   r   r   r   ProcessMailx   s~    




ry   c              
   C   s
  t | dkr&| d dkr&tt t  t | dkrJ| d dkrJt  t  t  t }t | dkr| d dkrtd d}|| t	  ddd	}t
  }td
 d|jd< |t}t|jd}dd |dD }|d |d< |d |d< |jt|d}t|jd}d}|| | }	td |	D ]d}
td|
d |
d  t||
d }t||
d }t |dkst |dkrt |dkrtd|
d  t |dkrtd|
d  n|d }|d }d|d  d |d   d! t|d"  d# |d$  d% |d  d& |d   d' t|d"  d( |d$  d) t|
d  }z|||d* |d* f W n ty   tt Y n0 td+ q4t	  td, tt W d    n1 s0    Y  t | dkr| d d-krtd. t  td/ d S )0Nr   Z	handicapsZscoresresetzReseting ScoreszCUPDATE entries_players SET p1_index = null, p2_index = null WHERE 1Z
203remotecZ21Remote)r   passzConnecting to DotGolfzfMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36z
User-Agentzhtml.parserc                 S   s   i | ]}|d  | ddqS )namer   r   )rc   ).0rs   r   r   r   
<dictcomp>       zmain.<locals>.<dictcomp>zinput[name]r   zSSOLogin.Usernamer{   zSSOLogin.Password)r8   zWSELECT id, p1_id, p2_id FROM entries_players WHERE p1_index is NULL or p2_index is NULLzProcessing playerszFetching DotGolf Data for {}/{}r   r   zPlayer 1 ID {} is InvalidzPlayer 2 ID {} is Invalidz;UPDATE entries_players SET p1_surname = %s, p1_firstname ='Z	FirstNamez', p1_gender = 'ZGenderz', p1_index = ZHandicapIndexz, p1_club = 'ZHomeClubNamezL',                                          p2_surname = %s, p2_firstname ='z', p2_gender = 'z', p2_index = z, p2_club = 'z!'                       WHERE id=ZLastNameg      ?zDone with DotGolf processingr   zUpdating SpreadsheetzAll done)ri   rR   r*   quitrE   ry   r+   rK   r,   rN   requestsSessionr9   rc   linkr   textselectr;   urlr-   rk   rD   rg   	Exceptiontimesleepr5   )argvr2   r3   configr?   rZsouprA   rB   r4   r   p1p2r   r   r   main   s    





6

(r   __main__r   )%rer   urllib.parser   r   Zbs4r   r   r   r=   r   Zmysql.connectormysqlZ
imapclientr   r`   r	   sysr)   r   r   ZcompetitionsZ	comp_datar<   	connectorconnectr*   r   r5   rD   rE   rJ   rR   ry   r   __name__r   r   r   r   r   <module>   sD   4G
