Files
rogaining_srv/rog/serializers.py
Mohamed Nouffer e43df5cf29 added goal apis
2022-10-18 14:58:20 +05:30

158 lines
5.1 KiB
Python

from rest_framework import serializers
from rest_framework_gis.serializers import GeoFeatureModelSerializer
from sqlalchemy.sql.functions import mode
from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, UserTracks, GoalImages
from drf_extra_fields.fields import Base64ImageField
#from django.contrib.auth.models import User
from .models import CustomUser
from django.contrib.auth import authenticate
from .models import TestModel
class LocationCatSerializer(serializers.ModelSerializer):
class Meta:
model=Location
fields=['category',]
class LocationSerializer(GeoFeatureModelSerializer):
class Meta:
model=Location
geo_field='geom'
fields="__all__"
class Location_lineSerializer(GeoFeatureModelSerializer):
class Meta:
model=Location_line
geo_field='geom'
fields="__all__"
class Location_polygonSerializer(GeoFeatureModelSerializer):
class Meta:
model=Location_polygon
geo_field='geom'
fields="__all__"
class JPN_main_perfSerializer(serializers.ModelSerializer):
class Meta:
model=JpnAdminMainPerf
fields=['id', 'adm0_en', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode']
class JPN_sub_perSerializer(serializers.ModelSerializer):
class Meta:
model=JpnSubPerf
fields=['id', 'adm0_en', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode', 'adm2_ja', 'adm2_en', 'adm2_pcode']
class JPN_perfSerializer(serializers.ModelSerializer):
class Meta:
model=JpnAdminPerf
fields=['id','et_id', 'et_right', 'et_left', 'adm2_l', 'adm1_l', 'adm0_l', 'adm0_r', 'adm1_r', 'adm2_r', 'admlevel']
class GifuAreaSerializer(serializers.ModelSerializer):
class Meta:
model= GifuAreas
fields=['id', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode', 'adm2_ja', 'adm2_en', 'adm2_pcode', 'area_nm']
class CreateUserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ('email', 'password')
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
user = CustomUser.objects.create_user(validated_data['email'],validated_data['password'], '大垣-初心者')
return user
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ('id','email', 'is_rogaining' ,'group', 'zekken_number', 'event_code', 'team_name')
class GolaImageSerializer(serializers.ModelSerializer):
goalimage = Base64ImageField(max_length=None, use_url=True)
class Meta:
model = GoalImages
fields="__all__"
class RogUserSerializer(serializers.ModelSerializer):
class Meta:
model = RogUser
fields = ('id','user', 'paid',)
class LoginUserSerializer(serializers.Serializer):
email = 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.")
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 LocationEventNameSerializer(serializers.ModelSerializer):
class Meta:
model = Location
fields = ('id', 'event_name',)
class UserTracksSerializer(GeoFeatureModelSerializer):
user_id = serializers.IntegerField()
class Meta:
model=UserTracks
geo_field = 'geom'
fields = ["user_id",]
def create(self, validated_data):
user_id = validated_data.pop("user_id", None)
user = CustomUser.objects.get(id=user_id)
return UserTracks.objects.create(user=user, **validated_data)
class TestSerialiser(serializers.ModelSerializer):
class Meta:
model = TestModel
fields = ('id', 'testbane', 'wanttogo', 'like', 'checkin')
class ChangePasswordSerializer(serializers.Serializer):
model = CustomUser
"""
Serializer for password change endpoint.
"""
old_password = serializers.CharField(required=True)
new_password = serializers.CharField(required=True)