U
    ֳh                     @   s   d dl mZ d dlm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jZG d	d
 d
ejZG dd de
ZdS )    )models)gettext_lazy)FileExtensionValidator)User)	BaseModel)brand_logo_upload_pathc                   @   s   e Zd ZdZdedfZdedfZdedfZded	fZd
edfZ	dedfZ
dedfZdedfZdedfZdedfZdedfZdedfZdS )BrandCategoryzBrand category choicesZ
technologyZ
TechnologyZfashionZFashionZfood_beveragezFood & BeverageZ
automotiveZ
AutomotiveZ
healthcareZ
HealthcareZfinanceZFinanceZentertainmentZEntertainmentZretailZRetailZtravelZTravelZ	educationZ	EducationZreal_estatezReal EstateotherOtherN)__name__
__module____qualname____doc___Z
TECHNOLOGYZFASHIONZFOOD_BEVERAGEZ
AUTOMOTIVEZ
HEALTHCAREZFINANCEZENTERTAINMENTZRETAILZTRAVELZ	EDUCATIONZREAL_ESTATEOTHER r   r   6/var/www/html/Focus/src/apps/agencies/models/brands.pyr      s   r   c                   @   sL   e Zd ZdZdedfZdedfZdedfZded	fZd
edfZ	dS )BrandStatuszBrand status choicesactiveZActiveinactiveZInactivependingPending	suspendedZ	SuspendedarchivedArchivedN)
r   r   r   r   r   ACTIVEZINACTIVEPENDINGZ	SUSPENDEDZARCHIVEDr   r   r   r   r      s   r   c                
       s8  e Zd ZdZejdededddZejdej	ded	ed
dZ
ejddededdZejdejejededddZejeddedddddgdgededdZejdejejededddZejd ed!ed"d#ZG d$d% d%Zd&d' Z fd(d)Z fd*d+Zed,d- Zed.d/ Z   Z!S )0Brandz9
    Model representing a brand managed by an agency
       z
Brand NamezThe official name of the brandT)
max_lengthverbose_name	help_textdb_indexzagencies.AgencybrandsAgencyzThe agency managing this brand)	on_deleterelated_namer    r!   i  DescriptionzBrief description of the brand)r   blankr    r!   2   Categoryz#The industry category of this brand)r   choicesdefaultr    r!   r"   ZjpgZjpegZpngZsvgZwebp)allowed_extensionsZLogoz&Brand logo image (JPG, PNG, SVG, WebP))	upload_tor(   null
validatorsr    r!      StatuszCurrent status of the brandFzFeatured Brandz1Whether this brand should be featured prominently)r,   r    r!   c                   @   s\   e Zd ZdZedZedZdgZddggZe	j
ddgde	j
ddgde	j
d	gdgZd
S )z
Brand.Metar#   r   ZBrandsnameagency)fieldscategorystatusz-created_atN)r   r   r   db_tabler   r    verbose_name_pluralorderingunique_togetherr   Indexindexesr   r   r   r   Metaf   s   
r>   c                 C   s    | j  d| jr| jj nd dS )Nz (z	No Agency))r3   r4   selfr   r   r   __str__r   s    zBrand.__str__c                    s,   ddl m} t   | jr(| j | _dS )zCustom validationr   )ValidationErrorN)django.core.exceptionsrC   supercleanr3   strip)rA   rC   	__class__r   r   rF   u   s    
zBrand.cleanc                    s   |    t j|| dS )z.Override save to perform additional operationsN)
full_cleanrE   save)rA   argskwargsrH   r   r   rK   ~   s    z
Brand.savec                 C   s.   ddl m} | jr&t| jdr&| jjS |dS )z-Get the logo URL safely with default fallbackr   )staticurlzimages/default-brand-logo.png)django.templatetags.staticrN   logohasattrrO   )rA   rN   r   r   r   logo_url   s    zBrand.logo_urlc                 C   s   | j tjkS )zCheck if brand is active)r7   r   r   r@   r   r   r   	is_active   s    zBrand.is_active)"r   r   r   r   r   	CharFieldr   r3   
ForeignKeyCASCADEr4   	TextFielddescriptionr   r+   r   r6   
ImageFieldr   r   rQ   r   r   r7   BooleanFieldZis_featuredr>   rB   rF   rK   propertyrS   rT   __classcell__r   r   rH   r   r   '   sx   			
	r   N)	django.dbr   django.utils.translationr   r   Zdjango.core.validatorsr   apps.accounts.modelsr   apps.common.modelsr   Zapps.agencies.utilsr   TextChoicesr   r   r   r   r   r   r   <module>   s   	