# Generated by Django 5.2.8 on 2025-11-27 12:17 import uuid import django.db.models.deletion from django.conf import settings from django.db import migrations, models import common.models class Migration(migrations.Migration): initial = True dependencies = [ ("auth", "0012_alter_user_first_name_max_length"), ("contenttypes", "0002_remove_content_type_name"), ] operations = [ migrations.CreateModel( name="User", fields=[ ("password", models.CharField(max_length=128, verbose_name="password")), ( "last_login", models.DateTimeField( blank=True, null=True, verbose_name="last login" ), ), ( "is_superuser", models.BooleanField( default=False, help_text="Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "email", models.EmailField( blank=True, max_length=254, unique=True, verbose_name="email address", ), ), ( "profile_pic", models.CharField(blank=True, max_length=1000, null=True), ), ( "activation_key", models.CharField(blank=True, max_length=150, null=True), ), ("key_expires", models.DateTimeField(blank=True, null=True)), ("is_active", models.BooleanField(default=True)), ( "is_staff", models.BooleanField(default=False, verbose_name="staff status"), ), ( "groups", models.ManyToManyField( blank=True, help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.", related_name="user_set", related_query_name="user", to="auth.group", verbose_name="groups", ), ), ( "user_permissions", models.ManyToManyField( blank=True, help_text="Specific permissions for this user.", related_name="user_set", related_query_name="user", to="auth.permission", verbose_name="user permissions", ), ), ], options={ "verbose_name": "User", "verbose_name_plural": "Users", "db_table": "users", "ordering": ("-is_active",), }, ), migrations.CreateModel( name="Comment", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("object_id", models.UUIDField()), ("comment", models.CharField(max_length=255)), ("commented_on", models.DateTimeField(auto_now_add=True)), ( "content_type", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="comments", to="contenttypes.contenttype", ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ], options={ "verbose_name": "Comment", "verbose_name_plural": "Comments", "db_table": "comment", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="CommentFiles", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "comment_file", models.FileField( blank=True, null=True, upload_to="CommentFiles", verbose_name="File", ), ), ( "comment", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="common.comment" ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ], options={ "verbose_name": "CommentFile", "verbose_name_plural": "CommentFiles", "db_table": "commentFiles", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="Org", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("name", models.CharField(blank=True, max_length=100, null=True)), ( "api_key", models.TextField( default=common.models.generate_unique_key, editable=False, unique=True, ), ), ("is_active", models.BooleanField(default=True)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ], options={ "verbose_name": "Organization", "verbose_name_plural": "Organizations", "db_table": "organization", "ordering": ("-created_at",), }, ), migrations.AddField( model_name="comment", name="org", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="comments", to="common.org", ), ), migrations.CreateModel( name="Address", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "address_line", models.CharField( blank=True, default="", max_length=255, verbose_name="Address" ), ), ( "street", models.CharField( blank=True, default="", max_length=55, verbose_name="Street" ), ), ( "city", models.CharField( blank=True, default="", max_length=255, verbose_name="City" ), ), ( "state", models.CharField( blank=True, default="", max_length=255, verbose_name="State" ), ), ( "postcode", models.CharField( blank=True, default="", max_length=64, verbose_name="Post/Zip-code", ), ), ( "country", models.CharField( blank=True, choices=[ ("GB", "United Kingdom"), ("AF", "Afghanistan"), ("AX", "Aland Islands"), ("AL", "Albania"), ("DZ", "Algeria"), ("AS", "American Samoa"), ("AD", "Andorra"), ("AO", "Angola"), ("AI", "Anguilla"), ("AQ", "Antarctica"), ("AG", "Antigua and Barbuda"), ("AR", "Argentina"), ("AM", "Armenia"), ("AW", "Aruba"), ("AU", "Australia"), ("AT", "Austria"), ("AZ", "Azerbaijan"), ("BS", "Bahamas"), ("BH", "Bahrain"), ("BD", "Bangladesh"), ("BB", "Barbados"), ("BY", "Belarus"), ("BE", "Belgium"), ("BZ", "Belize"), ("BJ", "Benin"), ("BM", "Bermuda"), ("BT", "Bhutan"), ("BO", "Bolivia"), ("BA", "Bosnia and Herzegovina"), ("BW", "Botswana"), ("BV", "Bouvet Island"), ("BR", "Brazil"), ("IO", "British Indian Ocean Territory"), ("BN", "Brunei Darussalam"), ("BG", "Bulgaria"), ("BF", "Burkina Faso"), ("BI", "Burundi"), ("KH", "Cambodia"), ("CM", "Cameroon"), ("CA", "Canada"), ("CV", "Cape Verde"), ("KY", "Cayman Islands"), ("CF", "Central African Republic"), ("TD", "Chad"), ("CL", "Chile"), ("CN", "China"), ("CX", "Christmas Island"), ("CC", "Cocos (Keeling) Islands"), ("CO", "Colombia"), ("KM", "Comoros"), ("CG", "Congo"), ("CD", "Congo, The Democratic Republic of the"), ("CK", "Cook Islands"), ("CR", "Costa Rica"), ("CI", "Cote d'Ivoire"), ("HR", "Croatia"), ("CU", "Cuba"), ("CY", "Cyprus"), ("CZ", "Czech Republic"), ("DK", "Denmark"), ("DJ", "Djibouti"), ("DM", "Dominica"), ("DO", "Dominican Republic"), ("EC", "Ecuador"), ("EG", "Egypt"), ("SV", "El Salvador"), ("GQ", "Equatorial Guinea"), ("ER", "Eritrea"), ("EE", "Estonia"), ("ET", "Ethiopia"), ("FK", "Falkland Islands (Malvinas)"), ("FO", "Faroe Islands"), ("FJ", "Fiji"), ("FI", "Finland"), ("FR", "France"), ("GF", "French Guiana"), ("PF", "French Polynesia"), ("TF", "French Southern Territories"), ("GA", "Gabon"), ("GM", "Gambia"), ("GE", "Georgia"), ("DE", "Germany"), ("GH", "Ghana"), ("GI", "Gibraltar"), ("GR", "Greece"), ("GL", "Greenland"), ("GD", "Grenada"), ("GP", "Guadeloupe"), ("GU", "Guam"), ("GT", "Guatemala"), ("GG", "Guernsey"), ("GN", "Guinea"), ("GW", "Guinea-Bissau"), ("GY", "Guyana"), ("HT", "Haiti"), ("HM", "Heard Island and McDonald Islands"), ("VA", "Holy See (Vatican City State)"), ("HN", "Honduras"), ("HK", "Hong Kong"), ("HU", "Hungary"), ("IS", "Iceland"), ("IN", "India"), ("ID", "Indonesia"), ("IR", "Iran, Islamic Republic of"), ("IQ", "Iraq"), ("IE", "Ireland"), ("IM", "Isle of Man"), ("IL", "Israel"), ("IT", "Italy"), ("JM", "Jamaica"), ("JP", "Japan"), ("JE", "Jersey"), ("JO", "Jordan"), ("KZ", "Kazakhstan"), ("KE", "Kenya"), ("KI", "Kiribati"), ("KP", "Korea, Democratic People's Republic of"), ("KR", "Korea, Republic of"), ("KW", "Kuwait"), ("KG", "Kyrgyzstan"), ("LA", "Lao People's Democratic Republic"), ("LV", "Latvia"), ("LB", "Lebanon"), ("LS", "Lesotho"), ("LR", "Liberia"), ("LY", "Libyan Arab Jamahiriya"), ("LI", "Liechtenstein"), ("LT", "Lithuania"), ("LU", "Luxembourg"), ("MO", "Macao"), ("MK", "Macedonia, The Former Yugoslav Republic of"), ("MG", "Madagascar"), ("MW", "Malawi"), ("MY", "Malaysia"), ("MV", "Maldives"), ("ML", "Mali"), ("MT", "Malta"), ("MH", "Marshall Islands"), ("MQ", "Martinique"), ("MR", "Mauritania"), ("MU", "Mauritius"), ("YT", "Mayotte"), ("MX", "Mexico"), ("FM", "Micronesia, Federated States of"), ("MD", "Moldova"), ("MC", "Monaco"), ("MN", "Mongolia"), ("ME", "Montenegro"), ("MS", "Montserrat"), ("MA", "Morocco"), ("MZ", "Mozambique"), ("MM", "Myanmar"), ("NA", "Namibia"), ("NR", "Nauru"), ("NP", "Nepal"), ("NL", "Netherlands"), ("AN", "Netherlands Antilles"), ("NC", "New Caledonia"), ("NZ", "New Zealand"), ("NI", "Nicaragua"), ("NE", "Niger"), ("NG", "Nigeria"), ("NU", "Niue"), ("NF", "Norfolk Island"), ("MP", "Northern Mariana Islands"), ("NO", "Norway"), ("OM", "Oman"), ("PK", "Pakistan"), ("PW", "Palau"), ("PS", "Palestinian Territory, Occupied"), ("PA", "Panama"), ("PG", "Papua New Guinea"), ("PY", "Paraguay"), ("PE", "Peru"), ("PH", "Philippines"), ("PN", "Pitcairn"), ("PL", "Poland"), ("PT", "Portugal"), ("PR", "Puerto Rico"), ("QA", "Qatar"), ("RE", "Reunion"), ("RO", "Romania"), ("RU", "Russian Federation"), ("RW", "Rwanda"), ("BL", "Saint Barthelemy"), ("SH", "Saint Helena"), ("KN", "Saint Kitts and Nevis"), ("LC", "Saint Lucia"), ("MF", "Saint Martin"), ("PM", "Saint Pierre and Miquelon"), ("VC", "Saint Vincent and the Grenadines"), ("WS", "Samoa"), ("SM", "San Marino"), ("ST", "Sao Tome and Principe"), ("SA", "Saudi Arabia"), ("SN", "Senegal"), ("RS", "Serbia"), ("SC", "Seychelles"), ("SL", "Sierra Leone"), ("SG", "Singapore"), ("SK", "Slovakia"), ("SI", "Slovenia"), ("SB", "Solomon Islands"), ("SO", "Somalia"), ("ZA", "South Africa"), ("GS", "South Georgia and the South Sandwich Islands"), ("ES", "Spain"), ("LK", "Sri Lanka"), ("SD", "Sudan"), ("SR", "Suriname"), ("SJ", "Svalbard and Jan Mayen"), ("SZ", "Swaziland"), ("SE", "Sweden"), ("CH", "Switzerland"), ("SY", "Syrian Arab Republic"), ("TW", "Taiwan, Province of China"), ("TJ", "Tajikistan"), ("TZ", "Tanzania, United Republic of"), ("TH", "Thailand"), ("TL", "Timor-Leste"), ("TG", "Togo"), ("TK", "Tokelau"), ("TO", "Tonga"), ("TT", "Trinidad and Tobago"), ("TN", "Tunisia"), ("TR", "Turkey"), ("TM", "Turkmenistan"), ("TC", "Turks and Caicos Islands"), ("TV", "Tuvalu"), ("UG", "Uganda"), ("UA", "Ukraine"), ("AE", "United Arab Emirates"), ("US", "United States"), ("UM", "United States Minor Outlying Islands"), ("UY", "Uruguay"), ("UZ", "Uzbekistan"), ("VU", "Vanuatu"), ("VE", "Venezuela"), ("VN", "Viet Nam"), ("VG", "Virgin Islands, British"), ("VI", "Virgin Islands, U.S."), ("WF", "Wallis and Futuna"), ("EH", "Western Sahara"), ("YE", "Yemen"), ("ZM", "Zambia"), ("ZW", "Zimbabwe"), ], default="", max_length=3, ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="addresses", to="common.org", ), ), ], options={ "verbose_name": "Address", "verbose_name_plural": "Addresses", "db_table": "address", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="Profile", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "phone", models.CharField(blank=True, max_length=20, null=True), ), ( "alternate_phone", models.CharField(blank=True, max_length=20, null=True), ), ( "role", models.CharField( choices=[("ADMIN", "ADMIN"), ("USER", "USER")], default="USER", max_length=50, ), ), ("has_sales_access", models.BooleanField(default=False)), ("has_marketing_access", models.BooleanField(default=False)), ("is_active", models.BooleanField(default=True)), ("is_organization_admin", models.BooleanField(default=False)), ("date_of_joining", models.DateField(blank=True, null=True)), ( "address", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="address_users", to="common.address", ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="profiles", to="common.org", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="profiles", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Profile", "verbose_name_plural": "Profiles", "db_table": "profile", "ordering": ("-created_at",), "unique_together": {("phone", "org"), ("user", "org")}, }, ), migrations.AddField( model_name="comment", name="commented_by", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="common.profile", ), ), migrations.CreateModel( name="Activity", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "action", models.CharField( choices=[ ("CREATE", "Created"), ("UPDATE", "Updated"), ("DELETE", "Deleted"), ("VIEW", "Viewed"), ("COMMENT", "Commented"), ("ASSIGN", "Assigned"), ], max_length=20, ), ), ( "entity_type", models.CharField( choices=[ ("Account", "Account"), ("Lead", "Lead"), ("Contact", "Contact"), ("Opportunity", "Opportunity"), ("Case", "Case"), ("Task", "Task"), ("Invoice", "Invoice"), ("Event", "Event"), ("Document", "Document"), ("Team", "Team"), ], max_length=50, ), ), ("entity_id", models.UUIDField()), ( "entity_name", models.CharField(blank=True, default="", max_length=255), ), ("description", models.TextField(blank=True, default="")), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="activities", to="common.org", ), ), ( "user", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="activities", to="common.profile", ), ), ], options={ "verbose_name": "Activity", "verbose_name_plural": "Activities", "db_table": "activity", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="SecurityAuditLog", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "event_type", models.CharField( choices=[ ("LOGIN_SUCCESS", "Login Success"), ("LOGIN_FAILURE", "Login Failure"), ("LOGOUT", "Logout"), ("ORG_SWITCH", "Organization Switch"), ("TOKEN_REFRESH", "Token Refresh"), ("TOKEN_REVOKED", "Token Revoked"), ("PERMISSION_DENIED", "Permission Denied"), ("CROSS_ORG_ATTEMPT", "Cross-Org Access Attempt"), ("API_KEY_USED", "API Key Used"), ("API_KEY_INVALID", "Invalid API Key"), ("MEMBERSHIP_REVOKED", "Membership Revoked"), ("SUSPICIOUS_ACTIVITY", "Suspicious Activity"), ], db_index=True, max_length=50, ), ), ("description", models.TextField(blank=True, default="")), ("metadata", models.JSONField(blank=True, default=dict)), ("ip_address", models.GenericIPAddressField(blank=True, null=True)), ("user_agent", models.TextField(blank=True, default="")), ( "request_path", models.CharField(blank=True, default="", max_length=500), ), ( "request_method", models.CharField(blank=True, default="", max_length=10), ), ("success", models.BooleanField(default=True)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "org", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="security_audit_logs", to="common.org", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "user", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="security_audit_logs", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Security Audit Log", "verbose_name_plural": "Security Audit Logs", "db_table": "security_audit_log", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="SessionToken", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "token_jti", models.CharField(db_index=True, max_length=255, unique=True), ), ( "refresh_token_jti", models.CharField( blank=True, db_index=True, max_length=255, null=True, unique=True, ), ), ("ip_address", models.GenericIPAddressField(blank=True, null=True)), ("user_agent", models.TextField(blank=True, null=True)), ("expires_at", models.DateTimeField()), ("is_active", models.BooleanField(default=True)), ("revoked_at", models.DateTimeField(blank=True, null=True)), ("last_used_at", models.DateTimeField(auto_now=True)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="session_tokens", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Session Token", "verbose_name_plural": "Session Tokens", "db_table": "session_token", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="Tags", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("name", models.CharField(max_length=20)), ("slug", models.CharField(blank=True, max_length=20)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="tags", to="common.org", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ], options={ "verbose_name": "Tag", "verbose_name_plural": "Tags", "db_table": "tags", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="APISettings", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("title", models.TextField()), ("apikey", models.CharField(blank=True, max_length=16)), ("website", models.URLField(max_length=255, null=True)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="api_settings", to="common.org", ), ), ( "lead_assigned_to", models.ManyToManyField( related_name="lead_assignee_users", to="common.profile" ), ), ("tags", models.ManyToManyField(blank=True, to="common.tags")), ], options={ "verbose_name": "APISetting", "verbose_name_plural": "APISettings", "db_table": "apiSettings", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="Teams", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("name", models.CharField(max_length=100)), ("description", models.TextField()), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="teams", to="common.org", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "users", models.ManyToManyField( related_name="user_teams", to="common.profile" ), ), ], options={ "verbose_name": "Team", "verbose_name_plural": "Teams", "db_table": "teams", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="Document", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("title", models.TextField(blank=True, null=True)), ( "document_file", models.FileField( max_length=5000, upload_to=common.models.document_path ), ), ( "status", models.CharField( choices=[("active", "active"), ("inactive", "inactive")], default="active", max_length=64, ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="documents", to="common.org", ), ), ( "shared_to", models.ManyToManyField( related_name="document_shared_to", to="common.profile" ), ), ( "teams", models.ManyToManyField( related_name="document_teams", to="common.teams" ), ), ], options={ "verbose_name": "Document", "verbose_name_plural": "Documents", "db_table": "document", "ordering": ("-created_at",), }, ), migrations.CreateModel( name="ContactFormSubmission", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("name", models.CharField(max_length=255)), ("email", models.EmailField(max_length=254)), ("message", models.TextField()), ( "reason", models.CharField( choices=[ ("general", "General Inquiry"), ("sales", "Sales Question"), ("support", "Technical Support"), ("partnership", "Partnership Opportunity"), ("other", "Other"), ], default="general", max_length=100, ), ), ("ip_address", models.GenericIPAddressField(blank=True, null=True)), ("user_agent", models.TextField(blank=True, null=True)), ("referrer", models.URLField(blank=True, max_length=500, null=True)), ( "status", models.CharField( choices=[ ("new", "New"), ("read", "Read"), ("replied", "Replied"), ("closed", "Closed"), ], default="new", max_length=20, ), ), ("replied_at", models.DateTimeField(blank=True, null=True)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "replied_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="contact_replies", to=settings.AUTH_USER_MODEL, ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ], options={ "verbose_name": "Contact Form Submission", "verbose_name_plural": "Contact Form Submissions", "db_table": "contact_form_submission", "ordering": ["-created_at"], "indexes": [ models.Index(fields=["email"], name="contact_for_email_534ce8_idx"), models.Index( fields=["status"], name="contact_for_status_b48047_idx" ), models.Index( fields=["created_at"], name="contact_for_created_f54fb1_idx" ), ], }, ), migrations.CreateModel( name="Attachments", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ("object_id", models.UUIDField()), ("file_name", models.CharField(max_length=60)), ( "attachment", models.FileField(max_length=1001, upload_to="attachments/%Y/%m/"), ), ( "content_type", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="attachments", to="contenttypes.contenttype", ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "org", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="attachments", to="common.org", ), ), ], options={ "verbose_name": "Attachment", "verbose_name_plural": "Attachments", "db_table": "attachments", "ordering": ("-created_at",), "indexes": [ models.Index( fields=["content_type", "object_id"], name="attachments_content_7c0e26_idx", ), models.Index( fields=["org", "-created_at"], name="attachments_org_id_432f7a_idx", ), ], }, ), migrations.AddIndex( model_name="comment", index=models.Index( fields=["content_type", "object_id"], name="comment_content_3076b0_idx" ), ), migrations.AddIndex( model_name="comment", index=models.Index( fields=["org", "-created_at"], name="comment_org_id_ae4e49_idx" ), ), migrations.AddIndex( model_name="activity", index=models.Index( fields=["org", "-created_at"], name="activity_org_id_832f39_idx" ), ), migrations.AddIndex( model_name="activity", index=models.Index( fields=["entity_type", "entity_id"], name="activity_entity__e33c9a_idx" ), ), migrations.AddIndex( model_name="securityauditlog", index=models.Index( fields=["event_type", "-created_at"], name="security_au_event_t_5c4296_idx", ), ), migrations.AddIndex( model_name="securityauditlog", index=models.Index( fields=["user", "-created_at"], name="security_au_user_id_ab6fd5_idx" ), ), migrations.AddIndex( model_name="securityauditlog", index=models.Index( fields=["org", "-created_at"], name="security_au_org_id_d5d1da_idx" ), ), migrations.AddIndex( model_name="securityauditlog", index=models.Index( fields=["ip_address"], name="security_au_ip_addr_a572f5_idx" ), ), migrations.AddIndex( model_name="securityauditlog", index=models.Index( fields=["success", "-created_at"], name="security_au_success_c444de_idx" ), ), migrations.AddIndex( model_name="sessiontoken", index=models.Index( fields=["user", "is_active"], name="session_tok_user_id_ce3d01_idx" ), ), migrations.AddIndex( model_name="sessiontoken", index=models.Index( fields=["token_jti"], name="session_tok_token_j_a0ab6c_idx" ), ), migrations.AddIndex( model_name="sessiontoken", index=models.Index( fields=["expires_at"], name="session_tok_expires_08e0bc_idx" ), ), migrations.AlterUniqueTogether( name="tags", unique_together={("slug", "org")}, ), ]