704 lines
50 KiB
Python
704 lines
50 KiB
Python
# Generated by Django 3.2.14 on 2022-10-26 19:37
|
|
|
|
from django.conf import settings
|
|
import django.contrib.auth.models
|
|
import django.contrib.postgres.fields
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
import django.utils.timezone
|
|
import uuid
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('auth', '0012_alter_user_first_name_max_length'),
|
|
]
|
|
|
|
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')),
|
|
('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
|
('username', models.CharField(max_length=128, unique=True)),
|
|
('mobile_number', models.CharField(blank=True, max_length=255, null=True)),
|
|
('email', models.CharField(blank=True, max_length=255, null=True, unique=True)),
|
|
('first_name', models.CharField(blank=True, max_length=255)),
|
|
('last_name', models.CharField(blank=True, max_length=255)),
|
|
('avatar', models.CharField(blank=True, max_length=255)),
|
|
('date_joined', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Last Modified At')),
|
|
('last_location', models.CharField(blank=True, max_length=255)),
|
|
('created_location', models.CharField(blank=True, max_length=255)),
|
|
('is_superuser', models.BooleanField(default=False)),
|
|
('is_managed', models.BooleanField(default=False)),
|
|
('is_password_expired', models.BooleanField(default=False)),
|
|
('is_active', models.BooleanField(default=True)),
|
|
('is_staff', models.BooleanField(default=False)),
|
|
('is_email_verified', models.BooleanField(default=False)),
|
|
('is_password_autoset', models.BooleanField(default=False)),
|
|
('is_onboarded', models.BooleanField(default=False)),
|
|
('token', models.CharField(blank=True, max_length=64)),
|
|
('billing_address_country', models.CharField(default='INDIA', max_length=255)),
|
|
('billing_address', models.JSONField(null=True)),
|
|
('has_billing_address', models.BooleanField(default=False)),
|
|
('user_timezone', models.CharField(default='Asia/Kolkata', max_length=255)),
|
|
('last_active', models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
('last_login_time', models.DateTimeField(null=True)),
|
|
('last_logout_time', models.DateTimeField(null=True)),
|
|
('last_login_ip', models.CharField(blank=True, max_length=255)),
|
|
('last_logout_ip', models.CharField(blank=True, max_length=255)),
|
|
('last_login_medium', models.CharField(default='email', max_length=20)),
|
|
('last_login_uagent', models.TextField(blank=True)),
|
|
('token_updated_at', models.DateTimeField(null=True)),
|
|
('last_workspace_id', models.UUIDField(null=True)),
|
|
('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': 'user',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
managers=[
|
|
('objects', django.contrib.auth.models.UserManager()),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='Cycle',
|
|
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, verbose_name='Cycle Name')),
|
|
('description', models.TextField(blank=True, verbose_name='Cycle Description')),
|
|
('start_date', models.DateField(verbose_name='Start Date')),
|
|
('end_date', models.DateField(verbose_name='End Date')),
|
|
('status', models.CharField(choices=[('started', 'Started'), ('completed', 'Completed')], max_length=255, verbose_name='Cycle Status')),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cycle_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('owned_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_by_cycle', to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Cycle',
|
|
'verbose_name_plural': 'Cycles',
|
|
'db_table': 'cycle',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Issue',
|
|
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, verbose_name='Issue Name')),
|
|
('description', models.JSONField(blank=True, verbose_name='Issue Description')),
|
|
('priority', models.CharField(blank=True, choices=[('urgent', 'Urgent'), ('high', 'High'), ('medium', 'Medium'), ('low', 'Low')], max_length=30, null=True, verbose_name='Issue Priority')),
|
|
('start_date', models.DateField(blank=True, null=True)),
|
|
('target_date', models.DateField(blank=True, null=True)),
|
|
('sequence_id', models.IntegerField(default=1, verbose_name='Issue Sequence ID')),
|
|
('attachments', django.contrib.postgres.fields.ArrayField(base_field=models.URLField(), blank=True, default=list, size=10)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue',
|
|
'verbose_name_plural': 'Issues',
|
|
'db_table': 'issue',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Project',
|
|
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, verbose_name='Project Name')),
|
|
('description', models.TextField(blank=True, verbose_name='Project Description')),
|
|
('description_rt', models.JSONField(blank=True, null=True, verbose_name='Project Description RT')),
|
|
('description_html', models.JSONField(blank=True, null=True, verbose_name='Project Description HTML')),
|
|
('network', models.PositiveSmallIntegerField(choices=[(0, 'Secret'), (2, 'Public')], default=2)),
|
|
('identifier', models.CharField(blank=True, max_length=5, null=True, verbose_name='Project Identifier')),
|
|
('slug', models.SlugField(blank=True, max_length=100)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='project_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('default_assignee', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='default_assignee', to=settings.AUTH_USER_MODEL)),
|
|
('project_lead', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='project_lead', to=settings.AUTH_USER_MODEL)),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='project_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Project',
|
|
'verbose_name_plural': 'Projects',
|
|
'db_table': 'project',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Team',
|
|
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, verbose_name='Team Name')),
|
|
('description', models.TextField(blank=True, verbose_name='Team Description')),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Team',
|
|
'verbose_name_plural': 'Teams',
|
|
'db_table': 'team',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Workspace',
|
|
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, verbose_name='Workspace Name')),
|
|
('logo', models.URLField(blank=True, null=True, verbose_name='Logo')),
|
|
('slug', models.SlugField(max_length=100, unique=True)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workspace_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owner_workspace', to=settings.AUTH_USER_MODEL)),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workspace_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Workspace',
|
|
'verbose_name_plural': 'Workspaces',
|
|
'db_table': 'workspace',
|
|
'ordering': ('-created_at',),
|
|
'unique_together': {('name', 'owner')},
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='WorkspaceMemberInvite',
|
|
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)),
|
|
('email', models.CharField(max_length=255)),
|
|
('accepted', models.BooleanField(default=False)),
|
|
('token', models.CharField(max_length=255)),
|
|
('message', models.TextField(null=True)),
|
|
('responded_at', models.DateTimeField(null=True)),
|
|
('role', models.PositiveSmallIntegerField(choices=[(20, 'Owner'), (15, 'Admin'), (10, 'Member'), (5, 'Guest')], default=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workspacememberinvite_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='workspacememberinvite_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_member_invite', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Workspace Member Invite',
|
|
'verbose_name_plural': 'Workspace Member Invites',
|
|
'db_table': 'workspace_member_invite',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='View',
|
|
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, verbose_name='View Name')),
|
|
('description', models.TextField(blank=True, verbose_name='View Description')),
|
|
('query', models.JSONField(verbose_name='View Query')),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='view_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_view', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='view_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_view', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'View',
|
|
'verbose_name_plural': 'Views',
|
|
'db_table': 'view',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='TimelineIssue',
|
|
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)),
|
|
('sequence_id', models.FloatField(default=1.0)),
|
|
('links', models.JSONField(blank=True, default=dict)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='timelineissue_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issue_timeline', to='db.issue')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_timelineissue', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='timelineissue_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_timelineissue', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Timeline Issue',
|
|
'verbose_name_plural': 'Timeline Issues',
|
|
'db_table': 'issue_timeline',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='TeamMember',
|
|
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)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teammember_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team_member', to=settings.AUTH_USER_MODEL)),
|
|
('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team_member', to='db.team')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teammember_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team_member', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Team Member',
|
|
'verbose_name_plural': 'Team Members',
|
|
'db_table': 'team_member',
|
|
'ordering': ('-created_at',),
|
|
'unique_together': {('team', 'member')},
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='members',
|
|
field=models.ManyToManyField(blank=True, related_name='members', through='db.TeamMember', to=settings.AUTH_USER_MODEL),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='updated_by',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='team',
|
|
name='workspace',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_team', to='db.workspace'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='State',
|
|
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, verbose_name='State Name')),
|
|
('description', models.TextField(blank=True, verbose_name='State Description')),
|
|
('color', models.CharField(max_length=255, verbose_name='State Color')),
|
|
('slug', models.SlugField(blank=True, max_length=100)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='state_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_state', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='state_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_state', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'State',
|
|
'verbose_name_plural': 'States',
|
|
'db_table': 'state',
|
|
'ordering': ('-created_at',),
|
|
'unique_together': {('name', 'project')},
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='SocialLoginConnection',
|
|
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)),
|
|
('medium', models.CharField(choices=[('Google', 'google'), ('Github', 'github')], default=None, max_length=20)),
|
|
('last_login_at', models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
('last_received_at', models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
('token_data', models.JSONField(null=True)),
|
|
('extra_data', models.JSONField(null=True)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='socialloginconnection_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='socialloginconnection_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_login_connections', to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Social Login Connection',
|
|
'verbose_name_plural': 'Social Login Connections',
|
|
'db_table': 'social_login_connection',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Shortcut',
|
|
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, verbose_name='Cycle Name')),
|
|
('description', models.TextField(blank=True, verbose_name='Cycle Description')),
|
|
('type', models.CharField(choices=[('repo', 'Repo'), ('direct', 'Direct')], max_length=255, verbose_name='Shortcut Type')),
|
|
('url', models.URLField(blank=True, null=True, verbose_name='URL')),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='shortcut_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_shortcut', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='shortcut_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_shortcut', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Shortcut',
|
|
'verbose_name_plural': 'Shortcuts',
|
|
'db_table': 'shortcut',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProjectMemberInvite',
|
|
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)),
|
|
('email', models.CharField(max_length=255)),
|
|
('accepted', models.BooleanField(default=False)),
|
|
('token', models.CharField(max_length=255)),
|
|
('message', models.TextField(null=True)),
|
|
('responded_at', models.DateTimeField(null=True)),
|
|
('role', models.PositiveSmallIntegerField(choices=[(20, 'Admin'), (15, 'Member'), (10, 'Viewer'), (5, 'Guest')], default=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='projectmemberinvite_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_projectmemberinvite', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='projectmemberinvite_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_projectmemberinvite', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Project Member Invite',
|
|
'verbose_name_plural': 'Project Member Invites',
|
|
'db_table': 'project_member_invite',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProjectIdentifier',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Last Modified At')),
|
|
('name', models.CharField(max_length=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='projectidentifier_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='project_identifier', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='projectidentifier_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Project Identifier',
|
|
'verbose_name_plural': 'Project Identifiers',
|
|
'db_table': 'project_identifier',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='project',
|
|
name='workspace',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_project', to='db.workspace'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Label',
|
|
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)),
|
|
('description', models.TextField(blank=True)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='label_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_label', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='label_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_label', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Label',
|
|
'verbose_name_plural': 'Labels',
|
|
'db_table': 'label',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueSequence',
|
|
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)),
|
|
('sequence', models.PositiveBigIntegerField(default=1)),
|
|
('deleted', models.BooleanField(default=False)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issuesequence_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('issue', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issue_sequence', to='db.issue')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issuesequence', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issuesequence_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issuesequence', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Sequence',
|
|
'verbose_name_plural': 'Issue Sequences',
|
|
'db_table': 'issue_sequence',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueProperty',
|
|
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)),
|
|
('properties', models.JSONField(default=dict)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueproperty_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issueproperty', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueproperty_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='issue_property_user', to=settings.AUTH_USER_MODEL)),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issueproperty', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Property',
|
|
'verbose_name_plural': 'Issue Properties',
|
|
'db_table': 'issue_property',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueLabel',
|
|
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)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issuelabel_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='label_issue', to='db.issue')),
|
|
('label', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='label_issue', to='db.label')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issuelabel', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issuelabel_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issuelabel', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Label',
|
|
'verbose_name_plural': 'Issue Labels',
|
|
'db_table': 'issue_label',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueComment',
|
|
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', models.TextField(blank=True, verbose_name='Comment')),
|
|
('attachments', django.contrib.postgres.fields.ArrayField(base_field=models.URLField(), blank=True, default=list, size=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issuecomment_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='db.issue')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issuecomment', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issuecomment_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issuecomment', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Comment',
|
|
'verbose_name_plural': 'Issue Comments',
|
|
'db_table': 'issue_comment',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueBlocker',
|
|
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)),
|
|
('block', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blocker_issues', to='db.issue')),
|
|
('blocked_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blocked_issues', to='db.issue')),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueblocker_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issueblocker', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueblocker_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issueblocker', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Blocker',
|
|
'verbose_name_plural': 'Issue Blockers',
|
|
'db_table': 'issue_blocker',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueAssignee',
|
|
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)),
|
|
('assignee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issue_assignee', to=settings.AUTH_USER_MODEL)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueassignee_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issue_assignee', to='db.issue')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issueassignee', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueassignee_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issueassignee', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Assignee',
|
|
'verbose_name_plural': 'Issue Assignees',
|
|
'db_table': 'issue_assignee',
|
|
'ordering': ('-created_at',),
|
|
'unique_together': {('issue', 'assignee')},
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='IssueActivity',
|
|
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)),
|
|
('verb', models.CharField(default='created', max_length=255, verbose_name='Action')),
|
|
('field', models.CharField(blank=True, max_length=255, null=True, verbose_name='Field Name')),
|
|
('old_value', models.CharField(blank=True, max_length=255, null=True, verbose_name='Old Value')),
|
|
('new_value', models.CharField(blank=True, max_length=255, null=True, verbose_name='New Value')),
|
|
('comment', models.TextField(blank=True, verbose_name='Comment')),
|
|
('attachments', django.contrib.postgres.fields.ArrayField(base_field=models.URLField(), blank=True, default=list, size=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueactivity_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issue_activity', to='db.issue')),
|
|
('issue_comment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issue_comment', to='db.issuecomment')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issueactivity', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issueactivity_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issueactivity', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Issue Activity',
|
|
'verbose_name_plural': 'Issue Activities',
|
|
'db_table': 'issue_activity',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='assignees',
|
|
field=models.ManyToManyField(blank=True, related_name='assignee', through='db.IssueAssignee', to=settings.AUTH_USER_MODEL),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='created_by',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issue_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='labels',
|
|
field=models.ManyToManyField(blank=True, related_name='labels', through='db.IssueLabel', to='db.Label'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='parent',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='parent_issue', to='db.issue'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='project',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_issue', to='db.project'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='state',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='state_issue', to='db.state'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='updated_by',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='issue_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='issue',
|
|
name='workspace',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_issue', to='db.workspace'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='FileAsset',
|
|
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)),
|
|
('attributes', models.JSONField(default=dict)),
|
|
('asset', models.FileField(upload_to='library-assets')),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fileasset_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='fileasset_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
],
|
|
options={
|
|
'verbose_name': 'File Asset',
|
|
'verbose_name_plural': 'File Assets',
|
|
'db_table': 'file_asset',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CycleIssue',
|
|
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)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cycleissue_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('cycle', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issue_cycle', to='db.cycle')),
|
|
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issue_cycle', to='db.issue')),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_cycleissue', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cycleissue_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_cycleissue', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Cycle Issue',
|
|
'verbose_name_plural': 'Cycle Issues',
|
|
'db_table': 'cycle_issue',
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='cycle',
|
|
name='project',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_cycle', to='db.project'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='cycle',
|
|
name='updated_by',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cycle_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='cycle',
|
|
name='workspace',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_cycle', to='db.workspace'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='WorkspaceMember',
|
|
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)),
|
|
('role', models.PositiveSmallIntegerField(choices=[(20, 'Owner'), (15, 'Admin'), (10, 'Member'), (5, 'Guest')], default=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workspacemember_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='member_workspace', to=settings.AUTH_USER_MODEL)),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workspacemember_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_member', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Workspace Member',
|
|
'verbose_name_plural': 'Workspace Members',
|
|
'db_table': 'workspace_member',
|
|
'ordering': ('-created_at',),
|
|
'unique_together': {('workspace', 'member')},
|
|
},
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='team',
|
|
unique_together={('name', 'workspace')},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProjectMember',
|
|
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', models.TextField(blank=True, null=True)),
|
|
('role', models.PositiveSmallIntegerField(choices=[(20, 'Admin'), (15, 'Member'), (10, 'Viewer'), (5, 'Guest')], default=10)),
|
|
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='projectmember_created_by', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
|
|
('member', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='member_project', to=settings.AUTH_USER_MODEL)),
|
|
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_projectmember', to='db.project')),
|
|
('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='projectmember_updated_by', to=settings.AUTH_USER_MODEL, verbose_name='Last Modified By')),
|
|
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='workspace_projectmember', to='db.workspace')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Project Member',
|
|
'verbose_name_plural': 'Project Members',
|
|
'db_table': 'project_member',
|
|
'ordering': ('-created_at',),
|
|
'unique_together': {('project', 'member')},
|
|
},
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name='project',
|
|
unique_together={('name', 'workspace')},
|
|
),
|
|
]
|