o
    OgU	                     @   sF   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jZ	dS )    )models)timezone)reverse)ValidationErrorc                       s   e Zd ZdZejddZejddZe	 Z
ejddddZejd	ddd
ZejddZejddZejddZejdedZejddZejddZG dd dZdd Zdd Z fddZedd Zedd Zdd  Z   Z!S )!Event))workshopWorkshop)
conference
Conference)seminarSeminar)meetingMeeting)otherOther   )
max_lengthT)uniquei  z@External registration link (e.g., Google Form, Eventbrite, etc.))r   blank	help_textzevents/)	upload_tonullr   zSelect the date of the event)r   z-Select the time of the event (24-hour format)d   )r   choicesF)default)auto_now_addc                   @   s   e Zd ZddgZdS )z
Event.MetadatetimeN)__name__
__module____qualname__ordering r"   r"   "/var/www/html/gwz/events/models.pyMeta    s    r$   c                 C   s   | j S N)titleselfr"   r"   r#   __str__#   s   zEvent.__str__c                 C   s   t dt| jgdS )Nzevents:event_detail)args)r   stridr'   r"   r"   r#   get_absolute_url&   s   zEvent.get_absolute_urlc                    s(   | j s	t| j| _ t j|i | d S r%   )slugslugifyr&   supersave)r(   r*   kwargs	__class__r"   r#   r1   )   s   z
Event.savec                 C   s$   t t j| j| j}|t  kS )zCheck if the event is upcoming.)r   
make_awaredatetimecombiner   r   nowr(   event_datetimer"   r"   r#   is_upcoming.   s   zEvent.is_upcomingc                 C   s   | j rdS dS )z+Return the event status (upcoming or past).UpcomingPast)r;   r'   r"   r"   r#   status6   s   zEvent.statusc                 C   sJ   | j r| jr!ttj| j | j}|t k r#tddddS dS dS )zValidate event date and time.z*Event date and time cannot be in the past.)r   r   N)r   r   r   r5   r6   r7   r8   r   r9   r"   r"   r#   clean;   s   zEvent.clean)"r   r   r    EVENT_TYPESr   	CharFieldr&   	SlugFieldr.   	TextFielddescriptionURLFieldregistration_link
ImageFieldimage	DateFieldr   	TimeFieldr   location
event_typeBooleanFieldis_featuredDateTimeField
created_atr$   r)   r-   r1   propertyr;   r>   r?   __classcell__r"   r"   r3   r#   r      s4    

r   N)
	django.dbr   django.utilsr   django.urlsr   django.core.exceptionsr   Modelr   r"   r"   r"   r#   <module>   s
    