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 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',) 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')