Пример #1
0
 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
Пример #2
0
 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