A webapp that assigns grade points to a list of students according to the marks of overall batch in a subject and sends the result file to user specified E-mail ID.
https://gp-finder.herokuapp.com/
- Designed the complete frontend and backend.
- Created dummy dataset for testing purpose.
- Merging multiple files into a single csv file, removing duplicate entries and invalid entries.
- Sending email to multiple accounts with the result file attached.
- Able to attach multiple files at once.
- Only certain extensions allowed so that no invalid file has to be processed.
- Live project that can be accessed from anywhere.
- Implementation novelty: a) Different files for each feature (modular approach). b) Making standard template for HTML files to remove redundancy in code.
- Flask (Backend)
- HTML (Frontend)
- CSS (Frontend)
- Heroku (Hosting website)
- User uploads the .csv or .txt files to the website.
- The files are pre-processed(removed duplicates and invalid entries) and merged together to form the list of the complete institution.
- The gpFinder.py script is run which calculates the grade and the grade point assigned to each student.
- Final result.csv is made and user is asked to enter his/her email-id(s), providing which he/she will receive the file.
- Google Authentication for third party apps: Allow access in security settings of your account.
- File upload error for invalid files: Only allow certain extensions to be uploaded.
- HTML template was not getting extended to other pages correctly: Use "{% block .. %}" and "{% endblock %}" to rectify.
- Account authentication for different users who use this website.
- Working Internet connection (around 2 Mbps)
- Mail account where you will receive the result.
#Creating a csv
rollNumbers = []
marks = []
for i in range(0,357):
if len(str(i)) == 1:
rollNumbers.append('10180368' + str(i))
elif len(str(i)) == 2:
rollNumbers.append('1018037' + str(i))
else:
rollNumbers.append('101803' + str(i))
marks.append(random.randrange(30, 100))
data = {}
data['roll'] = rollNumbers
data['marks'] = marks
finalDataset = pd.DataFrame.from_dict(data)
finalDataset.to_csv('scores.csv')