
    oif0                     r   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m	Z	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mZm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mZm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) d dl*m+Z+ dZ,d Z-d Z.eed               Z/ed        Z0ed        Z1ddZ2ddZ3y)    N)BytesIO)TemporaryDirectory)Image	ImageDraw	ImageFont)datetime)login_required)IntegrityErrortransaction)JsonResponseHttpResponse)redirect)csrf_exempt)require_POST)A4letter)ImageReader)canvas)api_view)	CustomersCompanyUserBatch)Categoryzhttps://rescuescanner.in/c                 d    t         j                  j                  |       j                         dk(  S )N)qr_coder   )r   objectsfiltercount)new_ids    :D:\Rescue Scanner\qr_onkar\qr_manager\views\qr_genrator.pyis_id_unique_in_databaser!   ,   s*    ##F#399;q@@    c                 >   | g	 t         j                  j                         j                         }t        j                  j                  |      j                         }|j
                  } |Y	 t         j                  j                         }t        j                  j                  |      j                         }|j                  }t        j                  t        j                  z   t               }t        |      |k  rNdj                  fdt        |       D              }t!        |      r|j#                  |       t        |      |k  rNt%        |      S # t        $ r}t        |       d} Y d }~	d }~ww xY w# t        $ r}t        |       d}Y d }~d }~ww xY w)N)user       c              3   H   K   | ]  }t        j                          y w)N)secretschoice).0_
characterss     r    	<genexpr>z&generate_unique_ids.<locals>.<genexpr>G   s     K
3Ks   ")r   r   r   firstUserSettingslength	Exceptionprintr   stringascii_lettersdigitssetlenjoinranger!   addlist)r1   r   r$   settingse
unique_idsr   r-   s          @r    generate_unique_idsr@   0   sK   ~	&&--/557D#++222=CCEH__F
 }	&&--/D#++222=CCEHNNE
 %%5JJ
j/E
!KU6]KK#F+NN6" j/E
!
 
+  	!HF	  	!HE	s1   A&E .AE< 	E9!E44E9<	FFFc                 L   	 t        | j                  j                  dd            }t        | j                  j                  dd            }| j                  j                  dd       }|r t        j                  j                  |      }| j                  j                  dd      }| j                  j                  d	d
      }| j                  j                  dd      }	 t        ||      }| j                  }
	 t        j                         5  t        j                  j                  |
|||      }g }|D ]R  }	 t        |z   }t!        j"                  dt         j$                  j&                  dd      }|j)                  |       |j+                  d       |j-                  ||      }|j/                  d      }t1        j2                  |      }t5        j6                         }|j9                  d||      }|j:                  |d   z
  dz  }|j<                  |d   z
  dz
  }|j?                  ||f|||        tA               }|jC                  |d!"       |jE                  d#       |jG                  ||jI                         f       U 	 d d d        	 tL        j                  jO                  D cg c]  \  }}tM        |(       c}}       |dk(  rtQ        |      }|S |d)k(  rtS        |      }S # t
        $ r t        ddid      cY S w xY w# t        $ r%}	t        ddt        |	       id      cY d }	~	S d }	~	ww xY w# t        $ r3}	t        dd$| d%t        |	       id      cY d }	~	c cd d d        S d }	~	ww xY w# 1 sw Y   xY w# tJ        $ r%}	t        dd&t        |	       id      cY d }	~	S d }	~	wt        $ r%}	t        dd't        |	       id      cY d }	~	S d }	~	ww xY wc c}}w # t        $ r%}	t        dd*t        |	       id      cY d }	~	S d }	~	ww xY w)+Nr1      r   r&   category)pkcolorblackbgcolortransparentdownload_optionpdferrorzInvalid length or count valuei  statuszError generating unique IDs:   )
created_byr   rC   rE   rG      
   versionerror_correctionbox_sizeborderTfit
fill_color
back_colorRGBr   r   font         r_   fillPNGformatr   Error creating QR code for : zDatabase error: zUnexpected error: )r   batchzipError creating PDF or ZIP: )*intPOSTgetr   r   
ValueErrorr   r@   r2   strr$   r   atomicr   createBASE_URLqrcodeQRCode	constantsERROR_CORRECT_Ladd_datamake
make_imageconvertr   Drawr   load_defaulttextbboxwidthheighttextr   saveseekappendgetvaluer
   r   bulk_createcreate_pdf_with_qr_codescreate_zip_with_qr_codes)requestr1   r   category_idrC   rE   rG   rI   unique_hash_codesr>   r$   	new_batch
list_of_qrunique_hash_codeurlqrimgdrawr_   	text_bboxxybufferedcoder,   download_responses                             r    generate_qr_coder   N   s   TW\\%%h23GLL$$Wa01ll&&z48''++{+;H  '2,,""9m<!,,**+<eD
]/> <<D0R! %	4,,ET\di5< - >I J$5  4 4"%55C !)/)9)9)I)I!# 	B KK$GGG%--5W-MC++e,C$>>#.D$113D $f6FT RIYq\1a7A

Yq\1A5AIIq!f&6TIN&yHHHXeH4MM!$%%'79J9J9L&MN9 4%	4b
[%%DN'
9@qId)4'
 	 e# 8Y O !  % 8Y O  G  TW&EFsSST
  ]W(Ec!fX&NOX[\\]P ! 4'4OP`Oaacdghidjck2l(m/24 4I%	4 %	4F4G%	4 %	4X  PW(8Q&AB3OO RW(:3q6(&CDSQQR'
  [W(CCF8&LMVYZZ[s   CK8 L 8N -N:EMNN O5 3O/

O5 %O5 8LL	ML?9M?M	NM>-N.N4	N >NNNN 	O,N;5O,;O,O'!O,'O,/O5 5	P#>PP#P#c                    |sd}g }t         j                  j                  |      }t        j                  j	                  |      }|D cg c]  }|j
                   }}|D ]p  }	 t        |z   }	t        j                  dt        j                  j                  dd      }
|
j                  |	       |
j                  d       |
j                  |j                  |j                  	      }|j!                  d
      }t#        j$                  |      }t'        j(                         }|j+                  d||      }|j,                  |d   z
  dz  }|j.                  |d   z
  dz
  }|j1                  ||f|||j                         t3               }|j5                  |d       |j7                  d       |j9                  ||j;                         f       s 	 |dk(  rtE        ||      }|S |dk(  rtG        ||      }S c c}w # t<        $ r6}t?        |d       tA        dd| dtC        |       id      cY d }~c S d }~ww xY w# t<        $ r%}tA        ddtC        |       id      cY d }~S d }~ww xY w)NrJ   id)rj   rP   rQ   rR   TrW   rY   r\   r]   r^   r`   ra   rb   rc   re   rf   r   rK   rh   ri   rN   rL   rk   rl   )$r   r   ro   r   r   r   rt   ru   rv   rw   rx   ry   rz   r{   rE   rG   r|   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r2   r3   r   rq   r   r   )r   batch_idrI   r   rj   all_customerscustomerr   r   r   r   r   r   r_   r   r   r   r   r>   r   s                       r    download_batchr      sg    JMM*E%%,,5,9M:GHh))HH-  ,	,--C!'!1!1!A!A	B KKGGG--5;;5==-QC++e$C>>#&D))+Df.>TJIYq\)a/A

Yq\)A-AIIq!f.TILyHHHXeH,MM!/1B1B1DEF7 ,D[e# 8U K !  % 8U K  Q I<  	,!W,GHXGYY[\_`a\b[c*d e'*, ,	,  [W(CCF8&LMVYZZ[sI   G='E,HI *I 	I)H<4I<I	I2I-'I2-I2c                    |sd}g }t         j                  j                  |      }t        |      dk7  r|d   j                  }nt        ddid      S |D cg c]  }|j                   }}	 |D ]p  }	 t        |z   }	t        j                  dt        j                  j                  d	d
      }
|
j                  |	       |
j                  d       |
j                  |j                  |j                         }|j#                  d      }t%        j&                  |      }t)        j*                         }|j-                  d||      }|j.                  |d   z
  dz  }|j0                  |d   z
  dz
  }|j3                  ||f|||j                         t5               }|j7                  |d       |j9                  d       |j;                  ||j=                         f       s 	 	 |dk(  rtE        ||d|d   j                        }|S |dk(  rtG        ||d|d   j                        }S c c}w # t>        $ r6}tA        |d       t        dd| dtC        |       id      cY d }~c S d }~ww xY w# t>        $ r4}tA        |d       t        dd dtC        |       id      cY d }~S d }~ww xY w# t>        $ r%}t        ddtC        |       id      cY d }~S d }~ww xY w)NrJ   r   r   rK   zError downloading QR coderN   rL   rP   rQ   rR   TrW   rY   r\   r]   r^   r`   ra   rb   rc   re   rf   rh   ri   
individualrk   rl   )$r   r   r   r8   rj   r   r   rt   ru   rv   rw   rx   ry   rz   r{   rE   rG   r|   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r2   r3   rq   r   r   )r   cust_idrI   r   r   rj   r   r   r   r   r   r   r   r_   r   r   r   r   r>   r   s                       r    download_individual_qrr      s    J%%,,,8M
=Qa &&W(ACCPP:GHh))HH%( 1  	00!11]]%+%5%5%E%E	 C D!mmu{{u}}mUkk%( ~~c* --/ MM&2BMN	YY1-!3JJ1-1		1a&"2EKK	P"9%0a !!#3X5F5F5H"IJ7 	0L[e# 8U<XefgXhXpXp q !  % 8U<XefgXhXpXp q  [ I>  0a!#W0KL\K]]_`cde`f_g.h$i+.0 00  (aW(CDTCUUWX[\]X^W_&`a#&( 	((  [W(CCF8&LMVYZZ[sy   H*.I1 5E,H/!I1 &!J1 !J1 /	I.8)I)!I."I1 )I..I1 1	J.:)J)#J.)J.1	K:KKKc                    t        d      }|dk(  r
d| d|d<   nd|j                   d|d<   t        j                  |t              }t        \  }}t        |       D ]h  \  }\  }	}
|dkD  r|j                          t        |
      }t        |      }|j                         \  }}|j                  |||z
  d	z  ||z
  d	z  ||
       j |j                          |S )Nzapplication/pdfcontent_typer   attachment; filename="qr_codes_z.pdf"Content-Disposition)pagesizer   r`   )r   r   )r   batch_numberr   Canvasr   	enumerateshowPager   r   getSize	drawImager   )r   r   	called_byr   responsecr   r   ir   img_datar   r   	img_width
img_heights                  r    r   r     s    ):;H,,KB4u*U&',KILbLbKcch*i&'h,AME6+4Z+@ 	q''hq5JJL8$(# #	: 	
C%)+q06J3F!2KS\eop	q FFHOr"   c                 h   t        j                         }t        j                  |dt        j                        5 }| D ]  \  }}| d}|j                  ||        	 d d d        |j                  d       t        |d      }	|dk(  rd| d|	d	<   |	S d|j                   d|	d	<   |	S # 1 sw Y   LxY w)
Nwz.pngr   zapplication/zipr   r   r   z.zip"r   )	ior   zipfileZipFileZIP_DEFLATEDwritestrr   r   r   )
r   r   r   r   
zip_bufferzipfr   r   img_filenamer   s
             r    r   r   0  s    J	S'*>*>	? 24*4 	2&h./t4LMM,1	22 OOA J5FGH,,KB4u*U&' O -LILbLbKcch*i&'O!2 2s   "B((B1)NN)4r   osr)   r   r   tempfiler   PILr   r   r   r   ru   randomr4   django.contrib.auth.decoratorsr	   	django.dbr
   r   django.httpr   r   django.shortcutsr   django.views.decorators.csrfr   django.views.decorators.httpr   reportlab.lib.pagesizesr   r   reportlab.lib.utilsr   reportlab.pdfgenr   rest_framework.decoratorsr   accounts.modelsr   r   r   qr_manager.modelsr   rt   r!   r@   r   r   r   r   r    r"   r    <module>r      s    	 	    ' + +     9 1 2 % 4 5 . + # . 9 9 & 'A< P[  P[f 1[ 1[h :[ :[z4r"   