
    h-                     .   S SK Jr  S SKrS SKJrJr  S SKJr   " S S\5      r " S S\5      r	 " S	 S
\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      rg)    )modelsN)AbstractBaseUserBaseUserManager)settingsc                   (    \ rS rSrSS jrSS jrSrg)UserManager   Nc                     U(       d  [        S5      eU(       d  [        S5      eU R                  U5      nU R                  " SXS.UD6nUR                  U5        UR	                  U R
                  S9  U$ )NzThe Username field is requiredzThe Email field is required)usernameemail)using )
ValueErrornormalize_emailmodelset_passwordsave_db)selfr   r   passwordextra_fieldsusers         8D:\Anime\Ugyen\janka_web_project\janka_web_app\models.pycreate_userUserManager.create_user	   sk    =>>:;;$$U+zzI8ILI(#			!    c                 N    UR                  SS5        U R                  " XU40 UD6$ )N	user_roleadmin)
setdefaultr   )r   r   r   r   r   s        r   create_superuserUserManager.create_superuser   s*    W5J\JJr   r   N)__name__
__module____qualname____firstlineno__r   r!   __static_attributes__r   r   r   r   r      s    
Kr   r   c                      \ rS rSr/ SQr\R                  " S\R                  SS9r	\R                  " SS9r\R                  " SSS	9r\R                  " 5       r\R                  " S
SSS9r\R                   " SSS9r\R                  " S\SS9r\R&                  " SS9r\R*                  " SSS9r\R.                  " SS9r\R.                  " SS9r\" 5       rSrS/rS rSrg)User   )r   Adminr   r*   ownerOwnerTF)primary_keydefaulteditable   
max_lengthd   r7   unique   r7   blanknullr=   r>   
   r   r7   choicesr3   auto_now_addzprofile_pics/zprofile_pics/default.gif)	upload_tor3   r3   r   r   c                     U R                   $ r#   )r   r   s    r   __str__User.__str__3   s    }}r   r   N) r$   r%   r&   r'   ROLE_CHOICESr   	UUIDFielduuiduuid4id	CharField	full_namer   
EmailFieldr   phone	TextFieldaddressr   DateTimeField
created_at
ImageFieldprofile_pictureBooleanField	is_activeis_staffr   objectsUSERNAME_FIELDREQUIRED_FIELDSrI   r(   r   r   r   r*   r*      s    L
 
		dDJJ	OB  C0I3t<HE$TBET5G  BfUI%%48J''/KefO ##D1I""51HmGNiOr   r*   c                      \ rS rSr/ SQr/ SQr\R                  " SS9r\R                  " 5       r
\R                  " S\SS9r\R                  " S\S	S9r\R                  " S
S9r\R                  " SSSSS9r\R                   " SS9r\R                   " SS9r\R&                  " \\R*                  SSSS9r\R                  " SSSSS9r " S S5      rS rSrg)Notification6   ))
user_eventz
User Event)system_alertzSystem Alert)generalGeneral)r.   r,   r/   r5   r6   2   re   rA   r   FrF   r   T)r7   r3   r>   r=   rC   )auto_nownotifications_received)	on_deleter>   r=   related_namei  z)URL to go to when notification is clicked)r7   r>   r=   	help_textc                       \ rS rSrS/rSrSrg)Notification.MetaQ   -created_atnotificationsr   N)r$   r%   r&   r'   orderingdb_tabler(   r   r   r   Metarn   Q   s    !?"r   rt   c                     U R                    SU R                  R                  5        SU R                  R                   3$ )N    → z | By: )titlerole_visibilityupper
created_byr   rH   s    r   rI   Notification.__str__U   s8    **U4#7#7#=#=#?"@H`H`Gabbr   r   N)r$   r%   r&   r'   CATEGORY_CHOICESrK   r   rP   rw   rT   messagecategoryrx   rZ   	is_viewedrz   rV   rW   
updated_at
ForeignKeyr*   CASCADErecipient_user
action_urlrt   rI   r(   r   r   r   ra   ra   6   s    
L ,E G27GQZ[H&&"lT[\O##E2I!!RdRVWJ%%48J%%t4J&&tv~~DX\  lD  EN!!=	J# #cr   ra   c                   z    \ rS rSr\R
                  " SS9r\R                  " SS9r\R                  " SS9r
S rSrg	)
	DzongkhagY   Tr2   r8   r6   rC   c                     U R                   $ r#   namerH   s    r   rI   Dzongkhag.__str__^       yyr   r   N)r$   r%   r&   r'   r   	AutoFielddzo_idrP   r   rV   rW   rI   r(   r   r   r   r   r   Y   s7    $/Fs+D%%48Jr   r   c                       \ rS rSr\R
                  " SS9r\R                  " SS9r\R                  " \
\R                  SS9r\R                  " SS9rS	 rS
rg)Gewogb   Tr   r8   r6   gewogsrj   rk   rC   c                 N    U R                    SU R                  R                    S3$ N ())r   	dzongkhagrH   s    r   rI   Gewog.__str__h   s$    ))Bt~~223155r   r   N)r$   r%   r&   r'   r   r   gewog_idrP   r   r   r   r   r   rV   rW   rI   r(   r   r   r   r   r   b   sP    D1Hs+D!!)v~~T\]I%%48J6r   r   c                       \ rS rSr\R
                  " SS9r\R                  " SS9r\R                  " \
\R                  SS9r\R                  " \\R                  SS9r\R                  " SS9rS	 rS
rg)Villagel   Tr   r8   r6   villagesr   rC   c                 z    U R                    SU R                  R                    SU R                  R                    3$ )N - z, )r   gewogr   rH   s    r   rI   Village.__str__r   s1    ))C

04>>3F3F2GHHr   r   N)r$   r%   r&   r'   r   r   
village_idrP   r   r   r   r   r   r   r   rV   rW   rI   r(   r   r   r   r   r   l   si    !!d3Js+D!!)v~~T^_Iev~~JWE%%48JIr   r   c                      \ rS rSr\R
                  " SS9r\R
                  " SS9r\R                  " SSS9r	\R                  " \\R                  SSS9r\R                  " \\R                  SSS9r\R                  " \\R                  SSS9r\R
                  " SS9r\R&                  " SSS9r\R*                  " S	SSS
S9r\R*                  " S	SSS
S9r\R*                  " S	SSS
S9r\R*                  " S	SSS
S9r\R4                  " SS9r\R4                  " SS9r\R
                  " SSSS9r\R<                  " SS9rSr \R
                  " S\ SS9r!\R                  " \"\RF                  SSSS9r$S r%S r&Sr'g)Hotelu   r5   r6   Tr?   hotels)rj   r>   rk      zhotels/hotels/default_hotel.jpgrE   r=   r>   r3   r   rF   r<   rC   	)singlezSingle Room)doublezDouble Room)twinz	Twin Room)triplezTriple Room)quadz	Quad Room)queenz
Queen Room)kingz	King Room)suiteSuite)	penthouse	PenthouseActiverA   rj   rk   r>   r=   c                     U R                   U R                  U R                  U R                  /nU Vs/ s H   o"(       d  M  [	        US5      (       d  M  UPM"     sn$ s  snf )Nurl)
home_imagehotel_image1hotel_image2hotel_image3hasattr)r   imagesimgs      r   get_gallery_imagesHotel.get_gallery_images   sK    //4#4#4d6G6GIZIZ[%Eve1DvEEEs   
AAAc                     U R                   $ r#   r   rH   s    r   rI   Hotel.__str__   r   r   r   N)(r$   r%   r&   r'   r   rP   r   locationrT   descriptionr   r   SET_NULLr   r   r   r   villagecontact_numberrR   r   rX   r   r   r   r   PositiveIntegerFieldtotal_roomsavailable_roomshotel_ownerrV   rW   room_choices
room_typesr*   r   r   r   rI   r(   r   r   r   r   r   u   s   s+D3/H""D9K!!)vT`hiIevTX`aE6??\deG%%4NDt4E""YdWqrJ$$y4YstL$$y4YstL$$y4YstL--a8K11!<O""cDIK%%48J
L !!RxXJTV^^(Y]eijDFr   r   c                   &   \ rS rSrSr\R                  " S\R                  SS9r\R                  " S\SS9r
\R                  " S	S	S
9r\R                  " SSSS9r\R                  " SS9r\R"                  " S	S9r\R&                  " SS	S	SS9rS rSrg)RoomType   r   r   hotel_room_typesr   r   r   rA   Tr?   r@      r   )
max_digitsdecimal_placesr3      rF   rC   zroom_types/r   r   c                 V    U R                  5        SU R                  R                   S3$ r   )get_room_type_displayhotelr   rH   s    r   rI   RoomType.__str__   s(    ,,./r$**//1B!DDr   r   N)r$   r%   r&   r'   ROOM_CHOICESr   r   r   r   rP   	room_typerT   r   DecimalFieldprice_per_nightr   r   rV   rW   rX   
room_imagerI   r(   r   r   r   r   r      s    
L gN`aE  BhWI""D9K))RSTUO--a8K%%48J""]$T[uvJEr   r   c                      \ rS rSr\R
                  " \\R                  SS9r\R
                  " \	\R                  SS9r
\R
                  " \\R                  SSSS9r\R                  " 5       r\R                  " 5       r\R                   " SS9r\R                   " SS9r\R&                  " SS9rS	r\R,                  " S
\SS9rS rSrg)Booking   bookingsr   Tr   r   rF   rC   ))pendingPending)	confirmed	Confirmed)	cancelled	Cancelledr   r   rA   c                 |    U R                   R                   SU R                  R                   SU R                   S3$ )Nr   r   r   )r   r   r   r   statusrH   s    r   rI   Booking.__str__   s3    ))$$%S(9DKK=JJr   r   N)r$   r%   r&   r'   r   r   r   r   r   r*   r   r   room_selected	DateFieldcheck_in	check_outr   number_of_roomsnumber_of_guestsrV   rW   status_choicesrP   r   rI   r(   r   r   r   r   r      s    ev~~JWETV^^*UD%%..M !H  "I11!<O221=%%48JN
 ^YWFKr   r   c                   $   \ rS rSr\R
                  " \\R                  SS9r\R
                  " \\R                  SS9r	\R                  " SSSS9r\R                  " 5       r\R                  " SS	9r\R                   " SS
9rS r " S S5      rSrg)Message   sent_messagesr   received_messages   Tr<   FrF   rC   c                     SU R                   R                   SU R                  R                   SU R                  =(       d    U R                  S S  3$ )NzFrom z to z:    )senderr   receiversubjectr}   rH   s    r   rI   Message.__str__   sK    t{{++,D1G1G0H4<<Kl[_[g[ghkik[lJmnnr   c                       \ rS rSrS/rSrg)Message.Meta   rp   r   Nr$   r%   r&   r'   rr   r(   r   r   r   rt   r     s	    !?r   rt   r   N)r$   r%   r&   r'   r   r   r*   r   r   r   rP   r  rT   r}   rZ   readrV   rW   rI   rt   r(   r   r   r   r   r      s    tv~~O\F  NabH#TEG Gu-D%%48Jo# #r   r   c                      \ rS rSr\R
                  " \\R                  SS9r\R
                  " \	\R                  SSSS9r
\R
                  " \\R                  SS9r\R
                  " \\R                  SSSS9r\R                  " \" SS5       V VVs/ s H  o[#        U5      4PM     snnn SS	9r\R&                  " SSS
9r\R*                  " SS9r " S S5      rS rSrgs  snnn f )Review   reviewsr   Tr   r         )rB   r3   r?   rC   c                   &    \ rS rSrS/rSrSS/rSrg)Review.Meta   rp   r  r   bookingr   N)r$   r%   r&   r'   rr   rs   unique_togetherr(   r   r   r   rt   r     s    !?!9-r   rt   c                 |    U R                   R                   SU R                  R                   SU R                   S3$ )Nrv   r   u   ★))r   r   r   r   ratingrH   s    r   rI   Review.__str__   s3    ))$$%U4::??*;2dkk]$OOr   r   N)r$   r%   r&   r'   r   r   r   r   r   r   r   r*   r   r   r  PositiveSmallIntegerFieldrangestrr  rT   commentrV   rW   rt   rI   r(   ).0ir  s   000r   r	  r	     s    ev~~IVE!!(fnnS\cgostITV^^)TD6>>PY`dlpqG--&+Aqk2kSVk2F T5G%%48J. .
P 3s   C#r	  c                      ^  \ rS rSr\R
                  " SSS9r\R                  " SSSS9r\R                  " SS9r
 " S S5      rS	 rU 4S
 jrSrU =r$ )GalleryCategory   rg   Tr9   )r7   r:   r=   r=   c                       \ rS rSrSrS/rSrg)GalleryCategory.Meta   zGallery Categoriesr   r   N)r$   r%   r&   r'   verbose_name_pluralrr   r(   r   r   r   rt   r!     s    28r   rt   c                     U R                   $ r#   r   rH   s    r   rI   GalleryCategory.__str__   r   r   c                    > U R                   (       d  SSKJn  U" U R                  5      U l         [        TU ]  " U0 UD6  g )Nr   )slugify)slugdjango.utils.textr'  r   superr   )r   argskwargsr'  	__class__s       r   r   GalleryCategory.save   s.    yy1		*DId%f%r   )r(  )r$   r%   r&   r'   r   rP   r   	SlugFieldr(  rT   r   rt   rI   r   r(   __classcell__)r-  s   @r   r  r     sR    r$7Dr$dCD"".K & &r   r  c                       \ rS rSr\R
                  " SS9r\R                  " SS9r\R                  " \
\R                  SS9r\R                  " SS	9r\R                  " SS
9r " S S5      rS rSrg)GalleryImagei  r8   r6   Tr  r   r   zgallery_images/)rE   rC   c                       \ rS rSrS/rSrg)GalleryImage.Metai  z-uploaded_atr   Nr  r   r   r   rt   r4    s
    "#r   rt   c                     U R                   $ r#   )rw   rH   s    r   rI   GalleryImage.__str__  s    zzr   r   N)r$   r%   r&   r'   r   rP   rw   rT   r   r   r  r   r~   rX   imagerV   uploaded_atrt   rI   r(   r   r   r   r2  r2    sk    ,E"".K  FNNYabH(9:E&&D9K$ $r   r2  )	django.dbr   rM   django.contrib.auth.modelsr   r   django.confr   r   r*   Modelra   r   r   r   r   r   r   r   r	  r  r2  r   r   r   <module>r=     s      H  K/ K$ 8 c6<<  cF 6FLL 6Ifll I#FLL #JEv|| E2Kfll K2#fll #PV\\ P*&fll &$6<< r   