
    si                     t   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ  ej                  e      Zd dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZmZ e ed      d               Ze ed      dd              Z ed        Z!ed        Z"d Z#e	 dd       Z$ed        Z%y)    N)messages)redirectrender)reverse)BeautifulSoup)settings)HttpResponseJsonResponse)gettext_lazy)login_requiredpermission_required)LinkedInAccountRecruitmentz"recruitment.update_linkedinaccountc                 R   | j                   j                  d      }t        j                  j                  |      }|dk(  r'd|_        t        j                  | t        d             n&d|_        t        j                  | t        d             |j                          t        d      S )	z
    htmx function to update is active field in LinkedInAccount.
    Args:
    - is_active: Boolean value representing the state of LinkedInAccount,
    - obj_id: Id of LinkedInAccount object.
    	is_activeidonTz(LinkedIn Account activated successfully.Fz*LinkedIn Account deactivated successfully.4<script>$('#reloadMessagesButton').click();</script>)
POSTgetr   objectsr   r   success_saver	   )requestobj_idr   linkedin_accounts       >/var/www/python-projects/worksol/recruitment/views/linkedin.pyupdate_isactive_linkedinr       s       -I&..22f2=D%)"!$N"OP%*"!$P"QRNOO    z"recruitment.delete_linkedinaccountc                 (   	 |rXt         j                  j                  |      j                          t	        j
                  | d       t        t        d            S y# t        $ r+}t        |       t	        j                  | d       Y d}~yd}~ww xY w)z!
    Delete Linkedin account
    r   zLinkedin data deletedzlinkedin-setting-listzSomething went wrongN)r   r   r   deleter   r   r   r   	Exceptionloggererror)r   pkreturn_redirectes       r   delete_linkedin_accountr*   .   s|    8##''2'.557W&=>G$;<==   8q	w 6778s   AA 	B&!BBc                 \    dd l }d}dddddd} |j                  ||	      }t        |      S )
Nr   z*https://www.linkedin.com/oauth/v2/userinfoauthorization_codea^  AQXepuwNjedxqn6A7XE75IBHWGdCGeuWqB8ZmhlA9oFbKIHtSBzsKaPwJ5uw4opHURUAwNbi3asSUkJvjmR57BNqgK-Snw_2nUhuRp_S3cTRtFcCrE4JZKIZpy_aTWokL3tr1BFGu0zfgzK1uSU5zYClUeQ4j4bTNkCmvjVAQ8T_4T9JdJ8MZg8m84tMMsuvbniMXOGrdURJXJsmBHckyFnaFD0Mp9Fahl85BGYXqtm0czifPhOJH3TuP2GQQb8fQoNH9rDWcXoNW9D0Jchkv-gs_7_p3cz_U0Dqa_6g_Qdj-5uGdTjPiZlKZNCjPNOsK28lilGOtybHipJ8kVkhoW_tg774Zgz8https://www.linkedin.com/developers/tools/oauth/redirect86bnqwzxrmxdy6z!WPL_AP1.op0BkkK4xDn5ANwP.RuayNw==)
grant_typecoderedirect_uri	client_idclient_secret)data)requestspostr
   )r   r4   urlr3   responses        r   check_linkedinr8   >   sB    
6C* qR%<D x}}St,H!!r!   c                 |   t         j                  j                  |      j                         }|j                  }d}dd| i}t        j                  ||      }|j                  dk(  r*t        j                  | t        d             t        d	      S t        j                  | t        d             t        d	      S )
Nr   z$https://api.linkedin.com/v2/userinfoAuthorizationBearer headers   zLinkedIn connection success.zLinkedIn connection failed.r   )r   r   filterfirst	api_tokenr4   r   status_coder   r   r   r	   )r   r'   r   access_tokenr6   r=   r7   s          r   validate_linkedin_tokenrD   O   s    &..555<BBD#--L
0C', 89G||C1Hs"!$B"CD NOO 	!$A"BCNOOr!   c                 l    t        | d      }dj                  d |j                  ddg      D              S )Nzhtml.parser
c              3   d   K   | ](  }|j                  d       r|j                  d        * yw)T)stripN)get_text).0ps     r   	<genexpr>zhtml_to_text.<locals>.<genexpr>_   s1      ::D:! 	



s   .0rK   br)r   joinfind_all)htmlsoups     r   html_to_textrR   ]   s9    }-D99 T{+  r!   c                 \   | j                  d      d d }| d|j                   }d|j                   dddt        |j                        idd	d|j                  i|d|j
                  id
|igdgdid|dk(  rdndid}|dk(  r
|rd| |d<   d}t        j                  |      }	d|j                   dd}
t        j                  ||
|	      }|j                  dk(  r7|j                         }|j                  d      |_        |j                          y d|_        |j                          y )N/z,/recruitment/application-form?recruitmentId=zurn:li:person:	PUBLISHEDzcom.linkedin.ugc.ShareContenttextARTICLEREADYr6   )statusdescriptionoriginalUrltitle
thumbnails)shareCommentaryshareMediaCategorymediaz(com.linkedin.ugc.MemberNetworkVisibilityfeedPUBLIC	CONTAINER)authorlifecycleStatespecificContent
visibilitygroupzurn:li:group:containerEntityz$https://api.linkedin.com/v2/ugcPostsr;   application/jsonr:   zContent-Type)r=   r3      r   F)build_absolute_urir   sub_idrR   r[   r]   jsondumpsrA   r4   r5   rB   r   linkedin_post_idr   publish_in_linkedin)r   recruitmentlinkedin_acc	feed_typegroup_idsite_urlrecruitment_urlpayload_dictr6   payloadr=   r7   response_datas                r   post_recruitment_in_linkedinr}   f   so    ))#.s3H*@@PQ 
 #<#6#6"78%+$*L9P9P,Q#R&/ #*(.0G0G'H'6"(+*;*;!<(-'?&@.
  7%/[
%L2 G,9(*D&'
0Cjj&G"<#9#9":;*G }}S'@Hs" '4'8'8'>$*/'r!   c                     | j                   }|syd| }d| j                  j                   dd}t        j                  ||      }|j
                  dk(  rd| _         | j                          yy	)
z%Delete recruitment post from LinkedInTz%https://api.linkedin.com/v2/ugcPosts/r;   rk   rl   r<      NF)rr   linkedin_account_idrA   r4   r#   rB   r   )rt   rr   r6   r=   r7   s        r   delete_postr      s     #3312B1C
DC";#B#B#L#L"MN*G
 sG4Hs"'+$r!   )T)rb   N)&rp   loggingosrer4   django.contribr   django.shortcutsr   r   django.urlsr   	getLogger__name__r%   bs4r   django.confr   django.httpr	   r
   django.utils.translationr   r   horilla_views.cbv_methodsr   r   recruitment.modelsr   r   r    r*   r8   rD   rR   r}   r    r!   r   <module>r      s      	 	  # - 			8	$      2 6 I ; 9:P ; P( 9:8 ; 8 " "  
P 
P CG1 1h  r!   