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
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
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 )