Stop tracking migrations and release 4.8.9

This commit is contained in:
2024-08-04 18:56:11 +00:00
parent d851e7e4ad
commit 3d195973fc
47 changed files with 313 additions and 1935 deletions

4
.gitignore vendored
View File

@ -157,6 +157,10 @@ 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

View File

@ -203,8 +203,8 @@ class NewEvent2Admin(admin.ModelAdmin):
@admin.register(Team)
class TeamAdmin(admin.ModelAdmin):
list_display = ['zekken_number', 'team_name', 'owner']
search_fields = ['zekken_number', 'team_name', 'owner__email']
list_display = ['team_name', 'owner']
search_fields = ['team_name', 'owner__email']
@admin.register(NewCategory)
class NewCategoryAdmin(admin.ModelAdmin):

View File

@ -1,351 +0,0 @@
# Generated by Django 3.2.9 on 2022-05-04 15:05
from django.conf import settings
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
import rog.models
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
]
operations = [
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='JpnAdminPerf',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('geom', django.contrib.gis.db.models.fields.MultiLineStringField(blank=True, null=True, srid=4326)),
('et_id', models.IntegerField(blank=True, null=True)),
('et_right', models.CharField(blank=True, max_length=80, null=True)),
('et_left', models.CharField(blank=True, max_length=80, null=True)),
('adm2_l', models.CharField(blank=True, max_length=50, null=True)),
('adm1_l', models.CharField(blank=True, max_length=50, null=True)),
('adm0_l', models.CharField(blank=True, max_length=50, null=True)),
('adm0_r', models.CharField(blank=True, max_length=50, null=True)),
('adm1_r', models.CharField(blank=True, max_length=50, null=True)),
('adm2_r', models.CharField(blank=True, max_length=50, null=True)),
('admlevel', models.IntegerField(blank=True, null=True)),
],
options={
'db_table': 'jpn_admin_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)),
],
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, verbose_name='email address')),
('is_staff', models.BooleanField(default=False)),
('is_active', 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,
},
),
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, null=True, verbose_name='Location id')),
('location_name', models.CharField(default='--- 場所をお願いします --', 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')),
('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=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.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='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, 'location'), (2, 'Location_line'), (3, 'Location_polygon')], default=1)),
('table_name', models.CharField(blank=True, max_length=255, verbose_name='Table name')),
],
),
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='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)),
('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='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')),
('email', models.EmailField(max_length=254, verbose_name='Email')),
('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')),
('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)),
('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='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.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)),
('last_updated_user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='favorite_updated_user', to=settings.AUTH_USER_MODEL)),
('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.location')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)),
],
),
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)),
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='event_updated_user', to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-05-11 11:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='useractions',
name='order',
field=models.IntegerField(default=-1),
),
migrations.AlterField(
model_name='customuser',
name='is_active',
field=models.BooleanField(default=True),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-05-11 17:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0002_auto_20220511_2017'),
]
operations = [
migrations.AlterField(
model_name='useractions',
name='order',
field=models.IntegerField(default=0),
),
]

View File

@ -1,55 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-05 15:23
import django.contrib.gis.db.models.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0003_alter_useractions_order'),
]
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.AddField(
model_name='location',
name='auto_checkin',
field=models.BooleanField(default=False, verbose_name='Is Autologin'),
),
migrations.AddField(
model_name='location',
name='checkin_radious',
field=models.IntegerField(blank=True, null=True, verbose_name='Checkin Radious'),
),
migrations.AddField(
model_name='location',
name='event_active',
field=models.BooleanField(default=True, verbose_name='Is Autologin'),
),
migrations.AddField(
model_name='location',
name='event_name',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags'),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-06 06:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0004_auto_20220606_0023'),
]
operations = [
migrations.AlterField(
model_name='location',
name='event_active',
field=models.BooleanField(default=True, verbose_name='Is Event active'),
),
migrations.AlterField(
model_name='location',
name='event_name',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Event name'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-07 13:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0005_auto_20220606_1523'),
]
operations = [
migrations.AddField(
model_name='location',
name='paid',
field=models.BooleanField(default=False, verbose_name='Is Paid'),
),
]

View File

@ -1,22 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-07 13:07
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0006_location_paid'),
]
operations = [
migrations.RemoveField(
model_name='location',
name='paid',
),
migrations.AddField(
model_name='roguser',
name='paid',
field=models.BooleanField(default=False, verbose_name='Is Paid'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-07 13:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0007_auto_20220607_2207'),
]
operations = [
migrations.AlterField(
model_name='roguser',
name='parammeters',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters'),
),
]

View File

@ -1,17 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-07 14:24
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('rog', '0008_alter_roguser_parammeters'),
]
operations = [
migrations.RemoveField(
model_name='roguser',
name='email',
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-10 06:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0009_remove_roguser_email'),
]
operations = [
migrations.AddField(
model_name='useractions',
name='checkinimage',
field=models.FileField(blank=True, null=True, upload_to='%y%m%d'),
),
]

View File

@ -1,25 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-12 18:11
from django.conf import settings
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0010_useractions_checkinimage'),
]
operations = [
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)),
],
),
]

View File

@ -1,113 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-13 08:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0011_usertracks'),
]
operations = [
migrations.AlterField(
model_name='location',
name='address',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Address'),
),
migrations.AlterField(
model_name='location',
name='area',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Area'),
),
migrations.AlterField(
model_name='location',
name='category',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Category'),
),
migrations.AlterField(
model_name='location',
name='city',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='City'),
),
migrations.AlterField(
model_name='location',
name='email',
field=models.EmailField(blank=True, max_length=2048, null=True, verbose_name='Email'),
),
migrations.AlterField(
model_name='location',
name='event_name',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Event name'),
),
migrations.AlterField(
model_name='location',
name='facility',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Facility'),
),
migrations.AlterField(
model_name='location',
name='fax',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Fax'),
),
migrations.AlterField(
model_name='location',
name='group',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Group'),
),
migrations.AlterField(
model_name='location',
name='location_name',
field=models.CharField(default='--- 場所をお願いします --', max_length=2048, verbose_name='Location Name'),
),
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='phone',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Phone'),
),
migrations.AlterField(
model_name='location',
name='photos',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Phptos'),
),
migrations.AlterField(
model_name='location',
name='portal',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Portal'),
),
migrations.AlterField(
model_name='location',
name='prefecture',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Prefecture'),
),
migrations.AlterField(
model_name='location',
name='remark',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Remarks'),
),
migrations.AlterField(
model_name='location',
name='status',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Status'),
),
migrations.AlterField(
model_name='location',
name='tags',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Tags'),
),
migrations.AlterField(
model_name='location',
name='videos',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Videos'),
),
migrations.AlterField(
model_name='location',
name='webcontents',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Web Content'),
),
]

View File

@ -1,88 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-18 09:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0012_auto_20220613_1758'),
]
operations = [
migrations.AddField(
model_name='location',
name='buy_point',
field=models.IntegerField(blank=True, default=0, null=True, verbose_name='buy Point'),
),
migrations.AddField(
model_name='location',
name='checkin_point',
field=models.IntegerField(blank=True, default=10, null=True, verbose_name='Checkin Point'),
),
migrations.AddField(
model_name='location',
name='checkin_radius',
field=models.IntegerField(blank=True, default=15, 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='hidden_location',
field=models.BooleanField(default=False, verbose_name='Is Hidden Location'),
),
migrations.AddField(
model_name='location',
name='opening_hours_fri',
field=models.TimeField(blank=True, null=True, verbose_name='Opening hours frinday (金曜)'),
),
migrations.AddField(
model_name='location',
name='opening_hours_mon',
field=models.TimeField(blank=True, null=True, verbose_name='Opening hours monday (月曜)'),
),
migrations.AddField(
model_name='location',
name='opening_hours_sat',
field=models.TimeField(blank=True, null=True, verbose_name='Opening hours saturday (土曜)'),
),
migrations.AddField(
model_name='location',
name='opening_hours_sun',
field=models.TimeField(blank=True, null=True, verbose_name='Opening hours sunday (日曜)'),
),
migrations.AddField(
model_name='location',
name='opening_hours_thu',
field=models.TimeField(blank=True, null=True, verbose_name='Opening hours thursday (木曜)'),
),
migrations.AddField(
model_name='location',
name='opening_hours_tue',
field=models.TimeField(blank=True, null=True, verbose_name='Opening hours tuesday (火曜)'),
),
migrations.AddField(
model_name='location',
name='opening_hours_wed',
field=models.TimeField(blank=True, 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, null=True, verbose_name='Shop Shutdown (閉業)'),
),
migrations.AlterField(
model_name='location',
name='auto_checkin',
field=models.BooleanField(default=False, verbose_name='Is AutoCheckin'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-18 09:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0013_auto_20220618_1847'),
]
operations = [
migrations.AlterField(
model_name='location',
name='shop_shutdown',
field=models.BooleanField(default=False, verbose_name='Shop Shutdown (閉業)'),
),
]

View File

@ -1,57 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-19 07:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0014_alter_location_shop_shutdown'),
]
operations = [
migrations.RemoveField(
model_name='location',
name='checkin_radious',
),
migrations.AlterField(
model_name='location',
name='opening_hours_fri',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours frinday (金曜)'),
),
migrations.AlterField(
model_name='location',
name='opening_hours_mon',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours monday (月曜)'),
),
migrations.AlterField(
model_name='location',
name='opening_hours_sat',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours saturday (土曜)'),
),
migrations.AlterField(
model_name='location',
name='opening_hours_sun',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours sunday (日曜)'),
),
migrations.AlterField(
model_name='location',
name='opening_hours_thu',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours thursday (木曜)'),
),
migrations.AlterField(
model_name='location',
name='opening_hours_tue',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours tuesday (火曜)'),
),
migrations.AlterField(
model_name='location',
name='opening_hours_wed',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Opening hours wednesday (水曜)'),
),
migrations.AlterField(
model_name='location',
name='photos',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Photos'),
),
]

View File

@ -1,21 +0,0 @@
# Generated by Django 3.2.9 on 2022-06-21 09:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0015_auto_20220619_1611'),
]
operations = [
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)),
],
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-07-25 07:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0016_shapefilelocations'),
]
operations = [
migrations.AddField(
model_name='location',
name='cp',
field=models.IntegerField(blank=True, null=True, verbose_name='Check Point'),
),
migrations.AddField(
model_name='location',
name='subcategory',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub Category'),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-16 07:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0017_auto_20220725_1605'),
]
operations = [
migrations.AddField(
model_name='location',
name='sub_loc_id',
field=models.IntegerField(blank=True, null=True, verbose_name='Sub location id'),
),
migrations.AlterField(
model_name='location',
name='cp',
field=models.FloatField(blank=True, null=True, verbose_name='Check Point'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-16 07:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0018_auto_20220816_1616'),
]
operations = [
migrations.AlterField(
model_name='location',
name='checkin_radius',
field=models.FloatField(blank=True, default=15.0, null=True, verbose_name='Checkin radious'),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-16 07:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0019_alter_location_checkin_radius'),
]
operations = [
migrations.AlterField(
model_name='location',
name='buy_point',
field=models.FloatField(blank=True, default=0, null=True, verbose_name='buy Point'),
),
migrations.AlterField(
model_name='location',
name='checkin_point',
field=models.FloatField(blank=True, default=10, null=True, verbose_name='Checkin Point'),
),
]

View File

@ -1,69 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-17 05:48
from django.conf import settings
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0020_auto_20220816_1627'),
]
operations = [
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.IntegerField(blank=True, null=True, verbose_name='Sub location id')),
('cp', models.FloatField(blank=True, 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)),
],
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-22 14:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0021_templocation'),
]
operations = [
migrations.AlterField(
model_name='shapelayers',
name='layerof',
field=models.IntegerField(choices=[(1, 'templocation'), (2, 'Location_line'), (3, 'Location_polygon')], default=1),
),
migrations.AlterField(
model_name='templocation',
name='cp',
field=models.FloatField(default=0, null=True, verbose_name='Check Point'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-22 14:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0022_auto_20220822_2319'),
]
operations = [
migrations.AlterField(
model_name='location',
name='cp',
field=models.FloatField(default=0, null=True, verbose_name='Check Point'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-29 14:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0023_alter_location_cp'),
]
operations = [
migrations.AddField(
model_name='customuser',
name='group',
field=models.CharField(choices=[('G1', '大垣-初心者'), ('G2', '大垣-3時間'), ('G3', '大垣-5時間')], default='G1', max_length=2),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-30 05:26
from django.db import migrations, models
import rog.models
class Migration(migrations.Migration):
dependencies = [
('rog', '0024_customuser_group'),
]
operations = [
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)),
],
),
]

View File

@ -1,21 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-30 10:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0025_userupload'),
]
operations = [
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')),
],
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-30 10:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0026_useruploaduser'),
]
operations = [
migrations.AlterField(
model_name='customuser',
name='group',
field=models.CharField(choices=[('G1', '大垣-初心者'), ('G2', '大垣-3時間'), ('G3', '大垣-5時間')], default='G1', max_length=255),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-30 10:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0027_alter_customuser_group'),
]
operations = [
migrations.AlterField(
model_name='customuser',
name='group',
field=models.CharField(choices=[('大垣-初心者', '大垣-初心者'), ('大垣-3時間', '大垣-3時間'), ('大垣-5時間', '大垣-5時間')], default='大垣-初心者', max_length=255),
),
]

View File

@ -1,24 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-31 04:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0028_alter_customuser_group'),
]
operations = [
migrations.AddField(
model_name='customuser',
name='area',
field=models.CharField(default='city', max_length=255),
preserve_default=False,
),
migrations.AddField(
model_name='customuser',
name='cities',
field=models.CharField(blank=True, max_length=255, null=True),
),
]

View File

@ -1,21 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-31 05:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('rog', '0029_auto_20220831_1317'),
]
operations = [
migrations.RemoveField(
model_name='customuser',
name='area',
),
migrations.RemoveField(
model_name='customuser',
name='cities',
),
]

View File

@ -1,28 +0,0 @@
# Generated by Django 3.2.9 on 2022-08-31 13:44
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0030_auto_20220831_1440'),
]
operations = [
migrations.CreateModel(
name='EventUser',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event', to='rog.event')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='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),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-09-07 09:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0031_auto_20220831_2244'),
]
operations = [
migrations.AlterField(
model_name='location',
name='sub_loc_id',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub location id'),
),
]

View File

@ -1,274 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-24 05:31
import datetime
from django.conf import settings
import django.contrib.postgres.indexes
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import uuid
class Migration(migrations.Migration):
dependencies = [
('rog', '0032_alter_location_sub_loc_id'),
]
operations = [
migrations.CreateModel(
name='Category',
fields=[
('category_name', models.CharField(max_length=255, primary_key=True, serialize=False)),
('category_number', models.IntegerField(unique=True)),
('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='Entry',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateTimeField()),
],
),
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='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(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='Member',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_temporary', models.BooleanField(default=False)),
],
),
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='Team',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('zekken_number', models.CharField(max_length=255, unique=True)),
('team_name', models.CharField(max_length=255)),
],
),
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.DeleteModel(
name='JpnAdminPerf',
),
migrations.DeleteModel(
name='JpnSubPerf',
),
migrations.AddField(
model_name='customuser',
name='date_of_birth',
field=models.DateField(blank=True, null=True),
),
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='female',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='customuser',
name='firstname',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AddField(
model_name='customuser',
name='is_rogaining',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='customuser',
name='lastname',
field=models.CharField(blank=True, max_length=255, null=True),
),
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.AlterField(
model_name='customuser',
name='email',
field=models.CharField(max_length=255, unique=True, verbose_name='Email'),
),
migrations.AlterField(
model_name='location',
name='category',
field=models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Category'),
),
migrations.AlterField(
model_name='location',
name='event_active',
field=models.BooleanField(db_index=True, default=True, verbose_name='Is Event active'),
),
migrations.AlterField(
model_name='location',
name='event_name',
field=models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Event name'),
),
migrations.AlterField(
model_name='location',
name='group',
field=models.CharField(blank=True, db_index=True, max_length=2048, null=True, verbose_name='Group'),
),
migrations.AlterField(
model_name='location',
name='location_id',
field=models.IntegerField(blank=True, db_index=True, null=True, verbose_name='Location id'),
),
migrations.AlterField(
model_name='templocation',
name='sub_loc_id',
field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Sub location id'),
),
migrations.AddIndex(
model_name='location',
index=django.contrib.postgres.indexes.GistIndex(fields=['geom'], name='rog_locatio_geom_4793cc_gist'),
),
migrations.AddField(
model_name='team',
name='category',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='rog.category'),
),
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='member',
name='team',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, 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='goalimages',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, 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.category'),
),
migrations.AddField(
model_name='entry',
name='event',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newevent'),
),
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='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.AlterUniqueTogether(
name='team',
unique_together={('zekken_number', 'category')},
),
migrations.AlterUniqueTogether(
name='member',
unique_together={('team', 'user')},
),
migrations.AlterUniqueTogether(
name='entrymember',
unique_together={('entry', 'member')},
),
migrations.AlterUniqueTogether(
name='entry',
unique_together={('team', 'event', 'date', 'owner')},
),
]

View File

@ -1,34 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-24 06:22
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0033_auto_20240724_1431'),
]
operations = [
migrations.AlterField(
model_name='category',
name='category_number',
field=models.IntegerField(default=0),
),
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)),
],
options={
'unique_together': {('category_name', 'category_number')},
},
),
]

View File

@ -1,29 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-24 06:29
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('rog', '0034_auto_20240724_1522'),
]
operations = [
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)),
('start_datetime', models.DateTimeField(default=django.utils.timezone.now)),
('end_datetime', models.DateTimeField()),
],
),
migrations.AlterField(
model_name='entry',
name='event',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newevent2'),
),
]

View File

@ -1,20 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-24 06:58
from django.db import migrations, models
import django.db.models.deletion
import rog.models
class Migration(migrations.Migration):
dependencies = [
('rog', '0035_auto_20240724_1529'),
]
operations = [
migrations.AlterField(
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'),
),
]

View File

@ -1,19 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-24 15:20
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0036_alter_team_category'),
]
operations = [
migrations.AlterField(
model_name='member',
name='team',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='members', to='rog.team'),
),
]

View File

@ -1,19 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-25 01:21
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rog', '0037_alter_member_team'),
]
operations = [
migrations.AlterField(
model_name='entry',
name='category',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rog.newcategory'),
),
]

View File

@ -1,29 +0,0 @@
# Generated by Django 3.2.9 on 2024-07-26 06:08
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('rog', '0038_alter_entry_category'),
]
operations = [
migrations.AddField(
model_name='customuser',
name='date_joined',
field=models.DateTimeField(default=django.utils.timezone.now),
),
migrations.AlterField(
model_name='customuser',
name='email',
field=models.EmailField(max_length=254, unique=True),
),
migrations.AlterField(
model_name='customuser',
name='group',
field=models.CharField(blank=True, max_length=255),
),
]

View File

@ -1,33 +0,0 @@
# Generated by Django 3.2.9 on 2024-08-01 08:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0039_auto_20240726_1508'),
]
operations = [
migrations.AddField(
model_name='member',
name='date_of_birth',
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name='member',
name='female',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='member',
name='firstname',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AddField(
model_name='member',
name='lastname',
field=models.CharField(blank=True, max_length=255, null=True),
),
]

View File

@ -305,16 +305,16 @@ def get_default_category():
class Team(models.Model):
zekken_number = models.CharField(max_length=255, unique=True)
# zekken_number = models.CharField(max_length=255, unique=True)
team_name = models.CharField(max_length=255)
owner = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='owned_teams', blank=True, null=True)
category = models.ForeignKey('NewCategory', on_delete=models.SET_DEFAULT, default=get_default_category)
class Meta:
unique_together = ('zekken_number', 'category')
# class Meta:
# unique_together = ('zekken_number', 'category')
def __str__(self):
return f"{self.zekken_number} - {self.team_name}, owner:{self.owner.lastname} {self.owner.firstname}"
return f"{self.team_name}, owner:{self.owner.lastname} {self.owner.firstname}"
class Member(models.Model):
@ -378,12 +378,15 @@ class Entry(models.Model):
category = models.ForeignKey(NewCategory, on_delete=models.CASCADE)
date = models.DateTimeField()
owner = models.ForeignKey(CustomUser, on_delete=models.CASCADE,blank=True, null=True) # Akira 2024-7-24
zekken_number = models.IntegerField(default=0)
is_active = models.BooleanField(default=True) # 新しく追加
class Meta:
unique_together = ('team', 'event', 'date','owner')
unique_together = ('zekken_number', 'event', 'date')
def __str__(self):
return f"{self.team.zekken_number} - {self.event.event_name} - {self.date}"
return f"{self.team.zekken_number} - {self.team_name} - {self.event.event_name} - {self.date}"
def clean(self):
super().clean()

View File

@ -316,8 +316,8 @@ class RegistrationSerializer(serializers.ModelSerializer):
class NewCategorySerializer(serializers.ModelSerializer):
class Meta:
model = NewCategory
#fields = ['id','category_name', 'category_number', 'duration', 'num_of_member', 'family', 'female']
fields = ['id','category_name', 'category_number']
fields = ['id','category_name', 'category_number', 'duration', 'num_of_member', 'family', 'female']
#fields = ['id','category_name', 'category_number']
class NewEvent2Serializer(serializers.ModelSerializer):
class Meta:
@ -344,8 +344,8 @@ class TeamSerializer(serializers.ModelSerializer):
class Meta:
model = Team
fields = ['id','zekken_number', 'team_name', 'category', 'owner']
read_only_fields = ['id', 'owner', 'zekken_number']
fields = ['id','team_name', 'category', 'owner']
read_only_fields = ['id', 'owner']
def to_representation(self, instance):
ret = super().to_representation(instance)
@ -353,7 +353,11 @@ class TeamSerializer(serializers.ModelSerializer):
ret['category'] = {
'id': instance.category.id,
'category_name': instance.category.category_name,
'category_number': instance.category.category_number
'category_number': instance.category.category_number,
'duration': instance.category.duration,
'num_of_member':instance.category.num_of_member,
'family':instance.category.family,
'female':instance.category.female
}
else:
ret['category'] = None
@ -415,13 +419,14 @@ class EntrySerializer(serializers.ModelSerializer):
category = serializers.PrimaryKeyRelatedField(queryset=NewCategory.objects.all())
owner = serializers.PrimaryKeyRelatedField(read_only=True)
date = serializers.DateTimeField(input_formats=['%Y-%m-%d'])
zekken_number = serializers.IntegerField()
#date = serializers.DateTimeField(default_timezone=timezone.get_current_timezone())
class Meta:
model = Entry
fields = ['id','team', 'event', 'category', 'date','owner']
fields = ['id','team', 'event', 'category', 'date','zekken_number','owner']
read_only_fields = ['id','owner']
def validate_date(self, value):
@ -463,6 +468,7 @@ class EntrySerializer(serializers.ModelSerializer):
category = data.get('category')
entry_date = data.get('date')
owner = self.context['request'].user
zekken_number = data.get('zekken_number')
# Check if team, event, and category exist
if not Team.objects.filter(id=team.id).exists():
@ -476,6 +482,13 @@ class EntrySerializer(serializers.ModelSerializer):
if Entry.objects.filter(team=team, event=event, date__date=entry_date, owner=owner).exists():
raise serializers.ValidationError("既に登録済みです。")
# Validate zekken_number
if zekken_number is not None:
if zekken_number <= 0:
raise serializers.ValidationError("ゼッケン番号は正の整数である必要があります。")
if Entry.objects.filter(event=event, zekken_number=zekken_number).exists():
raise serializers.ValidationError("このゼッケン番号は既に使用されています。")
return data
def to_internal_value(self, data):

View File

@ -1,7 +1,7 @@
from sys import prefix
from rest_framework import urlpatterns
from rest_framework.routers import DefaultRouter
from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, LocationsInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder, LocationInBound, DeleteDestination, CustomAreaLocations, GetAllGifuAreas, CustomAreaNames, userDetials, UserTracksViewSet, CatByCity, ChangePasswordView, GoalImageViewSet, CheckinImageViewSet, ExtentForLocations, DeleteAccount, PrivacyView, RegistrationView, TeamViewSet,MemberViewSet,EntryViewSet,RegisterView, VerifyEmailView, NewEventListView,NewEvent2ListView,NewCategoryListView,CategoryListView, MemberUserDetailView, TeamMembersWithUserView,MemberAddView,UserActivationView,RegistrationView,TempUserRegistrationView,ResendInvitationEmailView,update_user_info,update_user_detail,ActivateMemberView, ActivateNewMemberView, PasswordResetRequestView, PasswordResetConfirmView
from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, LocationsInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder, LocationInBound, DeleteDestination, CustomAreaLocations, GetAllGifuAreas, CustomAreaNames, userDetials, UserTracksViewSet, CatByCity, ChangePasswordView, GoalImageViewSet, CheckinImageViewSet, ExtentForLocations, DeleteAccount, PrivacyView, RegistrationView, TeamViewSet,MemberViewSet,EntryViewSet,RegisterView, VerifyEmailView, NewEventListView,NewEvent2ListView,NewCategoryListView,CategoryListView, MemberUserDetailView, TeamMembersWithUserView,MemberAddView,UserActivationView,RegistrationView,TempUserRegistrationView,ResendInvitationEmailView,update_user_info,update_user_detail,ActivateMemberView, ActivateNewMemberView, PasswordResetRequestView, PasswordResetConfirmView, NewCategoryViewSet
from django.urls import path, include
from knox import views as knox_views
@ -36,6 +36,7 @@ router.register(r'teams', TeamViewSet, basename='team')
router.register(r'members', MemberViewSet, basename='member')
router.register(r'teams/(?P<team_id>\d+)/members', MemberViewSet, basename='team-members')
router.register(r'categories-viewset', NewCategoryViewSet)
# Akira 追加
# GET /api/members/<member_id>/user/: 特定のメンバーのユーザー情報を取得

View File

@ -966,80 +966,17 @@ class TeamViewSet(viewsets.ModelViewSet):
def perform_create(self, serializer):
logger.info(f"Creating new team for user: {self.request.user.email}")
with transaction.atomic():
category = serializer.validated_data['category']
category = NewCategory.objects.select_for_update().get(id=category.id)
zekken_number = category.category_number
category.category_number = F('category_number') + 1
category.save()
category.refresh_from_db() # F() 式の結果を評価
team = serializer.save(owner=self.request.user, zekken_number=zekken_number)
team = serializer.save(owner=self.request.user)
logger.info(f"Team created successfully: {team.id}")
# 外部システムの更新
success = self.register_team(
team.owner,
team.zekken_number,
team.owner.event_code,
team.team_name,
team.category.category_name,
team.owner.password
)
if not success:
logger.error("Failed to register external system")
raise serializers.ValidationError("外部システムの更新に失敗しました。")
logger.info("External system register successfully")
def update_related_entries(self, team):
current_entries = Entry.objects.filter(team=team, is_active=True)
for entry in current_entries:
self.update_external_system(entry.zekken_number, team.owner.event_code, team.team_name)
def register_team(self, owner,zekken_number,event_code,team_name,category_name,password):
logger.info(f"register_team ==> zekken_number={zekken_number},event_code={event_code},team_name={team_name},category_name={category_name},password={password}")
api_url = f"{settings.FRONTEND_URL}/gifuroge/register_team"
user = owner
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
data = {
"zekken_number": zekken_number,
"event_code": event_code,
"team_name": team_name,
"class_name": category_name,
"password": password # パスワードの扱いに注意が必要です
}
try:
response = requests.post(api_url,headers=headers,data=data)
response.raise_for_status()
logger.info(f"Team registered successfully for team {team_name}")
return True
except requests.RequestException as e:
logger.error(f"Failed to register team for entry {entry.id}. Error: {str(e)}")
# エラーが発生しても、エントリー自体は作成されています
# 必要に応じて、ここでエラーハンドリングを追加できます
return False
def destroy(self, request, *args, **kwargs):
team = self.get_object()
if team.members.exists():
return Response(
{
"error": "チームにメンバーが残っているため削除できません。",
"error_code": "TEAM_HAS_MEMBERS"
},
status=status.HTTP_400_BAD_REQUEST
)
#return Response({"error": "チームにメンバーが残っているため削除できません。"}, status=status.HTTP_400_BAD_REQUEST)
return super().destroy(request, *args, **kwargs)
def update_external_system(zekken_number, event_code, team_name, class_name, password):
def update_external_system(self, zekken_number, event_code, team_name):
api_url = f"{settings.FRONTEND_URL}/gifuroge/update_team_name"
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {
"zekken_number": zekken_number,
"new_team_name": team_name,
@ -1048,79 +985,183 @@ class TeamViewSet(viewsets.ModelViewSet):
try:
response = requests.post(api_url, headers=headers, data=data)
response.raise_for_status()
logger.info(f"External system updated for zekken_number: {zekken_number}")
return True
except requests.RequestException as e:
logger.error(f"Failed to update external system. Error: {str(e)}")
return False
def update(self, request, *args, **kwargs):
try:
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
if getattr(instance, '_prefetched_objects_cache', None):
instance._prefetched_objects_cache = {}
return Response(serializer.data)
except Exception as e:
return Response({"error": "更新に失敗しました。競合が発生した可能性があります。"}, status=status.HTTP_409_CONFLICT)
# with transaction.atomic():
#
# category = serializer.validated_data['category']
# category = NewCategory.objects.select_for_update().get(id=category.id)
# zekken_number = category.category_number
# category.category_number = F('category_number') + 1
# category.save()
# category.refresh_from_db() # F() 式の結果を評価
#
# team = serializer.save(owner=self.request.user, zekken_number=zekken_number)
# logger.info(f"Team created successfully: {team.id}")
#
# # 外部システムの更新
# success = self.register_team(
# team.owner,
# team.zekken_number,
# team.owner.event_code,
# team.team_name,
# team.category.category_name,
# team.owner.password
# )
# if not success:
# logger.error("Failed to register external system")
# raise serializers.ValidationError("外部システムの更新に失敗しました。")
# logger.info("External system register successfully")
#
# def register_team(self, owner,zekken_number,event_code,team_name,category_name,password):
# logger.info(f"register_team ==> zekken_number={zekken_number},event_code={event_code},team_name={team_name},category_name={category_name},password={password}")
# api_url = f"{settings.FRONTEND_URL}/gifuroge/register_team"
# user = owner
#
# headers = {
# "Content-Type": "application/x-www-form-urlencoded"
# }
# data = {
# "zekken_number": zekken_number,
# "event_code": event_code,
# "team_name": team_name,
# "class_name": category_name,
# "password": password # パスワードの扱いに注意が必要です
# }
#
# try:
# response = requests.post(api_url,headers=headers,data=data)
# response.raise_for_status()
# logger.info(f"Team registered successfully for team {team_name}")
# return True
#
# except requests.RequestException as e:
# logger.error(f"Failed to register team for entry {entry.id}. Error: {str(e)}")
# # エラーが発生しても、エントリー自体は作成されています
# # 必要に応じて、ここでエラーハンドリングを追加できます
# return False
#
# def destroy(self, request, *args, **kwargs):
# team = self.get_object()
# if team.members.exists():
# return Response(
# {
# "error": "チームにメンバーが残っているため削除できません。",
# "error_code": "TEAM_HAS_MEMBERS"
# },
# status=status.HTTP_400_BAD_REQUEST
# )
#
# #return Response({"error": "チームにメンバーが残っているため削除できません。"}, status=status.HTTP_400_BAD_REQUEST)
# return super().destroy(request, *args, **kwargs)
#
# def update_external_system(zekken_number, event_code, team_name, class_name, password):
# api_url = f"{settings.FRONTEND_URL}/gifuroge/update_team_name"
# headers = {
# "Content-Type": "application/x-www-form-urlencoded"
# }
# data = {
# "zekken_number": zekken_number,
# "new_team_name": team_name,
# "event_code": event_code,
# }
# try:
# response = requests.post(api_url,headers=headers, data=data)
# response.raise_for_status()
#
# return True
# except requests.RequestException as e:
# logger.error(f"Failed to update external system. Error: {str(e)}")
# return False
#
# def update(self, request, *args, **kwargs):
# try:
# return super().update(request, *args, **kwargs)
# partial = kwargs.pop('partial', False)
# instance = self.get_object()
# serializer = self.get_serializer(instance, data=request.data, partial=partial)
# serializer.is_valid(raise_exception=True)
# self.perform_update(serializer)
#
# if getattr(instance, '_prefetched_objects_cache', None):
# instance._prefetched_objects_cache = {}
#
# return Response(serializer.data)
# except Exception as e:
# return Response({"error": "更新に失敗しました。競合が発生した可能性があります。"}, status=status.HTTP_409_CONFLICT)
def perform_update(self, serializer):
with transaction.atomic():
team = serializer.save()
# 外部システムの更新
success = update_external_system(
team.zekken_number,
team.owner.event_code,
team.team_name,
team.category.category_name,
team.owner.password
)
if not success:
raise serializers.ValidationError("外部システムの更新に失敗しました。")
else:
print("岐阜ロゲシステム更新に成功")
@action(detail=True, methods=['post'])
def copy(self, request, pk=None):
original_team = self.get_object()
with transaction.atomic():
category = NewCategory.objects.select_for_update().get(id=original_team.category.id)
new_zekken_number = category.category_number
category.category_number = F('category_number') + 1
category.save()
category.refresh_from_db() # F() 式の結果を評価
new_team = Team.objects.create(
zekken_number=new_zekken_number,
team_name=f"{original_team.team_name} (コピー)",
category=category,
owner=request.user
)
for member in original_team.members.all():
Member.objects.create(
team=new_team,
user=member.user
)
return Response(TeamSerializer(new_team).data, status=status.HTTP_201_CREATED)
#
#
## def update(self, request, *args, **kwargs):
## try:
## return super().update(request, *args, **kwargs)
## except Exception as e:
## return Response({"error": "更新に失敗しました。競合が発生した可能性があります。"}, status=status.HTTP_409_CONFLICT)
#
# def perform_update(self, serializer):
# with transaction.atomic():
# team = serializer.save()
#
# # 外部システムの更新
# success = update_external_system(
# team.zekken_number,
# team.owner.event_code,
# team.team_name,
# team.category.category_name,
# team.owner.password
# )
# if not success:
# raise serializers.ValidationError("外部システムの更新に失敗しました。")
# else:
# print("岐阜ロゲシステム更新に成功")
#
# @action(detail=True, methods=['post'])
# def copy(self, request, pk=None):
# original_team = self.get_object()
# with transaction.atomic():
# category = NewCategory.objects.select_for_update().get(id=original_team.category.id)
# new_zekken_number = category.category_number
# category.category_number = F('category_number') + 1
# category.save()
# category.refresh_from_db() # F() 式の結果を評価
#
# new_team = Team.objects.create(
# zekken_number=new_zekken_number,
# team_name=f"{original_team.team_name} (コピー)",
# category=category,
# owner=request.user
# )
# for member in original_team.members.all():
# Member.objects.create(
# team=new_team,
# user=member.user
# )
# return Response(TeamSerializer(new_team).data, status=status.HTTP_201_CREATED)
#
class NewCategoryViewSet(viewsets.ModelViewSet):
queryset = NewCategory.objects.all()
serializer_class = NewCategorySerializer
permission_classes = [IsAuthenticated]
#permission_classes = [IsAuthenticated]
@action(detail=True, methods=['POST'])
def get_zekken_number(self, request, pk=None):
try:
with transaction.atomic():
category = NewCategory.objects.select_for_update().get(pk=pk)
category.category_number += 1
category.save()
serializer = self.get_serializer(category)
return Response(serializer.data)
except NewCategory.DoesNotExist:
return Response({"error": "Category not found"}, status=status.HTTP_404_NOT_FOUND)
except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_400_BAD_REQUEST)
class NewCategoryListView(generics.ListAPIView):
queryset = NewCategory.objects.all()
@ -1168,73 +1209,117 @@ class EntryViewSet(viewsets.ModelViewSet):
# 両方のチームに関連するエントリーを取得
return Entry.objects.filter(Q(team__id__in=owned_team_ids) | Q(team__id__in=member_team_ids))
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
try:
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
except DRFValidationError as e:
return Response({'error': self.format_errors(e.detail)}, status=status.HTTP_400_BAD_REQUEST)
# except IntegrityError:
# return Response({'error': '既に登録済みです'}, status=status.HTTP_400_BAD_REQUEST)
except IntegrityError as e:
return Response({'error': f'データベースエラー: {str(e)}'}, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
return Response({'error': f"予期せぬエラーが発生しました: {str(e),'type': str(type(e))}"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@transaction.atomic
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
category = serializer.validated_data['category']
category = NewCategory.objects.select_for_update().get(id=category.id)
zekken_number = category.category_number
category.category_number = F('category_number') + 1
category.save()
category.refresh_from_db()
team = serializer.validated_data['team']
entry = serializer.save(owner=self.request.user, zekken_number=zekken_number)
def update(self, request, *args, **kwargs):
logger.info(f"Update method called for Entry with ID: {kwargs.get('pk')}")
logger.debug(f"Request data: {request.data}")
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
# 外部システムの更新
success = self.register_team(
entry.zekken_number,
team.owner.event_code,
team.team_name,
category.category_name,
team.owner.password
)
if not success:
logger.error("Failed to register external system")
raise serializers.ValidationError("外部システムの更新に失敗しました。")
logger.info("External system registered successfully")
def register_team(self, zekken_number, event_code, team_name, category_name, password):
api_url = f"{settings.FRONTEND_URL}/gifuroge/register_team"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {
"zekken_number": zekken_number,
"event_code": event_code,
"team_name": team_name,
"class_name": category_name,
"password": password
}
try:
serializer.is_valid(raise_exception=True)
logger.debug(f"Serializer validated data: {serializer.validated_data}")
except serializers.ValidationError as e:
logger.error(f"Validation error: {e.detail}")
return Response({"error": str(e)}, status=status.HTTP_400_BAD_REQUEST)
try:
self.perform_update(serializer)
logger.info(f"Entry updated successfully: {serializer.data}")
except Exception as e:
logger.exception(f"Error updating Entry: {str(e)}")
return Response({"error": "An error occurred while updating the entry."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
response = requests.post(api_url, headers=headers, data=data)
response.raise_for_status()
logger.info(f"Team registered successfully for zekken_number {zekken_number}")
return True
except requests.RequestException as e:
logger.error(f"Failed to register team. Error: {str(e)}")
return False
return Response(serializer.data)
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
def get_error_message(self, exception):
if hasattr(exception, 'detail'):
if isinstance(exception.detail, dict):
return '. '.join([f"{key}: {', '.join(value)}" for key, value in exception.detail.items()])
elif isinstance(exception.detail, list):
return '. '.join(exception.detail)
return str(exception)
def format_errors(self, errors):
if isinstance(errors, list):
return '. '.join(errors)
elif isinstance(errors, dict):
return '. '.join([f"{key}: {value}" if isinstance(value, str) else f"{key}: {', '.join(value)}" for key, value in errors.items()])
else:
return str(errors)
# def create(self, request, *args, **kwargs):
# serializer = self.get_serializer(data=request.data)
# try:
# serializer.is_valid(raise_exception=True)
# self.perform_create(serializer)
# headers = self.get_success_headers(serializer.data)
# return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
# except DRFValidationError as e:
# return Response({'error': self.format_errors(e.detail)}, status=status.HTTP_400_BAD_REQUEST)
# # except IntegrityError:
# # return Response({'error': '既に登録済みです'}, status=status.HTTP_400_BAD_REQUEST)
# except IntegrityError as e:
# return Response({'error': f'データベースエラー: {str(e)}'}, status=status.HTTP_400_BAD_REQUEST)
#
# except Exception as e:
# return Response({'error': f"予期せぬエラーが発生しました: {str(e),'type': str(type(e))}"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
#
# def perform_create(self, serializer):
# serializer.save(owner=self.request.user)
#
#
# def update(self, request, *args, **kwargs):
# logger.info(f"Update method called for Entry with ID: {kwargs.get('pk')}")
# logger.debug(f"Request data: {request.data}")
#
# partial = kwargs.pop('partial', False)
# instance = self.get_object()
# serializer = self.get_serializer(instance, data=request.data, partial=partial)
#
# try:
# serializer.is_valid(raise_exception=True)
# logger.debug(f"Serializer validated data: {serializer.validated_data}")
# except serializers.ValidationError as e:
# logger.error(f"Validation error: {e.detail}")
# return Response({"error": str(e)}, status=status.HTTP_400_BAD_REQUEST)
#
# try:
# self.perform_update(serializer)
# logger.info(f"Entry updated successfully: {serializer.data}")
# except Exception as e:
# logger.exception(f"Error updating Entry: {str(e)}")
# return Response({"error": "An error occurred while updating the entry."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
#
#
# return Response(serializer.data)
#
# def destroy(self, request, *args, **kwargs):
# instance = self.get_object()
# self.perform_destroy(instance)
# return Response(status=status.HTTP_204_NO_CONTENT)
#
# def get_error_message(self, exception):
# if hasattr(exception, 'detail'):
# if isinstance(exception.detail, dict):
# return '. '.join([f"{key}: {', '.join(value)}" for key, value in exception.detail.items()])
# elif isinstance(exception.detail, list):
# return '. '.join(exception.detail)
# return str(exception)
#
# def format_errors(self, errors):
# if isinstance(errors, list):
# return '. '.join(errors)
# elif isinstance(errors, dict):
# return '. '.join([f"{key}: {value}" if isinstance(value, str) else f"{key}: {', '.join(value)}" for key, value in errors.items()])
# else:
# return str(errors)
class MemberViewSet(viewsets.ModelViewSet):