o
    -$@g                     @   s8   d dl mZ d dlmZ d dlmZ dd Zdd ZdS )	    )render)HttpResponse)BytesIOc                 C   sZ   | d}d}t dD ]}|t|| td d|  7 }q
d|d  }|dkr+|d8 }|S )z6Calculate the 7th digit checksum for a 6-digit number.06dr      0      
   )rangeord)numberbufvj r   %/var/www/binnumgen/generator/views.pycalculate_checksum   s   "r   c           
      C   sb  | j dkr| jd}| jd}z0t|}t|}tt|dks*tt|dkr3t| dddiW S ||kr@t| dddiW S W n tyR   t| ddd	i Y S w d
t|dd  dt|dd  dt|dd  }| d}t }t	||d D ]}t
|}|d | }||dd  q|d t|dd}	d| d|	d< |	S t| dS )zRender the form for user input.POSTstartendr   z	form.htmlerrorz'Start and end numbers must be 6 digits.z:Start number must be less than or equal to the end number.z%Start and end must be valid integers.Series_N   __To_z.txt   r
   07d
r   z
text/plain)content_typezattachment; filename=""zContent-Disposition)methodr   getintlenstrr   
ValueErrorr   r   r   writeencodeseekr   )
requestr   r   prefixfilenamebufferichecksumfull_numberresponser   r   r   generate_form   s4   
 :


r2   N)django.shortcutsr   django.httpr   ior   r   r2   r   r   r   r   <module>   s
    