class TripSerializer(commonserializer.CommonSerializer): tripId = serializers.IntegerField() carId = serializers.IntegerField() driverId = serializers.IntegerField() sourceLocation = PointField() destinationLocation = PointField() startTimeInEpochs = serializers.IntegerField() endTimeInEpochs = serializers.IntegerField() tripPrice = serializers.FloatField(min_value=0.0) tripStatus = serializers.ChoiceField(choices=utils.enumTuples(TripStatus)) paymentMode = serializers.ChoiceField(choices=utils.enumTuples(PaymentMode))
def initTripAndRatingsTable(self): latBoundaries = [12.870595, 13.039963] lonBoundaries = [77.481075, 77.700260] currentTime = time.time() feedbacks = [ "Perfect ride! Very fast!", "Nidaanavaagi chalisi", "Great conversation about Pokemon", "The driver never took the road not taken", ] tripTableRowObjs = [] ratingTableRowObjs = [] for i in range(self.numRows * 3): modNum = i % 4 if modNum == 2: startTimeInEpochs = currentTime - random.randrange(900, 3601) endTimeInEpochs = currentTime elif modNum == 3: startTimeInEpochs = currentTime - random.randrange(15, 901) endTimeInEpochs = currentTime else: startTimeInEpochs = currentTime - random.randrange(60, 901) endTimeInEpochs = None sourceLocation = self._createLocationWithinBoundary( latBoundaries, lonBoundaries) destinationLocation = self._createLocationWithinBoundary( latBoundaries, lonBoundaries) tripTableRowObj = TripTable( tripId=i + 500, carId_id=i % self.numRows, driverId_id=i % self.numRows, customerId_id=2, sourceLocation=sourceLocation, destinationLocation=destinationLocation, startTimeInEpochs=startTimeInEpochs, endTimeInEpochs=endTimeInEpochs, tripPrice=random.randrange(39, 300), tripStatus=utils.enumTuples(TripStatus)[i % 4 + 1][0], paymentMode=utils.enumTuples(PaymentMode)[i % 3 + 1][0]) # if i % 4 + 1 == 4: ratingTableRowObj = RatingTable( tripId_id=i + 500, rating=random.randrange(3, 6), feedback=feedbacks[random.randrange(0, 4)]) ratingTableRowObjs.append(ratingTableRowObj) tripTableRowObjs.append(tripTableRowObj) TripTable.objects.bulk_create(tripTableRowObjs) RatingTable.objects.bulk_create(ratingTableRowObjs)
class CarDetailsTable(models.Model): carId = models.AutoField(primary_key=True) carType = models.IntegerField(choices=utils.enumTuples(CarType), default=CarType.UNKNOWN.value) carModel = models.CharField(max_length=64) carLicense = models.CharField(max_length=16) class Meta: verbose_name_plural = "CarDetailsTable"
def _positionCarsWithinBoundary(self, latBoundaries, lonBoundaries): for i in range(self.numRows): geoLocation = self._createLocationWithinBoundary( latBoundaries, lonBoundaries) carStatusRow = CarStatusTable( carId_id=i, carAvailability=utils.enumTuples(CarAvailability)[i % 3 + 1][0], geoLocation=geoLocation) carStatusRow.save()
class CarStatusTable(models.Model): carId = models.ForeignKey(CarDetailsTable, verbose_name="carId", on_delete=models.DO_NOTHING) carAvailability = models.IntegerField( choices=utils.enumTuples(CarAvailability), default=CarAvailability.UNKNOWN.value) geoLocation = models.PointField() objects = CarStatusManager() class Meta: verbose_name_plural = "CarStatusTable"
class TripTable(models.Model): tripId = models.AutoField(primary_key=True) carId = models.ForeignKey(CarDetailsTable, verbose_name="carId", on_delete=models.DO_NOTHING) driverId = models.ForeignKey(DriverDetailsTable, verbose_name="driverId", on_delete=models.DO_NOTHING) customerId = models.ForeignKey(User, verbose_name="customerId", on_delete=models.DO_NOTHING, default=None) #see how to fit this sourceLocation = models.PointField() destinationLocation = models.PointField() startTimeInEpochs = models.PositiveIntegerField() endTimeInEpochs = models.PositiveIntegerField(null=True) tripPrice = models.FloatField() tripStatus = models.IntegerField(choices=utils.enumTuples(TripStatus), default=TripStatus.UNKNOWN.value) paymentMode = models.IntegerField(choices=utils.enumTuples(PaymentMode), default=PaymentMode.UNKNOWN.value) class Meta: verbose_name_plural = "TripTable"
def initCarDetailsTable(self): carModelsRows = self._read_csv("car-models.csv") rtoCodes = self._read_csv("bengaluru-rto-codes.csv") carTypeDict = dict(utils.enumTuples(CarType, valueFirst=False)) carDetailsRowObjs = [] for i in range(self.numRows): row = random.choice(carModelsRows) carLicense = random.choice(rtoCodes)[0] + " " + chr( i % 26 + 65) + " " + str(random.randrange(1000, 10000)) carDetailsRowObj = CarDetailsTable( carId=i, carType=carTypeDict["CAR_TYPE_" + row[-1]], carModel=row[0] + " " + row[1], carLicense=carLicense) carDetailsRowObjs.append(carDetailsRowObj) CarDetailsTable.objects.bulk_create(carDetailsRowObjs)
class CompleteTripRequestSerializer(commonserializer.CommonSerializer): tripId = serializers.IntegerField() completeTripOption = serializers.IntegerField() finishLocation = PointField() paymentMode = serializers.ChoiceField( choices=utils.enumTuples(PaymentMode))
class CompleteTripResponseSerializer(commonserializer.CommonSerializer): completeTripStatus = serializers.ChoiceField( choices=utils.enumTuples(CompleteTripTransactionStatus)) trip = TripSerializer()
class CarSerializer(commonserializer.CommonSerializer): carId = serializers.IntegerField() carType = serializers.ChoiceField(choices=utils.enumTuples(CarType)) carModel = serializers.CharField(max_length=64) carLicense = serializers.CharField(max_length=16)
class CarStatusSerializer(commonserializer.CommonSerializer): carId = serializers.IntegerField() geoLocation = PointField() carAvailability = serializers.ChoiceField( choices=utils.enumTuples(CarAvailability))
class ScheduleTripRequestSerializer(commonserializer.CommonSerializer): carType = serializers.ChoiceField(choices=utils.enumTuples(CarType)) tripPrice = serializers.FloatField(min_value=0.0) sourceLocation = PointField() destinationLocation = PointField()
class ScheduleTripTransactionResultSerializer(commonserializer.CommonSerializer): scheduleTripTransactionStatus = serializers.ChoiceField(choices=utils.enumTuples(ScheduleTripTransactionStatus)) trip = TripSerializer()
class EstimateForCarTypeSerializer(commonserializer.CommonSerializer): carType = serializers.ChoiceField(choices=utils.enumTuples(CarType)) tripPrice = serializers.FloatField(min_value=0.0) discountAmount = serializers.FloatField(min_value=0.0)