update
This commit is contained in:
@ -48,6 +48,7 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.gis',
|
'django.contrib.gis',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
'rest_framework_gis',
|
'rest_framework_gis',
|
||||||
|
'knox',
|
||||||
'leaflet',
|
'leaflet',
|
||||||
'leaflet_admin_list',
|
'leaflet_admin_list',
|
||||||
'rog.apps.RogConfig',
|
'rog.apps.RogConfig',
|
||||||
@ -168,5 +169,6 @@ LEAFLET_CONFIG = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
|
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
|
||||||
|
'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication', ),
|
||||||
}
|
}
|
||||||
@ -20,6 +20,7 @@ from django.conf.urls.static import static
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
|
path('auth/', include('knox.urls')),
|
||||||
path('api/', include("rog.urls")),
|
path('api/', include("rog.urls")),
|
||||||
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
||||||
|
|||||||
@ -63,3 +63,4 @@ typing_extensions==4.0.0
|
|||||||
urllib3==1.26.7
|
urllib3==1.26.7
|
||||||
django-extra-fields==3.0.2
|
django-extra-fields==3.0.2
|
||||||
django-phonenumber-field==6.1.0
|
django-phonenumber-field==6.1.0
|
||||||
|
django-rest-knox==4.2.0
|
||||||
|
|||||||
165
rog/models.py
165
rog/models.py
@ -18,6 +18,7 @@ from .mapping import location_mapping, location_line_mapping, location_polygon_m
|
|||||||
from .choices import LAYER_CHOICES
|
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
|
||||||
|
|
||||||
import csv
|
import csv
|
||||||
import codecs
|
import codecs
|
||||||
@ -369,13 +370,35 @@ def remove_bom_inplace(path):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(pre_save, sender=Location)
|
||||||
|
def location_presave(sender, instance, *args, **kwargs):
|
||||||
|
#print("------############------------", instance.location_id)
|
||||||
|
Location.objects.filter(location_id = instance.location_id).delete()
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(pre_save, sender=Location_line)
|
||||||
|
def location_presave(sender, instance, *args, **kwargs):
|
||||||
|
Location_line.objects.filter(location_id = instance.location_id).delete()
|
||||||
|
|
||||||
|
@receiver(pre_save, sender=Location_polygon)
|
||||||
|
def location_presave(sender, instance, *args, **kwargs):
|
||||||
|
Location_polygon.objects.filter(location_id = instance.location_id).delete()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_save, sender=ShapeLayers)
|
@receiver(pre_save, sender=ShapeLayers)
|
||||||
def my_callback(sender, instance, *args, **kwargs):
|
def my_callback(sender, instance, *args, **kwargs):
|
||||||
|
|
||||||
instance.table_name = getTableForModel(instance.layerof)
|
instance.table_name = getTableForModel(instance.layerof)
|
||||||
|
|
||||||
|
|
||||||
|
def deletePrevious(mdl, fields):
|
||||||
|
with transaction.atomic():
|
||||||
|
mdl.objects.filter(location_id = int(fields[0])).delete();
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=ShapeLayers)
|
@receiver(post_save, sender=ShapeLayers)
|
||||||
def publish_date(sender, instance, created, **kwargs):
|
def publish_data(sender, instance, created, **kwargs):
|
||||||
file = instance.file.path
|
file = instance.file.path
|
||||||
file_format = os.path.basename(file).split('.')[-1]
|
file_format = os.path.basename(file).split('.')[-1]
|
||||||
file_name = os.path.basename(file).split('.')[0]
|
file_name = os.path.basename(file).split('.')[0]
|
||||||
@ -436,80 +459,84 @@ def updateLocation(mdl, fields):
|
|||||||
print(f"Updating {fields[0]} - {fields[1]}")
|
print(f"Updating {fields[0]} - {fields[1]}")
|
||||||
print(mdl.objects.filter(location_id = int(fields[0])))
|
print(mdl.objects.filter(location_id = int(fields[0])))
|
||||||
print("-------")
|
print("-------")
|
||||||
mdl.objects.filter(location_id = int(fields[0])).update(
|
|
||||||
location_name = fields[1] if len(fields) > 1 else '',
|
with transaction.atomic():
|
||||||
category = fields[2] if len(fields) > 1 else '',
|
mdl.objects.filter(location_id = int(fields[0])).update(
|
||||||
zip = fields[3] if len(fields) > 1 else '',
|
location_name = fields[1] if len(fields) > 1 else '',
|
||||||
address = fields[4] if len(fields) > 1 else '',
|
category = fields[2] if len(fields) > 1 else '',
|
||||||
prefecture = fields[5] if len(fields) > 1 else '',
|
zip = fields[3] if len(fields) > 1 else '',
|
||||||
area = fields[6] if len(fields) > 1 else '',
|
address = fields[4] if len(fields) > 1 else '',
|
||||||
city = fields[7] if len(fields) > 1 else '',
|
prefecture = fields[5] if len(fields) > 1 else '',
|
||||||
latitude = fields[8] if len(fields) > 1 else '',
|
area = fields[6] if len(fields) > 1 else '',
|
||||||
longitude = fields[9] if len(fields) > 1 else '',
|
city = fields[7] if len(fields) > 1 else '',
|
||||||
photos = fields[10] if len(fields) > 1 else '',
|
latitude = fields[8] if len(fields) > 1 else '',
|
||||||
videos = fields[11] if len(fields) > 1 else '',
|
longitude = fields[9] if len(fields) > 1 else '',
|
||||||
webcontents = fields[12] if len(fields) > 1 else '',
|
photos = fields[10] if len(fields) > 1 else '',
|
||||||
status = fields[13] if len(fields) > 1 else '',
|
videos = fields[11] if len(fields) > 1 else '',
|
||||||
portal = fields[14] if len(fields) > 1 else '',
|
webcontents = fields[12] if len(fields) > 1 else '',
|
||||||
group = fields[15] if len(fields) > 1 else '',
|
status = fields[13] if len(fields) > 1 else '',
|
||||||
phone = fields[16] if len(fields) > 1 else '',
|
portal = fields[14] if len(fields) > 1 else '',
|
||||||
fax = fields[17] if len(fields) > 1 else '',
|
group = fields[15] if len(fields) > 1 else '',
|
||||||
email = fields[18] if len(fields) > 1 else '',
|
phone = fields[16] if len(fields) > 1 else '',
|
||||||
facility = fields[19] if len(fields) > 1 else '',
|
fax = fields[17] if len(fields) > 1 else '',
|
||||||
remark = fields[20] if len(fields) > 1 else '',
|
email = fields[18] if len(fields) > 1 else '',
|
||||||
parammeters = fields[21] if len(fields) > 1 else '',
|
facility = fields[19] if len(fields) > 1 else '',
|
||||||
tags = fields[22] if len(fields) > 1 else ''
|
remark = fields[20] if len(fields) > 1 else '',
|
||||||
)
|
parammeters = fields[21] if len(fields) > 1 else '',
|
||||||
|
tags = fields[22] if len(fields) > 1 else ''
|
||||||
|
)
|
||||||
|
|
||||||
def updateLineTable(mdl, fields):
|
def updateLineTable(mdl, fields):
|
||||||
print(f"Updating {fields[0]} - {fields[1]}")
|
print(f"Updating {fields[0]} - {fields[1]}")
|
||||||
print(mdl.objects.filter(location_id = int(fields[0])))
|
print(mdl.objects.filter(location_id = int(fields[0])))
|
||||||
print("-------")
|
print("-------")
|
||||||
mdl.objects.filter(location_id = int(fields[0])).update(
|
with transaction.atomic():
|
||||||
location_name= fields[1] if len(fields) > 1 else '',
|
mdl.objects.filter(location_id = int(fields[0])).update(
|
||||||
category=fields[2] if len(fields) > 2 else '',
|
location_name= fields[1] if len(fields) > 1 else '',
|
||||||
zip=fields[3] if len(fields) > 3 else '',
|
category=fields[2] if len(fields) > 2 else '',
|
||||||
address=fields[4] if len(fields) > 4 else '',
|
zip=fields[3] if len(fields) > 3 else '',
|
||||||
prefecture=fields[5] if len(fields) > 5 else '',
|
address=fields[4] if len(fields) > 4 else '',
|
||||||
area=fields[6] if len(fields) > 6 else '',
|
prefecture=fields[5] if len(fields) > 5 else '',
|
||||||
city=fields[7] if len(fields) > 7 else '',
|
area=fields[6] if len(fields) > 6 else '',
|
||||||
photos=fields[8] if len(fields) > 8 else '',
|
city=fields[7] if len(fields) > 7 else '',
|
||||||
videos=fields[9] if len(fields) > 9 else '',
|
photos=fields[8] if len(fields) > 8 else '',
|
||||||
webcontents=fields[10] if len(fields) > 10 else '',
|
videos=fields[9] if len(fields) > 9 else '',
|
||||||
status=fields[11] if len(fields) > 11 else '',
|
webcontents=fields[10] if len(fields) > 10 else '',
|
||||||
portal=fields[12] if len(fields) > 12 else '',
|
status=fields[11] if len(fields) > 11 else '',
|
||||||
group=fields[13] if len(fields) > 13 else '',
|
portal=fields[12] if len(fields) > 12 else '',
|
||||||
phone=fields[14] if len(fields) > 14 else '',
|
group=fields[13] if len(fields) > 13 else '',
|
||||||
fax=fields[15] if len(fields) > 15 else '',
|
phone=fields[14] if len(fields) > 14 else '',
|
||||||
email=fields[16] if len(fields) > 16 else '',
|
fax=fields[15] if len(fields) > 15 else '',
|
||||||
facility=fields[17] if len(fields) > 17 else '',
|
email=fields[16] if len(fields) > 16 else '',
|
||||||
remark=fields[18] if len(fields) > 18 else '',
|
facility=fields[17] if len(fields) > 17 else '',
|
||||||
tags=fields[19] if len(fields) > 19 else '',
|
remark=fields[18] if len(fields) > 18 else '',
|
||||||
parammeters=fields[20] if len(fields) > 20 else ''
|
tags=fields[19] if len(fields) > 19 else '',
|
||||||
)
|
parammeters=fields[20] if len(fields) > 20 else ''
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def updatePolygonTable(mdl, fields):
|
def updatePolygonTable(mdl, fields):
|
||||||
#print(f"Updated {fields[0]} - {fields[1]}")
|
#print(f"Updated {fields[0]} - {fields[1]}")
|
||||||
mdl.objects.filter(location_id = fields[0]).update(
|
with transaction.atomic():
|
||||||
location_name= fields[1] if len(fields) > 1 else '',
|
mdl.objects.filter(location_id = fields[0]).update(
|
||||||
category=fields[2] if len(fields) > 2 else '',
|
location_name= fields[1] if len(fields) > 1 else '',
|
||||||
zip=fields[3] if len(fields) > 3 else '',
|
category=fields[2] if len(fields) > 2 else '',
|
||||||
address=fields[4] if len(fields) > 4 else '',
|
zip=fields[3] if len(fields) > 3 else '',
|
||||||
prefecture=fields[5] if len(fields) > 5 else '',
|
address=fields[4] if len(fields) > 4 else '',
|
||||||
area=fields[6] if len(fields) > 6 else '',
|
prefecture=fields[5] if len(fields) > 5 else '',
|
||||||
city=fields[7] if len(fields) > 7 else '',
|
area=fields[6] if len(fields) > 6 else '',
|
||||||
photos=fields[8] if len(fields) > 8 else '',
|
city=fields[7] if len(fields) > 7 else '',
|
||||||
videos=fields[9] if len(fields) > 9 else '',
|
photos=fields[8] if len(fields) > 8 else '',
|
||||||
webcontents=fields[10] if len(fields) > 10 else '',
|
videos=fields[9] if len(fields) > 9 else '',
|
||||||
status=fields[11] if len(fields) > 11 else '',
|
webcontents=fields[10] if len(fields) > 10 else '',
|
||||||
portal=fields[12] if len(fields) > 12 else '',
|
status=fields[11] if len(fields) > 11 else '',
|
||||||
group=fields[13] if len(fields) > 13 else '',
|
portal=fields[12] if len(fields) > 12 else '',
|
||||||
phone=fields[14] if len(fields) > 14 else '',
|
group=fields[13] if len(fields) > 13 else '',
|
||||||
fax=fields[15] if len(fields) > 15 else '',
|
phone=fields[14] if len(fields) > 14 else '',
|
||||||
email=fields[16] if len(fields) > 16 else '',
|
fax=fields[15] if len(fields) > 15 else '',
|
||||||
facility=fields[17] if len(fields) > 17 else '',
|
email=fields[16] if len(fields) > 16 else '',
|
||||||
remark=fields[18] if len(fields) > 18 else '',
|
facility=fields[17] if len(fields) > 17 else '',
|
||||||
tags=fields[19] if len(fields) > 19 else '',
|
remark=fields[18] if len(fields) > 18 else '',
|
||||||
parammeters=fields[20] if len(fields) > 20 else ''
|
tags=fields[19] if len(fields) > 19 else '',
|
||||||
)
|
parammeters=fields[20] if len(fields) > 20 else ''
|
||||||
|
)
|
||||||
|
|||||||
@ -4,6 +4,15 @@ 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
|
||||||
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 import authenticate
|
||||||
|
|
||||||
|
|
||||||
|
class LocationCatSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model=Location
|
||||||
|
fields=['category',]
|
||||||
|
|
||||||
|
|
||||||
class LocationSerializer(GeoFeatureModelSerializer):
|
class LocationSerializer(GeoFeatureModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -40,3 +49,33 @@ class JPN_perfSerializer(serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model=JpnAdminPerf
|
model=JpnAdminPerf
|
||||||
fields=['id','et_id', 'et_right', 'et_left', 'adm2_l', 'adm1_l', 'adm0_l', 'adm0_r', 'adm1_r', 'adm2_r', 'admlevel']
|
fields=['id','et_id', 'et_right', 'et_left', 'adm2_l', 'adm1_l', 'adm0_l', 'adm0_r', 'adm1_r', 'adm2_r', 'admlevel']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class CreateUserSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = ('id', 'username', 'password')
|
||||||
|
extra_kwargs = {'password': {'write_only': True}}
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
user = User.objects.create_user(validated_data['username'],
|
||||||
|
None,
|
||||||
|
validated_data['password'])
|
||||||
|
return user
|
||||||
|
|
||||||
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = ('id', 'username')
|
||||||
|
|
||||||
|
|
||||||
|
class LoginUserSerializer(serializers.Serializer):
|
||||||
|
username = serializers.CharField()
|
||||||
|
password = serializers.CharField()
|
||||||
|
|
||||||
|
def validate(self, data):
|
||||||
|
user = authenticate(**data)
|
||||||
|
if user and user.is_active:
|
||||||
|
return user
|
||||||
|
raise serializers.ValidationError("Invalid Details.")
|
||||||
@ -1,7 +1,8 @@
|
|||||||
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
|
from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
from knox import views as knox_views
|
||||||
|
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
@ -21,4 +22,9 @@ urlpatterns += [
|
|||||||
path('subperfinmain/', SubPerfInMainPerf, name="sub_perf"),
|
path('subperfinmain/', SubPerfInMainPerf, name="sub_perf"),
|
||||||
path('perfext/', ExtentForSubPerf, name="sub_perf_ext"),
|
path('perfext/', ExtentForSubPerf, name="sub_perf_ext"),
|
||||||
path('mainperfext/', ExtentForMainPerf, name="main_perf_ext"),
|
path('mainperfext/', ExtentForMainPerf, name="main_perf_ext"),
|
||||||
|
path('cats/', CatView, name='cats'),
|
||||||
|
path('register/', RegistrationAPI.as_view()),
|
||||||
|
path('login/', LoginAPI.as_view()),
|
||||||
|
path('user/', UserAPI.as_view()),
|
||||||
|
path('logout/', knox_views.LogoutView.as_view(), name='knox_logout'),
|
||||||
]
|
]
|
||||||
59
rog/views.py
59
rog/views.py
@ -1,8 +1,10 @@
|
|||||||
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
|
||||||
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
|
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer
|
||||||
|
from knox.models import AuthToken
|
||||||
|
|
||||||
|
from rest_framework import viewsets, permissions, generics
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.parsers import JSONParser, MultiPartParser
|
from rest_framework.parsers import JSONParser, MultiPartParser
|
||||||
@ -39,16 +41,26 @@ class Jpn_PerfViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def LocationsInPerf(request):
|
def LocationsInPerf(request):
|
||||||
perfecture = request.GET.get('perf')
|
perfecture = request.GET.get('perf')
|
||||||
|
cat = request.GET.get('cat')
|
||||||
perf_geom = JpnAdminMainPerf.objects.get(id=perfecture)
|
perf_geom = JpnAdminMainPerf.objects.get(id=perfecture)
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom)
|
|
||||||
|
if(cat):
|
||||||
|
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat)
|
||||||
|
else:
|
||||||
|
locs = Location.objects.filter(geom__within=perf_geom.geom)
|
||||||
|
|
||||||
serializer = LocationSerializer(locs, many=True)
|
serializer = LocationSerializer(locs, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
#return JsonResponse({})
|
|
||||||
|
|
||||||
def LocationsInSubPerf(request):
|
def LocationsInSubPerf(request):
|
||||||
subperfecture = request.GET.get('subperf')
|
subperfecture = request.GET.get('subperf')
|
||||||
|
cat = request.GET.get('cat')
|
||||||
perf_geom = JpnSubPerf.objects.get(id=subperfecture)
|
perf_geom = JpnSubPerf.objects.get(id=subperfecture)
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom)
|
|
||||||
|
if(cat):
|
||||||
|
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat)
|
||||||
|
else:
|
||||||
|
locs = Location.objects.filter(geom__within=perf_geom.geom)
|
||||||
serializer = LocationSerializer(locs, many=True)
|
serializer = LocationSerializer(locs, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
|
|
||||||
@ -65,7 +77,7 @@ def SubPerfInMainPerf(request):
|
|||||||
prefecture = request.GET.get('perf')
|
prefecture = request.GET.get('perf')
|
||||||
perf_geom = JpnAdminMainPerf.objects.get(id=prefecture)
|
perf_geom = JpnAdminMainPerf.objects.get(id=prefecture)
|
||||||
sub = JpnSubPerf.objects.filter(geom__within=perf_geom.geom)
|
sub = JpnSubPerf.objects.filter(geom__within=perf_geom.geom)
|
||||||
serializer = JPN_sub_perSerializer
|
#serializer = JPN_sub_perSerializer
|
||||||
#sub = JpnAdminPerf.objects.filter(geom__within=perf_geom.geom)
|
#sub = JpnAdminPerf.objects.filter(geom__within=perf_geom.geom)
|
||||||
serializer = JPN_sub_perSerializer(sub, many=True)
|
serializer = JPN_sub_perSerializer(sub, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
@ -85,3 +97,40 @@ def ExtentForSubPerf(request):
|
|||||||
# iata = serializers.serialize("json",ext)
|
# iata = serializers.serialize("json",ext)
|
||||||
return JsonResponse(ext, safe=False)
|
return JsonResponse(ext, safe=False)
|
||||||
|
|
||||||
|
|
||||||
|
def CatView(request):
|
||||||
|
c = Location.objects.values('category').distinct()
|
||||||
|
serializer = LocationCatSerializer(c, many=True)
|
||||||
|
return JsonResponse(serializer.data, safe=False)
|
||||||
|
|
||||||
|
|
||||||
|
class RegistrationAPI(generics.GenericAPIView):
|
||||||
|
serializer_class = CreateUserSerializer
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
serializer = self.get_serializer(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
user = serializer.save()
|
||||||
|
return Response({
|
||||||
|
"user": UserSerializer(user, context=self.get_serializer_context()).data,
|
||||||
|
"token": AuthToken.objects.create(user)[1]
|
||||||
|
})
|
||||||
|
|
||||||
|
class LoginAPI(generics.GenericAPIView):
|
||||||
|
serializer_class = LoginUserSerializer
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
serializer = self.get_serializer(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
user = serializer.validated_data
|
||||||
|
return Response({
|
||||||
|
"user": UserSerializer(user, context=self.get_serializer_context()).data,
|
||||||
|
"token": AuthToken.objects.create(user)[1]
|
||||||
|
})
|
||||||
|
|
||||||
|
class UserAPI(generics.RetrieveAPIView):
|
||||||
|
permission_classes = [permissions.IsAuthenticated, ]
|
||||||
|
serializer_class = UserSerializer
|
||||||
|
|
||||||
|
def get_object(self):
|
||||||
|
return self.request.user
|
||||||
Reference in New Issue
Block a user