class Migration(migrations.Migration): dependencies = [ ('crm', '0013_auto_20201128_0304'), ] operations = [ migrations.CreateModel( name='Testing', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(blank=True, default='Задача #', max_length=200, null=True)), ('content', models.TextField(blank=True, null=True)), ('file', models.FileField(blank=True, null=True, upload_to='')), ('created', models.DateTimeField(default=crm.models.default_time)), ], ), migrations.CreateModel( name='TestingSolution', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(blank=True, null=True)), ('link', models.CharField(blank=True, max_length=200, null=True)), ('file', models.FileField(blank=True, null=True, upload_to='')), ('core_condidate', models.ForeignKey( blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='condidate_application_solution', to='crm.candidate')), ('core_vacancy', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='application_solution', to='crm.candidateapplication')), ], ), ]
class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('teams', '0020_team_admin'), ('crm', '0006_merchantupload_message'), ] operations = [ migrations.CreateModel( name='ItemUpload', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('status', models.CharField(choices=[(b'created', b'created'), (b'progress', b'progress'), (b'success', b'success'), (b'failed', b'failed')], default=b'created', max_length=16)), ('data', models.FileField(upload_to=crm.models.upload_item_csv_path)), ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('message', models.TextField(blank=True)), ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teams.Team')), ], options={ 'abstract': False, }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255)), ('teacher', models.CharField(max_length=100)), ], ), migrations.CreateModel( name='Student', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=30, null=True)), ('surname', models.CharField(max_length=30, null=True)), ('room', models.IntegerField(null=True)), ('email', models.EmailField(max_length=254, null=True)), ('description', models.TextField(default='')), ('photo', models.FileField(null=True, upload_to=crm.models.get_file_path)), ('course', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, to='crm.Course')), ], ), migrations.CreateModel( name='Comments', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField(default='')), ('student', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, to='crm.Student')), ], ), ]
class Migration(migrations.Migration): dependencies = [ ('crm', '0002_auto_20190815_0802'), ] operations = [ migrations.AddField( model_name='student', name='photo', field=models.FileField(null=True, upload_to=crm.models.get_file_path), ), ]
class Migration(migrations.Migration): dependencies = [ ('crm', '0007_auto_20201127_2059'), ] operations = [ migrations.CreateModel( name='CandidateApplication', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.IntegerField(choices=[(0, 'Сайт'), (1, 'HeadHunter'), (2, 'SuperJob')], default=0)), ('cv_file', models.FileField(blank=True, null=True, upload_to='')), ('cv_recognition', models.TextField(blank=True, null=True)), ('created', models.DateTimeField(default=crm.models.default_time)), ('core_condidate', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='condidate_applicatin', to='crm.candidate')), ('core_vacancy', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='vacancy_applicatin', to='crm.vacancy')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Client', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('phone', models.CharField(max_length=32)), ('ssn', models.CharField(max_length=32)), ('company_name', models.CharField(max_length=32)), ('company_id', models.CharField(max_length=32)), ('address', models.CharField(max_length=32)), ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='MediaContent', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=32)), ('media_file', models.FileField(upload_to=crm.models.user_directory_path)), ('media_length', models.DurationField()), ], ), migrations.CreateModel( name='ScreenSpecifications', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30)), ('size', models.IntegerField()), ], ), migrations.CreateModel( name='Screen', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('default_content', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.mediacontent')), ('screen_client', models.OneToOneField( default=None, on_delete=django.db.models.deletion.CASCADE, related_name='machine', to='crm.client')), ('screen_owner', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='screens', to='crm.client')), ('specification', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.screenspecifications')), ], ), migrations.CreateModel( name='Match', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('start', models.DateField()), ('end', models.DateField()), ('frequency', models.IntegerField()), ('price', models.IntegerField()), ('advertiser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='matching_screens', to='crm.client')), ('screen_owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='matchings_adds', to='crm.client')), ], ), migrations.CreateModel( name='Contract', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('start', models.DateField()), ('end', models.DateField()), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.client')), ], ), migrations.CreateModel( name='Advertisement', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('advertiser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.client')), ('media_content', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.mediacontent')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0008_alter_user_username_max_length'), ] operations = [ migrations.CreateModel( name='UserProfile', 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.EmailField(max_length=255, unique=True)), ('is_staff', models.BooleanField( default=False, help_text= 'Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_admin', models.BooleanField(default=False)), ('name', models.CharField(max_length=32, verbose_name='名字')), ('mobile', models.CharField(blank=True, default=None, max_length=32, null=True, verbose_name='手机')), ('memo', models.TextField(blank=True, default=None, null=True, verbose_name='备注')), ('date_joined', models.DateTimeField(auto_now_add=True)), ], options={ 'verbose_name': '账户信息', 'verbose_name_plural': '账户信息', }, managers=[ ('objects', crm.models.UserManager()), ], ), migrations.CreateModel( name='Campuses', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64, verbose_name='校区')), ('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='详细地址')), ], ), migrations.CreateModel( name='ClassList', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('course', models.CharField(choices=[('LinuxL', 'Linux中高级'), ('PythonFullStack', 'Python高级全栈开发') ], max_length=64, verbose_name='课程名称')), ('semester', models.IntegerField(verbose_name='学期')), ('price', models.IntegerField(default=10000, verbose_name='学费')), ('memo', models.CharField(blank=True, max_length=100, null=True, verbose_name='说明')), ('start_date', models.DateField(verbose_name='开班日期')), ('graduate_date', models.DateField(blank=True, null=True, verbose_name='结业日期')), ('class_type', models.CharField(blank=True, choices=[('fulltime', '脱产班'), ('online', '网络班'), ('weekend', '周末班')], max_length=64, null=True, verbose_name='班额及类型')), ('campuses', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.Campuses', verbose_name='校区')), ], ), migrations.CreateModel( name='ConsultRecord', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('note', models.TextField(verbose_name='跟进内容...')), ('status', models.CharField(choices=[('A', '近期无报名计划'), ('B', '1个月内报名'), ('C', '2周内报名'), ('D', '1周内报名'), ('E', '定金'), ('F', '到班'), ('G', '全款'), ('H', '无效')], help_text='选择客户此时的状态', max_length=8, verbose_name='跟进状态')), ('date', models.DateTimeField(auto_now_add=True, verbose_name='跟进日期')), ('delete_status', models.BooleanField(default=False, verbose_name='删除状态')), ('consultant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='records', to=settings.AUTH_USER_MODEL, verbose_name='跟进人')), ], ), migrations.CreateModel( name='ContractTemplate', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=128, unique=True, verbose_name='合同名称')), ('content', models.TextField(verbose_name='合同内容')), ('date', models.DateField(auto_now=True)), ], ), migrations.CreateModel( name='CourseRecord', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('day_num', models.IntegerField(help_text='此处填写第几节课或第几天课程...,必须为数字', verbose_name='节次')), ('date', models.DateField(auto_now_add=True, verbose_name='上课日期')), ('course_title', models.CharField(blank=True, max_length=64, null=True, verbose_name='本节课程标题')), ('course_memo', models.TextField(blank=True, max_length=300, null=True, verbose_name='本节课程内容')), ('has_homework', models.BooleanField(default=True, verbose_name='本节有作业')), ('homework_title', models.CharField(blank=True, max_length=64, null=True, verbose_name='本节作业标题')), ('homework_memo', models.TextField(blank=True, max_length=500, null=True, verbose_name='作业描述')), ('scoring_point', models.TextField(blank=True, max_length=300, null=True, verbose_name='得分点')), ('re_class', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.ClassList', verbose_name='班级')), ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='讲师')), ], ), migrations.CreateModel( name='Customer', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('qq', models.CharField(help_text='QQ号必须唯一', max_length=64, unique=True, verbose_name='QQ')), ('qq_name', models.CharField(blank=True, max_length=64, null=True, verbose_name='QQ昵称')), ('name', models.CharField(blank=True, help_text='学员报名后,请改为真实姓名', max_length=32, null=True, verbose_name='姓名')), ('sex', models.CharField(blank=True, choices=[('male', '男'), ('female', '女')], default='male', max_length=16, null=True, verbose_name='性别')), ('birthday', models.DateField(blank=True, default=None, help_text='格式yyyy-mm-dd', null=True, verbose_name='出生日期')), ('phone', models.BigIntegerField(blank=True, null=True, verbose_name='手机号')), ('source', models.CharField(choices=[('qq', 'qq群'), ('referral', '内部转介绍'), ('website', '官方网站'), ('baidu_ads', '百度推广'), ('office_direct', '直接上门'), ('WoM', '口碑'), ('public_class', '公开课'), ('website_luffy', '路飞官网'), ('others', '其它')], default='qq', max_length=64, verbose_name='客户来源')), ('class_type', models.CharField(choices=[('fulltime', '脱产班'), ('online', '网络班'), ('weekend', '周末班')], default='fulltime', max_length=64, verbose_name='班级类型')), ('customer_note', models.TextField(blank=True, null=True, verbose_name='客户备注')), ('status', models.CharField(choices=[('signed', '已报名'), ('unregistered', '未报名'), ('studying', '学习中'), ('paid_in_full', '学费已交齐')], default='unregistered', help_text='选择客户此时的状态', max_length=64, verbose_name='状态')), ('network_consult_note', models.TextField(blank=True, null=True, verbose_name='网络咨询师咨询内容')), ('date', models.DateTimeField(auto_now_add=True, verbose_name='咨询日期')), ('last_consult_date', models.DateField(auto_now_add=True, verbose_name='最后跟进日期')), ('next_date', models.DateField(blank=True, null=True, verbose_name='预计再次跟进时间')), ('class_list', models.ManyToManyField(to='crm.ClassList', verbose_name='已报班级')), ('consultant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customers', to=settings.AUTH_USER_MODEL, verbose_name='销售')), ('introduce_from', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.Customer', verbose_name='转介绍自学员')), ('network_consultant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='network_consultant', to=settings.AUTH_USER_MODEL, verbose_name='咨询师')), ], ), migrations.CreateModel( name='Department', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=32, verbose_name='部门名称')), ('count', models.IntegerField(default=0, verbose_name='人数')), ], ), migrations.CreateModel( name='Enrollment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('why_us', models.TextField(blank=True, default=None, max_length=1024, null=True, verbose_name='为什么报名')), ('your_expectation', models.TextField(blank=True, max_length=1024, null=True, verbose_name='学完想达到的具体期望')), ('contract_agreed', models.BooleanField(default=False, verbose_name='我已认真阅读完培训协议并同意全部协议内容')), ('contract_approved', models.BooleanField(default=False, help_text='在审阅完学员的资料无误后勾选此项,合同即生效', verbose_name='审批通过')), ('enrolled_date', models.DateTimeField(auto_now_add=True, verbose_name='报名日期')), ('memo', models.TextField(blank=True, null=True, verbose_name='备注')), ('delete_status', models.BooleanField(default=False, verbose_name='删除状态')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.Customer', verbose_name='客户名称')), ('enrolment_class', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.ClassList', verbose_name='所报班级')), ('school', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.Campuses')), ], ), migrations.CreateModel( name='PaymentRecord', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('pay_type', models.CharField(choices=[ ('deposit', '订金/报名费'), ('tuition', '学费'), ('transfer', '转班'), ('dropout', '退学'), ('refund', '退款') ], default='deposit', max_length=64, verbose_name='费用类型')), ('paid_fee', models.IntegerField(default=0, verbose_name='费用数额')), ('note', models.TextField(blank=True, null=True, verbose_name='备注')), ('date', models.DateTimeField(auto_now_add=True, verbose_name='交款日期')), ('course', models.CharField(blank=True, choices=[('LinuxL', 'Linux中高级'), ('PythonFullStack', 'Python高级全栈开发') ], default='N/A', max_length=64, null=True, verbose_name='课程名')), ('class_type', models.CharField(blank=True, choices=[('fulltime', '脱产班'), ('online', '网络班'), ('weekend', '周末班')], default='N/A', max_length=64, null=True, verbose_name='班级类型')), ('delete_status', models.BooleanField(default=False, verbose_name='删除状态')), ('status', models.IntegerField(choices=[(1, '未审核'), (2, '已审核')], default=1, verbose_name='审核')), ('confirm_date', models.DateTimeField(blank=True, null=True, verbose_name='确认日期')), ('confirm_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='confirms', to=settings.AUTH_USER_MODEL, verbose_name='确认人')), ('consultant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='销售')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.Customer', verbose_name='客户')), ('enrolment_class', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.ClassList', verbose_name='所报班级')), ], ), migrations.CreateModel( name='StudyRecord', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('attendance', models.CharField(choices=[('checked', '已签到'), ('vacate', '请假'), ('late', '迟到'), ('absence', '缺勤'), ('leave_early', '早退')], default='checked', max_length=64, verbose_name='考勤')), ('score', models.IntegerField(choices=[(100, 'A+'), (90, 'A'), (85, 'B+'), (80, 'B'), (70, 'B-'), (60, 'C+'), (50, 'C'), (40, 'C-'), (0, ' D'), (-1, 'N/A'), (-100, 'COPY'), (-1000, 'FAIL')], default=-1, verbose_name='本节成绩')), ('homework_note', models.CharField(blank=True, max_length=255, null=True, verbose_name='作业批语')), ('date', models.DateTimeField(auto_now_add=True)), ('note', models.CharField(blank=True, max_length=255, null=True, verbose_name='备注')), ('homework', models.FileField(blank=True, default=None, null=True, upload_to='', verbose_name='作业文件')), ('course_record', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.CourseRecord', verbose_name='某节课程')), ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.Customer', verbose_name='学员')), ], ), migrations.AddField( model_name='consultrecord', name='customer', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='crm.Customer', verbose_name='所咨询客户'), ), migrations.AddField( model_name='classlist', name='contract', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.ContractTemplate', verbose_name='选择合同模版'), ), migrations.AddField( model_name='classlist', name='teachers', field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='老师'), ), migrations.AddField( model_name='userprofile', name='department', field=models.ForeignKey( blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.Department'), ), migrations.AddField( model_name='userprofile', name='groups', field=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'), ), migrations.AddField( model_name='userprofile', name='user_permissions', field=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'), ), migrations.AlterUniqueTogether( name='studyrecord', unique_together=set([('course_record', 'student')]), ), migrations.AlterUniqueTogether( name='enrollment', unique_together=set([('enrolment_class', 'customer')]), ), migrations.AlterUniqueTogether( name='courserecord', unique_together=set([('re_class', 'day_num')]), ), migrations.AlterUniqueTogether( name='classlist', unique_together=set([('course', 'semester', 'campuses')]), ), ]