def get_nti_assignments(self): assignments = [] ntis = self.grade_detail.find_all( 'tr', attrs={'class': lambda l: l and l.endswith('bad_assignment')}) for assignment in ntis: name = assignment.find('td', attrs={ 'class': 'assignment text' }).text.rstrip(' ') date = assignment.find('td', attrs={ 'class': 'due_date text' }).string.split() parsed_date = Assignment.parse_date(date) category = assignment.parent.get('class')[0].replace('_', ' ').title() assignments.append( Assignment(name, parsed_date, category=category, weighted=True)) return assignments
def get_assignments(self): assignments = [] if self.is_weighted: assignments_table = self.grade_detail.find( 'table', attrs={'class': 'data_table grades'}) assignment_sections = assignments_table.find_all('tbody') for section in assignment_sections: category = section.get('class')[0].replace('_', ' ').title() for assignment in section.find_all( 'tr', attrs={'class': lambda l: l and l.startswith('row_')}): name = assignment.find('td', attrs={ 'class': 'assignment text' }).text[:-1] assignment_grade = assignment.find('td', attrs={ 'class': 'grade number' }).string if "Incomplete" in assignment_grade: parsed_assignment_grade = 0 else: parsed_assignment_grade = Decimal( assignment_grade.strip('%')) assignment_date = assignment.find('td', attrs={ 'class': 'due_date text' }).string.split() parsed_assignment_date = Assignment.parse_date( assignment_date) assignments.append( Assignment(name, parsed_assignment_date, category=category, grade=parsed_assignment_grade, weighted=True)) else: assignments_container = self.grade_detail.find( 'div', attrs={'id': 'assignments'}) assignment_list = assignments_container.find_all( 'tr', attrs={'class': lambda l: l and l.startswith('row_')}) for assignment in assignment_list: name = assignment.find('td', attrs={ 'class': 'assignment text' }).text[:-1] assignment_date = assignment.find('td', attrs={ 'class': 'due_date text' }).string.split() points_earned = Decimal( assignment.find('td', attrs={ 'class': 'points_earned number' }).string) points_possible = Decimal( assignment.find('td', attrs={ 'class': 'points_possible number' }).string) assignments.append( Assignment(name, Assignment.parse_date(assignment_date), points_earned=points_earned, points_possible=points_possible, weighted=False)) return assignments