Пример #1
0
    def setUpClass(cls):
        super(TestFerryKv6Messages, cls).setUpClass()

        # Setup data
        cls.stop_depart = Kv1Stop(dataownercode="WSF", userstopcode=1, location=Point(1, 1))
        cls.stop_depart.save()
        cls.stop_arrive = Kv1Stop(dataownercode="WSF", userstopcode=2, location=Point(1, 1))
        cls.stop_arrive.save()
        cls.line = Kv1Line(dataownercode="WSF", lineplanningnumber=101, publiclinenumber="FF", headsign="FastFerry")
        cls.line.save()
        cls.ferry = FerryLine(line=cls.line, stop_depart=cls.stop_depart, stop_arrival=cls.stop_arrive, enable_auto_messages=True)
        cls.ferry.save()

        # Going to need a few journeys
        j1 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=1, direction=1,
                        scheduleref=1, departuretime=cls.calc(datetime.now()-timedelta(hours=2)), )
        j1.save()
        j2 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=2, direction=0,
                        scheduleref=1, departuretime=cls.calc(datetime.now()-timedelta(minutes=19)))
        j2.save()
        j3 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=3, direction=1,
                        scheduleref=1, departuretime=cls.calc(datetime.now()+timedelta(minutes=4)))
        j3.save()
        j4 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=4, direction=0,
                        scheduleref=1, departuretime=cls.calc(datetime.now()+timedelta(hours=2)))
        j4.save()
        Kv1JourneyDate(journey=j1, date=datetime.now()).save()
        Kv1JourneyDate(journey=j2, date=datetime.now()).save()
        Kv1JourneyDate(journey=j3, date=datetime.now()).save()
        Kv1JourneyDate(journey=j4, date=datetime.now()).save()
Пример #2
0
 def get_direction(self):
     journey = Kv1Journey.find_from_journeynumber(self.ferry.line,
                                                  self.journeynumber,
                                                  self.operatingday)
     if journey:
         return journey.direction
     else:
         raise Kv1Journey.DoesNotExist()
Пример #3
0
    def add_journeys_from_request(self, data):
        operating_day = parse_date(
            self.request.GET['operatingday']
        ) if 'operatingday' in self.request.GET else get_operator_date()
        data['operator_date'] = operating_day

        journey_errors = 0
        journeys = []
        for journey in self.request.GET['journey'].split(','):
            if journey == "":
                continue
            log.info("Finding journey %s for '%s'" %
                     (journey, self.request.user))
            j = Kv1Journey.find_from_realtime(
                self.request.user.userprofile.company, journey)
            if j:
                journeys.append(j)
            else:
                journey_errors += 1
                log.error("User '%s' (%s) failed to find journey '%s' " %
                          (self.request.user,
                           self.request.user.userprofile.company, journey))
        data['journeys'] = journeys
        if journey_errors > 0:
            data['journey_errors'] = journey_errors
Пример #4
0
    def handle(self, *args, **options):
        with open(options['filename'][0], 'rb') as csvfile:
            reader = csv.reader(csvfile, delimiter=',')
            first = True
            to_send = []
            to_send_trips = []
            for row in reader:
                if first:
                    first = False
                else:
                    dataowner, lineplanningnumber, journeynumber = row[
                        0].split(':')
                    if self.last_row_date != row[1]:
                        split = row[1].split('-')
                        self.date = date(int(split[0]), int(split[1]),
                                         int(split[2]))
                    trips = Kv1Journey.find_from_realtime(dataowner,
                                                          row[0],
                                                          date=self.date)
                    if trips is None:
                        self.stdout.write("Not found: %s on %s " %
                                          (row[0], row[1]))
                    else:
                        res = self.cancel_trip(trips, self.date)
                        if res is not None:
                            to_send.append(res)
                            to_send_trips.append(row[0])
                    if len(to_send
                           ) > 0 and len(to_send) % self.BATCH_SIZE == 0:
                        to_send, to_send_trips = self.send(
                            to_send, to_send_trips)

                    self.last_row_date = row[1]
            if len(to_send) > 0:
                self.send(to_send, to_send_trips)
Пример #5
0
    def handle(self, *args, **options):
        with open(options['filename'][0], 'rb') as csvfile:
            reader = csv.reader(csvfile, delimiter=',')
            first = True
            to_send = []
            to_send_trips = []
            for row in reader:
                if first:
                    first = False
                else:
                    dataowner, lineplanningnumber, journeynumber = row[0].split(':')
                    if self.last_row_date != row[1]:
                        split = row[1].split('-')
                        self.date = date(int(split[0]), int(split[1]), int(split[2]))
                    trips = Kv1Journey.find_from_realtime(dataowner, row[0], date=self.date)
                    if trips is None:
                        self.stdout.write("Not found: %s on %s " % (row[0], row[1]))
                    else:
                        res = self.cancel_trip(trips, self.date)
                        if res is not None:
                            to_send.append(res)
                            to_send_trips.append(row[0])
                    if len(to_send) > 0 and len(to_send) % self.BATCH_SIZE == 0:
                        to_send, to_send_trips = self.send(to_send, to_send_trips)

                    self.last_row_date = row[1]
            if len(to_send) > 0:
                self.send(to_send, to_send_trips)
Пример #6
0
    def test_output_mutationmessage(self):
        journey = Kv1Journey(dataownercode='HTM', line=self.line, journeynumber=101, scheduleref=1, departuretime=905,
                             direction=1)
        journey.save()

        change = Kv17Change(dataownercode='HTM', line=self.line, journey=journey, operatingday=datetime(2016, 4, 1),
                            is_cancel=False)
        change.save()
        stop_change = Kv17StopChange(change=change, type=5, stop=self.haltes[0], stoporder=1,
                                     reasontype=3, subreasontype=7, reasoncontent="Boot is vol")
        stop_change.save()

        # Have to pad with "DOSSIER" since otherwise we have invalid XML
        self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(),
                            self.getCompareXML('openebs/tests/output/kv17_mutationmessage.xml'))
        stop_change.advicetype = 1
        stop_change.subadvicetype = 3
        stop_change.advicecontent = "Pak de volgende boot"
        stop_change.save()

        self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(),
                            self.getCompareXML('openebs/tests/output/kv17_mutationmessage_complete.xml'))

        change.delete()
        self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(),
                            self.getCompareXML('openebs/tests/output/kv17_mutationmessage_recover.xml'))
Пример #7
0
 def to_kv17change(self):
     journey = Kv1Journey.find_from_journeynumber(self.ferry.line,
                                                  self.journeynumber,
                                                  self.operatingday)
     if journey:
         change, created = Kv17Change.objects.get_or_create(
             dataownercode=self.ferry.line.dataownercode,
             operatingday=self.operatingday,
             line=self.ferry.line,
             journey=journey)
         return journey, change
     return None, None
Пример #8
0
    def test_output_mutationmessage_and_cancel(self):
        journey = Kv1Journey(dataownercode='HTM', line=self.line, journeynumber=101, scheduleref=1, departuretime=905,
                             direction=1)
        journey.save()

        change = Kv17Change(dataownercode='HTM', line=self.line, journey=journey, operatingday=datetime(2016, 4, 1))
        change.save()
        stop_change = Kv17StopChange(change=change, type=5, stop=self.haltes[0], stoporder=1,
                                     reasontype=3, subreasontype=7, reasoncontent="Boot is vol en vaart niet")
        stop_change.save()
        self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(),
                            self.getCompareXML('openebs/tests/output/kv17_mutationmessage_cancel.xml'))
Пример #9
0
    def add_journeys_from_request(self, data):
        journey_errors = 0
        journeys = []
        for journey in self.request.GET['journey'].split(','):
            if journey == "":
                continue

            j = Kv1Journey.find_from_realtime(self.request.user.userprofile.company, journey)
            if j:
                journeys.append(j)
            else:
                journey_errors += 1
                log.error("User '%s' (%s) failed to find journey '%s' " % (self.request.user, self.request.user.userprofile.company, journey))
        data['journeys'] = journeys
        if journey_errors > 0:
            data['journey_errors'] = journey_errors
Пример #10
0
    def setUpClass(cls):
        super(TestKv17MessageXmlModel, cls).setUpClass()
        cls.user = User.objects.create_user("test")

        cls.haltes = []
        halte_a = Kv1Stop(userstopcode=100, dataownercode='HTM', name="Om de hoek", location=Point(1, 1))
        halte_b = Kv1Stop(userstopcode=101, dataownercode='HTM', name="De andere hoek", location=Point(1, 10))
        halte_a.save()
        halte_b.save()
        cls.haltes.append(halte_a)
        cls.haltes.append(halte_b)

        cls.line = Kv1Line(dataownercode='HTM', lineplanningnumber="1001", publiclinenumber="1", headsign="Naar Huis")
        cls.line.save()
        cls.journey = Kv1Journey(dataownercode='HTM', line=cls.line, journeynumber=100, scheduleref=1,
                                 departuretime=900, direction=1)
        cls.journey.save()
Пример #11
0
    def handle(self, *args, **options):
        with open(options['filename'][0], 'rb') as csvfile:
            reader = csv.reader(csvfile, delimiter=',')
            first = True
            to_send = []
            to_send_trips = []

            for row in reader:
                if first:
                    first = False
                else:
                    dataowner, lineplanningnumber, journeynumber = row[
                        0].split(':')
                    if self.last_row_date != row[1]:
                        split = row[1].split('-')
                        self.date = date(int(split[0]), int(split[1]),
                                         int(split[2]))
                    trip = Kv1Journey.find_from_realtime(dataowner,
                                                         row[0],
                                                         date=self.date)
                    if trip is None:
                        self.stdout.write("Not found: %s on %s " %
                                          (row[0], row[1]))
                    else:
                        cancelled = Kv17Change(
                            dataownercode=trip.dataownercode,
                            operatingday=self.date,
                            line=trip.line,
                            journey=trip)
                        cancelled.save()
                        cancelled.delete()
                        to_send.append(cancelled.to_xml())
                        to_send_trips.append(row[0])
                        print("Restored: %s:%s:%s on %s" %
                              (cancelled.dataownercode,
                               cancelled.line.lineplanningnumber,
                               cancelled.journey.journeynumber,
                               cancelled.operatingday))

                    if len(to_send
                           ) > 0 and len(to_send) % self.BATCH_SIZE == 0:
                        to_send, to_send_trips = self.send(
                            to_send, to_send_trips)

            if len(to_send) > 0:
                to_send, to_send_trips = self.send(to_send, to_send_trips)
Пример #12
0
 def to_recover(self):
     # Recover cancels and/or full
     # TODO: Check KV6 flow and status
     self.cancelled = False
     self.full = False
     self.save()
     journey = Kv1Journey.find_from_journeynumber(self.ferry.line,
                                                  self.journeynumber,
                                                  self.operatingday)
     if journey:
         changes = Kv17Change.objects.filter(
             dataownercode=self.ferry.line.dataownercode,
             operatingday=self.operatingday,
             line=self.ferry.line,
             journey=journey)
         if changes.count() > 0:
             change = changes[0]
             change.delete()
             return change.to_xml()
         else:
             return None