Coverage for modules\authentication\migrations\0001_initial.py: 100%
8 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-05 09:24 +0800
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-05 09:24 +0800
1# Generated by Django 5.1.15 on 2026-09-01 15:02
3import django.db.models.deletion
4import uuid
5from django.conf import settings
6from django.db import migrations, models
9class Migration(migrations.Migration):
11 initial = True
13 dependencies = [
14 ('auth', '0012_alter_user_first_name_max_length'),
15 ]
17 operations = [
18 migrations.CreateModel(
19 name='Organization',
20 fields=[
21 ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
22 ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
23 ('updated_at', models.DateTimeField(auto_now=True)),
24 ('name', models.CharField(max_length=255)),
25 ('slug', models.SlugField(max_length=255, unique=True)),
26 ('logo_url', models.URLField(blank=True, max_length=500, null=True)),
27 ('currency', models.CharField(default='PHP', max_length=3)),
28 ('fiscal_year_start', models.IntegerField(default=1)),
29 ('tax_id', models.CharField(blank=True, max_length=64, null=True)),
30 ('website', models.URLField(blank=True, null=True)),
31 ('address', models.TextField(blank=True, null=True)),
32 ('is_active', models.BooleanField(default=True)),
33 ],
34 options={
35 'abstract': False,
36 },
37 ),
38 migrations.CreateModel(
39 name='User',
40 fields=[
41 ('password', models.CharField(max_length=128, verbose_name='password')),
42 ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
43 ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
44 ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
45 ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
46 ('updated_at', models.DateTimeField(auto_now=True)),
47 ('email', models.EmailField(db_index=True, max_length=255, unique=True)),
48 ('external_email', models.EmailField(blank=True, max_length=255, null=True)),
49 ('first_name', models.CharField(blank=True, max_length=150)),
50 ('last_name', models.CharField(blank=True, max_length=150)),
51 ('phone_number', models.CharField(blank=True, max_length=32, null=True)),
52 ('avatar_url', models.URLField(blank=True, max_length=500, null=True)),
53 ('is_active', models.BooleanField(default=True)),
54 ('is_staff', models.BooleanField(default=False)),
55 ('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')),
56 ('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')),
57 ('current_organization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='current_users', to='authentication.organization')),
58 ],
59 options={
60 'abstract': False,
61 },
62 ),
63 migrations.CreateModel(
64 name='Membership',
65 fields=[
66 ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
67 ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
68 ('updated_at', models.DateTimeField(auto_now=True)),
69 ('role', models.CharField(choices=[('OWNER', 'Owner'), ('ADMIN', 'Administrator'), ('MANAGER', 'Manager'), ('MEMBER', 'Member'), ('GUEST', 'Guest')], default='MEMBER', max_length=32)),
70 ('is_default', models.BooleanField(default=False)),
71 ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to=settings.AUTH_USER_MODEL)),
72 ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to='authentication.organization')),
73 ],
74 options={
75 'unique_together': {('user', 'organization')},
76 },
77 ),
78 ]