ó
kiªfc           @   sj  d  d l  m Z m Z d  d l 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 m Z d  d l Td  d l Td  d l Td  d l Td  d	 l Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ d „  ƒ Z e d
 ƒ e d „ ƒ Z e d
 ƒ d „  ƒ Z  e d ƒ d „  ƒ Z! e d
 ƒ d „  ƒ Z" e d
 ƒ d „  ƒ Z# e d
 ƒ d „  ƒ Z$ e d ƒ d „  ƒ Z% e d
 ƒ d „  ƒ Z& e d
 ƒ d „  ƒ Z' e d ƒ d „  ƒ Z( e d
 ƒ d  „  ƒ Z) e d
 ƒ d! „  ƒ Z* d" „  Z+ d	 S(#   iÿÿÿÿ(   t   rendert   get_object_or_404(   t   HttpResponseRedirectt   Http404t   HttpResponse(   t   reverse(   t   messages(   t   slugify(   t   permission_required(   t   Q(   t   *Ns   admin_users.can_access_cpdc         C   s&   t  j j ƒ  } t |  d i | d 6ƒ S(   Ns"   admin/cpd/options/cpd-options.htmlt   cpd_categories(   t   CPDCategoryt   objectst   allR    (   t   requestR   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   cpd_options   s    c         C   sƒ   t  ƒ  } |  j rl t  |  j ƒ } y. | j ƒ  t j |  d ƒ t t d ƒ ƒ SWql t j |  d ƒ ql Xn  t |  d i | d 6ƒ S(   Ns   CPD Category has been createdt   admin_cpd_optionss   Could not create CPD Categorys'   admin/cpd/options/add-cpd-category.htmlt   cpd_category_form(	   t   CPDCategoryFormt   POSTt   saveR   t   successR   R   t   errorR    (   R   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   add_cpd_category   s    		
c         C   s·   t  t d | ƒ} t d | ƒ } |  j r™ t |  j d | ƒ} | j ƒ  r™ y. | j ƒ  t j |  d ƒ t t	 d ƒ ƒ SWq– t j
 |  d ƒ q– Xq™ n  t |  d i | d 6| d 6ƒ S(	   Nt   idt   instances   CPD Category has been updatedR   s   Could not update CPD Categorys(   admin/cpd/options/edit-cpd-category.htmlt   cpd_categoryR   (   R   R   R   R   t   is_validR   R   R   R   R   R   R    (   R   t   category_idR   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   edit_cpd_category0   s    	
c         C   sZ   t  t d | ƒ} y | j ƒ  t j |  d ƒ Wn t j |  d ƒ n Xt t d ƒ ƒ S(   NR   s   CPD Category has been deleteds   Could not delete CPD CategoryR   (   R   R   t   deleteR   R   R   R   R   (   R   R   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   delete_cpd_categoryG   s    
c         C   sƒ   t  ƒ  } |  j rl t  |  j ƒ } y. | j ƒ  t j |  d ƒ t t d ƒ ƒ SWql t j |  d ƒ ql Xn  t |  d i | d 6ƒ S(   Ns   CPD Category has been createdR   s   Could not create CPD Categorys#   admin/cpd/options/add-cpd-item.htmlt   cpd_item_form(	   t   CPDItemFormR   R   R   R   R   R   R   R    (   R   R!   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   add_cpd_itemS   s    		
c         C   s·   t  t d | ƒ} t d | ƒ } |  j r™ t |  j d | ƒ} | j ƒ  r™ y. | j ƒ  t j |  d ƒ t t	 d ƒ ƒ SWq– t j
 |  d ƒ q– Xq™ n  t |  d i | d 6| d 6ƒ S(	   NR   R   s   CPD Category has been updatedR   s   Could not update CPD Categorys$   admin/cpd/options/edit-cpd-item.htmlt   cpd_itemR!   (   R   t   CPDItemR"   R   R   R   R   R   R   R   R   R    (   R   t   item_idR$   R!   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   edit_cpd_itemg   s    	
c         C   sZ   t  t d | ƒ} y | j ƒ  t j |  d ƒ Wn t j |  d ƒ n Xt t d ƒ ƒ S(   NR   s   CPD Category has been deleteds   Could not delete CPD CategoryR   (   R   R%   R   R   R   R   R   R   (   R   R&   R$   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   delete_cpd_item~   s    
c         C   s!  t  j j d t ƒ j d ƒ d  } t  j j d t ƒ j d ƒ } t t t d d ƒ ƒ } t	 ƒ  } g  } x3 | D]+ } | j
 | ƒ } | rn | j | ƒ qn qn Wt j ƒ  } | j d k rÑ | j d }	 | j }
 n | j }	 | j d }
 t |  d i | d	 6| d
 6| d 6| d 6|
 d 6|	 d 6ƒ S(   Nt   approveds   -createdi
   ia   i{   i   i   s*   admin/cpd/submissions/cpd-submissions.htmlt   recent_cpd_submissionst   pending_cpd_submissionst   letterst   final_letterst   current_yeart   future_year(   t   CPDSubmissionR   t   filtert   Truet   order_byt   Falset   mapt   chrt   ranget   Membert   get_letter_activet   appendt   datet   todayt   montht   yearR    (   R   R*   R+   R,   t   memberR-   t   lettert   statusR<   R/   R.   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   cpd_submissionsŠ   s     "		c   
   	   C   s†  d d  l  } t j j d t d d d d ƒ } d d d	 d
 d d g } t d d ƒ } d | d <| j | ƒ } | j | ƒ x| D]ý } | r| j ƒ  r¨ | j	 ƒ  } n d } | j g  | j
 | | j j | j ƒ  | j ƒ  | g D] }	 t |	 ƒ j d ƒ ^ qâ ƒ q | j ƒ  r"| j ƒ  } n d } | j g  | j
 | | j j | j ƒ  | j ƒ  | g D] }	 t |	 ƒ j d ƒ ^ q\ƒ q W| S(   NiÿÿÿÿR)   t   member_statust   currentt	   user_typeR?   s	   Member Idt   Names   Email Addresst   Statuss   Points Gaineds   AVS Points Gainedt   content_types   text/csvs1   attachment; filename=cpd_submissions_download.csvs   Content-Dispositions   Not AVSs   utf-8(   t   csvR8   R   R1   R2   R   t   writert   writerowt   get_avst   get_future_avs_pointst   membership_numbert   usert   emailt   get_future_cpd_statust   get_future_cpd_pointst   unicodet   encodet   get_current_avs_pointst   get_current_cpd_statust   get_current_cpd_points(
   R   t   futureRI   t   memberst   fieldst   responseRJ   R?   t   avst   s(    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   cpd_submissions_download´   s$    !
YZc      	   C   s¹   t  t t d d ƒ ƒ } t ƒ  } g  } x3 | D]+ } | j | ƒ } | r. | j | ƒ q. q. Wt j j d | d d d t d d ƒ j	 d	 ƒ } t
 |  d
 i | d 6| d 6| d 6| d 6ƒ S(   Nia   i{   t   user__last_name__istartswithRE   R?   R)   RC   RD   t   user__last_names,   admin/cpd/submissions/member_list_alpha.htmlR,   R-   RY   R@   (   R5   R6   R7   R8   R9   R:   R   R1   R2   R3   R    (   R   R@   R,   R?   R-   t   prim_letterRA   RY   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   alpha_members×   s    	0s   admin_users.can_access_membersc         C   s/  t  t t d d ƒ ƒ } t ƒ  } g  } x3 | D]+ } | j | ƒ } | r. | j | ƒ q. q. W|  j r|  j j d ƒ rü |  j d } t j j	 t
 d |  j d ƒ t
 d |  j d ƒ Bd d d t ƒj d	 ƒ } t |  d
 i | d 6| d 6| d 6| d 6ƒ St j |  d ƒ n t j |  d ƒ t t d ƒ ƒ S(   Nia   i{   t   member_namet   given_name__icontainst   surname__icontainsRE   R?   R)   t   surnames&   admin/cpd/submissions/search-name.htmlR,   R-   RY   s   Could not search for memberst   admin_cpd_submissions(   R5   R6   R7   R8   R9   R:   R   t   getR   R1   R	   R2   R3   R    R   R   R   R   (   R   R,   R?   R-   R@   RA   Rc   RY   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   search_nameè   s    		K,c         C   s¤   t  t d | ƒ} t j j d | d t ƒ j d ƒ } t j j d | d t ƒ j d ƒ } t j j d | ƒ j d ƒ } t	 |  d i | d 6| d 6| d 6| d	 6ƒ S(
   NR   R?   R)   s   -dates	   -end_dates&   admin/cpd/submissions/view-member.htmlt   pending_submissionsRB   t	   cpd_years(
   R   R8   R0   R   R1   R4   R3   R2   t   CPDSubmissionYearR    (   R   t	   member_idR?   Rj   RB   Rk   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   view_member  s
    $$c         C   s­  t  ƒ  } t ƒ  } t d d ƒ } | g } |  j rˆt  |  j |  j ƒ } t |  j ƒ } | j ƒ  rˆ| j ƒ  rˆ| j d t ƒ } t | _	 | j ƒ  t |  j d | ƒ} | j ƒ  |  j j
 d ƒ } g  } d } x® | D]¦ } |  j j d | ƒ rdt |  j |  j d d | ƒ} | j d t ƒ }	 | |	 _ | |	 _ |	 j ƒ  t d d | ƒ }
 | j |
 ƒ n  | d } t j |  d	 ƒ qØ W| j j d
 k rËt | j j d
 d ƒ } t | j j d d d ƒ } n4 t | j j d d
 d ƒ } t | j j d d ƒ } y( t j j d | j d | d | ƒ } Wn< t j k
 ret d | j d | d | ƒ } | j ƒ  n Xt t d d | j j g ƒƒ Sn  t |  d i | d 6| d 6| d 6ƒ S(   Nt   prefixt   file_1t   commitR   t   filesi   s   file_%s-files   file_%ss   Submission Createdi	   i   i   R?   t
   start_datet   end_datet   admin_cpd_view_membert   argss)   admin/cpd/submissions/add-submission.htmlt   submission_formt   reflection_formt
   file_forms(   t   AdminAddCPDSubmissionFormt   AdminCPDReflectionFormt   CPDSubmissionEvidenceFormR   t   FILESR   R   R4   R2   R)   t   getlistRh   t
   submissiont   orderR:   R   R   R;   R=   R>   Rl   R   R?   t   DoesNotExistR   R   R   R    (   R   Rw   Rx   t	   file_formRy   R   t   posted_filest
   file_ordert   posted_filet   submitted_filet   new_file_formRs   Rt   R>   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   add_submission  sN    					

		

("c      	   C   s™  t  t d | ƒ} t d | ƒ } t d | ƒ } | j ƒ  } g  } x7 | D]/ } t d | d d | j ƒ } | j | ƒ qI W|  j rct |  j |  j	 d | ƒ} t |  j d | ƒ} | j
 ƒ  rc| j ƒ  | j ƒ  |  j j d ƒ }	 g  } g  }
 d } x|	 D]} yv t j j d | d | ƒ } t |  j |  j	 d | d d | ƒ} | j d	 t ƒ } | | _ | j ƒ  |
 j | ƒ Wnz t j k
 rø|  j	 j d
 | ƒ rùt |  j |  j	 d d | ƒ} | j d	 t ƒ } | | _ | | _ | j ƒ  qùn X| d } q Wx' | D] } | |
 k r| j ƒ  qqWt j |  d ƒ t t d d | j j g ƒƒ Sn  t |  d i | d 6| j d 6| d 6| d 6| d 6ƒ S(   NR   R   Ro   s   file_%sRr   i   R   R€   Rq   s   file_%s-files   Submission UpdatedRu   Rv   s*   admin/cpd/submissions/edit-submission.htmlR?   Rw   Rx   Ry   (   R   R0   t   AdminCPDSubmissionFormR{   t   get_evidenceR|   R€   R:   R   R}   R   R   R~   t   CPDSubmissionEvidenceR   Rh   R4   R   R   R   R   R   R   R   R?   R   R    (   R   t   submission_idR   Rw   Rx   t   submission_evidenceRy   t   evidenceR‚   Rƒ   t   current_filesR„   R…   t   existing_fileR†   t   file(    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   edit_submissionI  sP    	

%	
		"s    admin_users.can_access_abstractsc         C   s)   t  t d | ƒ} t |  d i | d 6ƒ S(   NR   s*   admin/cpd/submissions/view-reflection.htmlR   (   R   R0   R    (   R   RŒ   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   view_reflection†  s    c         C   si   t  t d | ƒ} y | j ƒ  t j |  d ƒ Wn t j |  d ƒ n Xt t d d | j j	 g ƒƒ S(   NR   s   CPD Submission Deleteds   Could not delete CPD SubmissionRu   Rv   (
   R   R0   R   R   R   R   R   R   R?   R   (   R   RŒ   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   delete_submission  s    
c         C   s	  t  t d | d t ƒ} t d | ƒ } |  j rá t |  j d | ƒ} | j ƒ  rÎ yA | j ƒ  t | _ | j ƒ  t	 j
 |  | ƒ t j |  d ƒ Wn t | _ | j ƒ  n Xt t d d | j j g ƒƒ St j |  d ƒ n  t |  d i | d	 6| j d
 6| d 6ƒ S(   NR   R)   R   s   Submission has been approvedRu   Rv   s   Could not approve submissions-   admin/cpd/submissions/approve-submission.htmlR   R?   t   approval_form(   R   R0   R4   t   CPDSubmissionApprovalFormR   R   R   R2   R)   t   emailst   cpd_record_approvedR   R   R   R   R?   R   R   R    (   R   RŒ   R   R•   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   approve_submissionš  s"    	
	
	s   admun_users.can_access_cpdc         C   s   t  t d | d t ƒ} y. t j |  | ƒ | j ƒ  t j |  d ƒ Wn t j |  d ƒ n Xt	 t
 d d | j j g ƒƒ S(   NR   R)   s   Submission has been rejecteds   Could not reject submissionRu   Rv   (   R   R0   R4   R—   t   cpd_record_rejectedR   R   R   R   R   R   R?   R   (   R   RŒ   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   reject_submissionº  s    
c         C   sK   d d l  m } t t d | ƒ} | j rA | |  | j d t ƒSt ‚ d  S(   Niÿÿÿÿ(   t
   serve_fileR   t   save_as(   t   filetransfers.apiRœ   R   R0   RŽ   R2   R   (   R   RŒ   Rœ   R   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   download_evidenceÉ  s
    	c         C   sK   d d l  m } t t d | ƒ} | j rA | |  | j d t ƒSt ‚ d  S(   Niÿÿÿÿ(   Rœ   R   R   (   Rž   Rœ   R   R‹   R‘   R2   R   (   R   t   evidence_idRœ   RŽ   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   download_submission_evidenceÔ  s
    	c         C   sô  d d  l  } | d k r! t ‚ n  t j ƒ  } g  } g  } t j j d t d d d d ƒ } x-| D]%} | j j	 d k ra | j
 ƒ  } | d	 k ro| j ƒ  }	 | j d
 d ƒ }
 |
 j d d d d ƒ t t j j t j d |	 j ƒ d ƒ } t j d i |	 d 6| d 6| d 6ƒ } |
 j | | ƒ | j ƒ  d |	 j |	 _ |	 j ƒ  t j |  |	 ƒ | j i | d 6ƒ q†| j i | d 6ƒ qa qa Wt j d i | d 6| d 6ƒ } d d l m } | d d | d d d g ƒ t  |  d i | d 6| d 6ƒ S(   Niÿÿÿÿt   dhsuhdushfuhwuriehu8R)   RC   RD   RE   R?   s   daniel@capabilitycloud.co.ukt   okt   calmdigitalt    dc33e7c4525620565185d0a00d90b8f0t   50s'   cpd/certificates/cpd_certificate_%s.pdft   wbs    members/cpd/cpd-certificate.htmlt   cpd_yearR<   s   admin/cpd/cpd-report.htmlt   cpd_memberst
   ne_members(   t	   send_mails
   cpd-reports   SVTGBI - CPD Reports   admin@svtgbi.org.uk(!   t   pdfcrowdR   R;   R<   R8   R   R1   R2   RO   RP   RV   t   get_latest_cpd_yeart   Clientt   setPageMarginst   opent   ost   patht   joint   settingst
   MEDIA_ROOTR   t   loadert   render_to_stringt   convertHtmlt   closet   certificateR   R—   t   cpd_certificate_generatedR:   t   modules.notifications.modelsR«   R    (   R   t   keyR¬   R<   R©   Rª   RY   R?   RA   R>   t   clientt   output_filet   htmlt   contentR«   (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   process_submissionsß  s6    	!('

 (,   t   django.shortcutsR    R   t   django.httpR   R   R   t   django.core.urlresolversR   t   django.contribR   t   django.template.defaultfiltersR   t   django.contrib.auth.decoratorsR   t   django.db.modelsR	   t   modules.core.functionst   formst   modelst   modules.members.modelsR—   R   R   R   R    R#   R'   R(   RB   R4   R^   Rb   Ri   Rn   Rˆ   R’   R“   R”   R™   R›   RŸ   R¡   RÂ   (    (    (    s4   /var/www/svtgbi.org/svtgbi/modules/cpd/adminviews.pyt   <module>   sB   



*	"
<= 