ó
Bïcc           @   sø   d  d l  Z  d  d l Z 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
 d  d l m Z d  d l m Z m Z m Z m Z m Z m Z e d „  ƒ Z d „  Z d „  Z d	 „  Z d
 „  Z e d „  ƒ Z d S(   iÿÿÿÿN(   t   settings(   t   HttpResponse(   t   csrf_exempt(   t   generate_filenamet   python_output_with_inputt   c_output_with_inputt   cpp_output_with_inputt   java_output_with_inputt   javascript_output_with_inputc         C   s8  |  j  d k rt j |  j ƒ } y¯ | j d ƒ } | j d ƒ } | d k r] t | ƒ } nW | d k rx t | ƒ } n< | d k r“ t | ƒ } n! | d k r® t | ƒ } n d } i d	 d
 6d d 6| d 6} Wqt	 k
 r } i d d
 6d d 6d d 6} qXn i d d
 6d d 6d d 6} t
 t j | ƒ d d ƒS(   Nt   POSTt   languaget   codet   pythont   cs   c++t   javas   Program language not supported.t   Successt   statusiÈ   t   status_codet   messaget   Failurei‘  s   Data issue, Please try again.i•  s   Method Not Allowed.t   content_types   application/javascript(   t   methodt   jsont   loadst   bodyt   gett   python_outputt   c_outputt
   cpp_outputt   java_outputt	   ExceptionR   t   dumps(   t   requestt   dataR
   R   t   outputt   responset   ex(    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyt   execute_programs   s(    c         C   s  t  ƒ  d } yà t j | } t | d ƒ } | j |  ƒ | j ƒ  t j d | g d t j d t j	 d t
 ƒ} d } xX | j ƒ  d  k	 rž | j j ƒ  } Pn  t j d ƒ | d } | d	 k ry | j ƒ  qy qy y t j | ƒ Wn n XWn d
 } n Xt | ƒ S(   Ns   .pyt   wt   python3t   stdoutt   stderrt   shelli    i   i   t    (   R   R    t   FILE_EXECUTING_PATHt   opent   writet   closet
   subprocesst   Popent   PIPEt   STDOUTt   Falset   pollt   NoneR(   t   readt   timet   sleept   killt   ost   removet   str(   R   t	   file_namet   ft   proct   nR"   (    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyR   *   s.    
-

c         C   s!  d } t  ƒ  d } zÙ yÅ t j | } t | d ƒ } | j |  ƒ | j ƒ  t j d | g d t j d t j	 d t
 ƒ} d } xX | j ƒ  d  k	 r§ | j j ƒ  } Pn  t j d	 ƒ | d	 } | d
 k r‚ | j ƒ  q‚ q‚ Wn d } n XWd  y t j | ƒ Wn t k
 r} n XXt | ƒ S(   NR+   s   .javaR&   R   R(   R)   R*   i    i   i   (   R   R    R,   R-   R.   R/   R0   R1   R2   R3   R4   R5   R6   R(   R7   R8   R9   R:   R;   R<   R   R=   (   R   R"   R>   R?   R@   RA   R$   (    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyR   E   s2     
-
c   	      C   s&  yt  ƒ  } t j | } t | d d ƒ } | j |  ƒ | j ƒ  t j d d | | d g d t j d t j	 ƒ} | j
 ƒ  d } d | j ƒ  k r=| d	 } yŠ t j | d t j d t j	 ƒ} d } x\ | j ƒ  d  k	 rö | | j j ƒ  7} Pn  t j d
 ƒ | d
 7} | d k rÍ | j ƒ  qÍ qÍ WqÎ| } qÎXn‘ | rL| } n‚ t j | d t j d t j	 ƒ} d } xX | j ƒ  d  k	 r›| j j ƒ  } Pn  t j d
 ƒ | d
 7} | d k rv| j ƒ  qvqvy3 t j | d ƒ t j | ƒ t j | d ƒ Wn n XWn d } n Xt | ƒ S(   Ns   .cR&   t   gccs   -oR(   R)   i    t   warnings   
i   i   s   .exeR+   (   R   R    R,   R-   R.   R/   R0   R1   R2   R3   t   communicatet   lowerR5   R6   R(   R7   R8   R9   R:   R;   R<   R=   (	   R   R>   R?   t   complt   compl_outputR"   t   outRA   t   n1(    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyR   b   sZ    	
%
!
	!

c   	      C   s&  yt  ƒ  } t j | } t | d d ƒ } | j |  ƒ | j ƒ  t j d d | | d g d t j d t j	 ƒ} | j
 ƒ  d } d | j ƒ  k r=| d	 } yŠ t j | d t j d t j	 ƒ} d } x\ | j ƒ  d  k	 rö | | j j ƒ  7} Pn  t j d
 ƒ | d
 7} | d k rÍ | j ƒ  qÍ qÍ WqÎ| } qÎXn‘ | rL| } n‚ t j | d t j d t j	 ƒ} d } xX | j ƒ  d  k	 r›| j j ƒ  } Pn  t j d
 ƒ | d
 7} | d k rv| j ƒ  qvqvy3 t j | d ƒ t j | ƒ t j | d ƒ Wn n XWn d } n Xt | ƒ S(   Ns   .cppR&   s   g++s   -oR(   R)   i    RC   s   
i   i   s   .exeR+   (   R   R    R,   R-   R.   R/   R0   R1   R2   R3   RD   RE   R5   R6   R(   R7   R8   R9   R:   R;   R<   R=   (	   R   R>   R?   RF   RG   R"   RH   RA   RI   (    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyR   •   sZ    	
%
!
	!

c      	   C   sÍ  |  j  d k r™t j |  j ƒ } yD| j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d	 ƒ }	 d
 d g }
 d
 d g } d } | d k r5t | | | ƒ } | rù | rù t | | | ƒ }
 n d
 d g }
 | r&|	 r&t | | |	 ƒ } q3d
 d g } nþ| d k r°t | | | ƒ } | rt| rtt | | | ƒ }
 n d
 d g }
 | r¡|	 r¡t | | |	 ƒ } q3d
 d g } nƒ| d k r+t | | | ƒ } | rï| rït | | | ƒ }
 n d
 d g }
 | r|	 rt | | |	 ƒ } q3d
 d g } n| d k r¦t | | | ƒ } | rj| rjt | | | ƒ }
 n d
 d g }
 | r—|	 r—t | | |	 ƒ } q3d
 d g } n | d k r!t	 | | | ƒ } | rå| råt	 | | | ƒ }
 n d
 d g }
 | r|	 rt	 | | |	 ƒ } q3d
 d g } n d
 d g } d } g  } d t
 | ƒ j d d ƒ d t
 | d ƒ d t
 | ƒ d } | d
 r| d 7} n
 | d 7} | j | d
 ƒ | r0| r0| d t
 | ƒ j d d ƒ d t
 |
 d ƒ d t
 | ƒ d 7} |
 d
 r| d 7} n
 | d 7} | j |
 d
 ƒ n  | rµ|	 rµ| d t
 | ƒ j d d ƒ d t
 | d ƒ d t
 |	 ƒ d 7} | d
 r—| d 7} n
 | d 7} | j | d
 ƒ n  | rýt | ƒ rôy t | ƒ t | ƒ } Wqúd
 } qúXqd
 } n d
 } t j d d | ƒ } | r<i d d  6d! d" 6| d# 6} n( i d d  6d! d" 6| d$ 6t
 | ƒ d# 6} Wq´t k
 r•} i d% d  6d& d" 6d' d# 6} q´Xn i d% d  6d( d" 6d) d# 6} t t j | ƒ d* d+ ƒS(,   NR	   R
   R   t   std_in1t   std_out1t   std_in2t   std_out2t   std_in3t   std_out3i    R+   R   R   s   c++R   t
   javascripts   Program language not supported.s   Test Case 1: 
 Input: s   
t   &s
   
 Output: i   s   
 Expected Output: s   Test Case Status: Passed

s   Test Case Status: Failed

s   Test Case 2: 
 Input: s   Test Case 3: 
 Input: s    & s   File ".+.py",s   File "file.py",R   R   iÈ   R   R   t   scoreR   i‘  s   Data issue, Please try again.i•  s   Method Not Allowed.R   s   application/javascript(   R   R   R   R   R   R   R   R   R   R   R=   t   replacet   appendt   allt   sumt   lent   ret   subR   R   R   (   R    R!   R
   R   RJ   RK   RL   RM   RN   RO   t   output2t   output3R   R"   t   final_score_listt   final_outputt	   avg_scoreR#   R$   (    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyt   evaluate_codeÈ   s¶    @

D

D

	,	(   R;   t   randomRX   t   stringR0   R8   R   t   django.confR    t   django.httpR   t   django.views.decorators.csrfR   t   program_app.helpersR   R   R   R   R   R   R%   R   R   R   R   R_   (    (    (    s5   /var/www/hyrathon/ProgramExecute/program_app/views.pyt   <module>   s    .			3	3