
    h/A                        d dl mZmZ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mZ d dlmZ d dlmZmZ d d	lZd
dl d
dl d
dlmZ d
dl d Zd Zd Zd Zed        Zed        Zed        Z ed        Z!ed        Z"ed        Z#ed        Z$ed        Z%ed        Z&ed        Z'ed        Z(ed        Z)ed        Z*ed        Z+ed        Z,ed         Z-ed!        Z.y	)"    )renderredirectget_object_or_404)login_required)messages)JsonResponseHttpResponse)csrf_exempt)QSum)timezone)datetime	timedeltaN   )*)PlatformCookieFormc                     t         j                  j                  d      }t        j                  j	                         }||d}t        | d|      S )u   首页T	is_active)servicescompanyzportal/index.html)ServiceobjectsfilterCompanyInfofirstr   )requestr   r   contexts       $/var/www/tech_portal/portal/views.pyindexr       sL    %%%5H!!'')GG '.88    c                     t         j                  j                         }t        j                  j	                  d      }||d}t        | d|      S )u   关于我们Tr   )r   r   zportal/about.html)r   r   r   r   r   r   )r   r   r   r   s       r   aboutr#      sL    !!'')G%%%5HG '.88r!   c                 d    t         j                  j                  d      }d|i}t        | d|      S )u   服务项目Tr   r   zportal/services.html)r   r   r   r   )r   r   r   s      r   r   r   &   s7    %%%5HHG '17;;r!   c                 @   t         j                  j                         }| j                  dk(  rVt	        | j
                        }|j                         r;|j                          t        j                  | d       t        d      S t	               }||d}t        | d|      S )u   联系我们POSTu<   您的留言已成功提交，我们会尽快与您联系！contact)r   formzportal/contact.html)r   r   r   methodContactFormr&   is_validsaver   successr   r   )r   r   r(   r   s       r   r'   r'   /   s    !!'')G~~7<<(==?IIKW&deI&&} G '0'::r!   c                    t         j                  j                         t        j                  j                         t        j                  j                         t
        j                  j                  d      j                         t        j                  j                  d      dd t
        j                  j                  d      dd d}t        | d|      S )u   后台管理首页F)is_read-created_atN   )products	customers
quotationsr   recent_quotationsrecent_messageszadmin/dashboard.html)	Productr   countCustomer	QuotationContactMessager   order_byr   )r   statss     r   admin_dashboardr>   C   s    
 OO))+%%++-''--/"**11%1@FFH&..77FrJ)11::=I"1ME '1599r!   c                    | j                   j                  d      }| j                   j                  dd      }t        j                  j	                  d      }|r|j	                  |      }|r5|j	                  t        |      t        |      z  t        |	      z        }t        j                  j                         }|D ]1  }|j                  j	                  d
      j                         |_
        3 ||||d}t        | d|      S )u   价格管理categorysearch Tr   )category_idname__icontainsbrand__icontainsmodel__icontainsr+   )r2   
categoriesselected_categoryrA   zadmin/price_list.html)GETgetr7   r   r   r   ProductCategoryallprice_recordsr   latest_pricer   )r   rC   rA   r2   rK   productr   s          r   
price_listrT   R   s     ++//*-K[[__Xr*F%%%5H??{?;??f%v&'v&'
 !((,,.J  S&44;;T;JPPRS  (	G '2G<<r!   c           
      >   | j                   dk(  rG	 ddlm} | j                  j	                  d      }| j                  j                  dd      }|st        ddd	      S d
}d
}g }|D ]  }	 t        j                  j                  |      } ||j                  |j                  xs d|      }	|	d
kD  rRt        j                  j                  |||	| j                        }
|dz  }|j                  |j                  |	dd       n%|dz  }|j                  |j                  d
ddd        d| d}|d
kD  r	|d| dz  }t        |d
kD  rdnd||||d      S t        ddd	      S # t        j                  $ r" |dz  }|j                  d| d
ddd       Y 3t         $ rJ}|dz  }|j                  dt#               v rj                  nd| d
dt%        |      d       Y d}~d}~ww xY w# t         $ r$}t        ddt%        |       d	      cY d}~S d}~ww xY w)u!   获取价格（手动或自动）r&   r   )get_product_pricezproduct_ids[]platformjderroru!   请选择要获取价格的产品)statusmessager   idrB   )product_nameproduct_modelrW   )rS   rW   price
created_byr-   )rS   r`   rZ   failedu   未找到价格信息)rS   r`   rZ   rY   zID:u   产品不存在rS   Nu   完成价格获取：成功u   个u	   ，失败warning)rZ   r[   resultsupdated_countfailed_countu   获取价格失败: u   请求方法错误)r)   scrapersrV   r&   getlistrN   r   r7   r   namemodelPriceRecordcreateuserappendDoesNotExist	Exceptionlocalsstr)r   rV   product_idsrW   re   rf   rd   
product_idrS   r`   price_recorder[   s                r   fetch_pricesrw   s   sw    ~~N	a3!,,..?K||''
D9H#wCf$ghhMLG) 1
0%oo11Z1@G .%,\\&-mm&9r!)E qy'2':':'A'A$+%-"''.||	 (B ( &*'.||%*&/(  %)'.||%&&.%<	( 71h 4M?#FGaY|nC88'4q'8)i""!. ,!   77KLMMC ++  A%LNN%(#5!""*!2	$  !  A%LNN3<3H7<<PST^S_N`!""*!$Q	$  ,  	a7AUVYZ[V\U]?^ _``	as[   AG/ G/ +B?E&*-G/ &1G,G/ G,"?G'!G/ 'G,,G/ /	H8HHHc                    | j                   dk(  rP| j                  j                  d      }t        j                  | j                  j                  dd            }t        t        |      }t        j                  j                  || j                  j                  dd      | j                        }d	}|D ]n  }t        j                  j                  |d
         }t        j                  j                  |||d   |d   |j                  dd	            }||j                  z  }p ||_        |j                          t!        d|j"                  |j$                  d      S t        j                  j'                  d      }	t        j                  j)                         }
t*        j                  j)                         }|	|
|d}t-        | d|      S )u   订单组合/报价单创建r&   customer_iditemsz[]r\   titlerB   )customerr{   ra   r   rt   quantityr`   discount)	quotationrS   r}   
unit_pricediscount_rater-   )rZ   quotation_idquotation_noTr   )r2   r3   rK   zadmin/order_builder.html)r)   r&   rN   jsonloadsr   r9   r:   r   rl   rm   r7   QuotationItemsubtotaltotal_amountr,   r   r]   r   r   rP   rO   r   )r   ry   
items_datar|   r   totalitemrS   quotation_itemr2   r3   rK   r   s                r   order_builderr      s    ~~ll&&}5ZZ 0 0$ ?@
$X+>%%,,,,""7B/|| - 
	  		-Doo))T,-?)@G*2299#j)="hhz15 : N ^,,,E		- "'	%LL%22
  	 %%%5H  $$&I ((,,.J  G
 '5w??r!   c                     t        t        |      }t        j                  j	                         }||d}t        | d|      S )u   报价单预览r\   )r   r   zadmin/quotation_preview.html)r   r:   r   r   r   r   )r   r   r   r   r   s        r   quotation_previewr      sE     ")=I!!'')G G '97CCr!   c                     ddl m} t        t        |      } ||      }t	        |j                         d      }d|j                   d|d<   |S )	u   生成PDF报价单r   )generate_quotation_pdfr\   zapplication/pdf)content_typezattachment; filename="z.pdf"zContent-Disposition)utilsr   r   r:   r	   getvaluer   )r   r   r   r   
pdf_bufferresponses         r   generate_pdfr   	  sT     .!)=I'	2JJ//1@QRH(>y?U?U>VV[&\H"#Or!   c                 *   t        t        |      }|j                  j                  d      j	                         }|rGt        |j                        |j                  |j                  j                  d      d}t        |      S ddd}t        |      S )	u   API：获取产品最新价格r\   TrJ   z%Y-%m-%d %H:%M)r`   rW   
fetched_atr   u   暂无价格信息)r`   r[   )r   r7   rQ   r   r   floatr`   rW   r   strftimer   r   rt   rS   rR   datas        r   api_get_product_pricer     s      J7G((///>DDFL<--.$--&11::;KL
  ';<r!   c                    t         j                  j                  d      }g }|D ]  }|j                  j                  d      j	                         }|j                  |j                  |j                  |j                  |j                  |j                  r|j                  j                  nd|rt        |j                        nd|j                  d        t        |d      S )	u   API：获取所有产品列表Tr   rJ   rB           )r]   ri   brandrj   r@   r`   unitFsafe)r7   r   r   rQ   r   rn   r]   ri   r   rj   r@   r   r`   r   r   )r   r2   product_listrS   rR   s        r   api_get_productsr   )  s     %%%5HL 
,,33T3BHHJ**LL]]]]181A1A((--r2>U<--.CLL
 	
 511r!   c           	          t         j                  j                         }g }|D ]K  }|j                  |j                  |j
                  |j                  |j                  |j                  d       M t        |d      S )u   API：获取所有客户列表)r]   ri   contact_personphoneemailFr   )
r9   r   rP   rn   r]   ri   r   r   r   r   )r   r3   customer_listr|   s       r   api_get_customersr   >  ss       $$&IM ++MM&55^^^^
 	 E22r!   c           
         | j                   j                  dd      }t        j                  j	                  d      }|r5|j	                  t        |      t        |      z  t        |      z        }g }|D ]  }|j                  j	                  d      j                         }|j                  |j                  |j                  |j                  |j                  |rt        |j                        nd	d
        t        |d      S )u   API：搜索产品qrB   Tr   rD   rF   rH   rJ   r   )r]   ri   r   rj   r`   Fr   )rM   rN   r7   r   r   r   rQ   r   rn   r]   ri   r   rj   r   r`   r   )r   queryr2   r   rS   rR   s         r   api_search_productsr   P  s     KKOOC$E%%%5H??e$u%&u%&
 L ,,33T3BHHJ**LL]]]]2>U<--.C
 	 511r!   c                     t        t        |      }|j                  |j                  |j                  |j
                  |j                  |j                  |j                  d}t        |      S )u   API：获取客户详情r\   )r]   ri   r   r   r   addresscompany_info)
r   r9   r]   ri   r   r   r   r   r   r   )r   ry   r|   r   s       r   api_get_customer_detailr   k  s]     !k:H kk"11## --D r!   c           
         t        t        |      }|j                  j                  d      j	                         }|j
                  |j                  |j                  |j                  |j                  r|j                  j                  nd|j                  |j                  |rt        |j                        nd|r|j                  ndd	}t        |      S )u   API：获取产品详情r\   TrJ   rB   r   )	r]   ri   r   rj   r@   specificationsr   r`   rW   )r   r7   rQ   r   r   r]   ri   r   rj   r@   r   r   r   r`   rW   r   r   s        r   api_get_product_detailr   }  s      J7G((///>DDFL jj-4-=-=G$$))2!00.:|))*-9L))r
D r!   c           	          t        t        | j                  j                  dd            t        | j                  j                  dd            t        | j                        | j                  j                  d      S )u   调试CSRF token	csrftokenrB   CSRF_COOKIE)
csrf_token	meta_csrfheadersrm   )	r   rr   COOKIESrN   METAdictr   rm   username)r   s    r   
debug_csrfr     sa     '//--k2>?))-<=(%%	  r!   c                    t         j                  j                  | j                        j	                  d      }| j
                  dk(  ryt        | j                        }|j                         r^|j                  d      }| j                  |_
        |j                          t        j                  | d       t        d      S t               }||d}t        | d	|      S )
u   Cookie管理页面)ra   z-updated_atr&   F)commitu   Cookie添加成功！cookie_management)cookiesr(   zadmin/cookie_management.html)PlatformCookier   r   rm   r<   r)   r   r&   r+   r,   ra   r   r-   r   r   )r   r   r(   cookier   s        r   r   r     s     $$++w||+DMMm\G~~!',,/==?YYeY,F 'FKKMW&=>/00!# G '97CCr!   c                 .   	 t         j                  j                  || j                        }|j	                          t        j                  | d       t        d      S # t         j                  $ r# t        j                  | d       Y t        d      S w xY w)u   删除Cookier]   ra   u   Cookie删除成功！u   Cookie不存在或无权删除r   )
r   r   rN   rm   deleter   r-   ro   rY   r   )r   	cookie_idr   s      r   delete_cookier     s    B''++yW\\+R"9: '(( && Bw @A'((Bs   AA )BBc                 z   	 t         j                  j                  || j                        }|j                   |_        |j                          |j                  rdnd}t        j                  | d| d       t        d      S # t         j                  $ r# t        j                  | d       Y t        d      S w xY w)u   启用/禁用Cookier   u   启用u   禁用u	   Cookie已u   ！u   Cookie不存在或无权操作r   )r   r   rN   rm   r   r,   r   r-   ro   rY   r   )r   r   r   rZ   s       r   toggle_cookier     s    B''++yW\\+R%///#--8IfXS"9: '(( && Bw @A'((Bs   A7B )B:9B:c           	         | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }t        j                  j	                         j                  d      }|r5|j                  t        |      t        |      z  t        |	      z        }|r|j                  |
      }|r|j                  |      }|r|j                  |      }|j                         |j                  d
      j                         |j                  d
      j                         |j                  d
      j                         |j                  t        d            d   xs dd}||||||t        j                  d}t        | d|      S )u   已生成订单管理rA   rB   rZ   	date_fromdate_tor0   )quotation_no__icontains)customer__name__icontains)title__icontains)rZ   )created_at__date__gte)created_at__date__ltependingapprovedrejectedr   total_amount__sumr   )total_countpending_countapproved_countrejected_countr   )r4   r=   rA   status_filterr   r   status_choiceszadmin/generated_orders.html)rM   rN   r:   r   rP   r<   r   r   r8   	aggregater   STATUS_CHOICESr   )r   rA   r   r   r   r4   r=   r   s           r   generated_ordersr     s    [[__Xr*FKKOOHb1MR0Ikkooi,G ""&&(11-@J &&f-/0v&'

 &&m&<
&&Y&G
&&W&E
 "'')#**)*<BBD$++:+>DDF$++:+>DDF",,S-@ABUV[Z[E !&#22G '8'BBr!   )/django.shortcutsr   r   r   django.contrib.auth.decoratorsr   django.contribr   django.httpr   r	   django.views.decorators.csrfr
   django.db.modelsr   r   django.utilsr   r   r   r   modelsformscookie_formsr   r   r    r#   r   r'   r>   rT   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   <module>r      s   @ @ 9 # 2 4 # ! (    , 99<;( : : = =@ SN SNl .@ .@b 	D 	D 
 
  " 2 2( 3 3" 2 24  "  (   D D, 	) 	) ) ) .C .Cr!   