From 23a9902885a85b6ab967ee32ee7cca559e137b32 Mon Sep 17 00:00:00 2001 From: Akira Date: Fri, 29 Aug 2025 18:49:35 +0900 Subject: [PATCH] Add migration files 0001-0007 and update .gitignore --- .gitignore | 4 - rog/migrations/0001_simple_initial.py | 155 ++ rog/migrations/0002_fix_all_model_defaults.py | 1419 +++++++++++++++++ .../0003_add_missing_fields_to_gpscheckin.py | 45 + .../0004_remove_zekken_number_field.py | 29 + rog/migrations/0005_fix_field_mappings.py | 49 + rog/migrations/0006_remove_image_address.py | 17 + rog/migrations/0007_auto_20250829_1836.py | 18 + 8 files changed, 1732 insertions(+), 4 deletions(-) create mode 100644 rog/migrations/0001_simple_initial.py create mode 100644 rog/migrations/0002_fix_all_model_defaults.py create mode 100644 rog/migrations/0003_add_missing_fields_to_gpscheckin.py create mode 100644 rog/migrations/0004_remove_zekken_number_field.py create mode 100644 rog/migrations/0005_fix_field_mappings.py create mode 100644 rog/migrations/0006_remove_image_address.py create mode 100644 rog/migrations/0007_auto_20250829_1836.py diff --git a/.gitignore b/.gitignore index e3f5c41..fa4c558 100644 --- a/.gitignore +++ b/.gitignore @@ -157,10 +157,6 @@ dmypy.json # Cython debug symbols cython_debug/ -# migration files -rog/migrations/ - - # PyCharm # JetBrains specific template is maintainted in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore diff --git a/rog/migrations/0001_simple_initial.py b/rog/migrations/0001_simple_initial.py new file mode 100644 index 0000000..464c9df --- /dev/null +++ b/rog/migrations/0001_simple_initial.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +# Generated by reset_migrations_simple.py - Simple Version + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + # 基本的なモデルのみ作成(managed=Falseのモデルは除外) + + # 1. ユーザー関連モデル + 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)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), + ], + options={ + 'abstract': False, + }, + ), + + # 2. カテゴリモデル + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('category_name', models.CharField(max_length=255, verbose_name='カテゴリ名')), + ('parent_category', models.CharField(blank=True, max_length=255, null=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('last_updated_at', models.DateTimeField(auto_now=True)), + ], + ), + + # 3. イベント関連モデル + migrations.CreateModel( + name='NewEvent', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('event_code', models.CharField(max_length=255, verbose_name='イベントコード')), + ('event_name', models.CharField(max_length=255, verbose_name='イベント名')), + ('event_date', models.DateField(verbose_name='イベント日')), + ('start_time', models.TimeField(blank=True, null=True, verbose_name='開始時刻')), + ('end_time', models.TimeField(blank=True, null=True, verbose_name='終了時刻')), + ('description', models.TextField(blank=True, null=True, verbose_name='説明')), + ('is_active', models.BooleanField(default=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('last_updated_at', models.DateTimeField(auto_now=True)), + ('category', models.ForeignKey(default=1, on_delete=django.db.models.deletion.DO_NOTHING, to='rog.category')), + ], + options={ + 'db_table': 'rog_newevent', + }, + ), + + # 4. チーム関連モデル + 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, verbose_name='チーム名')), + ('team_member_num', models.IntegerField(blank=True, default=1, null=True, verbose_name='チーム人数')), + ('score', models.IntegerField(blank=True, default=0, null=True, verbose_name='スコア')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('last_updated_at', models.DateTimeField(auto_now=True)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newevent')), + ], + options={ + 'db_table': 'rog_team', + }, + ), + + # 5. ロケーション関連モデル(基本的なもの) + 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(blank=False, 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=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)), + ('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)), + ], + options={ + 'db_table': 'rog_location', + }, + ), + + # 6. エントリー関連モデル + migrations.CreateModel( + name='Entry', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('start_time', models.DateTimeField(blank=True, null=True, verbose_name='Start time')), + ('goal_time', models.DateTimeField(blank=True, null=True, verbose_name='Goal time')), + ('check_point', models.IntegerField(blank=True, null=True, verbose_name='Check Point')), + ('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, to='rog.location')), + ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.team')), + ('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='entry_updated_user', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'rog_entry', + }, + ), + ] diff --git a/rog/migrations/0002_fix_all_model_defaults.py b/rog/migrations/0002_fix_all_model_defaults.py new file mode 100644 index 0000000..55ed182 --- /dev/null +++ b/rog/migrations/0002_fix_all_model_defaults.py @@ -0,0 +1,1419 @@ +# Generated by Django 3.2.9 on 2025-08-29 00:07 + +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): + + dependencies = [ + ('rog', '0001_simple_initial'), + ] + + 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='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='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.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, null=True)), + ('updated_at', models.DateTimeField(auto_now=True, null=True)), + ], + ), + 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(default=0, help_text='チェックポイントの順序番号')), + ('zekken_number', models.TextField(default='', help_text='ゼッケン番号')), + ('event_id', models.IntegerField(blank=True, help_text='イベントID', null=True)), + ('event_code', models.TextField(default='', 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)), + ('serial_number', models.IntegerField(blank=True, help_text='MobServer gps_information.serial_number', null=True)), + ('minus_photo_flag', models.BooleanField(default=False, help_text='MobServer gps_information.minus_photo_flag')), + ('validation_status', models.CharField(choices=[('PENDING', '審査待ち'), ('APPROVED', '承認'), ('REJECTED', '却下'), ('AUTO_APPROVED', '自動承認')], default='PENDING', help_text='通過審査ステータス', max_length=20)), + ('validation_comment', models.TextField(blank=True, help_text='審査コメント・理由', null=True)), + ('validated_by', models.CharField(blank=True, help_text='審査者', max_length=255, null=True)), + ('validated_at', models.DateTimeField(blank=True, help_text='審査日時', null=True)), + ], + options={ + 'db_table': 'gps_checkins', + }, + ), + 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(default='')), + ('event_code', models.TextField(default='')), + ('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', + }, + ), + 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)), + ], + ), + 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.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)), + ], + ), + 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)), + ], + ), + 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)), + ], + ), + 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)), + ], + ), + 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(blank=True, null=True)), + ('deadlineDateTime', models.DateTimeField(blank=True, null=True)), + ('public', models.BooleanField(default=False)), + ('status', models.CharField(choices=[('public', 'Public'), ('private', 'Private'), ('draft', 'Draft'), ('closed', 'Closed')], default='draft', help_text='イベントステータス', max_length=20)), + ('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)), + ('event_code', models.CharField(blank=True, max_length=50, null=True, unique=True)), + ('start_time', models.CharField(blank=True, max_length=20, null=True)), + ('event_day', models.CharField(blank=True, max_length=20, null=True)), + ('venue_location', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326)), + ('venue_address', models.CharField(blank=True, max_length=500, null=True)), + ], + ), + 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)), + ], + ), + 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='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)), + ], + ), + 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)), + ], + ), + 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)), + ], + ), + 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)), + ], + ), + 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', + }, + ), + 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)), + ], + ), + 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)), + ], + ), + 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)), + ], + options={ + 'ordering': ['recorded_at'], + }, + ), + migrations.RemoveField( + model_name='newevent', + name='category', + ), + migrations.RemoveField( + model_name='newevent', + name='created_at', + ), + migrations.RemoveField( + model_name='newevent', + name='description', + ), + migrations.RemoveField( + model_name='newevent', + name='end_time', + ), + migrations.RemoveField( + model_name='newevent', + name='event_code', + ), + migrations.RemoveField( + model_name='newevent', + name='event_date', + ), + migrations.RemoveField( + model_name='newevent', + name='id', + ), + migrations.RemoveField( + model_name='newevent', + name='is_active', + ), + migrations.RemoveField( + model_name='newevent', + name='last_updated_at', + ), + migrations.RemoveField( + model_name='newevent', + name='start_time', + ), + migrations.RemoveField( + model_name='team', + name='last_updated_at', + ), + migrations.RemoveField( + model_name='team', + name='score', + ), + migrations.RemoveField( + model_name='team', + name='team_member_num', + ), + migrations.AddField( + model_name='category', + name='category_number', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='category', + name='duration', + field=models.DurationField(default=datetime.timedelta(seconds=18000)), + ), + migrations.AddField( + model_name='category', + name='family', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='category', + name='female', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='category', + name='num_of_member', + field=models.IntegerField(default=1), + ), + migrations.AddField( + model_name='customuser', + name='event_code', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Event Code'), + ), + migrations.AddField( + model_name='customuser', + name='team_name', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Team Name'), + ), + migrations.AddField( + model_name='customuser', + name='zekken_number', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Zekken Number'), + ), + migrations.AddField( + model_name='entry', + name='can_access_private_events', + field=models.BooleanField(default=False, help_text='非公開イベント参加権限'), + ), + migrations.AddField( + model_name='entry', + name='date', + field=models.DateTimeField(default=django.utils.timezone.now), + ), + migrations.AddField( + model_name='entry', + name='hasGoaled', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='entry', + name='hasParticipated', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='entry', + name='is_active', + field=models.BooleanField(default=True), + ), + 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='staff_privileges', + field=models.BooleanField(default=False, help_text='スタッフ権限フラグ'), + ), + migrations.AddField( + model_name='entry', + name='team_validation_status', + field=models.CharField(choices=[('approved', 'Approved'), ('pending', 'Pending'), ('rejected', 'Rejected')], default='approved', help_text='チーム承認状況', max_length=20), + ), + migrations.AddField( + model_name='entry', + name='zekken_label', + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='entry', + name='zekken_number', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='location', + name='auto_checkin', + field=models.BooleanField(default=False, verbose_name='Is AutoCheckin'), + ), + migrations.AddField( + model_name='location', + name='buy_point', + field=models.FloatField(blank=True, default=0, null=True, verbose_name='buy Point'), + ), + migrations.AddField( + model_name='location', + name='checkin_point', + field=models.FloatField(blank=True, default=10, null=True, verbose_name='Checkin Point'), + ), + migrations.AddField( + model_name='location', + name='checkin_radius', + field=models.FloatField(blank=True, default=15.0, null=True, verbose_name='Checkin radious'), + ), + migrations.AddField( + model_name='location', + name='evaluation_value', + field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Evaluation value (評価)'), + ), + migrations.AddField( + model_name='location', + name='event_active', + field=models.BooleanField(db_index=True, default=True, verbose_name='Is Event active'), + ), + migrations.AddField( + model_name='location', + name='event_name', + field=models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Event name'), + ), + migrations.AddField( + model_name='location', + name='geom', + field=django.contrib.gis.db.models.fields.MultiPointField(default=rog.models.get_default_multipoint, srid=4326), + ), + migrations.AddField( + model_name='location', + name='hidden_location', + field=models.BooleanField(default=False, verbose_name='Is Hidden Location'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_fri', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours frinday (金曜)'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_mon', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours monday (月曜)'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_sat', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours saturday (土曜)'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_sun', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours sunday (日曜)'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_thu', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours thursday (木曜)'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_tue', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours tuesday (火曜)'), + ), + migrations.AddField( + model_name='location', + name='opening_hours_wed', + field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours wednesday (水曜)'), + ), + migrations.AddField( + model_name='location', + name='shop_closed', + field=models.BooleanField(default=False, verbose_name='Shop Closed (休業)'), + ), + migrations.AddField( + model_name='location', + name='shop_shutdown', + field=models.BooleanField(default=False, verbose_name='Shop Shutdown (閉業)'), + ), + migrations.AddField( + model_name='newevent', + name='end_datetime', + field=models.DateTimeField(default=rog.models.get_default_end_datetime), + ), + migrations.AddField( + model_name='newevent', + name='start_datetime', + field=models.DateTimeField(default=django.utils.timezone.now), + ), + migrations.AddField( + model_name='team', + name='class_name', + field=models.CharField(blank=True, max_length=100, null=True), + ), + 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='owner', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='owned_teams', to=settings.AUTH_USER_MODEL), + ), + 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(default=False), + ), + migrations.AddField( + model_name='team', + name='updated_at', + field=models.DateTimeField(auto_now=True, null=True), + ), + migrations.AddField( + model_name='team', + name='zekken_number', + field=models.CharField(blank=True, max_length=20, null=True), + ), + migrations.AlterField( + model_name='category', + name='category_name', + field=models.CharField(max_length=255, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='location', + name='parammeters', + field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Parameters'), + ), + migrations.AlterField( + model_name='location', + name='tags', + field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Tags'), + ), + migrations.AlterField( + model_name='newevent', + name='event_name', + field=models.CharField(max_length=255, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='team', + name='created_at', + field=models.DateTimeField(auto_now_add=True, null=True), + ), + migrations.AlterField( + model_name='team', + name='team_name', + field=models.CharField(max_length=255), + ), + migrations.AlterUniqueTogether( + name='category', + unique_together={('category_name', 'category_number')}, + ), + migrations.AddIndex( + model_name='location', + index=django.contrib.postgres.indexes.GistIndex(fields=['geom'], name='rog_locatio_geom_4793cc_gist'), + ), + 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='entry', + table=None, + ), + migrations.AlterModelTable( + name='location', + table=None, + ), + migrations.AlterModelTable( + name='newevent', + table=None, + ), + migrations.AlterModelTable( + name='team', + table=None, + ), + migrations.AddField( + model_name='waypoint', + name='entry', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='waypoints', to='rog.entry'), + ), + migrations.AddField( + model_name='usertracks', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='useractions', + name='location', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='action_location', to='rog.location'), + ), + migrations.AddField( + model_name='useractions', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='action_user', to=settings.AUTH_USER_MODEL), + ), + 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='travelpoint', + name='last_updated_user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='travelpoint_updated_user', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='travelpoint', + name='location', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.location'), + ), + migrations.AddField( + model_name='travelpoint', + name='travel_list', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='rog.travellist'), + ), + migrations.AddField( + model_name='travellist', + name='last_updated_user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='travel_list_updated_user', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='travellist', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='templocation', + name='last_updated_user', + field=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.AddField( + model_name='systemsettings', + name='last_updated_user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='system_setting_updated_user', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='roguser', + name='introducer', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='introduced_uesr', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='roguser', + name='last_updated_user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='roguser_updated_user', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='roguser', + name='user', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AlterUniqueTogether( + name='newcategory', + unique_together={('category_name', 'category_number')}, + ), + migrations.AddField( + model_name='member', + name='team', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='members', to='rog.team'), + ), + migrations.AddField( + model_name='member', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='location_polygon', + name='last_updated_user', + field=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.AddField( + model_name='location_line', + name='last_updated_user', + field=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.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.AddField( + model_name='joinedevent', + name='last_updated_user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='joined_event_updated_user', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='joinedevent', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL), + ), + 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.AlterUniqueTogether( + name='gpslog', + unique_together={('serial_number', 'zekken_number', 'event_code', 'colabo_company_memo')}, + ), + migrations.AddField( + 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.AddField( + 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.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='checkpoint', + name='event', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2'), + ), + migrations.AddField( + model_name='checkinimages', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL), + ), + 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.RemoveField( + model_name='category', + name='created_at', + ), + migrations.RemoveField( + model_name='category', + name='id', + ), + migrations.RemoveField( + model_name='category', + name='last_updated_at', + ), + migrations.RemoveField( + model_name='category', + name='parent_category', + ), + migrations.AddField( + model_name='entry', + name='category', + field=models.ForeignKey(default=rog.models.get_default_category, on_delete=django.db.models.deletion.CASCADE, to='rog.newcategory'), + ), + migrations.AddField( + model_name='entry', + name='event', + field=models.ForeignKey(default=rog.models.get_default_event, on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2'), + ), + migrations.AddField( + model_name='team', + name='category', + field=models.ForeignKey(default=rog.models.get_default_category, on_delete=django.db.models.deletion.SET_DEFAULT, to='rog.newcategory'), + ), + migrations.AlterField( + model_name='team', + name='event', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2'), + ), + migrations.AlterUniqueTogether( + name='entry', + unique_together={('zekken_number', 'event', 'date')}, + ), + migrations.AddIndex( + model_name='waypoint', + index=models.Index(fields=['entry', 'recorded_at'], name='rog_waypoin_entry_i_fb2cb5_idx'), + ), + 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.AlterUniqueTogether( + name='member', + unique_together={('team', 'user')}, + ), + 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')}, + ), + 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.AlterUniqueTogether( + name='entrymember', + unique_together={('entry', 'member')}, + ), + migrations.AddIndex( + model_name='checkpoint', + index=models.Index(fields=['event', 'cp_number'], name='idx_checkpoint_event_cp'), + ), + migrations.AddIndex( + model_name='checkpoint', + index=django.contrib.postgres.indexes.GistIndex(fields=['location'], name='idx_checkpoint_location'), + ), + migrations.AddConstraint( + model_name='checkpoint', + constraint=models.UniqueConstraint(fields=('cp_number', 'event'), name='unique_cp_per_event'), + ), + 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'), + ), + migrations.RemoveField( + model_name='entry', + name='check_point', + ), + migrations.RemoveField( + model_name='entry', + name='created_at', + ), + migrations.RemoveField( + model_name='entry', + name='goal_time', + ), + migrations.RemoveField( + model_name='entry', + name='last_updated_at', + ), + migrations.RemoveField( + model_name='entry', + name='last_updated_user', + ), + migrations.RemoveField( + model_name='entry', + name='location', + ), + migrations.RemoveField( + model_name='entry', + name='start_time', + ), + ] diff --git a/rog/migrations/0003_add_missing_fields_to_gpscheckin.py b/rog/migrations/0003_add_missing_fields_to_gpscheckin.py new file mode 100644 index 0000000..fb85f0b --- /dev/null +++ b/rog/migrations/0003_add_missing_fields_to_gpscheckin.py @@ -0,0 +1,45 @@ +# Generated by Django 3.2.9 on 2025-08-29 08:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0002_fix_all_model_defaults'), + ] + + operations = [ + migrations.RemoveIndex( + model_name='gpscheckin', + name='idx_zekken_event', + ), + migrations.AddField( + model_name='gpscheckin', + name='checkin_time', + field=models.DateTimeField(blank=True, help_text='チェックイン時刻(実テーブルフィールド)', null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='team_name', + field=models.CharField(blank=True, help_text='チーム名(実テーブルフィールド)', max_length=255, null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='zekken', + field=models.CharField(blank=True, help_text='ゼッケン番号(実テーブルフィールド名に合わせて修正)', max_length=20, null=True), + ), + migrations.AlterField( + model_name='gpscheckin', + name='zekken_number', + field=models.TextField(default='', help_text='ゼッケン番号(後方互換性のため残す)'), + ), + migrations.AddIndex( + model_name='gpscheckin', + index=models.Index(fields=['zekken', 'event_code', 'path_order'], name='idx_zekken_event'), + ), + migrations.AlterModelTable( + name='gpscheckin', + table='rog_gpscheckin', + ), + ] diff --git a/rog/migrations/0004_remove_zekken_number_field.py b/rog/migrations/0004_remove_zekken_number_field.py new file mode 100644 index 0000000..1edb5ef --- /dev/null +++ b/rog/migrations/0004_remove_zekken_number_field.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.9 on 2025-08-29 09:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0003_add_missing_fields_to_gpscheckin'), + ] + + operations = [ + migrations.RemoveIndex( + model_name='gpscheckin', + name='idx_zekken_event', + ), + migrations.RemoveField( + model_name='gpscheckin', + name='path_order', + ), + migrations.RemoveField( + model_name='gpscheckin', + name='zekken_number', + ), + migrations.AddIndex( + model_name='gpscheckin', + index=models.Index(fields=['zekken', 'event_code', 'serial_number'], name='idx_zekken_event'), + ), + ] diff --git a/rog/migrations/0005_fix_field_mappings.py b/rog/migrations/0005_fix_field_mappings.py new file mode 100644 index 0000000..3efed5c --- /dev/null +++ b/rog/migrations/0005_fix_field_mappings.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.9 on 2025-08-29 09:23 + +import django.contrib.gis.db.models.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0004_remove_zekken_number_field'), + ] + + operations = [ + migrations.RenameField( + model_name='gpscheckin', + old_name='lattitude', + new_name='lat', + ), + migrations.RenameField( + model_name='gpscheckin', + old_name='longitude', + new_name='lng', + ), + migrations.AddField( + model_name='gpscheckin', + name='location', + field=django.contrib.gis.db.models.fields.PointField(blank=True, help_text='位置情報(実テーブルフィールド)', null=True, srid=4326), + ), + migrations.AddField( + model_name='gpscheckin', + name='mobserver_id', + field=models.IntegerField(blank=True, help_text='MobServerのID(実テーブルフィールド)', null=True), + ), + migrations.AddField( + model_name='gpscheckin', + name='record_time', + field=models.DateTimeField(blank=True, help_text='記録時刻(実テーブルフィールド)', null=True), + ), + migrations.AlterField( + model_name='gpscheckin', + name='cp_number', + field=models.CharField(blank=True, help_text='チェックポイント番号', max_length=20, null=True), + ), + migrations.AlterField( + model_name='gpscheckin', + name='serial_number', + field=models.CharField(blank=True, help_text='MobServer gps_information.serial_number', max_length=20, null=True), + ), + ] diff --git a/rog/migrations/0006_remove_image_address.py b/rog/migrations/0006_remove_image_address.py new file mode 100644 index 0000000..0a6208a --- /dev/null +++ b/rog/migrations/0006_remove_image_address.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.9 on 2025-08-29 09:27 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0005_fix_field_mappings'), + ] + + operations = [ + migrations.RemoveField( + model_name='gpscheckin', + name='image_address', + ), + ] diff --git a/rog/migrations/0007_auto_20250829_1836.py b/rog/migrations/0007_auto_20250829_1836.py new file mode 100644 index 0000000..6a2316c --- /dev/null +++ b/rog/migrations/0007_auto_20250829_1836.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.9 on 2025-08-29 09:36 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0006_remove_image_address'), + ] + + operations = [ + # Mark this migration as fake to align with current database state + migrations.RunSQL( + "SELECT 1;", # Do nothing SQL + reverse_sql="SELECT 1;", + ), + ]