@ -1,9 +1,10 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-16 11:27
|
||||
# Generated by Django 5.1.8 on 2025-05-04 10:14
|
||||
|
||||
import access.fields
|
||||
import access.models.tenancy
|
||||
import core.lib.slash_commands
|
||||
import core.models.ticket_base
|
||||
import core.models.ticket_comment_base
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
from django.conf import settings
|
||||
@ -20,13 +21,44 @@ class Migration(migrations.Migration):
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TicketCommentBase',
|
||||
fields=[
|
||||
('id', models.AutoField(help_text='Comment ID Number', primary_key=True, serialize=False, unique=True, verbose_name='Number')),
|
||||
('external_ref', models.IntegerField(blank=True, default=None, help_text='External System reference', null=True, verbose_name='Reference Number')),
|
||||
('external_system', models.IntegerField(blank=True, choices=[(1, 'Github'), (2, 'Gitlab'), (9999, 'Custom #1 (Imported)'), (9998, 'Custom #2 (Imported)'), (9997, 'Custom #3 (Imported)'), (9996, 'Custom #4 (Imported)'), (9995, 'Custom #5 (Imported)'), (9994, 'Custom #6 (Imported)'), (9993, 'Custom #7 (Imported)'), (9992, 'Custom #8 (Imported)'), (9991, 'Custom #9 (Imported)')], default=None, help_text='External system this item derives', null=True, verbose_name='External System')),
|
||||
('comment_type', models.CharField(choices=core.models.ticket_comment_base.TicketCommentBase.get_comment_type_choices, help_text='Type this comment is. derived from Meta.verbose_name', max_length=30, verbose_name='Type')),
|
||||
('body', models.TextField(blank=True, help_text='Comment contents', null=True, verbose_name='Comment')),
|
||||
('private', models.BooleanField(default=False, help_text='Is this comment private', verbose_name='Private')),
|
||||
('duration', models.IntegerField(default=0, help_text='Time spent in seconds', verbose_name='Duration')),
|
||||
('estimation', models.IntegerField(default=0, help_text='Time estimation in seconds', verbose_name='Estimate')),
|
||||
('is_template', models.BooleanField(default=False, help_text='Is this comment a template', verbose_name='Template')),
|
||||
('source', models.IntegerField(choices=[(1, 'Direct'), (2, 'E-Mail'), (3, 'Helpdesk'), (4, 'Phone'), (5, 'Service Catalog'), (6, 'SMS Message')], default=3, help_text='Origin type for this comment', verbose_name='Source')),
|
||||
('is_closed', models.BooleanField(default=False, help_text='Is this comment considered Closed?', verbose_name='Comment Closed')),
|
||||
('date_closed', models.DateTimeField(blank=True, help_text='Date ticket closed', null=True, verbose_name='Closed Date')),
|
||||
('created', access.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, help_text='Date and time of creation', verbose_name='Created')),
|
||||
('modified', access.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, help_text='Date and time of last modification', verbose_name='Modified')),
|
||||
('category', models.ForeignKey(blank=True, default=None, help_text='Category of the comment', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketcommentcategory', verbose_name='Category')),
|
||||
('organization', models.ForeignKey(help_text='Organization this belongs to', on_delete=django.db.models.deletion.CASCADE, related_name='+', to='access.organization', validators=[access.models.tenancy.TenancyObject.validatate_organization_exists], verbose_name='Organization')),
|
||||
('parent', models.ForeignKey(blank=True, default=None, help_text='Parent ID for creating discussion threads', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketcommentbase', verbose_name='Parent Comment')),
|
||||
('template', models.ForeignKey(blank=True, default=None, help_text='Comment Template to use', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='comment_template', to='core.ticketcommentbase', verbose_name='Template')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ticket Comment',
|
||||
'verbose_name_plural': 'Ticket Comments',
|
||||
'ordering': ['id'],
|
||||
'permissions': [('import_ticketcommentbase', 'Can import ticket comment.'), ('purge_ticketcommentbase', 'Can purge ticket comment.'), ('triage_ticketcommentbase', 'Can triage ticket comment.')],
|
||||
'sub_model_type': 'comment',
|
||||
},
|
||||
bases=(core.lib.slash_commands.SlashCommands, models.Model),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TicketBase',
|
||||
fields=[
|
||||
('id', models.AutoField(help_text='Ticket ID Number', primary_key=True, serialize=False, unique=True, verbose_name='Number')),
|
||||
('external_system', models.IntegerField(blank=True, choices=[(1, 'Github'), (2, 'Gitlab'), (9999, 'Custom #1 (Imported)'), (9998, 'Custom #2 (Imported)'), (9997, 'Custom #3 (Imported)'), (9996, 'Custom #4 (Imported)'), (9995, 'Custom #5 (Imported)'), (9994, 'Custom #6 (Imported)'), (9993, 'Custom #7 (Imported)'), (9992, 'Custom #8 (Imported)'), (9991, 'Custom #9 (Imported)')], default=None, help_text='External system this item derives', null=True, verbose_name='External System')),
|
||||
('external_ref', models.IntegerField(blank=True, default=None, help_text='External System reference', null=True, verbose_name='Reference Number')),
|
||||
('ticket_type', models.CharField(blank=True, default='ticket', help_text='Ticket Type. (derived from ticket model)', max_length=30, validators=[core.models.ticket_base.TicketBase.validate_not_null], verbose_name='Ticket Type')),
|
||||
('ticket_type', models.CharField(blank=True, choices=core.models.ticket_base.TicketBase.get_ticket_type_choices, default='ticket', help_text='Ticket Type. (derived from ticket model)', max_length=30, validators=[core.models.ticket_base.TicketBase.validate_not_null], verbose_name='Ticket Type')),
|
||||
('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'New'), (3, 'Assigned'), (6, 'Assigned (Planning)'), (7, 'Pending'), (8, 'Solved'), (4, 'Closed'), (5, 'Invalid')], default=2, help_text='Status of ticket', verbose_name='Status')),
|
||||
('title', models.CharField(help_text='Title of the Ticket', max_length=150, unique=True, verbose_name='Title')),
|
||||
('description', models.TextField(blank=True, help_text='Description for the ticket.', null=True, verbose_name='Description')),
|
||||
@ -50,7 +82,7 @@ class Migration(migrations.Migration):
|
||||
('milestone', models.ForeignKey(blank=True, help_text='Assign to a milestone', null=True, on_delete=django.db.models.deletion.PROTECT, to='project_management.projectmilestone', verbose_name='Project Milestone')),
|
||||
('opened_by', models.ForeignKey(help_text='Who is the ticket for', on_delete=django.db.models.deletion.PROTECT, related_name='ticket_opened', to=settings.AUTH_USER_MODEL, verbose_name='Opened By')),
|
||||
('organization', models.ForeignKey(help_text='Organization this belongs to', on_delete=django.db.models.deletion.CASCADE, related_name='+', to='access.organization', validators=[access.models.tenancy.TenancyObject.validatate_organization_exists], verbose_name='Organization')),
|
||||
('parent_ticket', models.ForeignKey(blank=True, default=None, help_text='Parent of this ticket', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketbase', verbose_name='Parent Ticket')),
|
||||
('parent_ticket', models.ForeignKey(blank=True, help_text='Parent of this ticket', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketbase', verbose_name='Parent Ticket')),
|
||||
('project', models.ForeignKey(blank=True, help_text='Assign to a project', null=True, on_delete=django.db.models.deletion.PROTECT, to='project_management.project', verbose_name='Project')),
|
||||
('subscribed_to', models.ManyToManyField(blank=True, help_text='Users / Groups subscribed to the ticket', related_name='ticket_subscription', to='access.entity', verbose_name='Users / Groups Subscribed')),
|
||||
],
|
||||
@ -58,8 +90,37 @@ class Migration(migrations.Migration):
|
||||
'verbose_name': 'Ticket',
|
||||
'verbose_name_plural': 'Tickets',
|
||||
'ordering': ['id'],
|
||||
'sub_model_type': 'ticket',
|
||||
'unique_together': {('external_system', 'external_ref')},
|
||||
},
|
||||
bases=(core.lib.slash_commands.SlashCommands, models.Model),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TicketCommentSolution',
|
||||
fields=[
|
||||
('ticketcommentbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.ticketcommentbase')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ticket Comment Solution',
|
||||
'verbose_name_plural': 'Ticket Comment Solutions',
|
||||
'ordering': ['id'],
|
||||
'permissions': [('import_ticketcommentsolution', 'Can import ticket solution comment.'), ('purge_ticketcommentsolution', 'Can purge ticket solution comment.'), ('triage_ticketcommentsolution', 'Can triage ticket solution comment.')],
|
||||
'sub_model_type': 'solution',
|
||||
},
|
||||
bases=('core.ticketcommentbase',),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='ticketcommentbase',
|
||||
name='ticket',
|
||||
field=models.ForeignKey(help_text='Ticket this comment belongs to', on_delete=django.db.models.deletion.PROTECT, to='core.ticketbase', verbose_name='Ticket'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='ticketcommentbase',
|
||||
name='user',
|
||||
field=models.ForeignKey(help_text='Who made the comment', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='comment_user', to='access.entity', verbose_name='User'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='ticketcommentbase',
|
||||
unique_together={('external_system', 'external_ref')},
|
||||
),
|
||||
]
|
@ -1,51 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-16 11:28
|
||||
|
||||
import access.fields
|
||||
import access.models.tenancy
|
||||
import core.lib.slash_commands
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('access', '0005_entity_person_entityhistory_entitynotes_role_and_more'),
|
||||
('core', '0022_ticketbase'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TicketCommentBase',
|
||||
fields=[
|
||||
('id', models.AutoField(help_text='Comment ID Number', primary_key=True, serialize=False, unique=True, verbose_name='Number')),
|
||||
('external_ref', models.IntegerField(blank=True, default=None, help_text='External System reference', null=True, verbose_name='Reference Number')),
|
||||
('external_system', models.IntegerField(blank=True, choices=[(1, 'Github'), (2, 'Gitlab'), (9999, 'Custom #1 (Imported)'), (9998, 'Custom #2 (Imported)'), (9997, 'Custom #3 (Imported)'), (9996, 'Custom #4 (Imported)'), (9995, 'Custom #5 (Imported)'), (9994, 'Custom #6 (Imported)'), (9993, 'Custom #7 (Imported)'), (9992, 'Custom #8 (Imported)'), (9991, 'Custom #9 (Imported)')], default=None, help_text='External system this item derives', null=True, verbose_name='External System')),
|
||||
('comment_type', models.CharField(default='ticket_comment', help_text='Type this comment is. derived from Meta.verbose_name', max_length=30, verbose_name='Type')),
|
||||
('body', models.TextField(help_text='Comment contents', verbose_name='Comment')),
|
||||
('private', models.BooleanField(default=False, help_text='Is this comment private', verbose_name='Private')),
|
||||
('duration', models.IntegerField(default=0, help_text='Time spent in seconds', verbose_name='Duration')),
|
||||
('estimation', models.IntegerField(default=0, help_text='Time estimation in seconds', verbose_name='Estimate')),
|
||||
('is_template', models.BooleanField(default=False, help_text='Is this comment a template', verbose_name='Template')),
|
||||
('source', models.IntegerField(choices=[(1, 'Direct'), (2, 'E-Mail'), (3, 'Helpdesk'), (4, 'Phone'), (5, 'Service Catalog'), (6, 'SMS Message')], default=3, help_text='Origin type for this comment', verbose_name='Source')),
|
||||
('is_closed', models.BooleanField(default=False, help_text='Is this comment considered Closed?', verbose_name='Comment Closed')),
|
||||
('date_closed', models.DateTimeField(blank=True, help_text='Date ticket closed', null=True, verbose_name='Closed Date')),
|
||||
('created', access.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, help_text='Date and time of creation', verbose_name='Created')),
|
||||
('modified', access.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, help_text='Date and time of last modification', verbose_name='Modified')),
|
||||
('category', models.ForeignKey(blank=True, default=None, help_text='Category of the comment', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketcommentcategory', verbose_name='Category')),
|
||||
('organization', models.ForeignKey(help_text='Organization this belongs to', on_delete=django.db.models.deletion.CASCADE, related_name='+', to='access.organization', validators=[access.models.tenancy.TenancyObject.validatate_organization_exists], verbose_name='Organization')),
|
||||
('parent', models.ForeignKey(blank=True, default=None, help_text='Parent ID for creating discussion threads', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketcommentbase', verbose_name='Parent Comment')),
|
||||
('template', models.ForeignKey(blank=True, default=None, help_text='Comment Template to use', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='comment_template', to='core.ticketcommentbase', verbose_name='Template')),
|
||||
('ticket', models.ForeignKey(help_text='Ticket this comment belongs to', on_delete=django.db.models.deletion.PROTECT, to='core.ticketbase', verbose_name='Ticket')),
|
||||
('user', models.ForeignKey(help_text='Who made the comment', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='comment_user', to='access.entity', verbose_name='User')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ticket Comment',
|
||||
'verbose_name_plural': 'Ticket Comments',
|
||||
'ordering': ['id'],
|
||||
'unique_together': {('external_system', 'external_ref')},
|
||||
},
|
||||
bases=(core.lib.slash_commands.SlashCommands, models.Model),
|
||||
),
|
||||
]
|
@ -1,26 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-25 20:46
|
||||
|
||||
import core.models.ticket_base
|
||||
import core.models.ticket_comment_base
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0023_ticketcommentbase'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ticketcommentbase',
|
||||
name='body',
|
||||
field=models.TextField(blank=True, help_text='Comment contents', null=True, verbose_name='Comment'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='ticketcommentbase',
|
||||
name='comment_type',
|
||||
field=models.CharField(choices=core.models.ticket_comment_base.TicketCommentBase.get_comment_type_choices, help_text='Type this comment is. derived from Meta.verbose_name', max_length=30, verbose_name='Type'),
|
||||
),
|
||||
]
|
@ -1,28 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-25 20:47
|
||||
|
||||
import core.models.ticket_base
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0024_alter_ticketcommentbase'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TicketCommentSolution',
|
||||
fields=[
|
||||
('ticketcommentbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.ticketcommentbase')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ticket Comment Solution',
|
||||
'verbose_name_plural': 'Ticket Comment Solutions',
|
||||
'ordering': ['id'],
|
||||
'sub_model_type': 'solution',
|
||||
},
|
||||
bases=('core.ticketcommentbase',),
|
||||
),
|
||||
]
|
@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-25 20:48
|
||||
|
||||
import core.models.ticket_base
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0025_ticketcommentsolution'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ticketbase',
|
||||
name='ticket_type',
|
||||
field=models.CharField(blank=True, choices=core.models.ticket_base.TicketBase.get_ticket_type_choices, default='ticket', help_text='Ticket Type. (derived from ticket model)', max_length=30, validators=[core.models.ticket_base.TicketBase.validate_not_null], verbose_name='Ticket Type'),
|
||||
),
|
||||
]
|
@ -1,17 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-25 21:36
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0026_alter_ticketbase_ticket_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='ticketcommentbase',
|
||||
options={'ordering': ['id'], 'permissions': [('import_ticketcommentbase', 'Can import ticket comment.'), ('purge_ticketcommentbase', 'Can purge ticket comment.'), ('triage_ticketcommentbase', 'Can triage ticket comment.')], 'verbose_name': 'Ticket Comment', 'verbose_name_plural': 'Ticket Comments'},
|
||||
),
|
||||
]
|
@ -1,17 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-25 21:38
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0027_alter_ticketcommentbase_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='ticketcommentsolution',
|
||||
options={'ordering': ['id'], 'permissions': [('import_ticketcommentsolution', 'Can import ticket solution comment.'), ('purge_ticketcommentsolution', 'Can purge ticket solution comment.'), ('triage_ticketcommentsolution', 'Can triage ticket solution comment.')], 'verbose_name': 'Ticket Comment Solution', 'verbose_name_plural': 'Ticket Comment Solutions'},
|
||||
),
|
||||
]
|
@ -1,19 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-05-03 17:07
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0028_alter_ticketcommentsolution_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ticketbase',
|
||||
name='parent_ticket',
|
||||
field=models.ForeignKey(blank=True, help_text='Parent of this ticket', null=True, on_delete=django.db.models.deletion.PROTECT, to='core.ticketbase', verbose_name='Parent Ticket'),
|
||||
),
|
||||
]
|
@ -1,4 +1,4 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-16 11:28
|
||||
# Generated by Django 5.1.8 on 2025-05-04 10:14
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
@ -7,7 +7,7 @@ from django.db import migrations, models
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0023_ticketcommentbase'),
|
||||
('core', '0022_ticketcommentbase_ticketbase_ticketcommentsolution_and_more'),
|
||||
('itim', '0008_clusterhistory_clustertypehistory_porthistory_and_more'),
|
||||
]
|
||||
|
||||
@ -23,7 +23,22 @@ class Migration(migrations.Migration):
|
||||
'verbose_name': 'SLM Ticket Base',
|
||||
'verbose_name_plural': 'SLM Tickets',
|
||||
'ordering': ['id'],
|
||||
'sub_model_type': 'slm',
|
||||
},
|
||||
bases=('core.ticketbase',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RequestTicket',
|
||||
fields=[
|
||||
('slmticket_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='itim.slmticket')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Request',
|
||||
'verbose_name_plural': 'Requests',
|
||||
'ordering': ['id'],
|
||||
'permissions': [('import_requestticket', 'Can import request ticket'), ('purge_requestticket', 'Can purge request ticket'), ('triage_requestticket', 'Can triage request ticket')],
|
||||
'sub_model_type': 'request',
|
||||
},
|
||||
bases=('itim.slmticket',),
|
||||
),
|
||||
]
|
@ -1,27 +0,0 @@
|
||||
# Generated by Django 5.1.8 on 2025-04-16 11:33
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('itim', '0009_slmticket'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='RequestTicket',
|
||||
fields=[
|
||||
('slmticket_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='itim.slmticket')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Request',
|
||||
'verbose_name_plural': 'Requests',
|
||||
'ordering': ['id'],
|
||||
'permissions': [('import_requestticket', 'Can import request ticket'), ('purge_requestticket', 'Can purge request ticket'), ('triage_requestticket', 'Can triage request ticket')],
|
||||
},
|
||||
bases=('itim.slmticket',),
|
||||
),
|
||||
]
|
Reference in New Issue
Block a user