class Migration(migrations.Migration):

    dependencies = [
        ('data', '0014_auto_20201209_1146'),
    ]

    operations = [
        migrations.AlterField(
            model_name='items',
            name='carrying_cost',
            field=models.PositiveIntegerField(
                default='15',
                help_text='Enter as percentage of unit cost',
                validators=[data.models.validate_even]),
        ),
        migrations.AlterField(
            model_name='items',
            name='lead_time',
            field=models.PositiveIntegerField(
                blank=True,
                default='5',
                null=True,
                validators=[data.models.validate_zero]),
        ),
        migrations.AlterField(
            model_name='items',
            name='service_level',
            field=models.PositiveIntegerField(
                blank=True,
                default='95',
                null=True,
                validators=[data.models.validate_even]),
        ),
    ]
class Migration(migrations.Migration):

    dependencies = [
        ('data', '0004_items_no_of_workingdays'),
    ]

    operations = [
        migrations.AddField(
            model_name='items',
            name='z',
            field=models.DecimalField(blank=True,
                                      decimal_places=3,
                                      default='0',
                                      max_digits=4,
                                      null=True),
        ),
        migrations.AlterField(
            model_name='items',
            name='carrying_cost',
            field=models.PositiveIntegerField(
                default='0',
                help_text='Enter as percentage of unit cost',
                validators=[data.models.validate_even]),
        ),
    ]
Exemple #3
0
class Migration(migrations.Migration):

    dependencies = [
        ('data', '0013_auto_20201209_1145'),
    ]

    operations = [
        migrations.AlterField(
            model_name='items',
            name='service_level',
            field=models.PositiveIntegerField(
                blank=True,
                default='0',
                null=True,
                validators=[data.models.validate_even]),
        ),
    ]
Exemple #4
0
class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='CpuData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name', models.CharField(max_length=128)),
                ('cores', models.CharField(blank=True, max_length=32)),
            ],
            options={
                'ordering': ('name', 'cores'),
            },
            bases=(data.models.FromLuaMixin, models.Model),
        ),
        migrations.CreateModel(
            name='EngineData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('buildFlags', models.CharField(blank=True, max_length=1024)),
                ('version', models.CharField(blank=True, max_length=64)),
                ('versionFull', models.CharField(blank=True, max_length=128)),
                ('versionPatchSet', models.CharField(blank=True,
                                                     max_length=32)),
                ('wordSize', models.PositiveIntegerField(blank=True,
                                                         null=True)),
            ],
            options={
                'ordering': ('versionFull', 'versionPatchSet'),
            },
            bases=(data.models.FromLuaMixin, models.Model),
        ),
        migrations.CreateModel(
            name='GlData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('glRenderer', models.CharField(blank=True, max_length=256)),
                ('glVendor', models.CharField(blank=True, max_length=256)),
                ('glVersion', models.CharField(blank=True, max_length=256)),
                ('glVersionShort', models.CharField(blank=True,
                                                    max_length=128)),
                ('glewVersion', models.CharField(blank=True, max_length=256)),
                ('glslVersion', models.CharField(blank=True, max_length=256)),
                ('glslVersionShort',
                 models.CharField(blank=True, max_length=128)),
                ('glSupportNonPowerOfTwoTex', models.NullBooleanField()),
                ('glSupportTextureQueryLOD', models.NullBooleanField()),
                ('glSupport24bitDepthBuffer', models.NullBooleanField()),
                ('glSupportRestartPrimitive', models.NullBooleanField()),
                ('glSupportClipSpaceControl', models.NullBooleanField()),
                ('glSupportFragDepthLayout', models.NullBooleanField()),
            ],
            options={
                'ordering': ('glRenderer', 'glVersion'),
            },
            bases=(data.models.FromLuaMixin, models.Model),
        ),
        migrations.CreateModel(
            name='GpuData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('gpu', models.CharField(blank=True, max_length=256)),
                ('gpuMemorySize',
                 models.PositiveIntegerField(blank=True, null=True)),
                ('gpuVendor', models.CharField(blank=True, max_length=256)),
            ],
            options={
                'ordering': ('gpuVendor', 'gpu', 'gpuMemorySize'),
            },
            bases=(data.models.FromLuaMixin, models.Model),
        ),
        migrations.CreateModel(
            name='MachineData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('account', models.CharField(max_length=128)),
                ('updated', models.DateTimeField(auto_now=True)),
                ('ram', models.PositiveIntegerField(blank=True)),
                ('cpu',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   to='data.CpuData')),
                ('engine_data',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   to='data.EngineData')),
                ('gl_data',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   to='data.GlData')),
                ('gpu_data',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   to='data.GpuData')),
            ],
            options={
                'ordering': ('-updated', ),
            },
        ),
        migrations.CreateModel(
            name='OsData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('osFamily', models.CharField(max_length=32)),
                ('osName', models.CharField(blank=True, max_length=256)),
            ],
            options={
                'ordering': ('osFamily', 'osName'),
            },
        ),
        migrations.CreateModel(
            name='PlatformData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('attribute', models.CharField(max_length=128)),
                ('value', models.CharField(max_length=1024)),
            ],
            options={
                'ordering': ('attribute', ),
            },
        ),
        migrations.CreateModel(
            name='ScreenData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('resolution_x',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('resolution_y',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('color_depth',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('refresh_rate',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('windowed', models.NullBooleanField()),
            ],
            options={
                'ordering': ('resolution_x', 'resolution_y', 'color_depth'),
            },
            bases=(data.models.FromLuaMixin, models.Model),
        ),
        migrations.CreateModel(
            name='SDLData',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('sdlVersionCompiledMajor',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('sdlVersionCompiledMinor',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('sdlVersionCompiledPatch',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('sdlVersionLinkedMajor',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('sdlVersionLinkedMinor',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
                ('sdlVersionLinkedPatch',
                 models.PositiveSmallIntegerField(blank=True, null=True)),
            ],
            bases=(data.models.FromLuaMixin, models.Model),
        ),
        migrations.AlterUniqueTogether(
            name='sdldata',
            unique_together=set([
                ('sdlVersionCompiledMajor', 'sdlVersionCompiledMinor',
                 'sdlVersionCompiledPatch', 'sdlVersionLinkedMajor',
                 'sdlVersionLinkedMinor', 'sdlVersionLinkedPatch')
            ]),
        ),
        migrations.AlterUniqueTogether(
            name='screendata',
            unique_together=set([('resolution_x', 'resolution_y',
                                  'color_depth', 'refresh_rate', 'windowed')]),
        ),
        migrations.AddField(
            model_name='machinedata',
            name='os',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE, to='data.OsData'),
        ),
        migrations.AddField(
            model_name='machinedata',
            name='platform_data',
            field=models.ManyToManyField(to='data.PlatformData'),
        ),
        migrations.AddField(
            model_name='machinedata',
            name='screen_data',
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to='data.ScreenData'),
        ),
        migrations.AddField(
            model_name='machinedata',
            name='sdl_data',
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to='data.SDLData'),
        ),
        migrations.AlterUniqueTogether(
            name='cpudata',
            unique_together=set([('name', 'cores')]),
        ),
        migrations.AlterUniqueTogether(
            name='machinedata',
            unique_together=set([('account', 'cpu', 'os')]),
        ),
    ]
Exemple #5
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('auth', '0009_alter_user_last_name_max_length'),
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('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')),
                ('username',
                 models.CharField(
                     error_messages={
                         'unique': 'A user with that username already exists.'
                     },
                     help_text=
                     'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.',
                     max_length=150,
                     unique=True,
                     validators=[
                         django.contrib.auth.validators.
                         UnicodeUsernameValidator()
                     ],
                     verbose_name='username')),
                ('first_name',
                 models.CharField(blank=True,
                                  max_length=30,
                                  verbose_name='first name')),
                ('last_name',
                 models.CharField(blank=True,
                                  max_length=150,
                                  verbose_name='last name')),
                ('is_staff',
                 models.BooleanField(
                     default=False,
                     help_text=
                     'Designates whether the user can log into this admin site.',
                     verbose_name='staff status')),
                ('is_active',
                 models.BooleanField(
                     default=True,
                     help_text=
                     'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.',
                     verbose_name='active')),
                ('date_joined',
                 models.DateTimeField(auto_now_add=True, null=True)),
                ('bupt_id',
                 models.CharField(default=data.models.default_bupt_id,
                                  max_length=10,
                                  unique=True)),
                ('name', models.TextField(default='')),
                ('email', models.EmailField(max_length=254, unique=True)),
                ('phone',
                 models.CharField(default=data.models.default_phone,
                                  max_length=11,
                                  unique=True)),
                ('gender',
                 models.CharField(choices=[('male', 'male'),
                                           ('female', 'female')],
                                  default='male',
                                  max_length=6)),
                ('usertype',
                 models.CharField(choices=[('student', 'student'),
                                           ('teacher', 'teacher'),
                                           ('assistant', 'assistant')],
                                  default='student',
                                  max_length=20)),
                ('class_number',
                 models.CharField(default='noClass', max_length=10)),
                ('wechat', models.TextField(null=True)),
                ('forgotten', models.BooleanField(default=False)),
                ('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',
                'abstract': False,
            },
            managers=[
                ('objects', django.contrib.auth.models.UserManager()),
            ],
        ),
        migrations.CreateModel(
            name='HWFAssignment',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name', models.TextField()),
                ('description', models.TextField(blank=True, null=True)),
                ('assignment_type',
                 models.CharField(choices=[('image', 'image'),
                                           ('docs', 'docs'), ('vary', 'vary')],
                                  default='vary',
                                  max_length=20)),
                ('start_time',
                 models.DateTimeField(default='2019-01-01T00:00:00+00:00')),
                ('deadline', models.DateTimeField()),
                ('weight', models.FloatField(default=0.0)),
            ],
        ),
        migrations.CreateModel(
            name='HWFCourseClass',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name', models.TextField()),
                ('description', models.TextField(blank=True, null=True)),
                ('marks', models.FloatField(default=0.0)),
                ('school', models.TextField(blank=True, null=True)),
                ('start_time', models.DateTimeField(blank=True, null=True)),
                ('end_time', models.DateTimeField(blank=True, null=True)),
                ('students',
                 models.ManyToManyField(blank=True,
                                        related_name='students_course',
                                        to=settings.AUTH_USER_MODEL)),
                ('teachers',
                 models.ManyToManyField(blank=True,
                                        related_name='teachers_course',
                                        to=settings.AUTH_USER_MODEL)),
                ('teaching_assistants',
                 models.ManyToManyField(
                     blank=True,
                     related_name='teaching_assistants_course',
                     to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='HWFFile',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('data', models.FileField(null=True,
                                          upload_to='homework_file')),
                ('initial_upload_time',
                 models.DateTimeField(auto_now_add=True)),
                ('initial_upload_user',
                 models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
                                   to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='HWFSubmission',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('aware', models.BooleanField(default=True)),
                ('submit_time', models.DateTimeField(auto_now_add=True)),
                ('description', models.TextField(blank=True, null=True)),
                ('score', models.FloatField(default=0.0)),
                ('is_excellent', models.BooleanField(default=False)),
                ('addfile',
                 models.ManyToManyField(blank=True,
                                        related_name='addfile_submission',
                                        to='data.HWFFile')),
                ('assignment',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='assignment_submission',
                                   to='data.HWFAssignment')),
                ('image',
                 models.ManyToManyField(blank=True,
                                        related_name='image_submission',
                                        to='data.HWFFile')),
                ('pdf',
                 models.ForeignKey(null=True,
                                   on_delete=django.db.models.deletion.CASCADE,
                                   related_name='pdf_submission',
                                   to='data.HWFFile')),
                ('submitter',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='my_submission',
                                   to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='Message',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('send_time', models.DateTimeField(auto_now_add=True)),
                ('read', models.BooleanField(default=False)),
            ],
        ),
        migrations.CreateModel(
            name='MessageContent',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('text', models.TextField(max_length=2000)),
            ],
        ),
        migrations.CreateModel(
            name='MessageFile',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('data', models.FileField(null=True, upload_to='chat_file')),
                ('initial_upload_time',
                 models.DateTimeField(auto_now_add=True)),
                ('initial_upload_user',
                 models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
                                   to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='UserAvatar',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('url_height', models.PositiveIntegerField(default=75)),
                ('url_width', models.PositiveIntegerField(default=75)),
                ('useravatar',
                 models.ImageField(height_field='url_height',
                                   null=True,
                                   upload_to='avatars',
                                   width_field='url_width')),
                ('user',
                 models.ManyToManyField(related_name='useravatar',
                                        to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.AddField(
            model_name='messagecontent',
            name='addfile',
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name='file_message_content',
                to='data.MessageFile'),
        ),
        migrations.AddField(
            model_name='messagecontent',
            name='audio',
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name='audio_message_content',
                to='data.MessageFile'),
        ),
        migrations.AddField(
            model_name='messagecontent',
            name='picture',
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name='pic_message_content',
                to='data.MessageFile'),
        ),
        migrations.AddField(
            model_name='message',
            name='content',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name='complete_message',
                to='data.MessageContent'),
        ),
        migrations.AddField(
            model_name='message',
            name='receiver',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name='in_message',
                to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='message',
            name='sender',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name='out_message',
                to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='hwfassignment',
            name='addfile',
            field=models.ManyToManyField(blank=True,
                                         related_name='assignment',
                                         to='data.HWFFile'),
        ),
        migrations.AddField(
            model_name='hwfassignment',
            name='course_class',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name='course_assignments',
                to='data.HWFCourseClass'),
        ),
    ]
Exemple #6
0
class Migration(migrations.Migration):
    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='Project',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name',
                 models.CharField(max_length=255,
                                  unique=True,
                                  verbose_name='英文简称')),
                ('fullDisplayName',
                 models.CharField(db_index=True,
                                  max_length=255,
                                  verbose_name='中文全称')),
                ('description',
                 models.TextField(blank=True, null=True, verbose_name='描述')),
                ('url',
                 models.URLField(max_length=255,
                                 unique=True,
                                 verbose_name='URL地址')),
                ('config_xml',
                 models.FileField(upload_to=data.models.project_filepath,
                                  verbose_name='config.xml')),
                ('created_at',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='创建时间')),
                ('updated_at',
                 models.DateTimeField(auto_now=True, verbose_name='更新时间')),
            ],
            options={
                'verbose_name': '项目',
                'verbose_name_plural': '项目',
                'ordering': ('name', 'created_at'),
            },
        ),
        migrations.CreateModel(
            name='Job',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name',
                 models.CharField(db_index=True,
                                  max_length=255,
                                  verbose_name='Job名')),
                ('fullDisplayName',
                 models.CharField(db_index=True,
                                  max_length=255,
                                  verbose_name='中文全称')),
                ('description',
                 models.TextField(blank=True, null=True, verbose_name='描述')),
                ('url',
                 models.URLField(max_length=255,
                                 unique=True,
                                 verbose_name='URL地址')),
                ('config_xml',
                 models.FileField(upload_to=data.models.job_filepath,
                                  verbose_name='config.xml')),
                ('env',
                 models.CharField(default='all',
                                  max_length=255,
                                  verbose_name='环境(组)')),
                ('nextBuildNumber',
                 models.PositiveIntegerField(verbose_name='下次构建ID')),
                ('created_at',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='创建时间')),
                ('updated_at',
                 models.DateTimeField(auto_now=True, verbose_name='更新时间')),
                ('project',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='job_project',
                                   to='data.Project',
                                   verbose_name='所属项目')),
            ],
            options={
                'verbose_name': 'Job',
                'verbose_name_plural': 'Job',
                'ordering': ('name', 'created_at'),
                'unique_together': {('project', 'name')},
            },
        ),
        migrations.CreateModel(
            name='Build',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('build_id', models.PositiveIntegerField(verbose_name='构建ID')),
                ('url',
                 models.URLField(max_length=255,
                                 unique=True,
                                 verbose_name='URL地址')),
                ('result',
                 models.CharField(choices=[(0, 'SUCCESS'), (1, 'FAILED')],
                                  max_length=1,
                                  verbose_name='执行结果')),
                ('fullDisplayName',
                 models.CharField(db_index=True,
                                  max_length=255,
                                  verbose_name='中文全称')),
                ('description',
                 models.TextField(blank=True, null=True, verbose_name='描述')),
                ('start_time', models.DateTimeField(verbose_name='开始时间')),
                ('duration',
                 models.PositiveSmallIntegerField(verbose_name='构建时长')),
                ('consoleText',
                 models.FileField(upload_to=data.models.build_filepath,
                                  verbose_name='构建console信息')),
                ('created_at',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='创建时间')),
                ('updated_at',
                 models.DateTimeField(auto_now=True, verbose_name='更新时间')),
                ('job',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='build_job',
                                   to='data.Job',
                                   verbose_name='所属Job')),
            ],
            options={
                'verbose_name': '构建',
                'verbose_name_plural': '构建',
                'ordering': ('build_id', 'created_at'),
                'unique_together': {('job', 'build_id')},
            },
        ),
        migrations.CreateModel(
            name='JobParameter',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name', models.CharField(max_length=255, verbose_name='参数名')),
                ('type', models.CharField(max_length=255,
                                          verbose_name='参数类型')),
                ('value',
                 models.CharField(blank=True,
                                  max_length=255,
                                  null=True,
                                  verbose_name='参数值')),
                ('description',
                 models.TextField(blank=True, null=True, verbose_name='描述')),
                ('created_at',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='创建时间')),
                ('updated_at',
                 models.DateTimeField(auto_now=True, verbose_name='更新时间')),
                ('job',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='parameter_job',
                                   to='data.Job',
                                   verbose_name='所属Job')),
            ],
            options={
                'verbose_name': 'Job参数',
                'verbose_name_plural': 'Job参数',
                'ordering': ('name', 'created_at'),
                'unique_together': {('job', 'name')},
            },
        ),
        migrations.CreateModel(
            name='BuildParameter',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('name', models.CharField(max_length=255, verbose_name='参数名')),
                ('value',
                 models.CharField(blank=True,
                                  max_length=255,
                                  null=True,
                                  verbose_name='参数值')),
                ('created_at',
                 models.DateTimeField(auto_now_add=True,
                                      db_index=True,
                                      verbose_name='创建时间')),
                ('updated_at',
                 models.DateTimeField(auto_now=True, verbose_name='更新时间')),
                ('build',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='parameter_build',
                                   to='data.Build',
                                   verbose_name='所属构建')),
            ],
            options={
                'verbose_name': '构建参数',
                'verbose_name_plural': '构建参数',
                'ordering': ('name', 'created_at'),
                'unique_together': {('build', 'name')},
            },
        ),
    ]