o
    Oh&                     @   sX   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	T G dd deZ
dS )    N)File)BaseCommand)transaction)*c                   @   s   e Zd ZdZdd ZdS )Commandz"Bulk create categories from imagesc              
      sl  d t j s| j| jd   d S g }ttj	j
ddd} fddt  D }dd	 }|j|d
 |D ]I}t j |}t j|\}	}
tdd|	}	|	|v rXq;t|d}t|	 d}|jj|t|dd || W d    n1 sw   Y  q;t  tj	| W d    n1 sw   Y  | j| jdt| d g }tj	 D ]}tddD ]}|t||d qqtj	j|dd | j| jdt| d tD ]
}t j	j!|j"d q| j| jdtt j	  d ddg ddt#j$dd d!d"d#g d$d%t#j%d&d'd!d(d)g d*d+t#j&d,d'd!g}|D ]}t'j	j!d:i | q*| j| jd- t(d.t)j*d/t(d.t)j+d/g}t(j	, dkr_t(j	j|dd | j| jd0 d1}t|d2}t-.|}W d    n	1 sw   Y  |D ]!}|d3 }|d4 }tj	j/|||0d5d|0d6dd7d8\}}q| j| jd9 d S );Nzdata/categoryzDirectory not found: descriptionT)flatc                    s&   g | ]}t jt j |r|qS  )ospathisfilejoin).0fbase_dirr	   A/var/www/html/premium_crap/api/management/commands/create_data.py
<listcomp>   s   & z"Command.handle.<locals>.<listcomp>c                 S   s&   t d| }|rt|dS tdS )Nz(\d+)\.   inf)rematchintgroupfloat)filenamer   r	   r	   r   sort_key   s   z Command.handle.<locals>.sort_key)keyz	^\d+\.\s* rb)r   F)saveu   ✅ Bulk created z categories.r      )categoryroundNumber)ignore_conflictsz craptitudes.)nameu   ✅ Created z teams.zFREE ACCESSr   )zAccess to Categories 1-5zBasic featureszNo credit card required   free_accessFREE)r%   pricer   unlockCategorytype	productIdperiodzBASIC PREMIUMgףp=
?)zAccess to Categories 6-20z15 additional categorieszPremium content access   zcom.premium.crap.basic.yearlyYEARzFULL ACCESSgQ@)zAccess to ALL Categories (1-40)z35 additional categorieszComplete premium content(   zcom.premium.crap.full.yearlyu   ✅ Created plans successfully.1)versionCode
deviceTypeu   ✅ Data seeded successfully.zdata/prefixes.jsonrr"   
craptitudediaperPrefixdumpsterPrefix)r6   r7   )category_idr#   defaultsu   ✅ Added prefix in craptitude.r	   )1r
   r   existsstdoutwritestyleERRORsetCategoryobjectsvalues_listlistdirsortr   splitextr   subopenupperimager    r   appendr   atomicbulk_createSUCCESSlenallrange
CraptitudeTeamNameTeamcreatevaluePlanTypeFREE_ACCESSBASIC_PREMIUMFULL_ACCESSPlan
AppVersion
DeviceTypeANDROIDIOScountjsonloadupdate_or_createget)selfargskwargscategories_to_createexisting_namesfilesr   r   	file_pathr   _r   r"   craptitudesijteam	plan_listitemVERSION_DATA	json_filedatar8   round_numberr5   createdr	   r   r   handle   s   
  &
	

zCommand.handleN)__name__
__module____qualname__helprw   r	   r	   r	   r   r   
   s    r   )r`   r
   r   django.core.filesr   django.core.management.baser   	django.dbr   
api.modelsr   r	   r	   r	   r   <module>   s    