def events(self, course): parameters = { 'tLinkType': 'modules', 'dlFilter': '', 'tWildcard': '', 'dlObject': course.identifier, 'lbWeeks': 't', 'lbDays': '1-7', 'dlPeriod': '1-32', 'dlType': 'TextSpreadsheet;swsurl;SWSCUST Object TextSpreadsheet', 'bGetTimetable': '', } timetable_page = self.post(Client.base_url, parameters=parameters) day_numbered_trs = enumerate( timetable_page.xpath( '//table[@class="spreadsheet"]//tr[not(contains(@class, "columnTitles"))]' )) events = [] for (day_number, event_row) in day_numbered_trs: event_tds = event_row.xpath('./td') event = Event() event.uid = course.identifier + '-' + event_tds[ 0].text + '@timetab.benjeffrey.com' event.add('summary', event_tds[0].text) event.add('description', event_tds[1].text) event.add('dtstamp', datetime.now()) start_time = datetime.strptime(event_tds[3].text.strip(), '%H:%M').time() end_time = datetime.strptime(event_tds[4].text.strip(), '%H:%M').time() weeks = self.dateranges_for_week_str(event_tds[5].text) event.add( 'dtstart', datetime.combine(weeks[0].date + timedelta(days=day_number), start_time)) event.add( 'dtend', datetime.combine(weeks[0].date + timedelta(days=day_number), start_time)) for week in weeks: event.add('rdate', week.date + timedelta(days=day_number)) location = event_tds[7].text.strip() + ', ' + event_tds[6].xpath( './a/text()')[0].strip() event.add('location', location) event.add('categories', ['EDUCATION', event_tds[2].text]) events.append(event) return events
def events(self, course): parameters = { 'tLinkType': 'modules', 'dlFilter': '', 'tWildcard': '', 'dlObject': course.identifier, 'lbWeeks': 't', 'lbDays': '1-7', 'dlPeriod': '1-32', 'dlType': 'TextSpreadsheet;swsurl;SWSCUST Object TextSpreadsheet', 'bGetTimetable': '', } timetable_page = self.post(Client.base_url, parameters=parameters) day_numbered_trs = enumerate(timetable_page.xpath('//table[@class="spreadsheet"]//tr[not(contains(@class, "columnTitles"))]')) events = [] for (day_number, event_row) in day_numbered_trs: event_tds = event_row.xpath('./td') event = Event() event.uid = course.identifier + '-' + event_tds[0].text + '@timetab.benjeffrey.com' event.add('summary', event_tds[0].text) event.add('description', event_tds[1].text) event.add('dtstamp', datetime.now()) start_time = datetime.strptime(event_tds[3].text.strip(), '%H:%M').time() end_time = datetime.strptime(event_tds[4].text.strip(), '%H:%M').time() weeks = self.dateranges_for_week_str(event_tds[5].text) event.add('dtstart', datetime.combine(weeks[0].date + timedelta(days=day_number), start_time)) event.add('dtend', datetime.combine(weeks[0].date + timedelta(days=day_number), start_time)) for week in weeks: event.add('rdate', week.date + timedelta(days=day_number)) location = event_tds[7].text.strip() + ', ' + event_tds[6].xpath('./a/text()')[0].strip() event.add('location', location) event.add('categories', ['EDUCATION', event_tds[2].text]) events.append(event) return events