Fix deployment issue, see DEPLOYMENT_MIGRATION_GUIDE_en.md
This commit is contained in:
847
rog/migrations_backup_20250828_132814/0001_initial.py
Executable file
847
rog/migrations_backup_20250828_132814/0001_initial.py
Executable file
@ -0,0 +1,847 @@
|
||||
# Generated by Django 3.2.9 on 2025-05-13 08:22
|
||||
|
||||
import datetime
|
||||
from django.conf import settings
|
||||
import django.contrib.gis.db.models.fields
|
||||
import django.contrib.postgres.indexes
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import rog.models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('auth', '0012_alter_user_first_name_max_length'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='GifuAreas',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
|
||||
('adm0_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm0_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm0_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm2_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm2_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm2_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('area_nm', models.CharField(blank=True, max_length=254, null=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'gifu_areas',
|
||||
'managed': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='JpnAdminMainPerf',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
|
||||
('adm0_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm0_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm0_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'jpn_admin_main_perf',
|
||||
'managed': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='JpnSubPerf',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
|
||||
('adm0_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm0_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm0_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm1_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm2_ja', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm2_en', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('adm2_pcode', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('name_modified', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('area_name', models.CharField(blank=True, max_length=254, null=True)),
|
||||
('list_order', models.IntegerField(default=0)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'jpn_sub_perf',
|
||||
'managed': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CustomUser',
|
||||
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')),
|
||||
('email', models.EmailField(max_length=254, unique=True)),
|
||||
('firstname', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('lastname', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('date_of_birth', models.DateField(blank=True, null=True)),
|
||||
('female', models.BooleanField(default=False)),
|
||||
('group', models.CharField(blank=True, max_length=255)),
|
||||
('is_active', models.BooleanField(default=True)),
|
||||
('is_staff', models.BooleanField(default=False)),
|
||||
('date_joined', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('is_rogaining', models.BooleanField(default=False)),
|
||||
('zekken_number', models.CharField(blank=True, max_length=255, null=True, verbose_name='Zekken Number')),
|
||||
('event_code', models.CharField(blank=True, max_length=255, null=True, verbose_name='Event Code')),
|
||||
('team_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Team Name')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Category',
|
||||
fields=[
|
||||
('category_name', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||
('category_number', models.IntegerField(default=0)),
|
||||
('duration', models.DurationField(default=datetime.timedelta(seconds=18000))),
|
||||
('num_of_member', models.IntegerField(default=1)),
|
||||
('family', models.BooleanField(default=False)),
|
||||
('female', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CheckinImages',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('checkinimage', models.FileField(blank=True, null=True, upload_to='checkin/%y%m%d')),
|
||||
('checkintime', models.DateTimeField(verbose_name='Goal time')),
|
||||
('team_name', models.CharField(max_length=255, verbose_name='Team name')),
|
||||
('event_code', models.CharField(max_length=255, verbose_name='event code')),
|
||||
('cp_number', models.IntegerField(verbose_name='CP numner')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CheckPoint',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('cp_number', models.CharField(max_length=20)),
|
||||
('image_address', models.URLField(blank=True, null=True)),
|
||||
('checkin_time', models.DateTimeField(auto_now_add=True)),
|
||||
('is_service_checked', models.BooleanField(default=False)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['checkin_time'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Entry',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('date', models.DateTimeField()),
|
||||
('zekken_number', models.IntegerField(default=0)),
|
||||
('is_active', models.BooleanField(default=True)),
|
||||
('hasParticipated', models.BooleanField(default=False)),
|
||||
('hasGoaled', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EntryMember',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('is_temporary', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Event',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('tagname', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('status', models.CharField(choices=[('PREPARING', 'Preparing'), ('PROMOTION', 'Promotion'), ('EVENT', 'Event'), ('END', 'End')], max_length=256)),
|
||||
('price', models.IntegerField(default=0, verbose_name='Paid Amount')),
|
||||
('promotion_date', models.DateTimeField(blank=True, null=True, verbose_name='Promotion date')),
|
||||
('event_start', models.DateTimeField(blank=True, null=True, verbose_name='Promotion date')),
|
||||
('event_end', models.DateTimeField(blank=True, null=True, verbose_name='Promotion date')),
|
||||
('remark', models.CharField(blank=True, max_length=256, null=True)),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EventUser',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Favorite',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('good', models.IntegerField(default=0, verbose_name='Good')),
|
||||
('favorite', models.IntegerField(default=0, verbose_name='Favorite')),
|
||||
('evaluation', models.IntegerField(default=0, verbose_name='Evaluation')),
|
||||
('number_visit', models.IntegerField(default=0, verbose_name='Good')),
|
||||
('last_visited', models.DateTimeField(blank=True, null=True, verbose_name='Last Visited')),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='GifurogeRegister',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('event_code', models.CharField(max_length=100)),
|
||||
('time', models.IntegerField(choices=[(3, '3時間'), (5, '5時間')])),
|
||||
('owner_name_kana', models.CharField(max_length=100)),
|
||||
('owner_name', models.CharField(max_length=100)),
|
||||
('email', models.EmailField(max_length=254)),
|
||||
('password', models.CharField(max_length=100)),
|
||||
('owner_birthday', models.DateField(blank=True, null=True)),
|
||||
('owner_sex', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('team_name', models.CharField(max_length=100)),
|
||||
('department', models.CharField(max_length=100)),
|
||||
('members_count', models.IntegerField()),
|
||||
('member2', models.CharField(blank=True, max_length=100, null=True)),
|
||||
('birthday2', models.DateField(blank=True, null=True)),
|
||||
('sex2', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('member3', models.CharField(blank=True, max_length=100, null=True)),
|
||||
('birthday3', models.DateField(blank=True, null=True)),
|
||||
('sex3', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('member4', models.CharField(blank=True, max_length=100, null=True)),
|
||||
('birthday4', models.DateField(blank=True, null=True)),
|
||||
('sex4', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('member5', models.CharField(blank=True, max_length=100, null=True)),
|
||||
('birthday5', models.DateField(blank=True, null=True)),
|
||||
('sex5', models.CharField(blank=True, max_length=10, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='GoalImages',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('goalimage', models.FileField(blank=True, null=True, upload_to='goals/%y%m%d')),
|
||||
('goaltime', models.DateTimeField(blank=True, null=True, verbose_name='Goal time')),
|
||||
('team_name', models.CharField(max_length=255, verbose_name='Team name')),
|
||||
('event_code', models.CharField(max_length=255, verbose_name='event code')),
|
||||
('cp_number', models.IntegerField(verbose_name='CP numner')),
|
||||
('zekken_number', models.TextField(blank=True, help_text='ゼッケン番号', null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='GpsCheckin',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('path_order', models.IntegerField(help_text='チェックポイントの順序番号')),
|
||||
('zekken_number', models.TextField(help_text='ゼッケン番号')),
|
||||
('event_id', models.IntegerField(blank=True, help_text='イベントID', null=True)),
|
||||
('event_code', models.TextField(help_text='イベントコード')),
|
||||
('cp_number', models.IntegerField(blank=True, help_text='チェックポイント番号', null=True)),
|
||||
('lattitude', models.FloatField(blank=True, help_text='緯度:写真から取得', null=True)),
|
||||
('longitude', models.FloatField(blank=True, help_text='経度:写真から取得', null=True)),
|
||||
('image_address', models.TextField(blank=True, help_text='チェックイン画像のパス', null=True)),
|
||||
('image_receipt', models.TextField(blank=True, default=False, help_text='レシート画像のパス', null=True)),
|
||||
('image_qr', models.BooleanField(default=False, help_text='QRコードスキャンフラグ')),
|
||||
('validate_location', models.BooleanField(default=False, help_text='位置情報検証フラグ:画像認識で検証した結果')),
|
||||
('goal_time', models.TextField(blank=True, help_text='ゴール時刻=ゴール時のみ使用される。画像から時刻を読み取り設定する。', null=True)),
|
||||
('late_point', models.IntegerField(blank=True, help_text='遅刻ポイント:ゴールの時刻が制限時間を超えた場合、1分につき-50点が加算。', null=True)),
|
||||
('create_at', models.DateTimeField(blank=True, help_text='作成日時:データの作成日時', null=True)),
|
||||
('create_user', models.TextField(blank=True, help_text='作成ユーザー', null=True)),
|
||||
('update_at', models.DateTimeField(blank=True, help_text='更新日時', null=True)),
|
||||
('update_user', models.TextField(blank=True, help_text='更新ユーザー', null=True)),
|
||||
('buy_flag', models.BooleanField(default=False, help_text='購入フラグ:協賛店で購入した場合、無条件でTRUEにする。')),
|
||||
('colabo_company_memo', models.TextField(default='', help_text='グループコード:複数のイベントで合算する場合に使用する')),
|
||||
('points', models.IntegerField(blank=True, help_text='ポイント:このチェックインによる獲得ポイント。通常ポイントと買い物ポイントは分離される。ゴールの場合には減点なども含む。', null=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'gps_checkins',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Location',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('location_id', models.IntegerField(blank=True, db_index=True, null=True, verbose_name='Location id')),
|
||||
('sub_loc_id', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub location id')),
|
||||
('cp', models.FloatField(default=0, null=True, verbose_name='Check Point')),
|
||||
('location_name', models.CharField(default='--- 場所をお願いします --', max_length=2048, verbose_name='Location Name')),
|
||||
('category', models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Category')),
|
||||
('subcategory', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub Category')),
|
||||
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
|
||||
('address', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Address')),
|
||||
('prefecture', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Prefecture')),
|
||||
('area', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Area')),
|
||||
('city', models.CharField(blank=True, max_length=2048, null=True, verbose_name='City')),
|
||||
('latitude', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
|
||||
('longitude', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
|
||||
('photos', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Photos')),
|
||||
('videos', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Videos')),
|
||||
('webcontents', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Web Content')),
|
||||
('status', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Status')),
|
||||
('portal', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Portal')),
|
||||
('group', models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Group')),
|
||||
('phone', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Phone')),
|
||||
('fax', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Fax')),
|
||||
('email', models.EmailField(blank=True, max_length=2048, null=True, verbose_name='Email')),
|
||||
('facility', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Facility')),
|
||||
('remark', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Remarks')),
|
||||
('tags', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Tags')),
|
||||
('event_name', models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Event name')),
|
||||
('event_active', models.BooleanField(db_index=True, default=True, verbose_name='Is Event active')),
|
||||
('hidden_location', models.BooleanField(default=False, verbose_name='Is Hidden Location')),
|
||||
('auto_checkin', models.BooleanField(default=False, verbose_name='Is AutoCheckin')),
|
||||
('checkin_radius', models.FloatField(blank=True, default=15.0, null=True, verbose_name='Checkin radious')),
|
||||
('checkin_point', models.FloatField(blank=True, default=10, null=True, verbose_name='Checkin Point')),
|
||||
('buy_point', models.FloatField(blank=True, default=0, null=True, verbose_name='buy Point')),
|
||||
('evaluation_value', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Evaluation value (評価)')),
|
||||
('shop_closed', models.BooleanField(default=False, verbose_name='Shop Closed (休業)')),
|
||||
('shop_shutdown', models.BooleanField(default=False, verbose_name='Shop Shutdown (閉業)')),
|
||||
('opening_hours_mon', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours monday (月曜)')),
|
||||
('opening_hours_tue', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours tuesday (火曜)')),
|
||||
('opening_hours_wed', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours wednesday (水曜)')),
|
||||
('opening_hours_thu', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours thursday (木曜)')),
|
||||
('opening_hours_fri', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours frinday (金曜)')),
|
||||
('opening_hours_sat', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours saturday (土曜)')),
|
||||
('opening_hours_sun', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours sunday (日曜)')),
|
||||
('parammeters', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPointField(srid=4326)),
|
||||
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NewCategory',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('category_name', models.CharField(max_length=255, unique=True)),
|
||||
('category_number', models.IntegerField(default=0)),
|
||||
('duration', models.DurationField(default=datetime.timedelta(seconds=18000))),
|
||||
('num_of_member', models.IntegerField(default=1)),
|
||||
('family', models.BooleanField(default=False)),
|
||||
('female', models.BooleanField(default=False)),
|
||||
('trial', models.BooleanField(default=False)),
|
||||
],
|
||||
options={
|
||||
'unique_together': {('category_name', 'category_number')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NewEvent',
|
||||
fields=[
|
||||
('event_name', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||
('start_datetime', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('end_datetime', models.DateTimeField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NewEvent2',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('event_name', models.CharField(max_length=255, unique=True)),
|
||||
('event_description', models.TextField(blank=True, max_length=255, null=True)),
|
||||
('start_datetime', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('end_datetime', models.DateTimeField()),
|
||||
('deadlineDateTime', models.DateTimeField(blank=True, null=True)),
|
||||
('public', models.BooleanField(default=False)),
|
||||
('hour_3', models.BooleanField(default=False)),
|
||||
('hour_5', models.BooleanField(default=True)),
|
||||
('class_general', models.BooleanField(default=True)),
|
||||
('class_family', models.BooleanField(default=True)),
|
||||
('class_solo_male', models.BooleanField(default=True)),
|
||||
('class_solo_female', models.BooleanField(default=True)),
|
||||
('self_rogaining', models.BooleanField(default=False)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ShapeFileLocations',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('shapefile', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Shapelayer')),
|
||||
('locid', models.IntegerField(blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ShapeLayers',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=255, verbose_name='Shape Layer')),
|
||||
('file', models.FileField(blank=True, upload_to=rog.models.get_file_path)),
|
||||
('uploaded_date', models.DateField(auto_now_add=True)),
|
||||
('layerof', models.IntegerField(choices=[(1, 'templocation'), (2, 'Location_line'), (3, 'Location_polygon')], default=1)),
|
||||
('table_name', models.CharField(blank=True, max_length=255, verbose_name='Table name')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TempUser',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('email', models.EmailField(max_length=254, unique=True)),
|
||||
('password', models.CharField(max_length=128)),
|
||||
('is_rogaining', models.BooleanField(default=False)),
|
||||
('zekken_number', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('event_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('team_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('group', models.CharField(max_length=255)),
|
||||
('firstname', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('lastname', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('date_of_birth', models.DateField(blank=True, null=True)),
|
||||
('female', models.BooleanField(default=False)),
|
||||
('verification_code', models.UUIDField(default=uuid.uuid4, editable=False)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('expires_at', models.DateTimeField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TestModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('testbane', models.CharField(max_length=355, verbose_name='test field')),
|
||||
('wanttogo', models.BooleanField(default=False)),
|
||||
('like', models.BooleanField(default=False)),
|
||||
('checkin', models.BooleanField(default=False)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TravelList',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('travel_id', models.IntegerField(verbose_name='Travel Id')),
|
||||
('start_date', models.DateTimeField(blank=True, null=True, verbose_name='Start date')),
|
||||
('finish_date', models.DateTimeField(blank=True, null=True, verbose_name='End date')),
|
||||
('category', models.CharField(choices=[('PRIVATE', 'Private'), ('GROUP', 'Group'), ('AGENT', 'Agent'), ('ROGAINING', 'Rogaining')], max_length=256)),
|
||||
('title', models.CharField(max_length=255, verbose_name='Title')),
|
||||
('transportation', models.CharField(blank=True, max_length=255, null=True, verbose_name='Transpotation')),
|
||||
('moving_distance', models.IntegerField(blank=True, null=True)),
|
||||
('duration', models.DurationField(blank=True, null=True, verbose_name='Duration')),
|
||||
('eta', models.DateTimeField(blank=True, null=True)),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('last_updated_user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='travel_list_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserUpload',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=255, verbose_name='User uploads')),
|
||||
('file', models.FileField(blank=True, upload_to=rog.models.get_file_path)),
|
||||
('uploaded_date', models.DateField(auto_now_add=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserUploadUser',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('userfile', models.CharField(blank=True, max_length=2048, null=True, verbose_name='User file')),
|
||||
('email', models.CharField(max_length=255, verbose_name='User Email')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Waypoint',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('latitude', models.FloatField()),
|
||||
('longitude', models.FloatField()),
|
||||
('altitude', models.FloatField(blank=True, null=True)),
|
||||
('accuracy', models.FloatField(blank=True, null=True)),
|
||||
('speed', models.FloatField(blank=True, null=True)),
|
||||
('recorded_at', models.DateTimeField()),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('entry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='waypoints', to='rog.entry')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['recorded_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserTracks',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPointField(srid=4326)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Useractions',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('wanttogo', models.BooleanField(default=False)),
|
||||
('like', models.BooleanField(default=False)),
|
||||
('checkin', models.BooleanField(default=False)),
|
||||
('checkinimage', models.FileField(blank=True, null=True, upload_to='%y%m%d')),
|
||||
('order', models.IntegerField(default=0)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='action_location', to='rog.location')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='action_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TravelPoint',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('distance', models.FloatField(blank=True, null=True)),
|
||||
('transportation', models.CharField(blank=True, max_length=255, null=True, verbose_name='Transpotation')),
|
||||
('eta', models.DateTimeField(blank=True, null=True)),
|
||||
('order_number', models.IntegerField(blank=True, null=True)),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('last_updated_user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='travelpoint_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.location')),
|
||||
('travel_list', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='rog.travellist')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='templocation',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
|
||||
('sub_loc_id', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub location id')),
|
||||
('cp', models.FloatField(default=0, null=True, verbose_name='Check Point')),
|
||||
('location_name', models.CharField(default='--- 場所をお願いします --', max_length=2048, verbose_name='Location Name')),
|
||||
('category', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Category')),
|
||||
('subcategory', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub Category')),
|
||||
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
|
||||
('address', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Address')),
|
||||
('prefecture', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Prefecture')),
|
||||
('area', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Area')),
|
||||
('city', models.CharField(blank=True, max_length=2048, null=True, verbose_name='City')),
|
||||
('latitude', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
|
||||
('longitude', models.FloatField(blank=True, null=True, verbose_name='Latitude')),
|
||||
('photos', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Photos')),
|
||||
('videos', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Videos')),
|
||||
('webcontents', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Web Content')),
|
||||
('status', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Status')),
|
||||
('portal', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Portal')),
|
||||
('group', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Group')),
|
||||
('phone', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Phone')),
|
||||
('fax', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Fax')),
|
||||
('email', models.EmailField(blank=True, max_length=2048, null=True, verbose_name='Email')),
|
||||
('facility', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Facility')),
|
||||
('remark', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Remarks')),
|
||||
('tags', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Tags')),
|
||||
('event_name', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Event name')),
|
||||
('event_active', models.BooleanField(default=True, verbose_name='Is Event active')),
|
||||
('hidden_location', models.BooleanField(default=False, verbose_name='Is Hidden Location')),
|
||||
('auto_checkin', models.BooleanField(default=False, verbose_name='Is AutoCheckin')),
|
||||
('checkin_radius', models.FloatField(blank=True, default=15.0, null=True, verbose_name='Checkin radious')),
|
||||
('checkin_point', models.FloatField(blank=True, default=10, null=True, verbose_name='Checkin Point')),
|
||||
('buy_point', models.FloatField(blank=True, default=0, null=True, verbose_name='buy Point')),
|
||||
('evaluation_value', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Evaluation value (評価)')),
|
||||
('shop_closed', models.BooleanField(default=False, verbose_name='Shop Closed (休業)')),
|
||||
('shop_shutdown', models.BooleanField(default=False, verbose_name='Shop Shutdown (閉業)')),
|
||||
('opening_hours_mon', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours monday (月曜)')),
|
||||
('opening_hours_tue', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours tuesday (火曜)')),
|
||||
('opening_hours_wed', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours wednesday (水曜)')),
|
||||
('opening_hours_thu', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours thursday (木曜)')),
|
||||
('opening_hours_fri', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours frinday (金曜)')),
|
||||
('opening_hours_sat', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours saturday (土曜)')),
|
||||
('opening_hours_sun', models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours sunday (日曜)')),
|
||||
('parammeters', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPointField(srid=4326)),
|
||||
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='temp_location_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TeamStart',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('start_time', models.DateTimeField(auto_now_add=True)),
|
||||
('entry', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='start_info', to='rog.entry')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TeamGoal',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('goal_time', models.DateTimeField()),
|
||||
('image_url', models.URLField(blank=True, null=True)),
|
||||
('score', models.IntegerField(default=0)),
|
||||
('scoreboard_url', models.URLField(blank=True, null=True)),
|
||||
('entry', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='goal_info', to='rog.entry')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Team',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('team_name', models.CharField(max_length=255)),
|
||||
('category', models.ForeignKey(default=rog.models.get_default_category, on_delete=django.db.models.deletion.SET_DEFAULT, to='rog.newcategory')),
|
||||
('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='owned_teams', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='SystemSettings',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('setting_name', models.CharField(max_length=255, verbose_name='Settings Name')),
|
||||
('version', models.CharField(blank=True, max_length=10, null=True, verbose_name='Version')),
|
||||
('effective_date', models.DateTimeField()),
|
||||
('end_date', models.DateTimeField()),
|
||||
('parammeters', models.CharField(max_length=512, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('last_updated_user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='system_setting_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RogUser',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('phone', models.CharField(max_length=55, verbose_name='Phone Number')),
|
||||
('first_name', models.CharField(max_length=255, verbose_name='First Name')),
|
||||
('middle_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Middle Name')),
|
||||
('last_name', models.CharField(max_length=255, verbose_name='last_name')),
|
||||
('nickname', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nickname')),
|
||||
('country', models.CharField(default='Japan', max_length=255, verbose_name='Country')),
|
||||
('language', models.CharField(default='Japanese', max_length=255, verbose_name='Language')),
|
||||
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
|
||||
('sex', models.CharField(blank=True, default='unknown', max_length=255, null=True, verbose_name='Sex')),
|
||||
('birthyear', models.IntegerField(blank=True, null=True, verbose_name='Birth year')),
|
||||
('family_structure', models.IntegerField(blank=True, null=True, verbose_name='Family Structure')),
|
||||
('level', models.IntegerField(blank=True, default=0, null=True, verbose_name='Level')),
|
||||
('paid', models.BooleanField(default=False, verbose_name='Is Paid')),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('introducer', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='introduced_uesr', to=settings.AUTH_USER_MODEL)),
|
||||
('last_updated_user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='roguser_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Member',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('firstname', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('lastname', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('date_of_birth', models.DateField(blank=True, null=True)),
|
||||
('female', models.BooleanField(default=False)),
|
||||
('is_temporary', models.BooleanField(default=False)),
|
||||
('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='members', to='rog.team')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Location_polygon',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
|
||||
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
|
||||
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
|
||||
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
|
||||
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='Address')),
|
||||
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
|
||||
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
|
||||
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
|
||||
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
|
||||
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
|
||||
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
|
||||
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
|
||||
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Portal')),
|
||||
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Group')),
|
||||
('phone', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phone')),
|
||||
('fax', models.CharField(blank=True, max_length=255, null=True, verbose_name='Fax')),
|
||||
('email', models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email')),
|
||||
('facility', models.CharField(blank=True, max_length=255, null=True, verbose_name='Facility')),
|
||||
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Remarks')),
|
||||
('tags', models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags')),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
|
||||
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_polygon_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Location_line',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
|
||||
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
|
||||
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
|
||||
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
|
||||
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='Address')),
|
||||
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
|
||||
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
|
||||
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
|
||||
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
|
||||
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
|
||||
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
|
||||
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
|
||||
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Portal')),
|
||||
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Group')),
|
||||
('phone', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phone')),
|
||||
('fax', models.CharField(blank=True, max_length=255, null=True, verbose_name='Fax')),
|
||||
('email', models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email')),
|
||||
('facility', models.CharField(blank=True, max_length=255, null=True, verbose_name='Facility')),
|
||||
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Remarks')),
|
||||
('tags', models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags')),
|
||||
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('geom', django.contrib.gis.db.models.fields.MultiLineStringField(blank=True, null=True, srid=4326)),
|
||||
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_line_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='JoinedEvent',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('tagname', models.CharField(blank=True, max_length=255, null=True, verbose_name='Tag Name')),
|
||||
('status', models.CharField(choices=[('REGISTERED', 'Registered'), ('ACCEPTED', 'accepted'), ('PAID', 'paid'), ('JOINED', 'joined'), ('CANCELED', 'Canceled')], max_length=256)),
|
||||
('registrationid', models.CharField(max_length=56, verbose_name='Registration Id')),
|
||||
('payment_code', models.CharField(max_length=255, verbose_name='Payment Code')),
|
||||
('paid', models.IntegerField(default=0, verbose_name='Paid Amount')),
|
||||
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Remark')),
|
||||
('parammeters', models.CharField(max_length=512, verbose_name='Parameters')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('last_updated_at', models.DateTimeField(auto_now=True)),
|
||||
('last_updated_user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='joined_event_updated_user', to=settings.AUTH_USER_MODEL)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpscheckin',
|
||||
index=models.Index(fields=['zekken_number', 'event_code', 'path_order'], name='idx_zekken_event'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpscheckin',
|
||||
index=models.Index(fields=['create_at'], name='idx_create_at'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='goalimages',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='favorite',
|
||||
name='last_updated_user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='favorite_updated_user', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='favorite',
|
||||
name='location',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.location'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='favorite',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventuser',
|
||||
name='event',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event', to='rog.event'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventuser',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='last_updated_user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='event_updated_user', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='user',
|
||||
field=models.ManyToManyField(related_name='even', through='rog.EventUser', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='entrymember',
|
||||
name='entry',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.entry'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='entrymember',
|
||||
name='member',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.member'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='entry',
|
||||
name='category',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newcategory'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='entry',
|
||||
name='event',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='entry',
|
||||
name='owner',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='entry',
|
||||
name='team',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.team'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='checkpoint',
|
||||
name='entry',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checkpoints', to='rog.entry'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='checkinimages',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='category',
|
||||
unique_together={('category_name', 'category_number')},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='customuser',
|
||||
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='customuser',
|
||||
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.AddIndex(
|
||||
model_name='waypoint',
|
||||
index=models.Index(fields=['entry', 'recorded_at'], name='rog_waypoin_entry_i_fb2cb5_idx'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='member',
|
||||
unique_together={('team', 'user')},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='location',
|
||||
index=django.contrib.postgres.indexes.GistIndex(fields=['geom'], name='rog_locatio_geom_4793cc_gist'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='entrymember',
|
||||
unique_together={('entry', 'member')},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='entry',
|
||||
unique_together={('zekken_number', 'event', 'date')},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='checkpoint',
|
||||
unique_together={('entry', 'cp_number')},
|
||||
),
|
||||
]
|
||||
179
rog/migrations_backup_20250828_132814/0002_integration_update.py
Normal file
179
rog/migrations_backup_20250828_132814/0002_integration_update.py
Normal file
@ -0,0 +1,179 @@
|
||||
# Generated by manual creation for database integration on 2025-08-20
|
||||
|
||||
import django.contrib.gis.db.models.fields
|
||||
import django.contrib.postgres.indexes
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# Create Checkpoint model first (required by other operations)
|
||||
migrations.CreateModel(
|
||||
name='Checkpoint',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('cp_number', models.IntegerField()),
|
||||
('cp_name', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('location', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326)),
|
||||
('photo_point', models.IntegerField(default=0)),
|
||||
('buy_point', models.IntegerField(default=0)),
|
||||
('sample_photo', models.CharField(blank=True, max_length=500, null=True)),
|
||||
('colabo_company_memo', models.TextField(blank=True, null=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, blank=True, null=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True, blank=True, null=True)),
|
||||
('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2')),
|
||||
],
|
||||
),
|
||||
|
||||
# Create GpsLog model for MobServer integration
|
||||
migrations.CreateModel(
|
||||
name='GpsLog',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('serial_number', models.IntegerField()),
|
||||
('zekken_number', models.TextField()),
|
||||
('event_code', models.TextField()),
|
||||
('cp_number', models.TextField(blank=True, null=True)),
|
||||
('image_address', models.TextField(blank=True, null=True)),
|
||||
('checkin_time', models.DateTimeField(auto_now_add=True)),
|
||||
('goal_time', models.TextField(blank=True, null=True)),
|
||||
('late_point', models.IntegerField(blank=True, null=True)),
|
||||
('create_at', models.DateTimeField(blank=True, null=True)),
|
||||
('create_user', models.TextField(blank=True, null=True)),
|
||||
('update_at', models.DateTimeField(blank=True, null=True)),
|
||||
('update_user', models.TextField(blank=True, null=True)),
|
||||
('buy_flag', models.BooleanField(blank=True, null=True)),
|
||||
('minus_photo_flag', models.BooleanField(blank=True, null=True)),
|
||||
('colabo_company_memo', models.TextField(default='')),
|
||||
('is_service_checked', models.BooleanField(default=False)),
|
||||
('score', models.IntegerField(blank=True, default=0, null=True)),
|
||||
('scoreboard_url', models.URLField(blank=True, null=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'gps_information',
|
||||
},
|
||||
),
|
||||
|
||||
# Add fields to GpsCheckin model
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='checkpoint',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.checkpoint'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='minus_photo_flag',
|
||||
field=models.BooleanField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='serial_number',
|
||||
field=models.IntegerField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='team',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.team'),
|
||||
),
|
||||
|
||||
# Add fields to NewEvent2 model
|
||||
migrations.AddField(
|
||||
model_name='newevent2',
|
||||
name='event_code',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='newevent2',
|
||||
name='event_day',
|
||||
field=models.CharField(blank=True, max_length=100, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='newevent2',
|
||||
name='start_time',
|
||||
field=models.TimeField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='newevent2',
|
||||
name='venue_address',
|
||||
field=models.CharField(blank=True, max_length=500, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='newevent2',
|
||||
name='venue_location',
|
||||
field=django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326),
|
||||
),
|
||||
|
||||
# Add fields to Team model
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='class_name',
|
||||
field=models.CharField(blank=True, max_length=100, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='event',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='location',
|
||||
field=django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='password',
|
||||
field=models.CharField(blank=True, max_length=100, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='trial',
|
||||
field=models.BooleanField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='zekken_number',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
|
||||
# Add constraints for Checkpoint model
|
||||
migrations.AddConstraint(
|
||||
model_name='checkpoint',
|
||||
constraint=models.UniqueConstraint(fields=['cp_number', 'event'], name='unique_cp_per_event'),
|
||||
),
|
||||
|
||||
# Create indexes (use appropriate operator classes)
|
||||
migrations.AddIndex(
|
||||
model_name='checkpoint',
|
||||
index=models.Index(fields=['event', 'cp_number'], name='idx_checkpoint_event_cp'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpslog',
|
||||
index=models.Index(fields=['serial_number'], name='gps_informa_serial__77a095_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpslog',
|
||||
index=models.Index(fields=['zekken_number'], name='gps_informa_zekken__01b27e_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpslog',
|
||||
index=models.Index(fields=['event_code'], name='gps_informa_event_c_2ab906_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpslog',
|
||||
index=models.Index(fields=['cp_number'], name='gps_informa_cp_numb_97c5c5_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='newevent2',
|
||||
index=models.Index(fields=['event_code'], name='rog_neweven_event_c_e79a96_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='team',
|
||||
index=models.Index(fields=['zekken_number'], name='rog_team_zekken__2c50d1_idx'),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.9 on 2025-08-20 16:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0002_integration_update'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='newevent2',
|
||||
name='end_datetime',
|
||||
field=models.DateTimeField(null=True, blank=True),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,26 @@
|
||||
# Generated manually on 2025-08-21
|
||||
# Add only required timestamp fields to Team model
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0003_auto_20250821_0112'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='created_at',
|
||||
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='updated_at',
|
||||
field=models.DateTimeField(auto_now=True),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,74 @@
|
||||
# Generated manually on 2025-08-21 08:25
|
||||
|
||||
import django.contrib.gis.db.models.fields
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0004_add_team_timestamps'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# Create GpsCheckin model
|
||||
migrations.CreateModel(
|
||||
name='GpsCheckin',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('event_code', models.CharField(max_length=50)),
|
||||
('zekken', models.CharField(max_length=20)),
|
||||
('serial_number', models.CharField(max_length=50)),
|
||||
('cp_number', models.CharField(blank=True, max_length=20, null=True)),
|
||||
('lat', models.FloatField(blank=True, null=True)),
|
||||
('lng', models.FloatField(blank=True, null=True)),
|
||||
('checkin_time', models.DateTimeField(blank=True, null=True)),
|
||||
('record_time', models.DateTimeField(blank=True, null=True)),
|
||||
('location', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326)),
|
||||
('mobserver_id', models.IntegerField(blank=True, null=True)),
|
||||
('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='gps_checkins', to='rog.newevent2')),
|
||||
('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='gps_checkins', to='rog.team')),
|
||||
('checkpoint', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='gps_checkins', to='rog.checkpoint')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'rog_gpscheckin',
|
||||
'indexes': [
|
||||
models.Index(fields=['event_code'], name='rog_gpschec_event_c_9f1a75_idx'),
|
||||
models.Index(fields=['zekken'], name='rog_gpschec_zekken_8e7f42_idx'),
|
||||
models.Index(fields=['serial_number'], name='rog_gpschec_serial__1b5e3a_idx'),
|
||||
models.Index(fields=['cp_number'], name='rog_gpschec_cp_numb_d7c8e5_idx'),
|
||||
],
|
||||
},
|
||||
),
|
||||
|
||||
# Create GpsLog model
|
||||
migrations.CreateModel(
|
||||
name='GpsLog',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('event_code', models.CharField(max_length=50)),
|
||||
('zekken', models.CharField(max_length=20)),
|
||||
('serial_number', models.CharField(max_length=50)),
|
||||
('cp_number', models.CharField(blank=True, max_length=20, null=True)),
|
||||
('lat', models.FloatField(blank=True, null=True)),
|
||||
('lng', models.FloatField(blank=True, null=True)),
|
||||
('checkin_time', models.DateTimeField(blank=True, null=True)),
|
||||
('record_time', models.DateTimeField(blank=True, null=True)),
|
||||
('location', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326)),
|
||||
('mobserver_id', models.IntegerField(blank=True, null=True)),
|
||||
('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='gps_logs', to='rog.newevent2')),
|
||||
('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='gps_logs', to='rog.team')),
|
||||
('checkpoint', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='gps_logs', to='rog.checkpoint')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'rog_gpslog',
|
||||
'indexes': [
|
||||
models.Index(fields=['event_code'], name='rog_gpslog_event_c_8a2b94_idx'),
|
||||
models.Index(fields=['zekken'], name='rog_gpslog_zekken_7c5f39_idx'),
|
||||
models.Index(fields=['serial_number'], name='rog_gpslog_serial__6d4e28_idx'),
|
||||
models.Index(fields=['cp_number'], name='rog_gpslog_cp_numb_5b3a17_idx'),
|
||||
],
|
||||
},
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,532 @@
|
||||
# Generated by Django 3.2.9 on 2025-08-24 00:29
|
||||
|
||||
from django.conf import settings
|
||||
import django.contrib.gis.db.models.fields
|
||||
import django.contrib.postgres.indexes
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0005_create_gps_tables'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Location2025',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('cp_number', models.IntegerField(db_index=True, verbose_name='CP番号')),
|
||||
('cp_name', models.CharField(max_length=255, verbose_name='CP名')),
|
||||
('latitude', models.FloatField(blank=True, null=True, verbose_name='緯度')),
|
||||
('longitude', models.FloatField(blank=True, null=True, verbose_name='経度')),
|
||||
('location', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326, verbose_name='位置')),
|
||||
('cp_point', models.IntegerField(default=10, verbose_name='チェックポイント得点')),
|
||||
('photo_point', models.IntegerField(default=0, verbose_name='写真ポイント')),
|
||||
('buy_point', models.IntegerField(default=0, verbose_name='買い物ポイント')),
|
||||
('checkin_radius', models.FloatField(default=15.0, verbose_name='チェックイン範囲(m)')),
|
||||
('auto_checkin', models.BooleanField(default=False, verbose_name='自動チェックイン')),
|
||||
('shop_closed', models.BooleanField(default=False, verbose_name='休業中')),
|
||||
('shop_shutdown', models.BooleanField(default=False, verbose_name='閉業')),
|
||||
('opening_hours', models.TextField(blank=True, null=True, verbose_name='営業時間')),
|
||||
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='住所')),
|
||||
('phone', models.CharField(blank=True, max_length=32, null=True, verbose_name='電話番号')),
|
||||
('website', models.URLField(blank=True, null=True, verbose_name='ウェブサイト')),
|
||||
('description', models.TextField(blank=True, null=True, verbose_name='説明')),
|
||||
('is_active', models.BooleanField(db_index=True, default=True, verbose_name='有効')),
|
||||
('sort_order', models.IntegerField(default=0, verbose_name='表示順')),
|
||||
('csv_source_file', models.CharField(blank=True, max_length=255, null=True, verbose_name='CSVファイル名')),
|
||||
('csv_upload_date', models.DateTimeField(blank=True, null=True, verbose_name='CSVアップロード日時')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='作成日時')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新日時')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'チェックポイント2025',
|
||||
'verbose_name_plural': 'チェックポイント2025',
|
||||
'db_table': 'rog_location2025',
|
||||
'ordering': ['event', 'sort_order', 'cp_number'],
|
||||
},
|
||||
),
|
||||
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpscheckin',
|
||||
name='rog_gpschec_event_c_9f1a75_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpscheckin',
|
||||
name='rog_gpschec_zekken_8e7f42_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpscheckin',
|
||||
name='rog_gpschec_serial__1b5e3a_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpscheckin',
|
||||
name='rog_gpschec_cp_numb_d7c8e5_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpslog',
|
||||
name='rog_gpslog_event_c_8a2b94_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpslog',
|
||||
name='rog_gpslog_zekken_7c5f39_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpslog',
|
||||
name='rog_gpslog_serial__6d4e28_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='gpslog',
|
||||
name='rog_gpslog_cp_numb_5b3a17_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='newevent2',
|
||||
name='rog_neweven_event_c_e79a96_idx',
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name='team',
|
||||
name='rog_team_zekken__2c50d1_idx',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='gpslog',
|
||||
old_name='record_time',
|
||||
new_name='create_at',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='gpslog',
|
||||
old_name='mobserver_id',
|
||||
new_name='late_point',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='checkin_time',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='event',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='lat',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='lng',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='location',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='mobserver_id',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='record_time',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpscheckin',
|
||||
name='zekken',
|
||||
),
|
||||
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='buy_flag',
|
||||
field=models.BooleanField(default=False, help_text='購入フラグ:協賛店で購入した場合、無条件でTRUEにする。'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='colabo_company_memo',
|
||||
field=models.TextField(default='', help_text='グループコード:複数のイベントで合算する場合に使用する'),
|
||||
),
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'rog_gpscheckin'
|
||||
AND column_name = 'create_at'
|
||||
) THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN create_at TIMESTAMP WITH TIME ZONE;
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="ALTER TABLE rog_gpscheckin DROP COLUMN IF EXISTS create_at CASCADE;"
|
||||
),
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'rog_gpscheckin'
|
||||
AND column_name = 'create_user'
|
||||
) THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN create_user TEXT;
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="ALTER TABLE rog_gpscheckin DROP COLUMN IF EXISTS create_user CASCADE;"
|
||||
),
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'rog_gpscheckin'
|
||||
AND column_name = 'event_id'
|
||||
) THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN event_id INTEGER;
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="ALTER TABLE rog_gpscheckin DROP COLUMN IF EXISTS event_id CASCADE;"
|
||||
),
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'rog_gpscheckin'
|
||||
AND column_name = 'goal_time'
|
||||
) THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN goal_time TEXT;
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="ALTER TABLE rog_gpscheckin DROP COLUMN IF EXISTS goal_time CASCADE;"
|
||||
),
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'rog_gpscheckin'
|
||||
AND column_name = 'image_address'
|
||||
) THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN image_address TEXT;
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="ALTER TABLE rog_gpscheckin DROP COLUMN IF EXISTS image_address CASCADE;"
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='image_qr',
|
||||
field=models.BooleanField(default=False, help_text='QRコードスキャンフラグ'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='image_receipt',
|
||||
field=models.TextField(blank=True, default=False, help_text='レシート画像のパス', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='late_point',
|
||||
field=models.IntegerField(blank=True, help_text='遅刻ポイント:ゴールの時刻が制限時間を超えた場合、1分につき-50点が加算。', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='lattitude',
|
||||
field=models.FloatField(blank=True, help_text='緯度:写真から取得', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='longitude',
|
||||
field=models.FloatField(blank=True, help_text='経度:写真から取得', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='minus_photo_flag',
|
||||
field=models.BooleanField(default=False, help_text='MobServer gps_information.minus_photo_flag'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='path_order',
|
||||
field=models.IntegerField(default=0, help_text='チェックポイントの順序番号'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='points',
|
||||
field=models.IntegerField(blank=True, help_text='ポイント:このチェックインによる獲得ポイント。通常ポイントと買い物ポイントは分離される。ゴールの場合には減点なども含む。', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='update_at',
|
||||
field=models.DateTimeField(blank=True, help_text='更新日時', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='update_user',
|
||||
field=models.TextField(blank=True, help_text='更新ユーザー', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='validate_location',
|
||||
field=models.BooleanField(default=False, help_text='位置情報検証フラグ:画像認識で検証した結果'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='zekken_number',
|
||||
field=models.TextField(default='', help_text='ゼッケン番号'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='buy_flag',
|
||||
field=models.BooleanField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='colabo_company_memo',
|
||||
field=models.TextField(default=''),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='create_user',
|
||||
field=models.TextField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='goal_time',
|
||||
field=models.TextField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='image_address',
|
||||
field=models.TextField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='is_service_checked',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='minus_photo_flag',
|
||||
field=models.BooleanField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='score',
|
||||
field=models.IntegerField(blank=True, default=0, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='scoreboard_url',
|
||||
field=models.URLField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='update_at',
|
||||
field=models.DateTimeField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='update_user',
|
||||
field=models.TextField(blank=True, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpslog',
|
||||
name='zekken_number',
|
||||
field=models.TextField(default=''),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpscheckin',
|
||||
name='checkpoint',
|
||||
field=models.ForeignKey(blank=True, help_text='統合チェックポイントリレーション', null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.checkpoint'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpscheckin',
|
||||
name='cp_number',
|
||||
field=models.IntegerField(blank=True, help_text='チェックポイント番号', null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpscheckin',
|
||||
name='event_code',
|
||||
field=models.TextField(default='', help_text='イベントコード'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpscheckin',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpscheckin',
|
||||
name='serial_number',
|
||||
field=models.IntegerField(blank=True, help_text='MobServer gps_information.serial_number', null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpscheckin',
|
||||
name='team',
|
||||
field=models.ForeignKey(blank=True, help_text='統合チームリレーション', null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.team'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpslog',
|
||||
name='checkin_time',
|
||||
field=models.DateTimeField(auto_now_add=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpslog',
|
||||
name='cp_number',
|
||||
field=models.TextField(blank=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpslog',
|
||||
name='event_code',
|
||||
field=models.TextField(default=''),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpslog',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='gpslog',
|
||||
name='serial_number',
|
||||
field=models.IntegerField(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='newevent2',
|
||||
name='event_code',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, unique=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='newevent2',
|
||||
name='event_day',
|
||||
field=models.CharField(blank=True, max_length=20, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='newevent2',
|
||||
name='start_time',
|
||||
field=models.CharField(blank=True, max_length=20, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='team',
|
||||
name='created_at',
|
||||
field=models.DateTimeField(auto_now_add=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='team',
|
||||
name='trial',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='team',
|
||||
name='updated_at',
|
||||
field=models.DateTimeField(auto_now=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='team',
|
||||
name='zekken_number',
|
||||
field=models.CharField(blank=True, max_length=20, null=True),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='gpslog',
|
||||
unique_together={('serial_number', 'zekken_number', 'event_code', 'colabo_company_memo')},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='checkpoint',
|
||||
index=django.contrib.postgres.indexes.GistIndex(fields=['location'], name='idx_checkpoint_location'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpscheckin',
|
||||
index=models.Index(fields=['zekken_number', 'event_code', 'path_order'], name='idx_zekken_event'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpscheckin',
|
||||
index=models.Index(fields=['create_at'], name='idx_create_at'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpslog',
|
||||
index=models.Index(fields=['zekken_number', 'event_code'], name='gpslog_zekken_event_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='gpslog',
|
||||
index=models.Index(fields=['create_at'], name='gpslog_create_at_idx'),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name='team',
|
||||
constraint=models.UniqueConstraint(condition=models.Q(('event__isnull', False), ('zekken_number__isnull', False)), fields=('zekken_number', 'event'), name='unique_team_per_event'),
|
||||
),
|
||||
migrations.AlterModelTable(
|
||||
name='gpscheckin',
|
||||
table='gps_checkins',
|
||||
),
|
||||
|
||||
migrations.AddField(
|
||||
model_name='location2025',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='location2025_created', to=settings.AUTH_USER_MODEL, verbose_name='作成者'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='location2025',
|
||||
name='csv_upload_user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='location2025_csv_uploads', to=settings.AUTH_USER_MODEL, verbose_name='CSVアップロードユーザー'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='location2025',
|
||||
name='event',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2', verbose_name='イベント'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='location2025',
|
||||
name='updated_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='location2025_updated', to=settings.AUTH_USER_MODEL, verbose_name='更新者'),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='checkpoint',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='event',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='lat',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='lng',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='location',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='team',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='gpslog',
|
||||
name='zekken',
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='location2025',
|
||||
index=models.Index(fields=['event', 'cp_number'], name='location2025_event_cp_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='location2025',
|
||||
index=models.Index(fields=['event', 'is_active'], name='location2025_event_active_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='location2025',
|
||||
index=models.Index(fields=['csv_upload_date'], name='location2025_csv_date_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='location2025',
|
||||
index=django.contrib.postgres.indexes.GistIndex(fields=['location'], name='location2025_location_gist_idx'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='location2025',
|
||||
unique_together={('cp_number', 'event')},
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,33 @@
|
||||
# Generated by Django 3.2.9 on 2025-08-24 08:42
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0006_create_location2025_only'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='validated_at',
|
||||
field=models.DateTimeField(blank=True, help_text='審査日時', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='validated_by',
|
||||
field=models.CharField(blank=True, help_text='審査者', max_length=255, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='validation_comment',
|
||||
field=models.TextField(blank=True, help_text='審査コメント・理由', null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='gpscheckin',
|
||||
name='validation_status',
|
||||
field=models.CharField(choices=[('PENDING', '審査待ち'), ('APPROVED', '承認'), ('REJECTED', '却下'), ('AUTO_APPROVED', '自動承認')], default='PENDING', help_text='通過審査ステータス', max_length=20),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,46 @@
|
||||
# Generated by Django 3.2.9 on 2025-08-24 22:16
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0007_add_validation_fields'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# 安全な条件付きテーブル操作
|
||||
migrations.RunSQL(
|
||||
"""
|
||||
DO $$
|
||||
BEGIN
|
||||
-- TeamStartテーブルが存在する場合のみフィールドを削除
|
||||
IF EXISTS (SELECT FROM pg_tables WHERE tablename = 'rog_teamstart') THEN
|
||||
ALTER TABLE rog_teamstart DROP COLUMN IF EXISTS entry_id;
|
||||
END IF;
|
||||
|
||||
-- TeamGoalテーブルが存在する場合のみ削除
|
||||
IF EXISTS (SELECT FROM pg_tables WHERE tablename = 'rog_teamgoal') THEN
|
||||
DROP TABLE rog_teamgoal;
|
||||
END IF;
|
||||
|
||||
-- TeamStartテーブルが存在する場合のみ削除
|
||||
IF EXISTS (SELECT FROM pg_tables WHERE tablename = 'rog_teamstart') THEN
|
||||
DROP TABLE rog_teamstart;
|
||||
END IF;
|
||||
|
||||
-- zekken_labelカラムが存在しない場合のみ追加
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'rog_entry'
|
||||
AND column_name = 'zekken_label'
|
||||
) THEN
|
||||
ALTER TABLE rog_entry ADD COLUMN zekken_label VARCHAR(255) NULL;
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
""",
|
||||
reverse_sql=migrations.RunSQL.noop
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,96 @@
|
||||
# Generated by Django 3.2.9 on 2025-08-25 09:30
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0008_auto_20250825_0716'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# GPS Checkin テーブルの安全な作成
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
-- rog_gpscheckin テーブルが存在しない場合のみ作成
|
||||
IF NOT EXISTS (
|
||||
SELECT FROM information_schema.tables
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name = 'rog_gpscheckin'
|
||||
) THEN
|
||||
CREATE TABLE rog_gpscheckin (
|
||||
id SERIAL PRIMARY KEY,
|
||||
event_code VARCHAR(50),
|
||||
zekken VARCHAR(20),
|
||||
serial_number VARCHAR(50),
|
||||
team_name VARCHAR(255),
|
||||
cp_number VARCHAR(20),
|
||||
lat DOUBLE PRECISION,
|
||||
lng DOUBLE PRECISION,
|
||||
checkin_time TIMESTAMP WITH TIME ZONE,
|
||||
record_time TIMESTAMP WITH TIME ZONE,
|
||||
location GEOMETRY(Point, 4326),
|
||||
mobserver_id INTEGER,
|
||||
event_id INTEGER,
|
||||
team_id INTEGER,
|
||||
checkpoint_id INTEGER,
|
||||
goal_time TEXT,
|
||||
late_point INTEGER,
|
||||
buy_flag BOOLEAN DEFAULT FALSE,
|
||||
image_address TEXT,
|
||||
minus_photo_flag BOOLEAN DEFAULT FALSE,
|
||||
create_user TEXT,
|
||||
update_user TEXT,
|
||||
comment TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- インデックスの作成
|
||||
CREATE INDEX IF NOT EXISTS rog_gpschec_event_c_9f1a75_idx ON rog_gpscheckin (event_code);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpschec_zekken_8e7f42_idx ON rog_gpscheckin (zekken);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpschec_serial__1b5e3a_idx ON rog_gpscheckin (serial_number);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpschec_cp_numb_d7c8e5_idx ON rog_gpscheckin (cp_number);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpscheckin_team_id_e85ab512 ON rog_gpscheckin (team_id);
|
||||
END IF;
|
||||
|
||||
-- rog_gpslog テーブルが存在しない場合のみ作成
|
||||
IF NOT EXISTS (
|
||||
SELECT FROM information_schema.tables
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name = 'rog_gpslog'
|
||||
) THEN
|
||||
CREATE TABLE rog_gpslog (
|
||||
id SERIAL PRIMARY KEY,
|
||||
event_code VARCHAR(50),
|
||||
zekken VARCHAR(20),
|
||||
serial_number VARCHAR(50),
|
||||
cp_number VARCHAR(20),
|
||||
lat DOUBLE PRECISION,
|
||||
lng DOUBLE PRECISION,
|
||||
checkin_time TIMESTAMP WITH TIME ZONE,
|
||||
record_time TIMESTAMP WITH TIME ZONE,
|
||||
location GEOMETRY(Point, 4326),
|
||||
mobserver_id INTEGER,
|
||||
event_id INTEGER,
|
||||
team_id INTEGER,
|
||||
checkpoint_id INTEGER
|
||||
);
|
||||
|
||||
-- インデックスの作成
|
||||
CREATE INDEX IF NOT EXISTS rog_gpslog_event_c_8a2b94_idx ON rog_gpslog (event_code);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpslog_zekken_7c5f39_idx ON rog_gpslog (zekken);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpslog_serial__6d4e28_idx ON rog_gpslog (serial_number);
|
||||
CREATE INDEX IF NOT EXISTS rog_gpslog_cp_numb_5b3a17_idx ON rog_gpslog (cp_number);
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="""
|
||||
DROP TABLE IF EXISTS rog_gpscheckin CASCADE;
|
||||
DROP TABLE IF EXISTS rog_gpslog CASCADE;
|
||||
"""
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,216 @@
|
||||
# Generated for safe deployment
|
||||
# Conditional SQL operations to prevent duplicate table errors
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0009_create_gps_tables_safe'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# 既存のすべてのテーブルとインデックスを条件付きで作成
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
-- CustomUser テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_customuser') THEN
|
||||
CREATE TABLE rog_customuser (
|
||||
id SERIAL PRIMARY KEY,
|
||||
password VARCHAR(128) NOT NULL,
|
||||
last_login TIMESTAMP WITH TIME ZONE,
|
||||
is_superuser BOOLEAN NOT NULL,
|
||||
username VARCHAR(150) NOT NULL UNIQUE,
|
||||
first_name VARCHAR(150) NOT NULL,
|
||||
last_name VARCHAR(150) NOT NULL,
|
||||
email VARCHAR(254) NOT NULL,
|
||||
is_staff BOOLEAN NOT NULL,
|
||||
is_active BOOLEAN NOT NULL,
|
||||
date_joined TIMESTAMP WITH TIME ZONE NOT NULL
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- CustomUser インデックスの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_customuser' AND indexname = 'rog_customuser_username_key') THEN
|
||||
CREATE UNIQUE INDEX rog_customuser_username_key ON rog_customuser (username);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Entry テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_entry') THEN
|
||||
CREATE TABLE rog_entry (
|
||||
id SERIAL PRIMARY KEY,
|
||||
event_code VARCHAR(50),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Team テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_team') THEN
|
||||
CREATE TABLE rog_team (
|
||||
id SERIAL PRIMARY KEY,
|
||||
team_name VARCHAR(100),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Member テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_member') THEN
|
||||
CREATE TABLE rog_member (
|
||||
id SERIAL PRIMARY KEY,
|
||||
member_name VARCHAR(100),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Location2025 テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_location2025') THEN
|
||||
CREATE TABLE rog_location2025 (
|
||||
id SERIAL PRIMARY KEY,
|
||||
cp_number INTEGER,
|
||||
cp_name VARCHAR(255),
|
||||
latitude FLOAT,
|
||||
longitude FLOAT,
|
||||
location GEOMETRY(POINT, 4326),
|
||||
cp_point INTEGER DEFAULT 10,
|
||||
photo_point INTEGER DEFAULT 0,
|
||||
buy_point INTEGER DEFAULT 0,
|
||||
checkin_radius FLOAT DEFAULT 15.0,
|
||||
auto_checkin BOOLEAN DEFAULT FALSE,
|
||||
shop_closed BOOLEAN DEFAULT FALSE,
|
||||
shop_shutdown BOOLEAN DEFAULT FALSE,
|
||||
opening_hours TEXT,
|
||||
address VARCHAR(512),
|
||||
phone VARCHAR(32),
|
||||
website VARCHAR(200),
|
||||
description TEXT,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
sort_order INTEGER DEFAULT 0,
|
||||
csv_source_file VARCHAR(255),
|
||||
csv_upload_date TIMESTAMP WITH TIME ZONE,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
event_id INTEGER,
|
||||
created_by_id INTEGER,
|
||||
csv_upload_user_id INTEGER,
|
||||
updated_by_id INTEGER
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- GPS Checkin テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_gpscheckin') THEN
|
||||
CREATE TABLE rog_gpscheckin (
|
||||
id SERIAL PRIMARY KEY,
|
||||
event_code VARCHAR(50),
|
||||
zekken VARCHAR(20),
|
||||
serial_number VARCHAR(50),
|
||||
team_name VARCHAR(100),
|
||||
cp_number VARCHAR(20),
|
||||
lat FLOAT,
|
||||
lng FLOAT,
|
||||
checkin_time TIMESTAMP WITH TIME ZONE,
|
||||
record_time TIMESTAMP WITH TIME ZONE,
|
||||
goal_time TIMESTAMP WITH TIME ZONE,
|
||||
late_point INTEGER,
|
||||
buy_flag BOOLEAN DEFAULT FALSE,
|
||||
image_address TEXT,
|
||||
minus_photo_flag BOOLEAN DEFAULT FALSE,
|
||||
create_user TEXT,
|
||||
update_user TEXT,
|
||||
comment TEXT,
|
||||
location GEOMETRY(POINT, 4326),
|
||||
mobserver_id INTEGER,
|
||||
event_id INTEGER,
|
||||
team_id INTEGER,
|
||||
checkpoint_id INTEGER
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- GPS Log テーブルの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_gpslog') THEN
|
||||
CREATE TABLE rog_gpslog (
|
||||
id SERIAL PRIMARY KEY,
|
||||
event_code VARCHAR(50),
|
||||
zekken VARCHAR(20),
|
||||
serial_number VARCHAR(50),
|
||||
cp_number VARCHAR(20),
|
||||
lat FLOAT,
|
||||
lng FLOAT,
|
||||
checkin_time TIMESTAMP WITH TIME ZONE,
|
||||
record_time TIMESTAMP WITH TIME ZONE,
|
||||
location GEOMETRY(POINT, 4326),
|
||||
mobserver_id INTEGER,
|
||||
event_id INTEGER,
|
||||
team_id INTEGER,
|
||||
checkpoint_id INTEGER
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 必要なインデックスの安全な作成
|
||||
DO $$
|
||||
BEGIN
|
||||
-- GPS Checkin インデックス
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_gpscheckin' AND indexname = 'rog_gpscheckin_event_code_idx') THEN
|
||||
CREATE INDEX rog_gpscheckin_event_code_idx ON rog_gpscheckin (event_code);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_gpscheckin' AND indexname = 'rog_gpscheckin_serial_number_idx') THEN
|
||||
CREATE INDEX rog_gpscheckin_serial_number_idx ON rog_gpscheckin (serial_number);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_gpscheckin' AND indexname = 'rog_gpscheckin_team_name_idx') THEN
|
||||
CREATE INDEX rog_gpscheckin_team_name_idx ON rog_gpscheckin (team_name);
|
||||
END IF;
|
||||
|
||||
-- GPS Log インデックス
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_gpslog' AND indexname = 'rog_gpslog_event_code_idx') THEN
|
||||
CREATE INDEX rog_gpslog_event_code_idx ON rog_gpslog (event_code);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_gpslog' AND indexname = 'rog_gpslog_serial_number_idx') THEN
|
||||
CREATE INDEX rog_gpslog_serial_number_idx ON rog_gpslog (serial_number);
|
||||
END IF;
|
||||
|
||||
-- Location2025 インデックス
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_location2025' AND indexname = 'rog_location2025_cp_number_idx') THEN
|
||||
CREATE INDEX rog_location2025_cp_number_idx ON rog_location2025 (cp_number);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT FROM pg_indexes WHERE tablename = 'rog_location2025' AND indexname = 'rog_location2025_event_id_idx') THEN
|
||||
CREATE INDEX rog_location2025_event_id_idx ON rog_location2025 (event_id);
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="""
|
||||
-- 逆操作は何もしない(テーブルを削除しない)
|
||||
SELECT 1;
|
||||
"""
|
||||
),
|
||||
]
|
||||
245
rog/migrations_backup_20250828_132814/0011_auto_20250827_1459.py
Normal file
245
rog/migrations_backup_20250828_132814/0011_auto_20250827_1459.py
Normal file
@ -0,0 +1,245 @@
|
||||
# Generated by Django 3.2.9 on 2025-08-27 05:59
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rog', '0010_safe_create_all_tables'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AppVersion',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('version', models.CharField(help_text='セマンティックバージョン (1.2.3)', max_length=20)),
|
||||
('platform', models.CharField(choices=[('android', 'Android'), ('ios', 'iOS')], max_length=10)),
|
||||
('build_number', models.CharField(blank=True, max_length=20, null=True)),
|
||||
('is_latest', models.BooleanField(default=False, help_text='最新版フラグ')),
|
||||
('is_required', models.BooleanField(default=False, help_text='強制更新フラグ')),
|
||||
('update_message', models.TextField(blank=True, help_text='ユーザー向け更新メッセージ', null=True)),
|
||||
('download_url', models.URLField(blank=True, help_text='アプリストアURL', null=True)),
|
||||
('release_date', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'app_versions',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CheckinExtended',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('gps_latitude', models.DecimalField(blank=True, decimal_places=8, max_digits=10, null=True)),
|
||||
('gps_longitude', models.DecimalField(blank=True, decimal_places=8, max_digits=11, null=True)),
|
||||
('gps_accuracy', models.DecimalField(blank=True, decimal_places=2, help_text='GPS精度(メートル)', max_digits=6, null=True)),
|
||||
('gps_timestamp', models.DateTimeField(blank=True, null=True)),
|
||||
('camera_capture_time', models.DateTimeField(blank=True, null=True)),
|
||||
('device_info', models.TextField(blank=True, null=True)),
|
||||
('validation_status', models.CharField(choices=[('pending', 'Pending'), ('approved', 'Approved'), ('rejected', 'Rejected'), ('requires_review', 'Requires Review')], default='pending', max_length=20)),
|
||||
('validation_comment', models.TextField(blank=True, null=True)),
|
||||
('validated_at', models.DateTimeField(blank=True, null=True)),
|
||||
('bonus_points', models.IntegerField(default=0)),
|
||||
('scoring_breakdown', models.JSONField(blank=True, default=dict)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'rog_checkin_extended',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UploadedImage',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('original_filename', models.CharField(max_length=255)),
|
||||
('server_filename', models.CharField(max_length=255, unique=True)),
|
||||
('file_url', models.URLField()),
|
||||
('file_size', models.BigIntegerField()),
|
||||
('mime_type', models.CharField(choices=[('image/jpeg', 'JPEG'), ('image/png', 'PNG'), ('image/heic', 'HEIC'), ('image/webp', 'WebP')], max_length=50)),
|
||||
('event_code', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('team_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('cp_number', models.IntegerField(blank=True, null=True)),
|
||||
('upload_source', models.CharField(choices=[('direct', 'Direct'), ('sharing_intent', 'Sharing Intent'), ('bulk_upload', 'Bulk Upload')], default='direct', max_length=50)),
|
||||
('device_platform', models.CharField(blank=True, choices=[('ios', 'iOS'), ('android', 'Android'), ('web', 'Web')], max_length=20, null=True)),
|
||||
('capture_timestamp', models.DateTimeField(blank=True, null=True)),
|
||||
('upload_timestamp', models.DateTimeField(auto_now_add=True)),
|
||||
('device_info', models.TextField(blank=True, null=True)),
|
||||
('processing_status', models.CharField(choices=[('uploaded', 'Uploaded'), ('processing', 'Processing'), ('processed', 'Processed'), ('failed', 'Failed')], default='uploaded', max_length=20)),
|
||||
('thumbnail_url', models.URLField(blank=True, null=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'rog_uploaded_images',
|
||||
},
|
||||
),
|
||||
# TeamStartテーブルのentryカラムを安全に削除
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'rog_teamstart') THEN
|
||||
IF EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_teamstart' AND column_name = 'entry_id') THEN
|
||||
ALTER TABLE rog_teamstart DROP COLUMN entry_id;
|
||||
END IF;
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="-- No reverse SQL needed for conditional operation"
|
||||
),
|
||||
# Entryテーブルに新しいフィールドを条件付きで追加
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
-- can_access_private_events フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_entry' AND column_name = 'can_access_private_events') THEN
|
||||
ALTER TABLE rog_entry ADD COLUMN can_access_private_events BOOLEAN DEFAULT FALSE;
|
||||
COMMENT ON COLUMN rog_entry.can_access_private_events IS '非公開イベント参加権限';
|
||||
END IF;
|
||||
|
||||
-- staff_privileges フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_entry' AND column_name = 'staff_privileges') THEN
|
||||
ALTER TABLE rog_entry ADD COLUMN staff_privileges BOOLEAN DEFAULT FALSE;
|
||||
COMMENT ON COLUMN rog_entry.staff_privileges IS 'スタッフ権限フラグ';
|
||||
END IF;
|
||||
|
||||
-- team_validation_status フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_entry' AND column_name = 'team_validation_status') THEN
|
||||
ALTER TABLE rog_entry ADD COLUMN team_validation_status VARCHAR(20) DEFAULT 'approved';
|
||||
COMMENT ON COLUMN rog_entry.team_validation_status IS 'チーム承認状況';
|
||||
END IF;
|
||||
|
||||
-- zekken_label フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_entry' AND column_name = 'zekken_label') THEN
|
||||
ALTER TABLE rog_entry ADD COLUMN zekken_label VARCHAR(255);
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="-- No reverse SQL needed for conditional operation"
|
||||
),
|
||||
# GPSCheckinテーブルに新しいフィールドを条件付きで追加
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
-- create_at フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_gpscheckin' AND column_name = 'create_at') THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN create_at TIMESTAMP WITH TIME ZONE;
|
||||
COMMENT ON COLUMN rog_gpscheckin.create_at IS '作成日時:データの作成日時';
|
||||
END IF;
|
||||
|
||||
-- create_user フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_gpscheckin' AND column_name = 'create_user') THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN create_user TEXT;
|
||||
COMMENT ON COLUMN rog_gpscheckin.create_user IS '作成ユーザー';
|
||||
END IF;
|
||||
|
||||
-- event_id フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_gpscheckin' AND column_name = 'event_id') THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN event_id INTEGER;
|
||||
COMMENT ON COLUMN rog_gpscheckin.event_id IS 'イベントID';
|
||||
END IF;
|
||||
|
||||
-- goal_time フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_gpscheckin' AND column_name = 'goal_time') THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN goal_time TEXT;
|
||||
COMMENT ON COLUMN rog_gpscheckin.goal_time IS 'ゴール時刻=ゴール時のみ使用される。画像から時刻を読み取り設定する。';
|
||||
END IF;
|
||||
|
||||
-- image_address フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_gpscheckin' AND column_name = 'image_address') THEN
|
||||
ALTER TABLE rog_gpscheckin ADD COLUMN image_address TEXT;
|
||||
COMMENT ON COLUMN rog_gpscheckin.image_address IS 'チェックイン画像のパス';
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="-- No reverse SQL needed for conditional operation"
|
||||
),
|
||||
# NewEvent2テーブルに新しいフィールドを条件付きで追加
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
DO $$
|
||||
BEGIN
|
||||
-- status フィールドの追加
|
||||
IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'rog_newevent2' AND column_name = 'status') THEN
|
||||
ALTER TABLE rog_newevent2 ADD COLUMN status VARCHAR(20) DEFAULT 'draft';
|
||||
COMMENT ON COLUMN rog_newevent2.status IS 'イベントステータス';
|
||||
END IF;
|
||||
END $$;
|
||||
""",
|
||||
reverse_sql="-- No reverse SQL needed for conditional operation"
|
||||
),
|
||||
migrations.AlterModelTable(
|
||||
name='gpslog',
|
||||
table='gps_information',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='TeamGoal',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='TeamStart',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='uploadedimage',
|
||||
name='entry',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rog.entry'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='uploadedimage',
|
||||
name='gpslog',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rog.gpscheckin'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='checkinextended',
|
||||
name='gpslog',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='extended_info', to='rog.gpscheckin'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='checkinextended',
|
||||
name='validated_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='appversion',
|
||||
index=models.Index(fields=['platform'], name='idx_app_versions_platform'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='appversion',
|
||||
index=models.Index(condition=models.Q(('is_latest', True)), fields=['is_latest'], name='idx_app_versions_latest_true'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='appversion',
|
||||
unique_together={('version', 'platform')},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='uploadedimage',
|
||||
index=models.Index(fields=['event_code', 'team_name'], name='idx_uploaded_event_team'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='uploadedimage',
|
||||
index=models.Index(fields=['cp_number'], name='idx_uploaded_cp_number'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='uploadedimage',
|
||||
index=models.Index(fields=['upload_timestamp'], name='idx_uploaded_timestamp'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='uploadedimage',
|
||||
index=models.Index(fields=['processing_status'], name='idx_uploaded_status'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='checkinextended',
|
||||
index=models.Index(fields=['validation_status'], name='idx_checkin_ext_valid'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='checkinextended',
|
||||
index=models.Index(fields=['created_at'], name='idx_checkin_ext_created'),
|
||||
),
|
||||
]
|
||||
0
rog/migrations_backup_20250828_132814/__init__.py
Executable file
0
rog/migrations_backup_20250828_132814/__init__.py
Executable file
Reference in New Issue
Block a user