def main(): """ Display the take lesson view. This view displays a list of published lessons. @return {void} """ row = 0 window = tk.Tk() window.title("Studybook | Unpublished Lesson List") centered_frame = tk.Frame(window) # Storage store = shelve.open('lesson/store') # Store a list of published lesson (id, name) # attributes in a tuple in the order above. # lessons = [(lesson._id, lesson.name) for lesson in store.values() if not lesson.published] store.close() # Interface ui.margin_y(centered_frame, px=20, row=row) row += 1 ui.title(centered_frame, text="Unpublished Lesson List", row=row) row += 1 ui.margin_y(centered_frame, px=2, row=row) row += 1 for lesson in lessons: # Loop through all lesson _ids and names # generating the appropriate label and button # pair to display. # _id = lesson[0] name = lesson[1] command = lambda _id = _id : publish(_id) ui.pair(centered_frame, label_text=name, button_text="Publish Lesson", command=command, row=row) row += 1 ui.pair(centered_frame, label_text='', button_text="Close", command=window.destroy, row=row) row += 1 ui.margin_y(centered_frame, px=30, row=row) centered_frame.place(relx=0.5, rely=0.5, anchor=tk.CENTER) window.geometry(ui.center(window)) window.mainloop()
def main(user_id): row = 0 window = tk.Tk() window.title("Studybook | Test List") centered_frame = tk.Frame(window) store = shelve.open('lesson/store') lessons = [(lesson._id, lesson.name) for lesson in store.values() if lesson.published] store.close() ui.margin_y(centered_frame, px=20, row=row) row += 1 ui.title(centered_frame, text="Test List", row=row) row += 1 ui.margin_y(centered_frame, px=2, row=row) row += 1 for lesson in lessons: store = shelve.open('test/store') test = store[lesson[0]] store.close() _id = lesson[0] name = lesson[1] command = lambda _id = _id : test_view.main(_id, user_id) if user_id not in test.results.keys(): ui.pair(centered_frame, label_text=name, button_text="Take Test", command=command, row=row) row += 1 ui.pair(centered_frame, label_text='', button_text="Close", command=window.destroy, row=row) row += 1 ui.margin_y(centered_frame, px=30, row=row) centered_frame.place(relx=0.5, rely=0.5, anchor=tk.CENTER) window.geometry(ui.center(window)) window.mainloop()