U
    Ff)                     @   s  d dl mZ 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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mZ d dlmZ d dlm Z m!Z!m"Z"m#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 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Z0G d"d# d#eZ1d$S )%    )	FlaskForm)	FormField
EmailFieldStringFieldTextAreaField	FieldListBooleanFieldHiddenFieldSubmitFieldIntegerFieldPasswordFieldSelectFieldDecimalField)DataRequiredLengthNumberRangeEmailEqualToValidationErrorOptionalInputRequired)r   )	FileFieldFileAllowed)
monthrange)UserRoomHotelAgencyc                   @   s<   e Zd Zede gdZede gdZedZ	e
dZdS )	LoginFormzEmail Address
validatorsPasswordzRemember MezSign InN)__name__
__module____qualname__r   r   emailr   passwordr   remember_mer
   submit r)   r)   6/home/www/findmeahotel.co.uk/times_travel/app/forms.pyr   	   s   r   c                   @   sn   e Zd Zede gdZede e gdZede gdZ	ede e
dgdZedZdd	 Zd
d ZdS )RegistrationFormUsernamer   r   r!   Repeat Passwordr&   Registerc                 C   s(   t jj|jd }|d k	r$tdd S )N)usernamez Please use a different username.r   query	filter_bydatafirstr   )selfr/   userr)   r)   r*   validate_username   s    z"RegistrationForm.validate_usernamec                 C   s(   t jj|jd }|d k	r$tdd S )Nr%   z%Please use a different email address.r0   )r5   r%   r6   r)   r)   r*   validate_email   s    zRegistrationForm.validate_emailN)r"   r#   r$   r   r   r/   r   r%   r   r&   r   Z	password2r
   r(   r7   r9   r)   r)   r)   r*   r+      s    r+   c                   @   sh   e Zd Zede edddgdZede e gdZ	e
de edd	gdZed
g edZedZdS )UserUpdateFormr,      @   minmaxr   r   zNew Password   r>   RolechoicescoerceUpdateN)r"   r#   r$   r   r   r   r/   r   r   r%   r   r   r&   r   strroler
   r(   r)   r)   r)   r*   r:   !   s
   r:   c                   @   sx   e Zd Zede edddgdZede e gdZ	e
de edd	gdZed
g edZede gdZedZdS )UserCreateFormr,   r;   r<   r=   r   r   r!   r@   rA   rB   rC   z	Agency IDZCreateN)r"   r#   r$   r   r   r   r/   r   r   r%   r   r&   r   rG   rH   r	   	agency_idr
   r(   r)   r)   r)   r*   rI   (   s   rI   c                   @   s  e Zd Zede gdZede e gdZede gdZe	de gdZ
ede eddgd	d
Zede eddgd	d
Zede eddgd	d
Ze	de eddgdd
Zede gdZede e gdZede eddgdZede edgdZedZdd ZdS )
AgencyFormzAgency Namer   zAgency EmailDesignation	TelephoneCredit Limitr   rA           r    defaultUsed Credit	Paid BackAllowed AccountszAdmin UsernamezAdmin Emailr!   r@   r-   admin_passwordr.   c                 C   s(   t jj|jd }|d k	r$tdd S )Nr8   z3Please use a different email address for the admin.r0   )r5   admin_emailr6   r)   r)   r*   validate_admin_emailE   s    zAgencyForm.validate_admin_emailN)r"   r#   r$   r   r   namer   r%   designationr   	telephoner   r   r   credit_limitused_credit	paid_backallowed_accountsZadmin_usernamerV   r   r   rU   r   Zadmin_password2r
   r(   rW   r)   r)   r)   r*   rK   0   s   rK   c                   @   s   e Zd Zede eddgdZede e gdZ	ede
 eddgdZede
 gdZede
 ed	d
gddZede
 ed	d
gddZede
 ed	d
gddZede
 ed	d
gd	dZedZdS )UpdateAgencyFormName   r?   r   r   rL   rM   rN   r   rA   rO   rP   rR   rS   rT   rF   N)r"   r#   r$   r   r   r   rX   r   r   r%   r   rY   r   rZ   r   r   r[   r\   r]   r^   r
   r(   r)   r)   r)   r*   r_   J   s   r_   c                   @   sl   e 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dS )MonthAvailabilityFormJanuaryFebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberN)r"   r#   r$   r   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   r)   r)   r)   r*   rc   U   s   rc   c                   @   s   e Zd Zede eddgdZede eddgdZe	ddd	ge
 gd
ZeeZededddggdZe	dg ee
 gdZedZdS )	HotelFormr`   d   rb   r   Description   LocationZMakkahzMakkah, Saudi ArabiaZMadinahzMadinah, Saudi Arabia)rD   r    zHotel ImagejpgpngjpegVendorrD   rE   r    ZSubmitN)r"   r#   r$   r   r   r   rX   r   descriptionr   r   locationWTFormFieldrc   availabilityr   r   imageint	vendor_idr
   r(   r)   r)   r)   r*   rp   c   s   rp   c                   @   s   e Zd Zede gdZede gdZedddge	 gddid	Z
eeZed
edddggdZedg ee	 gdZedZdS )UpdateHotelFormr`   r   rr   rt   ru   rv   size   )rD   r    Z	render_kwzUpdate Hotel Imagerw   rx   ry   rz   r{   rF   N)r"   r#   r$   r   r   rX   r   r|   r   r   r}   r~   rc   r   r   r   r   r   r   r
   r(   r)   r)   r)   r*   r   l   s   r   c                   @   s0   e Zd Zeede eddgdZdd ZdS )	RatesFormRater   rA   r   c                 C   s"   |  D ]\}}| j| qd S )N)itemsratesZappend_entry)r5   Z	rate_dictiZrater)   r)   r*   populate_ratesx   s    zRatesForm.populate_ratesN)	r"   r#   r$   r   r   r   r   r   r   r)   r)   r)   r*   r   u   s   r   c                   @   s   e Zd Zede gdZede gdZedZ	ede gdZ
edZedZedZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZed	Zd
S )RoomFormHotel IDr   	Room TypeAvailabilityRooms Available	InclusionApproved byNoteszCreate RoomN)r"   r#   r$   r   r   hotel_idr   typer   r   rooms_available	inclusionapprovalnotesr   r   january_ratesfebruary_ratesmarch_ratesapril_rates	may_rates
june_rates
july_ratesaugust_ratesseptember_ratesoctober_ratesnovember_ratesdecember_ratesr
   r(   r)   r)   r)   r*   r   |   s(   r   c                   @   s  e Zd Zede gdZede gdZedZ	ede gdZ
edZedZedZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZeed	e ed
dgddddZedZdS )UpdateRoomFormr   r   r   r   r   r   r   r   r   r   rA      )Zmin_entriesZmax_entries      zUpdate RoomN)r"   r#   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r(   r)   r)   r)   r*   r      s(   """"""""""""r   c                   @   s   e Zd Zede eddgdZede e eddgdZede	 eddgdZ
ede	 gdZed	e	 ed
dgdZedZdS )VendorCreateFormVendor Namerq   rb   r   Vendor Emailx   Contact PersonPhone NumberBank Detailsrs   zCreate VendorNr"   r#   r$   r   r   r   rX   r   r%   r   contact_personr   phone_numberbank_detailsr
   r(   r)   r)   r)   r*   r      s   r   c                   @   s   e Zd Zede eddgdZede e eddgdZede	 eddgdZ
ede	 gdZed	e	 ed
dgdZedZdS )VendorUpdateFormr   rq   rb   r   r   r   r   r   r   rs   zUpdate VendorNr   r)   r)   r)   r*   r      s   r   N)2Z	flask_wtfr   Zwtformsr   r   r   r   r   r   r	   r
   r   r   r   r   Zwtforms.validatorsr   r   r   r   r   r   r   r   Zwtforms.fieldsr~   Zflask_wtf.filer   r   calendarr   
app.modelsr   r   r   r   r   r+   r:   rI   rK   r_   rc   rp   r   r   r   r   r   r   r)   r)   r)   r*   <module>   s(   8(		