
    xh	                     l    S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S r " S S	\5      rg)
    N)List)settings)models)BitField)CreatedModelc                  r    [         R                  " [        R                  " S5      5      R	                  5       $ )N    )binasciihexlifyosurandomdecode     /code/apps/api_tokens/models.pygenerate_tokenr      s$    BJJrN+2244r   c                       \ rS rSrSr\R                  " SSS\S9r\R                  " \
R                  \R                  S9r\R                  " SSS	9r\" S
S9rS rS rS\4S jrS\\   4S jrSrg)APIToken   zB
Ideas borrowed from rest_framework.authtoken and sentry.apitoken
@   TF)
max_lengthuniqueeditabledefault)	on_delete   )r   blank)zproject:readzproject:writezproject:adminzproject:releasesz	team:readz
team:writez
team:adminz
event:readzevent:writezevent:adminzorg:readz	org:writez	org:adminzmember:readzmember:writezmember:admin)flagsc                     U R                   $ )N)token)selfs    r   __str__APIToken.__str__/   s    zzr   c                 z    U R                   R                  5        Vs/ s H  oS   SL d  M  US   PM     sn$ s  snf )z<
Return array of set scope flags.
Example: ["project:read"]
   Tr   )scopesitems)r!   is     r   
get_scopesAPIToken.get_scopes2   s9    
 #kk//1B1qTT\!1BBBs   8	8
permissionc                 R    [        U R                  US5        U R                  S/S9  g)z&Add permission flag to scopes and saveTr&   update_fieldsNsetattrr&   save)r!   r+   s     r   add_permissionAPIToken.add_permission9   s"    Z.		
	+r   permissionsc                 d    U H  n[        U R                  US5        M     U R                  S/S9  g)z'Add permission flags to scopes and saveTr&   r-   Nr/   )r!   r4   r+   s      r   add_permissionsAPIToken.add_permissions>   s,    %JDKKT2 &		
	+r   r   N)__name__
__module____qualname____firstlineno____doc__r   	CharFieldr   r    
ForeignKeyr   AUTH_USER_MODELCASCADEuserlabelr   r&   r"   r)   strr2   r   r6   __static_attributes__r   r   r   r   r      s     dUNE X55PD48E
F*C, ,
,49 ,r   r   )r
   r   typingr   django.confr   	django.dbr   bitfieldr   glitchtip.base_modelsr   r   r   r   r   r   <module>rJ      s+     	      .52,| 2,r   