Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import pprint
- def readfile(filename):
- """
- Returns the content of a file
- """
- handle = open(filename, 'r')
- data = handle.read()
- handle.close()
- return data
- def printheader(text):
- """
- Format a header depending on the given text
- """
- # 79 times '-'
- print("-" * 79)
- print(text)
- # same as above
- print("-" * 79)
- def jsonfiletodict(filename):
- """
- Returns a dictionary of a JSON file
- """
- plaintext = readfile(filename)
- return json.loads(plaintext)
- def createcourseslist(data):
- """
- Returns a list (courses, important)
- """
- course_id = 1
- courses = []
- for course in data:
- if not (course["title"], 0) in courses:
- courses.append((course["title"], False))
- course_id += 1
- return courses
- def viewcourseslist(courses):
- """
- Prints courses list
- """
- printheader("Courses list")
- for i in range(len(courses)):
- (name, important) = courses[i]
- print(i + 1, ": ", name, end="")
- if important:
- print(" [Important]")
- else:
- print(" [Not important]")
- def tagasimportant(courses):
- """
- Tags a title as important
- """
- course_id = int(getinput("Please enter a course id: "))
- (name, important) = courses[course_id - 1]
- courses[course_id - 1] = (name, True)
- def untagasimportant(courses):
- """
- Untags a title as important
- """
- course_id = int(getinput("Please enter a course id: "))
- (name, important) = courses[course_id - 1]
- courses[course_id - 1] = (name, False)
- def exportcourses(data, filename):
- """
- Exports the data into a file
- """
- filename = getinput("Please enter a filename: ")
- handle = open(filename, 'w')
- handle.write(data)
- handle.close()
- print("File exported with success !")
- def savequery(search, courses, filename):
- """
- Save courses
- """
- handle = open(filename, 'w')
- handle.write(search + ":\n")
- for course in courses:
- handle.write(" " + course + '\n')
- handle.close()
- def querybycategory(data):
- category = getinput("Please enter a category: ")
- filename = getinput("Please enter a filename: ")
- courses = []
- for course in data:
- if course["category"] == category and course["title"] != "":
- courses.append(course["title"])
- savequery(category, courses, filename)
- return courses
- def querybysubject(data):
- subject = getinput("Please enter a subject: ")
- filename = getinput("Please enter a filename: ")
- courses = []
- for i in range(len(data)):
- course = data[i]
- if course["subject"] == subject and course["title"] != "":
- courses.append(course["title"])
- savequery(subject, courses, filename)
- return courses
- def savequerydate(date_min, date_max, courses, filename):
- handle = open(filename, 'w')
- handle.write("Courses between " + str(date_min) + " and " + str(date_max) + '\n')
- for (course, year) in courses:
- handle.write(str(year) + ": " + course + '\n')
- handle.close()
- def querybydate(data):
- date_min = int(getinput("Please enter the first year: "))
- date_max = int(getinput("Please enter the second year: "))
- filename = getinput("Please enter a filename: ")
- courses = []
- for course in data:
- year = int(course["date"])
- if year >= date_min and year <= date_max and course["title"] != "":
- courses.append((course["title"], course["date"]))
- savequerydate(date_min, date_max, courses, filename)
- return courses
- def getinput(text):
- print(text, end="")
- return input()
- def changecourse(data):
- """
- Changes subject and category of a course
- """
- title = getinput("Please enter a title: ")
- new_subject = getinput("Please enter a new subject for the course: ")
- new_category = getinput("Please enter a new category for the course: ")
- i = 0
- while i < len(data):
- course = data[i]
- if course["title"] == title:
- break
- i += 1
- data[i]["category"] = new_category
- data[i]["new_subject"] = new_subject
- return data
- def printchoices():
- print("Please enter a number to select an option.")
- print("1: View courses list")
- print("2: Tag a course as important")
- print("3: Untag a course as important")
- print("4: Query courses by a category")
- print("5: Query courses by a subject")
- print("6: Query courses by a date range")
- print("7: Change a course")
- print("8: Export courses")
- print("9: Leave the app")
- def main():
- data = jsonfiletodict("metadata.json")
- courses = createcourseslist(data)
- while True:
- printheader("Welcome on the app !")
- printchoices()
- choice = int(input())
- if choice == 1:
- viewcourseslist(courses)
- elif choice == 2:
- tagasimportant(courses)
- elif choice == 3:
- untagasimportant(courses)
- elif choice == 4:
- querybycategory(data)
- elif choice == 5:
- querybysubject(data)
- elif choice == 6:
- querybydate(data)
- elif choice == 7:
- data = changecourse(data)
- elif choice == 8:
- exportcourses(data)
- elif choice == 9:
- break
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement