U
    *NhOW                     @   sR   d dl Zd dlZd dlZd dlZd dlmZ d dlmZm	Z	 G dd dej
Z
dS )    N)settings)
migrationsmodelsc                )   @   s  e Zd ZdZdgZejddejdddfdej	dd	d
dfdej
ddddfdej
ddddfdejejdddddfdej	ddddfdej
dddddfdejddd dd!d"fd#ejdd$d%ddd&fd'ejdd(d%d)fd*ejdd+d%d)fd,ejdd-d.dejjjd/d0d1gd2d3fd4ej	dd5d6fd7ej	dd8d6fd9ej	dd:d;dfd<ejdd=dd>dfd?ej
dd@ddAdfdBej
ejjjdCd6fdDej
ddEddFfdGej
ddHddFfdIejdJdKd6fdLej
ddMddFfdNej
ejjjdOd6fdPej	ddQd6fdRejddSdTfdUej	ddVfdWejddXdejjjjdYejdZd[fd\ejdd]dejjjjd^ejd_d[fd`ejddadbdcddd`defdfejddgdejjjjdhejdid[fdjejddkdbdcdldmdefgddndodpgdqdrejdsdej
ddddfdej
ddddfdejejdddddfdej	ddddfdej
dddddfdtejejduddvfdwej
dxdyfdzej	dd{d6fd|ejdd}ddFfdWejddXdejjjjdYejdZd[fd\ejdd]dejjjjd^ejd_d[fdfejddgdejjjjdhejdid[fdcejd~ejjjjdejdfgddddgdqdrejddej
ddddfdej
ddddfdejejdddddfdej	ddddfdej
dddddfdej ddddddfdej!dddddfdej"dddddfdejdddSddfdejdddSddfdej#ddddfdejddddfdejddddfdejdddgddddfdej	ddd6fdej	ddddfdej	ddddfdejdddgdddfdWejddXdejjjjdYejdZd[fd\ejdd]dejjjjd^ejd_d[fdfejddgdejjjjdhejdid[fdcej$dejjjjdejddfgddddgdqdrejddej
ddddfdej
ddddfdejejdddddfdej	ddddfdej
dddddfdejddSdddōfdejdddejjddɡgdʍfdej!ddddfdejdddgddddfd4ej	ddddfdejddddfdej	ddd6fdWejddXdejjjjdYejdZd[fd\ejdd]dejjjjd^ejd_d[fdejdddejjjjdddfdejdddlddfdfejddgdejjjjdhejdid[fgdddddgdqdrejddej
ddddfdej
ddddfdejejdddddfdej	ddddfdej
dddddfdej
ejjjdd6fdej
ejjjdd6fdej
ddddFfd4ej	ddd6fdej!dddfdejdddejjjjdejdfdWejddXdejjjjdYejdZd[fd\ejdd]dejjjjd^ejd_d[fdejdejjjjddfdfejddgdejjjjdhejdid[fdcejdejjjjejdfgddddgdqdrejddej
ddddfdej
ddddfdejejdddddfdej	ddddfdej
dddddfdejdd ddfd|ejddddFfdej!dddfdejdddd)fd4ej	ddd6fdGej
ejjjd	d6fdwej
d
dyfdWejddXdejjjjdYejdZd[fd\ejdd]dejjjjd^ejd_d[fdfejddgdejjjjdhejdid[fdcejdejjjjdejdfgddddgdqdrej%dcej&dgdddej%dcej&d4d9gdddej%dcej&dBgdddej'ddhdg
Z(dS (  	MigrationT)auth%0012_alter_user_first_name_max_lengthUserpassword   )
max_lengthverbose_nameis_superuserFzPDesignates that this user has all permissions without explicitly assigning them.zsuperuser status)default	help_textr   
created_atz&Timestamp when this object was createdz
Created At)auto_now_addr   r   
updated_atz,Timestamp when this object was last modifiedz
Updated At)auto_nowr   r   idz!Unique identifier for this object)r   editabler   primary_key	serialize
is_deletedz)Whether this object has been soft-deletedz
Is Deleted
deleted_atz+Timestamp when this object was soft-deletedz
Deleted At)blankr   nullr   emailz%User's email address (used for login)   zEmail Address)db_indexr   r   uniquer   usernamez&Optional username for display purposes   )r   r   r   r   r   
first_namezUser's first name)r   r   r   	last_namezUser's last namephone_numberzUser's phone number   zRPhone number must be entered in the format: '+999999999'. Up to 15 digits allowed.z^\+?1?\d{9,15}$)messageregexzPhone Number)r   r   r   r   
validatorsr   	is_activez8Designates whether this user should be treated as active)r   r   is_staffz7Designates whether the user can log into the admin siteis_verifiedz$Whether the user's email is verifiedzIs Verifiedlast_login_ipzIP address of last loginzLast Login IPemail_verified_atzWhen the email was verifiedzEmail Verified Atdate_joinedz&Date when the user account was created
last_loginzLast time the user logged in)r   r   r   last_activityz+Last time the user was active in the systemfailed_login_attemptsr   z+Number of consecutive failed login attemptsaccount_locked_untilzAccount lockout expiration timepassword_changed_atz"When the password was last changedmfa_enabledz.Whether multi-factor authentication is enabledemail_verification_tokend   )r   r   receive_notifications)r   
created_byzUser who created this objectz%(class)s_createdz
Created By)r   r   r   	on_deleterelated_nametor   
deleted_byz!User who soft-deleted this objectz%(class)s_deletedz
Deleted BygroupszaThe groups this user belongs to. A user will get all permissions granted to each of their groups.user_setuserz
auth.group)r   r   r:   related_query_namer;   r   
updated_byz"User who last modified this objectz%(class)s_updatedz
Updated Byuser_permissionsz#Specific permissions for this user.zauth.permissionzuser permissionsUsersaccounts_usersz-date_joined)r   verbose_name_pluraldb_tableordering)namefieldsoptionsPasswordResetTokentokenzUnique reset token)r   r   r   
expires_atzWhen the token expires)r   is_usedzWhether the token has been used
ip_addressz)IP address from which reset was requestedzUser requesting password resetreset_tokens)r   r9   r:   r;   zPassword Reset TokenzPassword Reset Tokensaccounts_password_reset_tokensz-created_atProfileavatarzUser's profile picturezavatars/%Y/%m/Avatar)r   r   r   	upload_tor   biozUser's biography or descriptioni  	Biography)r   r   r   r   
birth_datezUser's birth datez
Birth Date	job_titlezUser job title or positionz	Job TitlecompanyzUser company or organizationCompanywebsitezUser's website URLWebsite)r   r   r   timezoneUTCzUser's preferred timezone2   )r   r   r   languageenzUser's preferred language
   theme)lightzLight Theme)darkz
Dark Theme)autozAuto (System)re   zUser's preferred UI theme   )choicesr   r   r   notifications_enabledz Whether to receive notificationssms_notificationszReceive SMS notificationszSMS Notificationsemail_notificationszReceive email notificationszEmail Notificationsprofile_visibility)publicPublic)privatePrivate)contactszContacts Onlyrn   )ri   r   r   zAssociated user accountprofile)r   r9   r:   r;   r   Profilesaccounts_profileRolerH   zGUnique name for the role (e.g., 'Campaign Manager', 'Analytics Viewer')z	Role Name)r   r   r   r   codez<Role code for programmatic access (e.g., 'campaign_manager')z	^[a-z_]+$z,Code must be lowercase with underscores only)r   r   r   r(   descriptionzCDetailed description of the role's responsibilities and permissionsDescription	role_type)systemzSystem Role)customzCustom Role)projectzProject Roler|   zType of role for categorizationz%Whether this role is currently activez	Is Activelevel   z*Role hierarchy level (1=highest, 5=lowest)Priority
is_defaultz,Whether this is a default role for new usersparent_rolezParent role for inheritancechild_roleszaccounts.role)r   r   r   r9   r:   r;   permissionsz*Specific permissions assigned to this rolePermissions)r   r   r;   r   Rolesaccounts_rolesUserRoleassigned_atzWhen this role was assigned
valid_fromz'When this role assignment becomes validvalid_untilz!When this role assignment expiresz0Whether this role assignment is currently activenotesz+Additional notes about this role assignment)r   r   assigned_byzUser who assigned this roleassigned_rolesrolezRole assigned to the user)r   r9   r;   zUser assigned to this rolez	User Rolez
User Rolesaccounts_user_rolesz-assigned_atUserSessionsession_keyzDjango session key(   )r   r   r   zIP address of the session
user_agentzBrowser user agent stringlocationz"Geographic location (if available)   z'Whether the session is currently activezLast activity timestampzWhen the session expiresz!User associated with this sessionsessionszUser SessionzUser Sessionsaccounts_user_sessionsz-last_activityZaccounts_us_email_2e0232_idx)rI   rH   )
model_nameindexZaccounts_us_is_acti_86332d_idxZaccounts_us_date_jo_e1cccb_idxZuserrole)r?   r   )rH   unique_togetherN))__name__
__module____qualname__initialdependenciesr   CreateModelr   	CharFieldBooleanFieldDateTimeField	UUIDFielduuiduuid4
EmailFielddjangocorer(   RegexValidatorGenericIPAddressFieldutilsr^   nowPositiveIntegerField
ForeignKeydbdeletionSET_NULLr   AUTH_USER_MODELManyToManyFieldCASCADE
ImageField	TextField	DateFieldURLFieldOneToOneFieldAddIndexIndexAlterUniqueTogether
operations r   r   @/var/www/html/Focus/src/apps/accounts/migrations/0001_initial.pyr      s|  ($$$"*$$$$$$ !"$$ $"$$$$$$" r   )Zdjango.core.validatorsr   django.db.models.deletiondjango.utils.timezoner   django.confr   	django.dbr   r   r   r   r   r   r   <module>   s   