Beispiel #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
Beispiel #2
0
def ImportFile( config = None, ConfigSet = "ImportFile" ):
    '''
    Imports events and config from file (or stdin)
    @param config: The config object to use. If None, then we try to use defaults or stdin
    @param ConfigSet: The section of the configuration to use
    @raise KeyError: If supplied ConfigSet is not in config
    @return: (events, config) or (weeksums, config) 
    '''  
    # if no config supplied, use stdin
    if not config:
        # create new config object
        config = SkemaPackConfig( SkemaPackConfig_stdin_eal() )
        # we accept non-existent section when piping from stdin
    else: 
        # check if specified section is present
        if not config.has_section( ConfigSet ):
            raise KeyError("Section \"%s\" not found"%ConfigSet)
            
      
    # read data from file or net
    if not config.has_option(ConfigSet, "Infile"):
        FileToUse = codecs.getreader('utf8')(sys.stdin)
    else:
        filename = config.get(ConfigSet, "Infile")
        try:
            FileToUse = codecs.open( filename, 'r', 'utf-8' )
        except UnicodeEncodeError:
            raise ValueError( u"Illegal filename supplied: %s "%filename)
    # read data from file or net
    if not config.has_option(ConfigSet, "InputDateformat"):
        DateFormat = "%Y-%m-%d"
    else:
        DateFormat = config.get(ConfigSet, "InputDateformat")

    try:
        # read events
        Events = []
        for EventText in FileToUse:
            event = ReadString(EventText, DateFormat )
            if not event:
                continue
            
            Events.append( event )
    
        ret = Events 
    except KeyError:
        # read weeksums
        ws = []
        for WsText in FileToUse:
            event = ReadString(WsText, DateFormat )
            if not event:
                continue
            
            ws.append( event )
    
        ret =  ws 
        
    return (ret, config)
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
Beispiel #4
0
    
    ExportHtmlSection = "ExportHtml"
    ExportCsvSection = "ExportCsv"
    FilterSplitSection = "FilterSplit"
    HtmlFilenameList = {}
    CsvFilenameList = {}
    for Teacher in TeacherList.keys():
        print "Export to hmtl: %s "%Teacher
        config.set( ExportHtmlSection, "ClassName", "" )
        config.set( ExportCsvSection, "ClassName", "" )
        config.set( "DEFAULT", "TeacherIni", Teacher )
        FilteredEvents, config = FilterSplit( events, config )
    
        ExportHtml( FilteredEvents, config, ConfigSet = ExportHtmlSection )
        HtmlFilenameList[Teacher] = config.get( ExportHtmlSection, "Outfile")
            
        ExportCsv( FilteredEvents, config, ConfigSet = ExportCsvSection )
        CsvFilenameList[Teacher] = config.get( ExportCsvSection, "Outfile")
    
#    for ClassName in ClassList.keys():
#        print "Export to hmtl: %s "%ClassName
#        config.set( ExportHtmlSection, "ClassName", ClassName )
#        config.set( FilterSplitSection, "ClassName", ClassName )
#        config.set( "DEFAULT", "TeacherIni", "" )
#        FilteredEvents, config = FilterSplit( events, config )
#        ExportHtml( FilteredEvents, config, ConfigSet = ExportHtmlSection )
#        HtmlFilenameList[ClassName] = config.get( ExportHtmlSection, "Outfile")
    
    # create index file
    print "Output index file: %s"%IndexHtmlFilename
class Test(unittest.TestCase):
    def setUp(self):
        CloneTestData() 
        self._StartDir = ChDirToSrc()
        os.chdir(TempDataDir)
        os.chdir( ConfigWorkDir)
        pass

    def tearDown(self):
        ''' Removes temporary data '''
        RemoveTestData()        
        os.chdir(self._StartDir )
        pass
    
    def testLoadFromFile(self):
        ''' SkemaPackConfig : simple read '''
        self.config = SkemaPackConfig(open('config_test.cfg'))
        self.assertEquals(self.config.get("SkemaScraper", "TeacherId"), "5421", "TeacherId is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "FirstWeek"), "33", "FirstWeek is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "LastWeek"), "52", "LastWeek is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "Year"), "2011", "Year is not correct")
        
    @unittest.skip("Skipped : (MON) How should this work?")    
    def testLoadFromHome(self):
        self.config = SkemaPackConfig()
        self.assertEquals(self.config.get("SkemaScraper", "TeacherId"), "5421", "TeacherId is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "FirstWeek"), "33", "FirstWeek is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "LastWeek"), "52", "LastWeek is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "Year"), "2011", "Year is not correct")
    
    @unittest.skip("(MON) How is this working?")    
    def testLoadFromCurrent(self):
        os.system("cp config_test.cfg skemapack.cfg")
        self.config = SkemaPackConfig()
        self.assertEquals(self.config.get("SkemaScraper", "TeacherId"), "5421", "TeacherId is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "FirstWeek"), "33", "FirstWeek is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "LastWeek"), "52", "LastWeek is not correct")
        self.assertEquals(self.config.get("SkemaScraper", "Year"), "2011", "Year is not correct")
        os.system("rm skemapack.cfg")
        
    @unittest.skip("(MON) How is this working?")    
    def testLoadNoFile(self):
        HomeFileName = os.path.expanduser("~/.skemapack/skemapack.cfg")
        os.system("mv %s %s.old"%(HomeFileName,HomeFileName))
        print "mv %s %s.old"%(HomeFileName,HomeFileName)
        self.assertRaises( exceptions.ValueError, SkemaPackConfig, "" )
        os.system("mv %s.old %s"%(HomeFileName,HomeFileName))
        
    #@unittest.skip("Skipped : Errors related to file locations")    
    def testPrintConfig(self):
        ''' SkemaPackConfig : check output string '''
        self.config = SkemaPackConfig(open('config_test.cfg'))
        configstr = str( self.config )
        self.assertEqual( configstr, ConfigStringResult )

    def testTrueFalseConfig(self):
        ''' SkemaPackConfig : simple read of true/false'''
        self.config = SkemaPackConfig(open('TrueFalseTest.cfg'))
        self.assertEquals(self.config.getboolean("TrueFalseTest", "ThisIsTrue"), True )
        self.assertEquals(self.config.getboolean("TrueFalseTest", "ThisIsFalse"), False )

    def testSetGet(self):
        ''' SkemaPackConfig : simple set and read of value'''
        self.config = SkemaPackConfig(open('config_test.cfg'))
        
        SectionToUse =  "SkemaScraper"
        OptionToUse = "MyVal"
        ValueToUse = "Test123"
        self.config.set( SectionToUse, OptionToUse, ValueToUse )
         
        self.assertEquals(self.config.get(SectionToUse, OptionToUse), ValueToUse )