Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mlx/web.py

    r443 r401  
    6363                      "TU3"  : const.AIRCRAFT_T134,
    6464                      "TU5"  : const.AIRCRAFT_T154,
    65                       "YK4"  : const.AIRCRAFT_YK40,
    66                       "146"  : const.AIRCRAFT_B462 }
     65                      "YK4"  : const.AIRCRAFT_YK40 }
    6766
    6867    TYPE2TYPECODE = { const.AIRCRAFT_B736  : "736",
     
    8180                      const.AIRCRAFT_T134  : "TU3",
    8281                      const.AIRCRAFT_T154  : "TU5",
    83                       const.AIRCRAFT_YK40  : "YK4",
    84                       const.AIRCRAFT_B462  : "146" }
     82                      const.AIRCRAFT_YK40  : "YK4" }
    8583
    8684    @staticmethod
     
    117115        departureTime = readline(f)
    118116        self.departureTime = BookedFlight.getDateTime(date, departureTime)
    119 
     117                                               
    120118        arrivalTime = readline(f)
    121119        self.arrivalTime = BookedFlight.getDateTime(date, arrivalTime)
     
    132130        departureTime = None
    133131        arrivalTime = None
    134 
     132       
    135133        line = f.readline()
    136         lineNumber = 0
     134        lineNumber = 0   
    137135        while line:
    138136            lineNumber += 1
    139137            line = line.strip()
    140 
     138           
    141139            hashIndex = line.find("#")
    142140            if hashIndex>=0: line = line[:hashIndex]
     
    144142                equalIndex = line.find("=")
    145143                lineOK = equalIndex>0
    146 
     144               
    147145                if lineOK:
    148                     key = line[:equalIndex].strip()
     146                    key = line[:equalIndex].strip()                   
    149147                    value = line[equalIndex+1:].strip().replace("\:", ":")
    150 
     148                   
    151149                    lineOK = key and value
    152150
     
    198196            self.aircraftTypeName = \
    199197                BookedFlight.TYPE2TYPECODE[self.aircraftType]
    200 
     198           
    201199    def writeIntoFile(self, f):
    202200        """Write the flight into a file."""
     
    237235        else:
    238236            raise Exception("Invalid aircraft type code: '" + typeCode + "'")
    239 
     237       
    240238    def __repr__(self):
    241239        """Get a representation of the flight."""
     
    250248        s += ">"
    251249        return s
    252 
     250       
    253251#------------------------------------------------------------------------------
    254252
     
    281279    def __repr__(self):
    282280        """Get the representation of the plane object."""
    283         s = "<Plane: %s %s" % (self.tailNumber,
     281        s = "<Plane: %s %s" % (self.tailNumber, 
    284282                               "home" if self.status==const.PLANE_HOME else \
    285283                               "away" if self.status==const.PLANE_AWAY else \
     
    290288        s += ">"
    291289        return s
    292 
     290       
    293291
    294292#------------------------------------------------------------------------------
     
    325323                gateNumbers.add(p.gateNumber)
    326324        return gateNumbers
    327 
     325   
    328326    def updatePlane(self, tailNumber, status, gateNumber = None):
    329327        """Update the status of the given plane."""
     
    332330            plane.status = status
    333331            plane.gateNumber = gateNumber
    334 
     332   
    335333    def __iter__(self):
    336334        """Get an iterator over the planes."""
    337335        for plane in self._planes.itervalues():
    338336            yield plane
    339 
     337       
    340338    def __getitem__(self, tailNumber):
    341339        """Get the plane with the given tail number.
     
    347345        """Get the representation of the fleet object."""
    348346        return self._planes.__repr__()
    349 
     347       
    350348#------------------------------------------------------------------------------
    351349
     
    373371        s += ">"
    374372        return s
    375 
     373   
    376374#------------------------------------------------------------------------------
    377375
     
    391389           "E" not in attrs or not attrs["E"]:
    392390            return
    393 
     391       
    394392        icao = attrs["A"]
    395393        if icao not in self._notams:
    396394            return
    397 
     395       
    398396        begin = datetime.datetime.strptime(attrs["B"], "%Y-%m-%d %H:%M:%S")
    399397
    400398        c = attrs["C"] if "C" in attrs else None
    401399        end = datetime.datetime.strptime(c, "%Y-%m-%d %H:%M:%S") if c else None
    402 
     400       
    403401        permanent = attrs["C_flag"]=="PERM" if "C_flag" in attrs else False
    404 
     402       
    405403        repeatCycle = attrs["D"] if "D" in attrs else None
    406404
     
    475473    """A login request."""
    476474    iso88592decoder = codecs.getdecoder("iso-8859-2")
    477 
     475   
    478476    def __init__(self, callback, pilotID, password, entranceExam):
    479477        """Construct the login request with the given pilot ID and
     
    490488        md5.update(self._pilotID)
    491489        pilotID = md5.hexdigest()
    492 
     490       
    493491        md5 = hashlib.md5()
    494492        md5.update(self._password)
     
    526524                result.pilotName = self.iso88592decoder(readline(f))[0]
    527525                result.exams = readline(f)
    528 
     526               
    529527                while True:
    530528                    line = readline(f)
     
    542540
    543541        return result
    544 
     542       
    545543#------------------------------------------------------------------------------
    546544
    547545class GetFleet(Request):
    548546    """Request to get the fleet from the website."""
    549 
     547   
    550548    def __init__(self, callback):
    551549        """Construct the fleet request."""
     
    560558        result.fleet = Fleet(f)
    561559        f.close()
    562 
     560       
    563561        return result
    564562
     
    587585                                 ("status", status),
    588586                                 ("kapu", gateNumber)])
    589 
     587       
    590588        f = urllib2.urlopen(url, data, timeout = 10.0)
    591589        line = readline(f)
    592 
     590       
    593591        result = Result()
    594592        result.success = line == "OK"
    595593
    596594        return result
    597 
     595           
    598596#------------------------------------------------------------------------------
    599597
     
    630628
    631629class GetMETARs(Request):
    632     """Get the METARs from the NOAA website for certain airport ICAOs."""
     630    """Get the METARs from the NOAA website for certain airport ICAOs."""   
    633631
    634632    def __init__(self, callback, airports):
     
    641639        url = "http://www.aviationweather.gov/adds/dataserver_current/httpparam?"
    642640        data = urllib.urlencode([ ("dataSource" , "metars"),
    643                                   ("requestType",  "retrieve"),
     641                                  ("requestType",  "retrieve"), 
    644642                                  ("format", "csv"),
    645643                                  ("stationString", " ".join(self._airports)),
     
    654652                if len(line)>5 and line[4]==' ':
    655653                    icao = line[0:4]
    656                     if icao in self._airports:
     654                    if icao in self._airports:                       
    657655                        result.metars[icao] = line.strip().split(",")[0]
    658656        finally:
     
    698696        data["bag"] = str(pirep.bagWeight)
    699697        data["mail"] = str(pirep.mailWeight)
    700 
     698       
    701699        data["flttype"] = SendPIREP._flightTypes[pirep.flightType]
    702700        data["onoff"] = "1" if pirep.online else "0"
     
    744742            f.close()
    745743
    746         return result
     744        return result   
    747745#------------------------------------------------------------------------------
    748746
     
    759757        """Perform the sending of the ACARS."""
    760758        print "Sending the online ACARS"
    761 
     759       
    762760        url = "http://www.virtualairlines.hu/acars2/acarsonline.php"
    763761
     
    768766        data["pid"] = acars.pid
    769767        data["pilot"] = SendACARS._latin2Encoder(acars.pilotName)[0]
    770 
     768   
    771769        data["pass"] = str(bookedFlight.numPassengers)
    772770        data["callsign"] = bookedFlight.callsign
    773771        data["airplane"] = bookedFlight.aircraftTypeName
    774772        data["from"] = bookedFlight.departureICAO
    775         data["to"] = bookedFlight.arrivalICAO
     773        data["to"] = bookedFlight.arrivalICAO       
    776774        data["lajstrom"] = bookedFlight.tailNumber
    777775
     
    781779        data["altitude"] = str(acars.state.altitude)
    782780        data["speed"] = str(acars.state.groundSpeed)
    783 
     781       
    784782        data["event"] = acars.getEventText()
    785783
     
    790788            f.close()
    791789
    792         return result
     790        return result   
    793791
    794792#------------------------------------------------------------------------------
     
    815813        """Enqueue a fleet retrieval request."""
    816814        self._addRequest(GetFleet(callback))
    817 
     815       
    818816    def updatePlane(self, callback, tailNumber, status, gateNumber = None):
    819         """Update the status of the given plane."""
     817        """Update the status of the given plane."""       
    820818        self._addRequest(UpdatePlane(callback, tailNumber, status, gateNumber))
    821819
     
    823821        """Get the NOTAMs for the given two airports."""
    824822        self._addRequest(GetNOTAMs(callback, departureICAO, arrivalICAO))
    825 
     823       
    826824    def getMETARs(self, callback, airports):
    827825        """Get the METARs for the given airports."""
     
    835833        """Send the given ACARS"""
    836834        self._addRequest(SendACARS(callback, acars))
    837 
     835       
    838836    def run(self):
    839837        """Process the requests."""
     
    846844
    847845            request.perform()
    848 
     846   
    849847    def _addRequest(self, request):
    850848        """Add the given request to the queue."""
     
    857855if __name__ == "__main__":
    858856    import time
    859 
     857   
    860858    def callback(returned, result):
    861859        print returned, unicode(result)
    862 
     860       
    863861    handler = Handler()
    864862    handler.start()
     
    868866    # Plane: HA-LEG home (gate 67)
    869867    #handler.updatePlane(callback, "HA-LQC", const.PLANE_AWAY, "72")
    870     #time.sleep(3)
     868    #time.sleep(3)   
    871869    #handler.getFleet(callback)
    872870    #time.sleep(3)
     
    875873    #handler.getMETARs(callback, ["LHBP", "EPWA"])
    876874    #time.sleep(5)
    877 
     875   
    878876    handler.updatePlane(callback, "HA-LON", const.PLANE_AWAY, "")
    879     time.sleep(3)
    880 
    881 #------------------------------------------------------------------------------
     877    time.sleep(3)   
     878
     879#------------------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.