迁移文件上传
This commit is contained in:
parent
13215fb6ad
commit
458940df2d
51
accounts/migrations/0001_initial.py
Normal file
51
accounts/migrations/0001_initial.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:54
|
||||||
|
|
||||||
|
import django.contrib.auth.models
|
||||||
|
import django.contrib.auth.validators
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('auth', '0012_alter_user_first_name_max_length'),
|
||||||
|
('websites', '__first__'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='User',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(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=150, verbose_name='first name')),
|
||||||
|
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
|
||||||
|
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
|
||||||
|
('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(default=django.utils.timezone.now, verbose_name='date joined')),
|
||||||
|
('role', models.CharField(choices=[('admin', '管理员'), ('manager', '分管理'), ('user', '普通用户')], default='user', help_text='用户角色', max_length=20)),
|
||||||
|
('authorized_websites', models.ManyToManyField(blank=True, help_text='普通用户被授权可访问的网站', related_name='authorized_users', to='websites.website')),
|
||||||
|
('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')),
|
||||||
|
('managed_websites', models.ManyToManyField(blank=True, help_text='分管理可管理的网站', related_name='managers', to='websites.website')),
|
||||||
|
('source_manager', models.ForeignKey(blank=True, limit_choices_to={'role': 'manager'}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='brought_users', to=settings.AUTH_USER_MODEL, verbose_name='所属分管理')),
|
||||||
|
('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()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
51
authorize/migrations/0001_initial.py
Normal file
51
authorize/migrations/0001_initial.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:55
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('resumes', '0001_initial'),
|
||||||
|
('websites', '0001_initial'),
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='WebsiteAccessRequest',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('updated_at', models.DateTimeField(auto_now=True)),
|
||||||
|
('status', models.CharField(choices=[('pending', '待审批'), ('approved', '已通过'), ('rejected', '已拒绝')], default='pending', max_length=20)),
|
||||||
|
('reason', models.TextField(blank=True)),
|
||||||
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
('website', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='websites.website')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '网站访问申请',
|
||||||
|
'verbose_name_plural': '网站访问申请',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ResumeDetailAccessRequest',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('reason', models.TextField(blank=True, verbose_name='申请理由')),
|
||||||
|
('status', models.CharField(choices=[('pending', '待审批'), ('approved', '已通过'), ('rejected', '已拒绝')], default='pending', max_length=20, verbose_name='审批状态')),
|
||||||
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='申请时间')),
|
||||||
|
('resume', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resumes.resumedetail', verbose_name='目标简历')),
|
||||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='申请用户')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '简历详情访问申请',
|
||||||
|
'verbose_name_plural': '简历详情访问申请',
|
||||||
|
'unique_together': {('user', 'resume')},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
0
authorize/migrations/__init__.py
Normal file
0
authorize/migrations/__init__.py
Normal file
33
companies/migrations/0001_initial.py
Normal file
33
companies/migrations/0001_initial.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:55
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('websites', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Company',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=200, verbose_name='企业名称')),
|
||||||
|
('category', models.CharField(max_length=100, verbose_name='公司类别')),
|
||||||
|
('size', models.CharField(max_length=50, verbose_name='公司规模')),
|
||||||
|
('introduction', models.TextField(verbose_name='企业介绍')),
|
||||||
|
('address', models.CharField(max_length=300, verbose_name='企业地址')),
|
||||||
|
('benefits', models.TextField(blank=True, verbose_name='企业福利')),
|
||||||
|
('website', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='companies', to='websites.website', verbose_name='隶属网站')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '企业',
|
||||||
|
'verbose_name_plural': '企业列表',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
33
invites/migrations/0001_initial.py
Normal file
33
invites/migrations/0001_initial.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:55
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='RegistrationCode',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('code', models.CharField(max_length=32, unique=True, verbose_name='注册码')),
|
||||||
|
('description', models.CharField(blank=True, max_length=100, verbose_name='说明')),
|
||||||
|
('usage_limit', models.IntegerField(default=1, verbose_name='最多使用次数')),
|
||||||
|
('used_count', models.IntegerField(default=0, verbose_name='已使用次数')),
|
||||||
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||||
|
('manager', models.ForeignKey(limit_choices_to={'role': 'manager'}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='对应分管理')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '注册码申请',
|
||||||
|
'verbose_name_plural': '注册码申请',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
50
positions/migrations/0001_initial.py
Normal file
50
positions/migrations/0001_initial.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:55
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('companies', '0001_initial'),
|
||||||
|
('websites', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Position',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('title', models.CharField(max_length=200, verbose_name='职位名称')),
|
||||||
|
('nature', models.CharField(max_length=50, verbose_name='职位性质')),
|
||||||
|
('category', models.CharField(max_length=100, verbose_name='职位类别')),
|
||||||
|
('region', models.CharField(max_length=100, verbose_name='职位区域')),
|
||||||
|
('experience', models.CharField(max_length=100, verbose_name='工作经历要求')),
|
||||||
|
('education', models.CharField(max_length=100, verbose_name='学历要求')),
|
||||||
|
('salary', models.CharField(max_length=100, verbose_name='职位薪资')),
|
||||||
|
('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='positions', to='companies.company', verbose_name='所属企业')),
|
||||||
|
('website', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='positions', to='websites.website', verbose_name='所属网站')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '职位',
|
||||||
|
'verbose_name_plural': '职位列表',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PositionDetail',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('description', models.TextField(verbose_name='职位描述(详情)')),
|
||||||
|
('contact_name', models.CharField(max_length=100, verbose_name='联系人姓名')),
|
||||||
|
('contact_info', models.CharField(max_length=200, verbose_name='联系方式')),
|
||||||
|
('position', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='detail', to='positions.position', verbose_name='所属职位')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '职位详情',
|
||||||
|
'verbose_name_plural': '职位详情列表',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
84
resumes/migrations/0001_initial.py
Normal file
84
resumes/migrations/0001_initial.py
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:55
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('websites', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ResumeBasic',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('resume_id', models.IntegerField(db_index=True, help_text='resume_id', verbose_name='简历ID')),
|
||||||
|
('name', models.CharField(blank=True, help_text='姓名', max_length=255, null=True, verbose_name='姓名')),
|
||||||
|
('job_region', models.CharField(blank=True, help_text='求职区域', max_length=255, null=True, verbose_name='求职区域')),
|
||||||
|
('birthday', models.CharField(blank=True, help_text='生日', max_length=255, null=True, verbose_name='生日')),
|
||||||
|
('education', models.CharField(blank=True, help_text='学历', max_length=255, null=True, verbose_name='学历')),
|
||||||
|
('school', models.CharField(blank=True, help_text='学校', max_length=255, null=True, verbose_name='学校')),
|
||||||
|
('expected_position', models.CharField(blank=True, help_text='期望职务', max_length=255, null=True, verbose_name='期望职务')),
|
||||||
|
('last_active_time', models.CharField(blank=True, help_text='最后活跃时间', max_length=255, null=True, verbose_name='最后活跃时间')),
|
||||||
|
('marital_status', models.CharField(blank=True, help_text='婚姻', max_length=255, null=True, verbose_name='婚姻')),
|
||||||
|
('current_location', models.CharField(blank=True, help_text='现居地', max_length=255, null=True, verbose_name='现居地')),
|
||||||
|
('age', models.IntegerField(blank=True, help_text='年龄', null=True, verbose_name='年龄')),
|
||||||
|
('phone', models.CharField(blank=True, help_text='电话', max_length=255, null=True, verbose_name='电话')),
|
||||||
|
('gender', models.CharField(blank=True, help_text='性别', max_length=255, null=True, verbose_name='性别')),
|
||||||
|
('job_type', models.CharField(blank=True, help_text='求职类型', max_length=255, null=True, verbose_name='求职类型')),
|
||||||
|
('job_status', models.CharField(blank=True, help_text='求职状态', max_length=255, null=True, verbose_name='求职状态')),
|
||||||
|
('work_1_experience', models.TextField(blank=True, help_text='工作1经历', null=True, verbose_name='工作1经历')),
|
||||||
|
('work_1_time', models.CharField(blank=True, help_text='工作1时间', max_length=255, null=True, verbose_name='工作1时间')),
|
||||||
|
('work_1_description', models.TextField(blank=True, help_text='工作1内容', null=True, verbose_name='工作1内容')),
|
||||||
|
('work_2_experience', models.TextField(blank=True, help_text='工作2经历', null=True, verbose_name='工作2经历')),
|
||||||
|
('work_2_time', models.CharField(blank=True, help_text='工作2时间', max_length=255, null=True, verbose_name='工作2时间')),
|
||||||
|
('work_2_description', models.TextField(blank=True, help_text='工作2内容', null=True, verbose_name='工作2内容')),
|
||||||
|
('work_3_experience', models.TextField(blank=True, help_text='工作3经历', null=True, verbose_name='工作3经历')),
|
||||||
|
('work_3_time', models.CharField(blank=True, help_text='工作3时间', max_length=255, null=True, verbose_name='工作3时间')),
|
||||||
|
('work_3_description', models.TextField(blank=True, help_text='工作3内容', null=True, verbose_name='工作3内容')),
|
||||||
|
('work_4_experience', models.TextField(blank=True, help_text='工作4经历', null=True, verbose_name='工作4经历')),
|
||||||
|
('work_4_time', models.CharField(blank=True, help_text='工作4时间', max_length=255, null=True, verbose_name='工作4时间')),
|
||||||
|
('work_4_description', models.TextField(blank=True, help_text='工作4内容', null=True, verbose_name='工作4内容')),
|
||||||
|
('height', models.IntegerField(blank=True, help_text='身高', null=True, verbose_name='身高')),
|
||||||
|
('weight', models.IntegerField(blank=True, help_text='体重', null=True, verbose_name='体重')),
|
||||||
|
('work_years', models.CharField(blank=True, help_text='工作经验', max_length=255, null=True, verbose_name='工作经验')),
|
||||||
|
('highest_education', models.CharField(blank=True, help_text='最高学历', max_length=255, null=True, verbose_name='最高学历')),
|
||||||
|
('ethnicity', models.CharField(blank=True, help_text='民族', max_length=255, null=True, verbose_name='民族')),
|
||||||
|
('update_time', models.DateTimeField(blank=True, help_text='更新时间', null=True, verbose_name='更新时间')),
|
||||||
|
('job_function', models.CharField(blank=True, help_text='工作职能', max_length=255, null=True, verbose_name='工作职能')),
|
||||||
|
('intended_position', models.CharField(blank=True, help_text='意向岗位', max_length=255, null=True, verbose_name='意向岗位')),
|
||||||
|
('industry', models.CharField(blank=True, help_text='从事行业', max_length=255, null=True, verbose_name='从事行业')),
|
||||||
|
('expected_salary', models.CharField(blank=True, help_text='期望薪资', max_length=255, null=True, verbose_name='期望薪资')),
|
||||||
|
('available_time', models.CharField(blank=True, help_text='到岗时间', max_length=255, null=True, verbose_name='到岗时间')),
|
||||||
|
('job_property', models.CharField(blank=True, help_text='工作性质', max_length=255, null=True, verbose_name='工作性质')),
|
||||||
|
('job_location', models.CharField(blank=True, help_text='工作地点', max_length=255, null=True, verbose_name='工作地点')),
|
||||||
|
('crawl_keywords', models.CharField(blank=True, help_text='关键字', max_length=255, null=True, verbose_name='关键字')),
|
||||||
|
('source', models.ForeignKey(blank=True, help_text='数据来源网站', null=True, on_delete=django.db.models.deletion.SET_NULL, to='websites.website', verbose_name='数据来源')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '简历',
|
||||||
|
'verbose_name_plural': '简历列表',
|
||||||
|
'unique_together': {('source', 'resume_id')},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ResumeDetail',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('unlinked_resume_id', models.IntegerField(blank=True, null=True, verbose_name='无法关联的简历ID')),
|
||||||
|
('phone', models.CharField(blank=True, max_length=20, verbose_name='联系方式')),
|
||||||
|
('email', models.EmailField(blank=True, max_length=254, verbose_name='邮箱')),
|
||||||
|
('updated_at', models.DateTimeField(auto_now=True)),
|
||||||
|
('resume', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='detail', to='resumes.resumebasic', verbose_name='简历')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '简历详情',
|
||||||
|
'verbose_name_plural': '简历详情',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
27
websites/migrations/0001_initial.py
Normal file
27
websites/migrations/0001_initial.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-05-24 05:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Website',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=100, verbose_name='网站名称')),
|
||||||
|
('db_alias', models.CharField(max_length=50, unique=True, verbose_name='数据库别名')),
|
||||||
|
('description', models.TextField(blank=True, verbose_name='描述')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '网站',
|
||||||
|
'verbose_name_plural': '网站列表',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
Loading…
x
Reference in New Issue
Block a user