def create(self, request): serializer = self.serializer_class(data=request.data, context={"request": request}) serializer.is_valid(raise_exception=True) user = serializer.validated_data["user"] token, created = Token.objects.get_or_create(user=user) user_serializer = UserSerializer(user) return Response({"token": token.key, "user": user_serializer.data})
class SubscriptionSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True) plan = PlanSerializer(read_only=True) # app = AppSerializer(read_only=True) class Meta: model = Subscription fields = '__all__' read_only_fields = ["id", "user", "created_at", "updated_at"]
def create(self, request): serializer = self.serializer_class( data=request.data, context={'request': request} ) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] token, created = Token.objects.get_or_create(user=user) user_serializer = UserSerializer(user) return Response({'error_code':200, error_message:'', 'token': token.key, 'user': user_serializer.data})
def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data token, created = Token.objects.get_or_create(user=user) return Response({ "user": UserSerializer(user, context=self.get_serializer_context()).data, "token": token.key })
class SchoolBuildingSerializer(serializers.ModelSerializer): inspector_detail = UserSerializer(source="inspectors", read_only=True, many=True) cleaners_detail = UserSerializer(source="cleaners", read_only=True, many=True) building_admins_detail = UserSerializer(source="building_admins", read_only=True, many=True) district_name = serializers.CharField(source="district.name", read_only=True) total_rooms = serializers.IntegerField(read_only=True) total_area = serializers.IntegerField(read_only=True) total_sections = serializers.IntegerField(read_only=True) estimated_time_to_clean = serializers.DurationField(read_only=True) image = Base64ImageField() grade = serializers.SerializerMethodField(read_only=True) class Meta: model = SchoolBuilding fields = '__all__' def get_grade(self, obj): inspection = ParameterResult.objects.filter( inspection__room__section__school_id=obj.pk, inspection__created__date=timezone.now().date()) inspection_status_one = inspection.filter(status=1).count() inspection_status_zero = inspection.filter(status=0).count() grade = 'N/A' try: if (inspection_status_zero > 0) or (inspection_status_one > 0): grade = round( (inspection_status_one / (inspection_status_zero + inspection_status_one)) * 100, 2) return f"{grade}%" except: pass return grade
def post(self, request): data = request.query_params username = data.get('username') password = data.get('password') user = User.objects.filter(Q(username=username)) if (len(user) > 0): if user[0].check_password(password): serializer = UserSerializer(user, many=True) return Response({"user": serializer.data}) else: return Response({"error": "Password is not correct!"}) else: return Response( {"error": "The user with current username does not exist!"})
class EmployeeInDistrictSerializer(serializers.ModelSerializer): employee_detail = UserSerializer(source="employee", read_only=True, many=False) is_user = serializers.SerializerMethodField(read_only=True) class Meta: model = EmployeeInDistrict fields = '__all__' def get_is_user(self, obj): if obj.employee.id in obj.district.admins.all().values_list("id", flat=True): return True return False
class DistrictSerializer(serializers.ModelSerializer): admin_detail = UserSerializer(source="admins", read_only=True, many=True) logo = Base64ImageField() buildings = serializers.IntegerField(read_only=True) rooms = serializers.IntegerField(read_only=True) sq_feet = serializers.IntegerField(read_only=True) class Meta: model = District fields = '__all__' def validate(self, attrs): request = self.context.get("request") user = getattr(request, "user", None) validated_data = super(DistrictSerializer, self).validate(attrs) if not user.is_superuser: raise serializers.ValidationError({ "district": "You don't have permission to perform this action." }) return validated_data
def create(self, request): serializer = self.serializer_class( data=request.data, context={"request": request} ) serializer.is_valid(raise_exception=True) user = serializer.validated_data["user"] token, created = Token.objects.get_or_create(user=user) user_serializer = UserSerializer(user) data = copy.deepcopy(user_serializer.data) if data.get("role") == User.INSPECTOR: school = SchoolBuilding.objects.filter(inspectors=user.pk).first() if school: data["district_id"] = school.district.pk data["building_id"] = school.pk if data.get("role") == User.ADMIN: district = District.objects.filter(admins=user.pk).first() if district: data["district_id"] = district.pk if data.get("role") == User.BUILDING_ADMIN: school = SchoolBuilding.objects.filter(building_admins=user.pk).first() if school: data["building_id"] = school.pk data["district_id"] = school.district.pk return Response({"token": token.key, "user": data})