from rest_framework import serializers from project.mixins import PrefetchMixin, QueryFieldsMixin from project.utils import import_current_version_module, local_versioned_url_name from search.pipeline import RequestPipeline from ....models import Alarm PointSerializer = import_current_version_module('trips', 'serializers').PointSerializer class AlarmCreateSerializer(serializers.HyperlinkedModelSerializer): """ Base Serializer for the creation of alarms """ origin = serializers.CharField(label='Endereço de origem do alarme', required=True) destination = serializers.CharField(label='Endereço de destino do alarme', required=True) def create(self, validated_data): user = self.context['request'].user validated_data['user'] = user return super().create(validated_data) def validate(self, data): data = super().validate(data) if data.get('origin'): pipe_origin = RequestPipeline(query_type='origin', request=self.context['request'])
from django.contrib.auth.models import User from django.contrib.gis.db import models from django.contrib.postgres.fields import JSONField from django.db.models import Sum from django.db.models.functions import Coalesce from django.core import validators from oauth2_provider.settings import oauth2_settings from project.utils import import_current_version_module from alarms.tasks import dispatch_alarms from .exceptions import PassengerBookedError, TripFullError, PassengerNotBookedError, UserNotDriverError, PassengerApprovedError, PassengerDeniedError, PassengerPendingError, NotEnoughSeatsError from .utils import user_is_driver from .tasks import publish_new_trip_on_fb # Create your models here. trips_webhooks = import_current_version_module('trips', 'webhooks') class Trip(models.Model): created = models.DateTimeField(auto_now_add=True) user = models.ForeignKey( User, related_name='trips_offered', on_delete=models.SET_NULL, # Null users are users that deleted their accounts null=True ) origin = models.CharField( "Enderço de origem da carona", max_length=500 ) origin_point = models.PointField("Coordenadas de origem da carona")
from django.contrib.gis.db import models from django.contrib.gis.db.models.functions import Distance from django.core import validators from django.contrib.auth.models import User from django.db.models import Q, F from django.utils import timezone from project.utils import import_current_version_module # Create your models here. alarm_webhooks = import_current_version_module('alarms', 'webhooks') class Alarm(models.Model): created = models.DateTimeField(auto_now_add=True) user = models.ForeignKey(User, related_name='alarms', on_delete=models.CASCADE) origin = models.CharField("Enderço de origem da carona", max_length=500) origin_point = models.PointField("Coordenadas de origem da carona") origin_radius = models.FloatField( "Raio de pesquisa da origem em km", default=5, validators=[ validators.MaxValueValidator(10), validators.MinValueValidator(0.05) ], ) destination = models.CharField("Enderço de destino da carona", max_length=500) destination_point = models.PointField("Coordenadas de destino da carona") destination_radius = models.FloatField(