This commit is contained in:
Mohamed Nouffer
2022-05-12 02:15:36 +05:30
parent 11037587df
commit c230cf4781
15 changed files with 356 additions and 358 deletions

View File

@ -149,6 +149,9 @@ MEDIA_ROOT = BASE_DIR / "media/"
AUTH_USER_MODEL = 'rog.CustomUser'
# Default primary key field type # Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field

View File

@ -2,8 +2,8 @@ from django.contrib import admin
from leaflet.admin import LeafletGeoAdmin from leaflet.admin import LeafletGeoAdmin
from leaflet.admin import LeafletGeoAdminMixin from leaflet.admin import LeafletGeoAdminMixin
from leaflet_admin_list.admin import LeafletAdminListMixin from leaflet_admin_list.admin import LeafletAdminListMixin
from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, CustomUser
from django.contrib.auth.admin import UserAdmin
class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin):
list_display=['title', 'venue', 'at_date',] list_display=['title', 'venue', 'at_date',]
@ -17,6 +17,23 @@ class EventRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAd
class ShopRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): class ShopRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin):
list_display=['name',] list_display=['name',]
class UserAdminConfig(UserAdmin):
search_fields = ('email',)
list_filter = ('email',)
ordering = ('email',)
list_display = ('email', 'is_active', 'is_staff',)
fieldsets = (
(None, {'fields':('email',)}),
('Permissions', {'fields':('is_staff', 'is_active',)}),
)
add_fieldsets = (
(None, {'classes':('wide',), 'fields':('email','password1', 'password2')}),
)
admin.site.register(Useractions)
admin.site.register(RogUser, admin.ModelAdmin) admin.site.register(RogUser, admin.ModelAdmin)
admin.site.register(Location, LeafletGeoAdmin) admin.site.register(Location, LeafletGeoAdmin)
admin.site.register(SystemSettings, admin.ModelAdmin) admin.site.register(SystemSettings, admin.ModelAdmin)
@ -30,4 +47,6 @@ admin.site.register(Location_polygon, LeafletGeoAdmin)
admin.site.register(JpnAdminMainPerf, LeafletGeoAdmin) admin.site.register(JpnAdminMainPerf, LeafletGeoAdmin)
#admin.site.register(JpnAdminPerf, LeafletGeoAdmin) #admin.site.register(JpnAdminPerf, LeafletGeoAdmin)
admin.site.register(JpnSubPerf, LeafletGeoAdmin) admin.site.register(JpnSubPerf, LeafletGeoAdmin)
admin.site.register(ShapeLayers, admin.ModelAdmin) admin.site.register(ShapeLayers, admin.ModelAdmin)
admin.site.register(CustomUser, UserAdminConfig)

View File

@ -1,9 +1,10 @@
# Generated by Django 3.2.9 on 2022-03-16 11:00 # Generated by Django 3.2.9 on 2022-05-04 15:05
from django.conf import settings from django.conf import settings
import django.contrib.gis.db.models.fields import django.contrib.gis.db.models.fields
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
import rog.models
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -11,7 +12,7 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('auth', '0012_alter_user_first_name_max_length'),
] ]
operations = [ operations = [
@ -53,18 +54,57 @@ class Migration(migrations.Migration):
'managed': False, '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( migrations.CreateModel(
name='Location', name='Location',
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('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_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
('location_name', models.CharField(max_length=255, verbose_name='Location Name')), ('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')), ('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')), ('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')), ('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')), ('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')), ('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')), ('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')), ('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')), ('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')), ('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
@ -89,12 +129,24 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Shape Layer')), ('name', models.CharField(max_length=255, verbose_name='Shape Layer')),
('file', models.FileField(blank=True, upload_to='%y%m%d')), ('file', models.FileField(blank=True, upload_to=rog.models.get_file_path)),
('uploaded_date', models.DateField(auto_now_add=True)), ('uploaded_date', models.DateField(auto_now_add=True)),
('layerof', models.IntegerField(choices=[(1, 'locations'), (2, 'Location_line'), (3, 'Location_polygon')], default=1)), ('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')), ('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( migrations.CreateModel(
name='TravelList', name='TravelList',
fields=[ fields=[
@ -115,6 +167,19 @@ class Migration(migrations.Migration):
('user', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, 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( migrations.CreateModel(
name='TravelPoint', name='TravelPoint',
fields=[ fields=[

View File

@ -1,19 +0,0 @@
# Generated by Django 3.2.9 on 2022-03-23 06:42
from django.db import migrations, models
import rog.models
class Migration(migrations.Migration):
dependencies = [
('rog', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='shapelayers',
name='file',
field=models.FileField(blank=True, upload_to=rog.models.get_file_path),
),
]

View File

@ -0,0 +1,23 @@
# 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

@ -0,0 +1,18 @@
# 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,129 +0,0 @@
# Generated by Django 3.2.9 on 2022-04-07 05:20
import django.contrib.gis.db.models.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0002_alter_shapelayers_file'),
]
operations = [
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.AlterField(
model_name='location',
name='address',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Address'),
),
migrations.AlterField(
model_name='location',
name='area',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Area'),
),
migrations.AlterField(
model_name='location',
name='category',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Category'),
),
migrations.AlterField(
model_name='location',
name='city',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='City'),
),
migrations.AlterField(
model_name='location',
name='email',
field=models.EmailField(blank=True, max_length=1024, null=True, verbose_name='Email'),
),
migrations.AlterField(
model_name='location',
name='facility',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Facility'),
),
migrations.AlterField(
model_name='location',
name='fax',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Fax'),
),
migrations.AlterField(
model_name='location',
name='group',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Group'),
),
migrations.AlterField(
model_name='location',
name='location_name',
field=models.CharField(max_length=1024, verbose_name='Location Name'),
),
migrations.AlterField(
model_name='location',
name='parammeters',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Parameters'),
),
migrations.AlterField(
model_name='location',
name='phone',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Phone'),
),
migrations.AlterField(
model_name='location',
name='photos',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Phptos'),
),
migrations.AlterField(
model_name='location',
name='portal',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Portal'),
),
migrations.AlterField(
model_name='location',
name='prefecture',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Prefecture'),
),
migrations.AlterField(
model_name='location',
name='remark',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Remarks'),
),
migrations.AlterField(
model_name='location',
name='status',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Status'),
),
migrations.AlterField(
model_name='location',
name='tags',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Tags'),
),
migrations.AlterField(
model_name='location',
name='videos',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Videos'),
),
migrations.AlterField(
model_name='location',
name='webcontents',
field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Web Content'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-04-07 05:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0003_auto_20220407_1420'),
]
operations = [
migrations.AlterField(
model_name='location',
name='webcontents',
field=models.TextField(blank=True, null=True, verbose_name='Web Content'),
),
]

View File

@ -1,108 +0,0 @@
# Generated by Django 3.2.9 on 2022-04-07 05:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0004_alter_location_webcontents'),
]
operations = [
migrations.AlterField(
model_name='location',
name='address',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Address'),
),
migrations.AlterField(
model_name='location',
name='area',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Area'),
),
migrations.AlterField(
model_name='location',
name='category',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Category'),
),
migrations.AlterField(
model_name='location',
name='city',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='City'),
),
migrations.AlterField(
model_name='location',
name='email',
field=models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email'),
),
migrations.AlterField(
model_name='location',
name='facility',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Facility'),
),
migrations.AlterField(
model_name='location',
name='fax',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Fax'),
),
migrations.AlterField(
model_name='location',
name='group',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Group'),
),
migrations.AlterField(
model_name='location',
name='location_name',
field=models.CharField(max_length=255, verbose_name='Location Name'),
),
migrations.AlterField(
model_name='location',
name='parammeters',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters'),
),
migrations.AlterField(
model_name='location',
name='phone',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Phone'),
),
migrations.AlterField(
model_name='location',
name='photos',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos'),
),
migrations.AlterField(
model_name='location',
name='portal',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Portal'),
),
migrations.AlterField(
model_name='location',
name='prefecture',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture'),
),
migrations.AlterField(
model_name='location',
name='remark',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Remarks'),
),
migrations.AlterField(
model_name='location',
name='status',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Status'),
),
migrations.AlterField(
model_name='location',
name='tags',
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags'),
),
migrations.AlterField(
model_name='location',
name='videos',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos'),
),
migrations.AlterField(
model_name='location',
name='webcontents',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content'),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-04-08 07:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0005_auto_20220407_1427'),
]
operations = [
migrations.AlterField(
model_name='location',
name='location_name',
field=models.CharField(default='--- 場所をお願いします --', max_length=255, verbose_name='Location Name'),
),
migrations.AlterField(
model_name='shapelayers',
name='layerof',
field=models.IntegerField(choices=[(1, 'location'), (2, 'Location_line'), (3, 'Location_polygon')], default=1),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.2.9 on 2022-04-18 06:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0006_auto_20220408_1654'),
]
operations = [
migrations.AddField(
model_name='location',
name='latitude',
field=models.FloatField(blank=True, null=True, verbose_name='Latitude'),
),
migrations.AddField(
model_name='location',
name='longitude',
field=models.FloatField(blank=True, null=True, verbose_name='Latitude'),
),
]

View File

@ -19,6 +19,7 @@ from .choices import LAYER_CHOICES
from django.contrib.gis.utils import LayerMapping from django.contrib.gis.utils import LayerMapping
from django.apps import apps from django.apps import apps
from django.db import transaction from django.db import transaction
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
import csv import csv
import codecs import codecs
@ -32,6 +33,33 @@ environ.Env.read_env(env_file=".env")
db = Db(dbname=env("POSTGRES_DBNAME"), user=env("POSTGRES_USER"), password=env("POSTGRES_PASS"), host="postgres-db", port=env("PG_PORT")) db = Db(dbname=env("POSTGRES_DBNAME"), user=env("POSTGRES_USER"), password=env("POSTGRES_PASS"), host="postgres-db", port=env("PG_PORT"))
class CustomUserManager(BaseUserManager):
def create_user(self, email, password, **other_fields):
if not email:
raise ValueError(_("You must provide an email address"))
email = self.normalize_email(email)
user=self.model(email=email, **other_fields)
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password, **other_fields):
other_fields.setdefault('is_staff', True)
other_fields.setdefault('is_superuser', True)
other_fields.setdefault('is_active', True)
if other_fields.get('is_staff') is not True:
raise ValueError(_('Supperuser must assigned to staff'))
if other_fields.get('is_superuser') is not True:
raise ValueError(_('Supperuser must assigned to superuser=True'))
return self.create_user(email, password, **other_fields)
class JpnAdminMainPerf(models.Model): class JpnAdminMainPerf(models.Model):
@ -82,9 +110,20 @@ class JpnSubPerf(models.Model):
managed = False managed = False
db_table = 'jpn_sub_perf' db_table = 'jpn_sub_perf'
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_("email address"), unique=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
USERNAME_FIELD = 'email'
objects = CustomUserManager()
def __str__(self):
return self.email
class RogUser(models.Model): class RogUser(models.Model):
user=models.OneToOneField(User, on_delete=models.CASCADE) user=models.OneToOneField(CustomUser, on_delete=models.CASCADE)
email=models.EmailField(_('Email')) email=models.EmailField(_('Email'))
phone=models.CharField(_('Phone Number'), max_length=55) phone=models.CharField(_('Phone Number'), max_length=55)
first_name=models.CharField(_('First Name'), max_length=255) first_name=models.CharField(_('First Name'), max_length=255)
@ -97,14 +136,15 @@ class RogUser(models.Model):
sex=models.CharField(_('Sex'), max_length=255, default='unknown', blank=True, null=True) sex=models.CharField(_('Sex'), max_length=255, default='unknown', blank=True, null=True)
birthyear=models.IntegerField(_('Birth year'), blank=True, null=True) birthyear=models.IntegerField(_('Birth year'), blank=True, null=True)
family_structure =models.IntegerField(_('Family Structure'), blank=True, null=True) family_structure =models.IntegerField(_('Family Structure'), blank=True, null=True)
introducer = models.ForeignKey(User, related_name='introduced_uesr', on_delete=models.DO_NOTHING) introducer = models.ForeignKey(CustomUser, related_name='introduced_uesr', on_delete=models.DO_NOTHING)
level= models.IntegerField(_('Level'), blank=True, null=True, default=0) level= models.IntegerField(_('Level'), blank=True, null=True, default=0)
parammeters=models.CharField(_('Parameters'), max_length=512) parammeters=models.CharField(_('Parameters'), max_length=512)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="roguser_updated_user", on_delete=models.DO_NOTHING) last_updated_user=models.ForeignKey(CustomUser, related_name="roguser_updated_user", on_delete=models.DO_NOTHING)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
class SystemSettings(models.Model): class SystemSettings(models.Model):
setting_name=models.CharField(_('Settings Name'), max_length=255) setting_name=models.CharField(_('Settings Name'), max_length=255)
version=models.CharField(_('Version'), max_length=10, blank=True, null=True) version=models.CharField(_('Version'), max_length=10, blank=True, null=True)
@ -112,7 +152,7 @@ class SystemSettings(models.Model):
end_date=models.DateTimeField() end_date=models.DateTimeField()
parammeters=models.CharField(_('Parameters'), max_length=512) parammeters=models.CharField(_('Parameters'), max_length=512)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="system_setting_updated_user", on_delete=models.DO_NOTHING) last_updated_user=models.ForeignKey(CustomUser, related_name="system_setting_updated_user", on_delete=models.DO_NOTHING)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
class Location(models.Model): class Location(models.Model):
@ -140,7 +180,7 @@ class Location(models.Model):
tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True) tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="location_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True) last_updated_user=models.ForeignKey(CustomUser, related_name="location_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiPointField(srid=4326) geom=models.MultiPointField(srid=4326)
@ -171,7 +211,7 @@ class Location_line(models.Model):
tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True) tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="location_line_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True) last_updated_user=models.ForeignKey(CustomUser, related_name="location_line_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiLineStringField(srid=4326, blank=True, null=True) geom=models.MultiLineStringField(srid=4326, blank=True, null=True)
@ -203,7 +243,7 @@ class Location_polygon(models.Model):
tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True) tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="location_polygon_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True) last_updated_user=models.ForeignKey(CustomUser, related_name="location_polygon_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiPolygonField(srid=4326, blank=True, null=True) geom=models.MultiPolygonField(srid=4326, blank=True, null=True)
@ -231,7 +271,7 @@ class Event(models.Model):
remark=models.CharField(max_length=256, blank=True, null=True) remark=models.CharField(max_length=256, blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="event_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True) last_updated_user=models.ForeignKey(CustomUser, related_name="event_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
@ -244,7 +284,7 @@ ROG_STATUS = (
) )
class JoinedEvent(models.Model): class JoinedEvent(models.Model):
user=models.ForeignKey(User, on_delete=models.DO_NOTHING) user=models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING)
tagname=models.CharField(_('Tag Name'), max_length=255, blank=True, null=True) tagname=models.CharField(_('Tag Name'), max_length=255, blank=True, null=True)
status=models.CharField(max_length=256, choices=ROG_STATUS) status=models.CharField(max_length=256, choices=ROG_STATUS)
registrationid=models.CharField(_('Registration Id'), max_length=56) registrationid=models.CharField(_('Registration Id'), max_length=56)
@ -253,13 +293,13 @@ class JoinedEvent(models.Model):
remark=models.CharField(_('Remark'), max_length=255, blank=True, null=True) remark=models.CharField(_('Remark'), max_length=255, blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512) parammeters=models.CharField(_('Parameters'), max_length=512)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="joined_event_updated_user", on_delete=models.DO_NOTHING) last_updated_user=models.ForeignKey(CustomUser, related_name="joined_event_updated_user", on_delete=models.DO_NOTHING)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
class Favorite(models.Model): class Favorite(models.Model):
user=models.ForeignKey(User, on_delete=models.DO_NOTHING) user=models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING)
location=models.ForeignKey(Location, on_delete=models.CASCADE) location=models.ForeignKey(Location, on_delete=models.CASCADE)
good=models.IntegerField(_('Good'), default=0) good=models.IntegerField(_('Good'), default=0)
favorite=models.IntegerField(_('Favorite'), default=0) favorite=models.IntegerField(_('Favorite'), default=0)
@ -268,7 +308,7 @@ class Favorite(models.Model):
last_visited=models.DateTimeField(_('Last Visited'), blank=True, null=True) last_visited=models.DateTimeField(_('Last Visited'), blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="favorite_updated_user", on_delete=models.DO_NOTHING) last_updated_user=models.ForeignKey(CustomUser, related_name="favorite_updated_user", on_delete=models.DO_NOTHING)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
@ -284,7 +324,7 @@ TRAVEL_CATEGORY = (
class TravelList(models.Model): class TravelList(models.Model):
travel_id= models.IntegerField(_('Travel Id')) travel_id= models.IntegerField(_('Travel Id'))
user=models.ForeignKey(User, on_delete=models.DO_NOTHING) user=models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING)
start_date=models.DateTimeField(_('Start date') ,blank=True, null=True) start_date=models.DateTimeField(_('Start date') ,blank=True, null=True)
finish_date=models.DateTimeField(_('End date') ,blank=True, null=True) finish_date=models.DateTimeField(_('End date') ,blank=True, null=True)
category=models.CharField(max_length=256, choices=TRAVEL_CATEGORY) category=models.CharField(max_length=256, choices=TRAVEL_CATEGORY)
@ -295,7 +335,7 @@ class TravelList(models.Model):
eta=models.DateTimeField(blank=True, null=True) eta=models.DateTimeField(blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512 ,blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512 ,blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="travel_list_updated_user", on_delete=models.DO_NOTHING) last_updated_user=models.ForeignKey(CustomUser, related_name="travel_list_updated_user", on_delete=models.DO_NOTHING)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
@ -308,12 +348,29 @@ class TravelPoint(models.Model):
order_number=models.IntegerField(blank=True, null=True) order_number=models.IntegerField(blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512 ,blank=True, null=True) parammeters=models.CharField(_('Parameters'), max_length=512 ,blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True) created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="travelpoint_updated_user", on_delete=models.DO_NOTHING) last_updated_user=models.ForeignKey(CustomUser, related_name="travelpoint_updated_user", on_delete=models.DO_NOTHING)
last_updated_at=models.DateTimeField(auto_now=True) last_updated_at=models.DateTimeField(auto_now=True)
class Useractions(models.Model):
user=models.ForeignKey(CustomUser, related_name="action_user", on_delete=models.CASCADE)
location=models.ForeignKey(Location, related_name="action_location", on_delete=models.CASCADE)
wanttogo=models.BooleanField(default=False)
like=models.BooleanField(default=False)
checkin=models.BooleanField(default=False)
order =models.IntegerField(default=0)
created_at=models.DateTimeField(auto_now_add=True)
last_updated_at=models.DateTimeField(auto_now=True)
class TestModel(models.Model):
testbane=models.CharField(_("test field"), max_length=355)
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)
def getTableForModel(tbl): def getTableForModel(tbl):
if tbl == 1: if tbl == 1:

View File

@ -1,12 +1,15 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework_gis.serializers import GeoFeatureModelSerializer from rest_framework_gis.serializers import GeoFeatureModelSerializer
from sqlalchemy.sql.functions import mode from sqlalchemy.sql.functions import mode
from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions
from drf_extra_fields.fields import Base64ImageField from drf_extra_fields.fields import Base64ImageField
from django.contrib.auth.models import User #from django.contrib.auth.models import User
from .models import CustomUser
from django.contrib.auth import authenticate from django.contrib.auth import authenticate
from .models import TestModel
class LocationCatSerializer(serializers.ModelSerializer): class LocationCatSerializer(serializers.ModelSerializer):
class Meta: class Meta:
@ -54,28 +57,56 @@ class JPN_perfSerializer(serializers.ModelSerializer):
class CreateUserSerializer(serializers.ModelSerializer): class CreateUserSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = CustomUser
fields = ('id', 'username', 'password') fields = ('email', 'password')
extra_kwargs = {'password': {'write_only': True}} extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data): def create(self, validated_data):
user = User.objects.create_user(validated_data['username'], user = CustomUser.objects.create_user(validated_data['email'],validated_data['password'])
None,
validated_data['password'])
return user return user
class UserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = CustomUser
fields = ('id', 'username') fields = ('id','email',)
class LoginUserSerializer(serializers.Serializer): class LoginUserSerializer(serializers.Serializer):
username = serializers.CharField() email = serializers.CharField()
password = serializers.CharField() password = serializers.CharField()
def validate(self, data): def validate(self, data):
user = authenticate(**data) user = authenticate(**data)
if user and user.is_active: if user and user.is_active:
return user return user
raise serializers.ValidationError("Invalid Details.") raise serializers.ValidationError("Invalid Details.")
class UseractionsSerializer(serializers.ModelSerializer):
#user = UserSerializer(read_only=True)
#location = LocationSerializer(read_only=True)
#location = serializers.RelatedField(source='Location', read_only=True)
#location = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Useractions
fields = ('id', 'user', 'location', 'wanttogo', 'like', 'checkin', 'order',)
class UserDestinationSerializer(serializers.ModelSerializer):
#user = UserSerializer(read_only=True)
location = LocationSerializer(read_only=True)
#location = serializers.RelatedField(source='Location', read_only=True)
#location = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Useractions
fields = ('id', 'user', 'location', 'wanttogo', 'like', 'checkin')
class TestSerialiser(serializers.ModelSerializer):
class Meta:
model = TestModel
fields = ('id', 'testbane', 'wanttogo', 'like', 'checkin')

View File

@ -1,9 +1,11 @@
from rest_framework import urlpatterns from rest_framework import urlpatterns
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder
from django.urls import path, include from django.urls import path, include
from knox import views as knox_views from knox import views as knox_views
from .views import TestActionViewSet
router = DefaultRouter() router = DefaultRouter()
@ -27,4 +29,8 @@ urlpatterns += [
path('login/', LoginAPI.as_view()), path('login/', LoginAPI.as_view()),
path('user/', UserAPI.as_view()), path('user/', UserAPI.as_view()),
path('logout/', knox_views.LogoutView.as_view(), name='knox_logout'), path('logout/', knox_views.LogoutView.as_view(), name='knox_logout'),
path('useraction/', UserActionViewset, name='user_action'),
path('makeaction/', UserMakeActionViewset, name='user_action'),
path('destinations/', UserDestinations, name='user_destinations'),
path('updateorder/', UpdateOrder, name='updateorder')
] ]

View File

@ -1,7 +1,7 @@
from django.core.serializers import serialize from django.core.serializers import serialize
from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, CustomUser
from rest_framework import viewsets from rest_framework import viewsets
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer
from knox.models import AuthToken from knox.models import AuthToken
from rest_framework import viewsets, permissions, generics from rest_framework import viewsets, permissions, generics
@ -11,6 +11,11 @@ from rest_framework.parsers import JSONParser, MultiPartParser
from .serializers import LocationSerializer from .serializers import LocationSerializer
from django.http import JsonResponse from django.http import JsonResponse
from .serializers import TestSerialiser
from .models import TestModel
from django.shortcuts import get_object_or_404
from django.db.models import F
class LocationViewSet(viewsets.ModelViewSet): class LocationViewSet(viewsets.ModelViewSet):
@ -133,4 +138,95 @@ class UserAPI(generics.RetrieveAPIView):
serializer_class = UserSerializer serializer_class = UserSerializer
def get_object(self): def get_object(self):
return self.request.user return self.request.user
def UserActionViewset(request):
user_id = request.GET.get('user_id')
location_id = request.GET.get('location_id')
location = Location.objects.get(location_id=location_id)
user = CustomUser.objects.get(id=user_id)
action = Useractions.objects.filter(location=location, user=user)
serializer = UseractionsSerializer(action, many=True)
return JsonResponse(serializer.data, safe=False)
def UserMakeActionViewset(request):
user_id = request.GET.get('user_id')
location_id = request.GET.get('location_id')
wanttogo = True if request.GET.get('wanttogo') == "true" else False
like = True if request.GET.get('like') == "true" else False
checkin = True if request.GET.get('checkin') == "true" else False
location = Location.objects.get(location_id=location_id)
user = CustomUser.objects.get(id=user_id)
#action = Useractions.objects.filter(location__id=location_id, user__id=user_id)
rec = Useractions.objects.filter(user=user, location=location)
if(rec):
obj = rec.update(wanttogo=wanttogo, like=like, checkin=checkin)
else:
obj, created = Useractions.objects.update_or_create(user=user, location=location, wanttogo=wanttogo, like=like, checkin=checkin)
serializer = UseractionsSerializer(obj, many=False)
return JsonResponse(serializer.data, safe=False)
def UserDestinations(request):
user_id = request.GET.get('user_id')
user = CustomUser.objects.get(id=user_id)
#action = Useractions.objects.filter(location__id=location_id, user__id=user_id)
rec = Useractions.objects.filter(user=user, checkin=True).order_by('order')
serializer = UserDestinationSerializer(rec, many=True)
return JsonResponse(serializer.data, safe=False)
def UpdateOrder(request):
dir = request.GET.get('dir')
user_action_id = int(request.GET.get('user_action_id'))
order = int(request.GET.get('order'))
aorder = int(request.GET.get('order'))
oorder = int(request.GET.get('order'))
if(user_action_id):
#updated = Useractions.objects.filter(order__gte=order).update(order = F('order')+1)
#res = Useractions.objects.filter(id=user_action_id).update(order=order)
index = 0
if dir == "up":
for id in Useractions.objects.all().order_by('order').values_list('id', flat=True):
print(id)
print("----",user_action_id)
if index == order :
index += 1
print("index increated .....")
if user_action_id == id:
Useractions.objects.filter(id=id).update(order=order)
print("updated .....")
continue
Useractions.objects.filter(id=id).update(order=index)
index += 1
else :
for id in Useractions.objects.all().order_by('order').values_list('id', flat=True):
print(id)
print("----",user_action_id)
if index == order :
index -= 1
print("index increated .....")
if user_action_id == id:
Useractions.objects.filter(id=id).update(order=order)
print("updated .....")
continue
Useractions.objects.filter(id=id).update(order=index)
index += 1
# for id in Useractions.objects.values_list('order', flat=True):
# aorder -= 1
# Useractions.objects.filter(order__lt=id).update(order=aorder)
# res = Useractions.objects.filter(id=user_action_id).update(order=oorder)
return JsonResponse(1, safe=False)
else:
return JsonResponse({}, safe=False)
class TestActionViewSet(viewsets.ModelViewSet):
serializer_class = TestSerialiser
queryset = TestModel.objects.all()