Ejemplo n.º 1
0
def main():
    myConfig = SkemaPackConfig( SkemaPackConfig_stdin() )
    
    myHtmlGetter = HtmlGetter.htmlGetter()
    htmlResponse = myHtmlGetter.getSkemaWithPost(myConfig.get("SkemaScraper","TeacherId"),\
                                                 myConfig.get("SkemaScraper","FirstWeek"),\
                                                 myConfig.get("SkemaScraper","LastWeek"))
    response = htmlResponse.read()
    
    htmlScraper = SdeSkemaScraper(DateFormat = myConfig.get("SkemaScraper","Dateformat"))
    
    htmlScraper.feed(response)
    

    try:
        myGmailOutput = GmailOutput_API(myConfig.get("gmail","username"),myConfig.get("gmail","Password"))
    except :
        #TODO : GmailOutput_API should raise a common exception when gdata throws gdata.service.BasAuthentication
        print ( "login to gmail failed - please check username and password")
        exit()
    
    
    for Appointment in htmlScraper.Appointments:
        myGmailOutput.addAppointment(Appointment)
    
    return 0
Ejemplo n.º 2
0
 def testGetSkemaWithPost_1(self):
     ''' HtmlGetter : do a POST 1 week'''
     myLoader = loadWeb.htmlGetter()
     try:
         self._htmlResponse = myLoader.getSkemaWithPost(3735, 43, 43, 2010)
     except IOError:
         self.fail("IOError. No internet?")
     parser = SdeSkemaScraper(DateFormat = "%d-%m-%Y")
     parser.feed( self._htmlResponse.read() )
     parser.close()
     i = len(parser.Appointments)
     self.assertEqual(i,19)
     pass
Ejemplo n.º 3
0
 def testGetSkemaWithPost_2(self):
     ''' HtmlGetter : do a POST 5 weeks '''
     # TODO : can we change this into a static test? As it is now it requires net-access and fails if changes are made
     myLoader = loadWeb.htmlGetter()
     try:
         self._htmlResponse = myLoader.getSkemaWithPost(3735, 43, 48, 2010)
     except IOError:
         self.fail("IOError. No internet?")
     parser = SdeSkemaScraper(DateFormat = "%d-%m-%Y")
     parser.feed( self._htmlResponse.read() )
     parser.close()
     i = len(parser.Appointments)
     self.assertEqual(i,75)
     pass
Ejemplo n.º 4
0
def main():
    myConfig = SkemaPackConfig( SkemaPackConfig_stdin() )
    
    myHtmlGetter = HtmlGetter.htmlGetter()
    htmlResponse = myHtmlGetter.getSkemaWithPost(myConfig.get("SkemaScraper","TeacherId"),\
                                                 myConfig.get("SkemaScraper","FirstWeek"),\
                                                 myConfig.get("SkemaScraper","LastWeek"))
    response = htmlResponse.read()
    
    htmlScraper = SdeSkemaScraper(DateFormat = myConfig.get("SkemaScraper","Dateformat"))
    
    htmlScraper.feed(response)
    

    for Appointment in htmlScraper.Appointments:
        print Appointment
Ejemplo n.º 5
0
    def testGetGetterParameters(self):
        ''' HtmlGetter : checks if the current year is chosen, if no year is supplied '''
        UserId = 3735
        StartWeek = 04
        EndWeek = 04
        Year = datetime.datetime.now().year
        ExpectedParams = {'id': UserId, 'startWeek': StartWeek, 'endWeek': EndWeek, 'year': Year}

        myLoader = loadWeb.htmlGetter()
        try:
            myLoader.getSkemaWithPost(3735, 04, 04)
        except IOError:
            self.fail("IOError. No internet?")
            
        Params = myLoader.getParameters()
        self.assertEqual(ExpectedParams, Params )
Ejemplo n.º 6
0
def ProcessWebPageById( Id, FirstWeek, LastWeek, Year, DateFormat = "%Y/%m/%d"  ):
	""" 
	Utility function. Fetches webpage from the internet and parses it
	
	@param Id: The identifier of the teacher or room. @see: Input.HtmlGetter.LoadHtml.getSkemaWithPost
	@param FirstWeek: Start week of resulting schedule
	@param LastWweek: End week of resulting schedule	 
	@param Year: The year to extract data for. Defaults to current year.
	@param DateFormat: The dateformat. Defaults to "%Y/%m/%d"
	"""
	# TODO: The function should be moved elsewhere.
	myLoader = loadWeb.htmlGetter()
	parser = SdeSkemaScraper( DateFormat )
	parser.feed(myLoader.getSkemaWithPost(Id, FirstWeek, LastWeek, Year).read())
	parser.close()
	
	print myLoader.getParameters()
	return  parser.Appointments 
Ejemplo n.º 7
0
 def testGetSkemaWithPostWithSpecifiedYear(self):
     ''' HtmlGetter : do a POST 1 week with the year specified'''
     myLoader = loadWeb.htmlGetter()
     try:
         self._htmlResponse = myLoader.getSkemaWithPost(3735, 04, 04, 2011)
     except IOError:
         self.fail("IOError. No internet?")
     parser = SdeSkemaScraper(DateFormat = "%d-%m-%Y")
     parser.feed( self._htmlResponse.read() )
     parser.close()
     
     fp = open( Filename_pfl_2011_04, "r" )
     Filecontent = fp.read()
     fp.close()
     parser2 = SdeSkemaScraper(DateFormat = "%d-%m-%Y")
     parser2.feed( Filecontent )
     parser2.close()
     
     self.assertEqual(parser.Appointments, parser2.Appointments)
     pass
Ejemplo n.º 8
0
def ImportSdeSkema( config, ConfigSet = "SkemaScraper" ):
    ''' Config parameters: TeacherId, FirstWeek, LastWeek, Year, InputDateformat, 
            Infile (if set, read from file)
    '''
    # read data from file or net
    if config.has_option(ConfigSet, "Infile"):
        Data = open(config.get(ConfigSet, "Infile")).read()
    else:
        myLoader = loadWeb.htmlGetter( config.get(ConfigSet, "Site") )
        Data = myLoader.getSkemaWithPost(config.get(ConfigSet, "TeacherId"), 
                                     config.get(ConfigSet, "FirstWeek"), 
                                     config.get(ConfigSet, "LastWeek"), 
                                     config.get(ConfigSet, "Year")).read()
                                     
    # and process data
    parser = SdeSkemaScraper( config.get(ConfigSet, "InputDateformat"),
                              Teacher = config.get(ConfigSet, "Teacher" ) )
    parser.feed( Data )
    parser.close()
    
    # TODO: Decide on name for this, Appointments or Events
    return  parser.Appointments 
Ejemplo n.º 9
0
 def testBadParameters(self):
     ''' HtmlGetter : checks for exception on non-integers '''
     myLoader = loadWeb.htmlGetter()
     self.assertRaises( ValueError, myLoader.getSkemaWithPost, 3735, 'text', 04, 2011 )