Esempio n. 1
0
    def run(self, site, messages=None):
        site.clear()
        show_messages(messages)
        course_list = paginator(site.get_current_courses(site.active_user), 20)
        page_number = 0
        while True:
            menu = {
                'Home': '/teacher/',
            }
            if page_number - 1 >= 0:
                menu['Previous Page'] = '/teacher/courses/'
            if page_number + 1 < len(course_list):
                menu['Next Page'] = '/teacher/courses/'
            if len(course_list) == 0:
                print("There is no course for you.")
            else:
                pprint_table('Courses',
                             course_list[page_number],
                             foot='Page {} of {}'.format(
                                 page_number + 1, len(course_list)))
            choice = choose_from_menu(menu.keys())
            if choice == 'Home':
                site.state = menu[choice]
                break
            elif choice == 'Previous Page':
                page_number -= 1
                site.clear()
            elif choice == 'Next Page':
                page_number += 1
                site.clear()

        return None
Esempio n. 2
0
    def run(self, site, messages=None):
        site.clear()
        show_messages(messages)
        course_list = paginator(site.get_verified_courses(), 20)
        page_number = 0
        while True:
            menu = ['Home']
            if page_number - 1 >= 0:
                menu.append('Previous Page')
            if page_number + 1 < len(course_list):
                menu.append('Next Page')
            if len(course_list) == 0:
                print("There is no verified course in the system.")
            else:
                pprint_table('Courses',
                             course_list[page_number],
                             foot='Page {} of {}'.format(
                                 page_number + 1, len(course_list)))
            choice = choose_from_menu(menu)
            if choice == 'Home':
                site.state = '/manager/'
                break
            elif choice == 'Previous Page':
                page_number -= 1
                site.clear()
            elif choice == 'Next Page':
                page_number += 1
                site.clear()

        return None
Esempio n. 3
0
    def run(self, site, messages=None):
        site.clear()
        show_messages(messages)
        course_list = paginator(site.active_user.get_scores(), 20)
        page_number = 0
        while True:
            menu = {
                'Home': '/student/',
            }
            if page_number - 1 >= 0:
                menu['Previous Page'] = '/student/workbook/'
            if page_number + 1 < len(course_list):
                menu['Next Page'] = '/student/workbook/'
            if len(course_list) == 0:
                print("There is no passed course in the system.")
            else:
                pprint_table(
                    'Workbook',
                    course_list[page_number],
                    foot='Page {} of {}'.format(page_number + 1,
                                                len(course_list)),
                    cols_title=site.active_user.get_score_columns_title())
            choice = choose_from_menu(menu.keys())
            if choice == 'Home':
                site.state = menu[choice]
                break
            elif choice == 'Previous Page':
                page_number -= 1
                site.clear()
            elif choice == 'Next Page':
                page_number += 1
                site.clear()

        return None
Esempio n. 4
0
 def run(self, site, messages=None):
     site.clear()
     show_messages(messages)
     user_list = paginator(site.get_unverified_users(), 20)
     page_number = 0
     while True:
         if len(user_list) == 0:
             print("There is no unverified user in the system.\n")
         else:
             pprint_table('New Users',
                          copy.copy(user_list[page_number]),
                          foot='Page {} of {}'.format(
                              page_number + 1, len(user_list)))
         menu = ['Home']
         if page_number - 1 >= 0:
             menu.append('Previous Page')
         if page_number + 1 < len(user_list):
             menu.append('Next Page')
         if len(user_list) > 0:
             menu.append('Accept')
             menu.append('Reject')
         choice = choose_from_menu(menu)
         if choice == 'Home':
             site.state = '/manager/'
             break
         elif choice == 'Previous Page':
             page_number -= 1
             site.clear()
         elif choice == 'Next Page':
             page_number += 1
             site.clear()
         else:
             student_row = get_input("Enter row number of the student: ",
                                     output_type=int)
             student_row -= 1
             if student_row >= len(
                     user_list[page_number]) or student_row < 0:
                 return ['Invalid row number!']
             if choice == 'Accept':
                 site.accept_user(user_list[page_number][student_row])
             else:
                 site.reject_user(user_list[page_number][student_row])
             return ['Operation completed successfully.']
     return None
Esempio n. 5
0
 def show(self, target_list=None, **kw):
     article_list = self.load_list(target_list)
     if article_list:
         print json.dumps(article_list.file_metadata, indent=4)
         print '\nTotal articles: ', len(article_list.get_articles()), '\n'
     elif article_list is None:
         article_lists = self.get_all_list_dicts()
         als = [['Articles', 'Unresolved', 'Actions', 'Updated', 'Name']]
         for al in article_lists:
             als.append([al['total'],
                         al['unresolved'],
                         al['actions'],
                         al['date'],
                         al['name']])
         print 'Article lists in', self._home_path
         if len(als) > 1:
             pprint_table(als)
         else:
             print 'none'
Esempio n. 6
0
 def run(self, site, messages=None):
     site.clear()
     show_messages(messages)
     course_list = paginator(site.get_available_courses(), 20)
     page_number = 0
     while True:
         if len(course_list) == 0:
             print("There is no available course in the system.")
         else:
             pprint_table('Available Courses',
                          copy.copy(course_list[page_number]),
                          foot='Page {} of {}'.format(
                              page_number + 1, len(course_list)))
         menu = ['Home']
         if page_number - 1 >= 0:
             menu.append('Previous Page')
         if page_number + 1 < len(course_list):
             menu.append('Next Page')
         if len(course_list) > 0:
             menu.append('Select')
         choice = choose_from_menu(menu)
         if choice == 'Home':
             site.state = '/student/'
             break
         elif choice == 'Previous Page':
             page_number -= 1
             site.clear()
         elif choice == 'Next Page':
             page_number += 1
             site.clear()
         else:
             course_row = get_input(
                 "Enter row number of the course to get it: ",
                 output_type=int)
             course_row -= 1
             if course_row >= len(
                     course_list[page_number]) or course_row < 0:
                 return ['Invalid row number!']
             site.active_user.add_course(
                 course_list[page_number][course_row])
             return ['You added course successfully.']
     return None
Esempio n. 7
0
 def run(self, site, messages=None):
     site.clear()
     show_messages(messages)
     teacher_list = paginator(site.get_verified_teachers(), 20)
     page_number = 0
     while True:
         if len(teacher_list) == 0:
             print("There is no student in the system.")
         else:
             pprint_table('Teachers', copy.copy(teacher_list[page_number]),
                          foot='Page {} of {}'.format(page_number + 1, len(teacher_list)))
         menu = ['Home']
         if page_number - 1 >= 0:
             menu.append('Previous Page')
         if page_number + 1 < len(teacher_list):
             menu.append('Next Page')
         if len(teacher_list) > 0:
             menu.append('Rate')
         choice = choose_from_menu(menu)
         if choice == 'Home':
             site.state = '/student/'
             break
         elif choice == 'Previous Page':
             page_number -= 1
             site.clear()
         elif choice == 'Next Page':
             page_number += 1
             site.clear()
         else:
             teacher_row = get_input('Enter the row number of the teacher you wanna rate: ', output_type=int)
             teacher_row -= 1
             if teacher_row < 0 or teacher_row >= len(teacher_list[page_number]):
                 return ['Invalid row number!']
             rate = get_input('How do you rate this teacher?\nChoose a natural number from 1 to 5: ',
                              output_type=int)
             if rate < 1 or rate > 5:
                 return ['Invalid rating!']
             teacher_list[page_number][teacher_row].rates[rate - 1] += 1
             return ['You rated the teacher successfully.']
     return None
Esempio n. 8
0
 def run(self, site, messages=None):
     site.clear()
     show_messages(messages)
     student_list = [(student.get_average_score(), student)
                     for student in site.get_verified_students()]
     student_list.sort()
     student_list = student_list[::-1]
     student_list = [[t[0], t[1].name, t[1].serial, t[1].field]
                     for t in student_list]
     student_list = paginator(student_list, 20)
     page_number = 0
     while True:
         if len(student_list) == 0:
             print("There is no verified students in the system.\n")
         else:
             pprint_table(
                 'Students',
                 student_list[page_number],
                 foot='Page {} of {}'.format(page_number + 1,
                                             len(student_list)),
                 cols_title=['Avg. Score', 'Name', 'Student No.', 'Field'])
         menu = ['Home']
         if page_number - 1 >= 0:
             menu.append('Previous Page')
         if page_number + 1 < len(student_list):
             menu.append('Next Page')
         choice = choose_from_menu(menu)
         if choice == 'Home':
             site.state = '/manager/'
             break
         elif choice == 'Previous Page':
             page_number -= 1
             site.clear()
         elif choice == 'Next Page':
             page_number += 1
             site.clear()
     return None
Esempio n. 9
0
def main():
    start = 0
    end = 10

    # it is called "encapsulation"
    left_rectangles = lambda parts: integrate_left_rect(f, start, end, parts)
    weddle = lambda parts: integrate_weddle(f, start, end, parts)

    # input
    # can replace int(input(...)) with fool_proof_int_input(...)
    parts_1 = fool_proof_int_input(">>> 1st number of partitions: ")
    parts_2 = fool_proof_int_input(">>> 2nd number of partitions: ")
    parts_1, parts_2 = min(parts_1, parts_2), max(parts_1, parts_2)

    if parts_1 <= 0 or parts_2 <= 0:
        print("Must be positive!")
        exit(1)

    # integration results
    res_1_left = left_rectangles(parts_1)
    res_2_left = left_rectangles(parts_2)
    res_1_weddle = weddle(parts_1)
    res_2_weddle = weddle(parts_2)

    # table formatting, can you not read the function name?
    print()
    pprint_table(
        [
            "Method",
            "Left Rectangles",
            "Weddle",
        ],
        [f"N Partitions: {parts_1}", res_1_left, res_1_weddle],
        [f"N Partitions: {parts_2}", res_2_left, res_2_weddle],
        margin=2,
    )
    print()

    print()
    pprint_table(
        [
            "Method",
            "Left Rectangles",
            "Weddle",
        ],
        [
            f"Absolute error",
            err_abs(res_1_left, res_2_left),
            err_abs(res_1_weddle, res_2_weddle),
        ],
        [
            f"Relative error",
            err_rel(res_1_left, res_2_left),
            err_rel(res_1_weddle, res_2_weddle),
        ],
        margin=2,
    )
    print()

    print("Left rectangles required is less prescise")
    # can replace float(input(...)) with fool_proof_float_input(...)
    prec = fool_proof_float_input(">>> prescision for left rectangles: ")

    left_target_parts, end_res = search_parts_prescision(left_rectangles, prec)

    print(
        f"It takes {left_target_parts} partitions to calculate with that prescision"
    )
    print(f"End result is: {end_res:.8f}")