diff --git a/config/settings.py b/config/settings.py index b50fd4f..5ede519 100644 --- a/config/settings.py +++ b/config/settings.py @@ -52,7 +52,7 @@ INSTALLED_APPS = [ 'leaflet', 'leaflet_admin_list', 'rog.apps.RogConfig', - 'django_filters', + 'django_filters' ] MIDDLEWARE = [ diff --git a/rog/admin.py b/rog/admin.py index 04798a2..7030526 100644 --- a/rog/admin.py +++ b/rog/admin.py @@ -1,9 +1,15 @@ +import email from django.contrib import admin +from django.shortcuts import render from leaflet.admin import LeafletGeoAdmin from leaflet.admin import LeafletGeoAdminMixin 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, Useractions, CustomUser, GifuAreas, UserTracks, ShapeFileLocations, templocation, UserUpload, UserUploadUser, EventUser from django.contrib.auth.admin import UserAdmin +from django.urls import path +from django.shortcuts import render +from django import forms; +import requests class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): list_display=['title', 'venue', 'at_date',] @@ -17,19 +23,58 @@ class EventRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAd class ShopRouteAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): list_display=['name',] +class loadUserForm(forms.Form): + server_url = forms.CharField(label="Load Data from *" ,initial='https://natnats.mobilous.com/get_team_list', widget=forms.Textarea(attrs={"rows":2, "cols":95})) + + class UserAdminConfig(UserAdmin): - search_fields = ('email', 'group', 'is_rogaining') + search_fields = ('email', 'group', 'zekken_number', 'event_code', 'team_name', 'is_rogaining') list_filter = ('email', 'group', 'is_rogaining') ordering = ('email',) - list_display = ('email', 'group', 'is_active', 'is_staff', 'is_rogaining') + list_display = ('email', 'group','zekken_number', 'event_code', 'team_name', 'is_active', 'is_staff', 'is_rogaining') + + def get_urls(self): + urls = super().get_urls() + new_url = [path('load-users/', self.loadUsers),] + return new_url + urls + + def loadUsers(self, request): + + if request.method == "POST": + frm = loadUserForm(request.POST) + if frm.is_valid(): + print(frm.cleaned_data['server_url']) + #load json from server + url = frm.cleaned_data['server_url'] + response = requests.get(url) + data = response.json() + print("-------Event code--------") + print(data) + print("-------Event code--------") + for i in data: + _exist = CustomUser.objects.filter(email=i["zekken_number"]).delete() + usr = CustomUser.objects.create_user( + email=i["zekken_number"], + zekken_number=i['zekken_number'], + is_rogaining=True, + event_code=i['event_code'], + team_name=i['team_name'], + group='大垣-初心者', + password=i['password'], + is_staff= True + ) + + form = loadUserForm() + data = {'form': form} + return render(request, 'admin/load_users.html', data) fieldsets = ( - (None, {'fields':('email', 'group')}), + (None, {'fields':('email', 'group', 'zekken_number', 'event_code', 'team_name',)}), ('Permissions', {'fields':('is_staff', 'is_active', 'is_rogaining')}), ) add_fieldsets = ( - (None, {'classes':('wide',), 'fields':('email', 'group', 'password1', 'password2')}), + (None, {'classes':('wide',), 'fields':('email', 'group','zekken_number', 'event_code', 'team_name', 'password1', 'password2')}), ) class JpnSubPerfAdmin(LeafletGeoAdmin): diff --git a/rog/migrations/0038_auto_20221016_1950.py b/rog/migrations/0038_auto_20221016_1950.py new file mode 100644 index 0000000..036e160 --- /dev/null +++ b/rog/migrations/0038_auto_20221016_1950.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.9 on 2022-10-16 10:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rog', '0037_customuser_is_rogaining'), + ] + + operations = [ + migrations.AddField( + model_name='customuser', + name='event_code', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Event Code'), + ), + migrations.AddField( + model_name='customuser', + name='team_name', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Team Name'), + ), + migrations.AddField( + model_name='customuser', + name='zekken_number', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Zekken Number'), + ), + ] diff --git a/rog/models.py b/rog/models.py index 7e8f645..e57795d 100644 --- a/rog/models.py +++ b/rog/models.py @@ -187,6 +187,9 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): is_staff = models.BooleanField(default=False) is_active = models.BooleanField(default=True) is_rogaining = models.BooleanField(default=False) + zekken_number = models.CharField(_("Zekken Number"), max_length=255, blank=True, null=True) + event_code = models.CharField(_("Event Code"), max_length=255, blank=True, null=True) + team_name = models.CharField(_("Team Name"), max_length=255, blank=True, null=True) group = models.CharField(max_length=255, choices=Groups.choices, default=Groups.GB1) diff --git a/rog/serializers.py b/rog/serializers.py index 55deadd..aaae891 100644 --- a/rog/serializers.py +++ b/rog/serializers.py @@ -74,7 +74,7 @@ class CreateUserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer): class Meta: model = CustomUser - fields = ('id','email', 'is_rogaining' ,'group') + fields = ('id','email', 'is_rogaining' ,'group', 'zekken_number', 'event_code', 'team_name') class RogUserSerializer(serializers.ModelSerializer): diff --git a/rog/templates/admin/load_users.html b/rog/templates/admin/load_users.html new file mode 100644 index 0000000..9836e96 --- /dev/null +++ b/rog/templates/admin/load_users.html @@ -0,0 +1,13 @@ +{% extends 'admin/base.html' %} + +{% block content %} + +