o
    Keh2                     @   s  d dl mZmZmZmZmZmZmZmZ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mZmZmZmZ ddlmZmZmZmZmZmZmZmZ d dl m!Z! d d	l"m#Z# d d
l$m%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/ G dd de+Z0G dd dejZ1G dd dejZ2G dd deZ3G dd deZ4G dd deZ5G dd deZ6G dd de'j7Z8G d d! d!e'j7Z9G d"d# d#eZ:G d$d% d%eZ;G d&d' d'eZ<G d(d) d)eZ=G d*d+ d+eZ>G d,d- d-eZ?G d.d/ d/eZ@G d0d1 d1eZAG d2d3 d3eZBG d4d5 d5eZCG d6d7 d7eZDG d8d9 d9eZEG d:d; d;eZFG d<d= d=eZGG d>d? d?eZH	 	 	 dS )@    )Form	ModelFormChoiceFieldMultipleChoiceField
EmailField	CharFieldBooleanFieldIntegerFieldURLInputModelChoiceFieldModelMultipleChoiceField)forms)
ForeignKey)models)HiddenInputRadioSelect	TextInputTextareaSelectMultiple   )NodeEdgeMap_descNodeCommentUserProfileFriend	ContactUsVote)User)apps)settingsN)	mark_safe)
SignupForm)ReCaptchaField)ReCaptchaV2Checkboxc                       s2   e Zd ZeedddddZ fddZ  ZS )MyCustomSignupFormlightnormalz
data-themez	data-sizeattrswidgetc                    s   t t| |}|S )N)superr%   save)selfrequestuser	__class__ #/var/www/ideatree/ideatree/forms.pyr.      s   zMyCustomSignupForm.save)__name__
__module____qualname__r#   r$   captchar.   __classcell__r4   r4   r2   r5   r%      s    r%   c                       s$   e Zd Ze Z fddZ  ZS )FileUploadFormc                    s&   t t| j|i | d| jd _d S )NFfile_source)r-   r;   __init__fieldsrequiredr/   argskwargsr2   r4   r5   r=   '   s   zFileUploadForm.__init__)r6   r7   r8   r   	FileFieldr<   r=   r:   r4   r4   r2   r5   r;   $   s    r;   c                   @   sB   e Zd ZejdddejddiddZejddZejddZ	d	S )
ConfirmCancelAccountFormd   TclasscancelAccountConfirmationr)   )
max_lengthstripr?   r,   Fr?   N)
r6   r7   r8   r   r   r   confirmcancelr   deleteDataInNonOwnedMapsiHaveReadAndUnderstoodr4   r4   r4   r5   rD   -   s    rD   c                   @   s4   e Zd ZejejdddddZG dd dZdS )	MyAccountForm
borderNonereadonly)rF   rP   r)   r+   c                   @      e Zd ZeZg dZdS )zMyAccountForm.Meta)
first_name	last_nameemailN)r6   r7   r8   r   modelr>   r4   r4   r4   r5   Meta6       rV   N)r6   r7   r8   r   r   r   rT   rV   r4   r4   r4   r5   rN   3   s    rN   c                   @      e Zd ZG dd dZdS )MapSettingsFormc                   @      e Zd ZeZdgZdS )zMapSettingsForm.MetamapsettingsN)r6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV   <       
rV   Nr6   r7   r8   rV   r4   r4   r4   r5   rY   ;       rY   c                   @   rX   )FriendDefineFormc                   @   rZ   )zFriendDefineForm.MetafriendN)r6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV   B   r\   rV   Nr]   r4   r4   r4   r5   r_   A   r^   r_   c                   @   rX   )VoteFormc                   @      e Zd ZeZddgZdS )zVoteForm.MetanodevoteN)r6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV   H   rW   rV   Nr]   r4   r4   r4   r5   ra   G   r^   ra   c                   @   sr   e Zd ZejddeddZejddZejddZejddZ	ejd	e
j d
 dZG dd dZdd ZdS )FriendTable	friend_idF accessor	orderableverbose_nameusernameri   rR   rS   mapnamez Name)ri   rk   c                   @   (   e Zd ZeZdZg ZddiZg dZdS )zFriendTable.MetazNo shares found.rF   paleblue)rl   rR   rS   rn   removeFromMapN)	r6   r7   r8   r   rU   
empty_textr>   r*   sequencer4   r4   r4   r5   rV   T       rV   c                 C   sF   |d rt dtj  d t|d  d t|d  d S td)Nmapidz <button title='Stop sharing the zBwith this person' class='removeFromMap' type='button' data-userid=rf   z data-mapid=z>UnShare</button>;Internal Error: Missing required mapId value in table form.)r!   r    WHAT_A_GRAPH_IS_CALLED
capitalizestr	Exceptionr/   valuerecordr4   r4   r5   render_removeFromMap[   s   6z FriendTable.render_removeFromMapN)r6   r7   r8   tablesColumnr!   rq   rl   rR   rS   r    rw   rx   rn   rV   r~   r4   r4   r4   r5   re   M   s    re   c                   @   sZ   e Zd ZejddeddZejddZejddZejddZ	G d	d
 d
Z
dd ZdS )UserSelectTableidFzShare Current Maprh   rl   rm   rR   rS   c                   @   ro   )zUserSelectTable.MetazNo one found.rF   rp   )rl   rR   rS   addToMapN)	r6   r7   r8   r   rU   rr   r>   r*   rs   r4   r4   r4   r5   rV   m   rt   rV   c                 C   s$   |j rtdt|j  d S td)Nz%<button class='addToMap' data-userid=z>Yes</button>rv   )r   r!   ry   rz   r{   r4   r4   r5   render_addToMapt   s   zUserSelectTable.render_addToMapN)r6   r7   r8   r   r   r!   r   rl   rR   rS   rV   r   r4   r4   r4   r5   r   h   s    r   c                       sj   e Zd ZededdiddZeedddd	d
dddZe	ddZ
dddd fdd
Zdd Z  ZS )NotifyUsersFormNstylezpadding:0 5pxr)   )querysetr,   word-wrap:break-word	emailbodycenteredMargins   7   )r   namerF   rowscolsr+   FrJ   T)clearemailbody_requiredr   c                   st   | dr
|d}| dr|d}tt| j|i | d| jd _|r-|| jd _|r5|| jd _|| _	d S )Nr   r   rg   usersr   )
getpopr-   r   r=   r>   labelr?   r   r   )r/   r   r   r   rA   rB   r2   r4   r5   r=      s   




zNotifyUsersForm.__init__c                 C   s   | j d }| jr
d}|S )Nr   rg   )cleaned_datar   )r/   r   r4   r4   r5   clean_emailbody   s   
zNotifyUsersForm.clean_emailbody)r6   r7   r8   r   r   r   r   r   r   r   r   r=   r   r:   r4   r4   r2   r5   r   |   s    
r   c                       s`   e Zd ZdZeddZededddddd	Ze	e
 ed
dZ fddZ fddZ  ZS )SearchAllUsersForm))rl   Username)rR   z
First Name)rS   z	Last NameFrJ   
searchTerm
      r   size	maxlengthr)   )r?   r,   rl   )r,   choicesinitialc                    s,   t t| j|i | d| jd jjd< d S )NzTheir email addressrT   placeholder)r-   r   r=   r>   r,   r*   r@   r2   r4   r5   r=      s   zSearchAllUsersForm.__init__c                    s8   t t|  }|d}|d}|s|std|S )NrT   r   zAt least one entry is required.)r-   r   cleanr   r   ValidationError)r/   r   rT   r   r2   r4   r5   r      s   


zSearchAllUsersForm.clean)r6   r7   r8   SEARCH_USERS_CHOICESr   rT   r   r   r   r   r   
searchTyper=   r   r:   r4   r4   r2   r5   r      s    
r   c                   @   rX   )ValidateNodeFormc                   @   rQ   )zValidateNodeForm.Meta)r   descriptionurlN)r6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV      s    rV   Nr]   r4   r4   r4   r5   r      r^   r   c                   @   rX   )ValidateEdgeFormc                   @   rZ   )zValidateEdgeForm.Metar   Nr6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV      r\   rV   Nr]   r4   r4   r4   r5   r      r^   r   c                   @   rX   )ValidateNodeCommentc                   @   rZ   )zValidateNodeComment.MetacommentN)r6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV      r\   rV   Nr]   r4   r4   r4   r5   r      r^   r   c                   @   rX   )ValidateMapFormc                   @   rb   )zValidateMapForm.Metarn   r   Nr6   r7   r8   r   rU   r>   r4   r4   r4   r5   rV      rW   rV   Nr]   r4   r4   r4   r5   r      r^   r   c                   @   s0   e Zd ZeedddddZG dd dZdS )	ContactUsFormr&   r'   r(   r)   r+   c                   @   s*   e Zd ZeZddgZdeddidiZdS )zContactUsForm.MetarT   messager   zcTo help us help you:

Are you using Chrome, Firefox, Safari, other?

On Windows, Mac, Linux, other?r)   N)r6   r7   r8   r   rU   r>   r   widgetsr4   r4   r4   r5   rV      s    rV   N)r6   r7   r8   r#   r$   r9   rV   r4   r4   r4   r5   r      s    r   c                   @   s$   e Zd ZeedejdZdd ZdS )OpenMapFormF)null	on_deletec                 C   s(   | j d }tjj|d std|S )NmapId)pkzMap id does not exist.)r   r   objectsfilterexistsr   )r/   r   r4   r4   r5   clean_id   s   
zOpenMapForm.clean_idN)	r6   r7   r8   r   r   r   PROTECTr   r   r4   r4   r4   r5   r      s    r   c                   @   rX   )AlterEdgeFormc                   @   rQ   )zAlterEdgeForm.Meta)r   costr   colorofmapownerNr   r4   r4   r4   r5   rV      rW   rV   Nr]   r4   r4   r4   r5   r      r^   r   c                   @   rX   )AlterMapFormc                   @   rQ   )zAlterMapForm.Meta)	rn   r   bgcolororientationdefaultNodeStyledefaultNodeShapedefaultNodeHeightdefaultNodeWidthdefaultNodeFillcolorNr   r4   r4   r4   r5   rV      rW   rV   Nr]   r4   r4   r4   r5   r      r^   r   c                   @   rX   )DeleteMapFormc                   @   s   e Zd ZeZg ZdS )zDeleteMapForm.MetaNr   r4   r4   r4   r5   rV      s    rV   Nr]   r4   r4   r4   r5   r      r^   r   c                       s*   e Zd ZG dd dZ fddZ  ZS )
NewMapFormc                   @   sN   e Zd ZeZddgZeejd dej	ej	ddeddd	ej
d
ddZdS )zNewMapForm.Metarn   r   z namer   )r   r   r   r   r)   Description2      )r   r   r   r   )rn   r   N)r6   r7   r8   r   rU   r>   r   r    rw   LABELSHOWLEN
MAPDESCLENr   r4   r4   r4   r5   rV      s    
rV   c                    s2   t  j|i | d| jd _dd }dd }d S )NTrn   c                 S   "   | j dr| j dd S d S )Nrn   rg   r   r   rI   r/   r4   r4   r5   clean_mapname      z*NewMapForm.__init__.<locals>.clean_mapnamec                 S   r   Nr   rg   r   r   r4   r4   r5   clean_description  r   z.NewMapForm.__init__.<locals>.clean_description)r-   r=   r>   r?   )r/   rA   rB   r   r   r2   r4   r5   r=      s   zNewMapForm.__init__r6   r7   r8   rV   r=   r:   r4   r4   r2   r5   r      s    r   c                       s0   e Zd ZG dd dZdd fdd
Z  ZS )NewTunnelNodeFormc                   @   s.   e Zd ZeZg dZe e e e dZdS )zNewTunnelNodeForm.Meta)nodetypexposyposr   tunnelfarendmap)r   r   r   r   N)r6   r7   r8   r   rU   r>   r   r   r4   r4   r4   r5   rV     s    
rV   N)r   c                   s.   t t| j|i | t|dd d| jd< d S )Nrg   )r   empty_labelr   )r-   r   r=   r   r>   )r/   r   rA   rB   r2   r4   r5   r=     s   zNewTunnelNodeForm.__init__r   r4   r4   r2   r5   r     s    
r   c                   @   s2   e Zd ZG dd dZdd Zdd Zdd Zd	S )
NewNodeFormc                   @   sd   e Zd ZeZg dZeddejdde	ddej
dde eddejdde e e d	Zd
S )zNewNodeForm.Meta)r   r   r   r   r   r   r   r   (   )r   r   r   r)   nodeurlr   r   )r   r   r   r   r   r   r   N)r6   r7   r8   r   rU   r>   r   r    NODE_LABEL_LENGTHr
   NODE_URLFIELD_LENGTHr   NODE_DESCRIPTION_LENGTHr   r4   r4   r4   r5   rV     s    
rV   c                 C   r   )Nr   rg   r   r   r4   r4   r5   clean_label,     zNewNodeForm.clean_labelc                 C   s6   | j dr| j d }|dsd| }|S d S )Nr   httpzhttp://)r   r   rI   
startswith)r/   r   r4   r4   r5   	clean_url3  s   
zNewNodeForm.clean_urlc                 C   r   r   r   r   r4   r4   r5   r   =  r   zNewNodeForm.clean_descriptionN)r6   r7   r8   rV   r   r   r   r4   r4   r4   r5   r     s
    
r   c                   @   s"   e Zd ZG dd dZdd ZdS )NodeCommentFormc                   @   s6   e Zd ZeZdgZdeddddddiZddiZd	S )
zNodeCommentForm.Metar   r      -   zNew comment)r   r   r   r   r)   rg   N)	r6   r7   r8   r   rU   r>   r   r   labelsr4   r4   r4   r5   rV   E  s
    rV   c                 C   r   )Nr   rg   r   r   r4   r4   r5   clean_commentL  r   zNodeCommentForm.clean_commentN)r6   r7   r8   rV   r   r4   r4   r4   r5   r   D  s    r   )Idjango.formsr   r   r   r   r   r   r   r	   r
   r   r   djangor   django.db.modelsr   	django.dbr   django.forms.widgetsr   r   r   r   r   r   r   r   r   r   r   r   r   django.contrib.auth.modelsr   django.appsr   django.confr    django_tables2r   django.utils.safestringr!   allauth.account.formsr"   captcha.fieldsr#   captcha.widgetsr$   r%   r;   rD   rN   rY   r_   ra   Tablere   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r4   r4   r5   <module>   sT   4 (

	
'