Coverage for app/logic/downloadFile.py: 85%
27 statements
« prev ^ index » next coverage.py v7.2.7, created at 2024-10-02 17:57 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2024-10-02 17:57 +0000
1from app import app
2from app.models.courseInstructor import CourseInstructor
3from app.models.courseStatus import CourseStatus
5import csv
7class fileMaker:
8 '''
9 Create the file for the download buttons
11 requestedInfo: Query object to be formatted and input to the file as text.
12 fileType: Specifies what type of file is going to be made. Currently implemented: (CSV)
13 fileFormat (optional): The format of the file, primarily for CSV headers. Type: (dictionary of lists)
14 '''
15 def __init__(self, designator, requestedInfo, fileType, fileFormat = None):
16 self.relativePath = app.config['files']['base_path']
17 self.designator = designator
18 self.requestedInfo = requestedInfo
19 self.fileType = fileType
20 self.fileFormat = fileFormat
21 self.makeFile(fileType)
24 def makeFile(self, fileType):
25 '''
26 Creates the file
27 '''
28 try:
29 if self.designator == "downloadApprovedCourses":
30 if fileType == "CSV":
31 with open(self.relativePath + "/ApprovedCourses.csv", 'w', encoding='utf-8', errors="backslashreplace") as csvfile:
32 self.filewriter = csv.writer(csvfile, delimiter = ',')
33 headers = self.fileFormat.get("headers")
34 self.filewriter.writerow(headers)
35 csvWriteList = []
36 for approvedCourse in self.requestedInfo:
37 csvWriteList = [approvedCourse.courseName, approvedCourse.courseAbbreviation, approvedCourse.instructors, approvedCourse.term.description]
38 self.filewriter.writerow(csvWriteList)
39 return "File Downloaded Created Successfully"
41 except Exception as e:
42 return e