def editFaq(request, uinfo): context = {} loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(context['sign_in_url']) elif context['username'] != uinfo: return HttpResponse('You are not authorized') user_dict = db.collection(u'Users').document( context['username']).get().to_dict() faq_dict = db.collection(u'Homepage').document(u'faq').get().to_dict() if 'isAdmin' in user_dict: context["isAdmin"] = "True" else: context["isAdmin"] = "False" context["Designation"] = user_dict['Designation'] if context['isAdmin'] == "False": return HttpResponse('Sorry, you do not have authorization rights') faq_list = faq_dict['qa'] count = [] counter = 0 for item in faq_dict['qa']: counter += 1 count.append(counter) final_list = zip(count, faq_list) context['faq_list'] = final_list context['numberOfFAQ'] = counter return render(request, "home/editfaq.html", context)
def ViewUser(request, uinfo): context = {} context = loginFLOW(request, context) if context['username'] != uinfo: return HttpResponse("You are not authorized") profile = db.collection(u'Users').document(context['username']) profile_dict = profile.get().to_dict() context['profile'] = profile_dict all_projects = db.collection(u'Projects').where(u'Creator', u'==', profile).get() project_list = [] for x in all_projects: project = x.to_dict() project['id'] = x.id project_list.append(project) if 'isAdmin' in profile_dict: context["isAdmin"] = "True" else: context["isAdmin"] = "False" context['Designation'] = profile_dict['Designation'] context['projects'] = project_list if not project_list: context['isProjects'] = "False" else: context['isProjects'] = "True" return render(request, 'home/profile.html', context)
def getDesig(request, cinfo): context = {} context = loginFLOW(request, context) username = context['username'] user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() Designation = user_dict['Designation'] if Designation == "Faculty": return "Faculty" CourseDict = db.collection("Courses").document(cinfo).get().to_dict() try: TAListref = CourseDict["TAList"] for TA in TAListref: if username == TA.get().to_dict()["Username"]: return "Faculty" except: pass try: StuRef = db.collection("Courses").document( cinfo).get().to_dict()["StudentList"] for Stu in StuRef: if username == Stu["StudentID"].get().to_dict()["Username"]: return "Student" except: pass return "UnRegStu"
def view_calendar(request, CourseID): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] page_token = None while True: calendar_list = service.calendarList().list( pageToken=page_token).execute() for calendar_list_entry in calendar_list['items']: if calendar_list_entry['summary'] == CourseID: CalendarID = calendar_list_entry['id'] page_token = calendar_list.get('nextPageToken') if not page_token: break if request.method == 'POST': pass elif request.method == 'GET': context['CourseID'] = CourseID context['CalendarID'] = CalendarID # return render(request, 'discussion/calendar.html', {'CourseID': CourseID, 'CalendarID': CalendarID}) return render(request, 'discussion/calendar.html', context)
def editProfile(request, uinfo): access_token = get_access_token( request, request.build_absolute_uri(reverse('home:gettoken'))) if not access_token: return HttpResponse("You are not logged in") user = get_me(access_token) username = user['mail'].replace("@iitg.ac.in", "") if username != uinfo: return HttpResponse("You are not authorized") user = db.collection(u'Users').document(username).get() user_dict = user.to_dict() user_dict["id"] = user.id t = 0 if user_dict["Designation"] == "Student": t = 1 if user_dict["Designation"] == "Faculty": t = 0 context = {'isStudent': t, 'user': user_dict} context = loginFLOW(request, context) if 'isAdmin' in user_dict: context["isAdmin"] = "True" else: context["isAdmin"] = "False" context['Designation'] = user_dict['Designation'] return render(request, 'home/editProfile.html', context)
def projectUpdate(request, pinfo): context = {} if request.method == 'POST': context = loginFLOW(request, context) if context['username'] == '': return HttpResponse("You are not logged in") project_dict = db.collection(u'Projects').document( pinfo).get().to_dict() creator = project_dict['Creator'].get().id if context['username'] != creator: return HttpResponse("You are not authorized") updated_project = {} updated_project['Title'] = request.POST.get('title') updated_project['AboutProject'] = request.POST.get('about') if request.POST.get('cmurl') != '': updated_project["Media"] = request.POST.get('cmurl') updated_project['Mentor'] = request.POST.get('mentors') updated_project['People'] = request.POST.get('people') updated_project['Achievements'] = request.POST.get('achievements') db.collection(u'Projects').document(pinfo).update(updated_project) return HttpResponseRedirect("/home/projects/" + pinfo) return HttpResponseRedirect(reverse('home:home'))
def ViewCourse(request, cinfo): Designation = getDesig(request, cinfo) if Designation == "UnRegStu": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() # cid += "_" + username + " _" + cyear assgn_ref = db.collection(u'Courses').document(cinfo).collection( u'Assignments').get() AssgnDetails = [] for assgn in assgn_ref: AssgnDetails.append(assgn.to_dict()) context['AssgnDetails'] = AssgnDetails context['CourseInfo'] = cinfo context['Designation'] = Designation # { # 'AssgnDetails': AssgnDetails, # 'CourseInfo': cinfo # } return render(request, 'course/viewcourse.html', context)
def viewTA(request, cinfo): Designation = getDesig(request, cinfo) if Designation == "UnRegStu": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() try: TAList = db.collection(u'Courses').document( cinfo).get().to_dict()["TAList"] except: TAList = "" talist = list() for TA in TAList: talist.append(TA.get().to_dict()) context['TA'] = talist context['CourseInfo'] = cinfo context['Designation'] = Designation # { # 'TA': talist, # 'CourseInfo': cinfo # } return render(request, 'course/viewTA.html', context)
def saveNotice(request, uinfo): context = {} if request.method == 'POST': context = loginFLOW(request, context) if context['username'] != uinfo: return HttpResponse("You are not authorized") user_dict = db.collection(u'Users').document(uinfo).get().to_dict() if user_dict['Designation'] != 'Faculty' and 'isAdmin' not in user_dict: return HttpResponse("You are not authorized") new_notice = { 'title': request.POST.get('title'), 'text': request.POST.get('text'), 'author': user_dict['FullName'], 'created': datetime.datetime.now(), } notices_dict = db.collection(u'Homepage').document( u'NoticeBoard').get().to_dict() notices_dict['AllNotices'].append(new_notice) print(notices_dict) db.collection(u'Homepage').document(u'NoticeBoard').set(notices_dict) return HttpResponseRedirect("/home/noticeboard/") return HttpResponseRedirect(reverse('home:home'))
def ViewCourseMaterial(request, cinfo): Designation = getDesig(request, cinfo) if Designation == "UnRegStu": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() # Designation = user_dict['Designation'] course_data = db.collection(u'Courses').document(cinfo).get().to_dict() course_data = db.collection(u'Courses').document(cinfo).get().to_dict() if not 'CourseMaterial' in course_data: CMaterials = [] else: CMaterials = course_data['CourseMaterial'] context['CMaterials'] = CMaterials context['CourseInfo'] = cinfo context['Designation'] = Designation # { # 'CMaterials': CMaterials, # 'CourseInfo': cinfo # } return render(request, 'course/viewcoursematerial.html', context)
def StoreCMinDb(request, cinfo): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] if request.method == 'POST': course_data = db.collection(u'Courses').document(cinfo).get().to_dict() newcm = {} newcm['Name'] = request.POST.get('filename') newcm['Url'] = request.POST.get('cmurl') if not 'CourseMaterial' in course_data: cm_array = [newcm] db.collection(u'Courses').document(cinfo).update( {u'CourseMaterial': cm_array}) else: cm_array = course_data['CourseMaterial'] cm_array.append(newcm) db.collection(u'Courses').document(cinfo).update( {u'CourseMaterial': cm_array}) # print(newcm) # print(cm_array) return HttpResponseRedirect( reverse('course:view_course_material', kwargs={'cinfo': cinfo})) else: return HttpResponseRedirect( reverse('course:view_course_material', kwargs={'cinfo': cinfo}))
def AddAssgn(request, cinfo): Designation = getDesig(request, cinfo) if Designation != "Faculty" and Designation != "TA": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] context['CourseInfo'] = cinfo if request.method == 'POST': ref_prof = db.collection(u'Users').document(username) nxtID = len( list( db.collection(u'Courses').document(cinfo).collection( u'Assignments').get())) + 1 nextAssID = "AS{}".format(nxtID) data = { u'About': request.POST.get("About", ""), u'AssignmentID': nextAssID, u'Deadline': request.POST.get("Deadline", ""), u'Name': request.POST.get("Name", ""), } # aid = request.POST.get("AssignmentID", "") db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(nextAssID).set(data) return HttpResponseRedirect( reverse('course:view_course', kwargs={'cinfo': cinfo})) return render(request, 'course/addassgnform.html', context)
def dashboard(request): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() Designation = user_dict['Designation'] if Designation == "Faculty": ProfCourseList = user_dict['ProfCourseList'] CourseDetails = [] for course in ProfCourseList: CourseDetails.append(course.get().to_dict()) print(course.get()) context['CourseDetails'] = CourseDetails return render(request, 'course/main_page.html', context) elif Designation == "Student": if not 'CourseList' in user_dict: StudCourseList = [] else: StudCourseList = user_dict['CourseList'] # print(StudCourseList) RegisteredCourses = [] TotalCourses = [] TotalCourses1 = [] for course in StudCourseList: RegisteredCourses.append(course['CourseID'].get().to_dict()) Courses = db.collection(u'Courses').get() for course in Courses: TotalCourses1.append(course.to_dict()) TACoursesL = [] try: TACoursesList = db.collection(u'Users').document( username).get().to_dict()['CoursesListAsTA'] for TA in TACoursesList: TACoursesL.append(TA.get().to_dict()) except: pass for course in TotalCourses1: if course not in RegisteredCourses and course not in TACoursesL: TotalCourses.append(course) context['RegisteredCourses'] = RegisteredCourses context['TotalCourses'] = TotalCourses context['TACoursesList'] = TACoursesL return render(request, 'course/main_page_stud.html', context)
def projectView(request, pinfo): project_ref = db.collection(u'Projects').document(pinfo).get() project_dict = project_ref.to_dict() context = {'Project': project_dict} context = loginFLOW(request, context) context['CreatorName'] = project_dict['Creator'].get().to_dict( )['FullName'] return render(request, 'home/viewProject.html', context)
def add_event(request, CourseID): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] page_token = None while True: calendar_list = service.calendarList().list( pageToken=page_token).execute() for calendar_list_entry in calendar_list['items']: if calendar_list_entry['summary'] == CourseID: CalendarID = calendar_list_entry['id'] page_token = calendar_list.get('nextPageToken') if not page_token: break if request.method == 'POST': Summary = request.POST['Summary'] Location = request.POST['Location'] Description = request.POST['Description'] StartDate = request.POST['Start'] EndDate = request.POST['End'] event = { 'summary': Summary, 'location': Location, 'description': Description, 'start': { 'dateTime': StartDate + 'T00:00:00+0530', 'timeZone': 'America/Los_Angeles', }, 'end': { 'dateTime': EndDate + 'T23:59:59+0530', 'timeZone': 'America/Los_Angeles', }, 'visibility': 'public', } event = service.events().insert(calendarId=CalendarID, body=event).execute() return redirect('/discussion/courses/' + CourseID + '/events') elif request.method == 'GET': events_result = service.events().list(calendarId=CalendarID, singleEvents=True, orderBy='startTime').execute() events = events_result.get('items', []) context['events'] = events context['CourseID'] = CourseID context['CalendarID'] = CalendarID dateToday = datetime.today().strftime('%Y-%m-%d') context['dateToday'] = dateToday return render(request, 'discussion/add_event.html', context)
def home(request): redirect_uri = request.build_absolute_uri(reverse('home:gettoken')) sign_in_url = get_signin_url(redirect_uri) data = db.collection(u'Homepage').document("homepage").get().to_dict() pics = db.collection(u'Homepage').document("HomeImages").get().to_dict() pics_list = [i for i in enumerate(pics['Image'])] context = {'sign_in_url': sign_in_url, 'data': data, 'pics': pics_list} context = loginFLOW(request, context) return render(request, 'home/home.html', context)
def projects(request): context = {} projects = db.collection(u'Projects').get() project_list = [] for x in projects: project = x.to_dict() project['id'] = x.id project_list.append(project) context['projects'] = project_list context = loginFLOW(request, context) return render(request, 'home/projects.html', context)
def Add_Grade(request, cinfo, aid, gid): Designation = getDesig(request, cinfo) if Designation != "Faculty" and Designation != "TA": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] context['Designation'] = Designation group_ref = db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(aid).collection(u'Groups').document(gid) group_data = group_ref.get().to_dict()['StudentList'] if request.method == "POST": for user in group_data: Igrade = user['Grade'] user['Grade'] = int( request.POST.get( user['StudentID'].get().to_dict()['username'])) user_ref = user['StudentID'] Course_Data = db.collection(u'Courses').document( cinfo).get().to_dict()['StudentList'] for users in Course_Data: if users['StudentID'] == user['StudentID']: users['Grade'] = users['Grade'] + user['Grade'] - Igrade data = {u'StudentList': Course_Data} db.collection(u'Courses').document(cinfo).update(data) data_main = {u'StudentList': group_data} db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(aid).collection(u'Groups').document( gid).update(data_main) return HttpResponseRedirect(reverse('course:dashboard')) else: user_list = [] for user in group_data: user_list.append(user['StudentID'].get().to_dict()) context['user_list'] = user_list context['cinfo'] = cinfo context['aid'] = aid context['gid'] = gid # { # 'user_list': user_list, # 'cinfo': cinfo, # 'aid': aid, # 'gid': gid # } return render(request, 'course/addgrade.html', context)
def create_calendar(request, CourseID): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] calendar = {'summary': CourseID, 'timeZone': 'America/Los_Angeles'} created_calendar = service.calendars().insert(body=calendar).execute() print(created_calendar['id']) return redirect('/discussion/courses/' + CourseID + '/;')
def addNotice(request, uinfo): context = {} context = loginFLOW(request, context) if context['username'] != uinfo: return HttpResponse("You are not authorized") user_dict = db.collection(u'Users').document(uinfo).get().to_dict() if 'isAdmin' in user_dict: context['isAdmin'] = "True" else: context['isAdmin'] = "False" context['Designation'] = user_dict['Designation'] return render(request, 'home/addnotice.html', context)
def UpdateGroup(request, cinfo, aid, gid): Designation = getDesig(request, cinfo) if Designation != "Faculty": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) context['cinfo'] = cinfo context['aid'] = aid context['gid'] = gid context['Designation'] = Designation username = context['username'] if request.method == 'POST': # ref_prof = db.collection(u'Users').document(username) data = { u'ProjectTitle': request.POST.get("ProjectTitle", ""), u'ProblemStatement': request.POST.get("ProblemStatement", "") } print(data) db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(aid).collection(u'Groups').document( gid).update(data) group_ref = db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(aid).collection(u'Groups').document( gid).get() GroupDetails = group_ref.to_dict() studs = GroupDetails['StudentList'] StudentDetails = [] for stud in studs: StudentDetails.append(stud['StudentID'].get().to_dict()) context['cinfo'] = cinfo context['aid'] = aid context['gid'] = gid context['GroupDetails'] = GroupDetails context['StudentDetails'] = StudentDetails # { # 'cinfo' : cinfo, # 'aid' : aid, # 'GroupDetails' : GroupDetails, # 'StudentDetails' : StudentDetails, # } return render(request, 'course/viewgroup.html', context) return render(request, 'course/updategroupform.html', context)
def editContact(request, uinfo): context = {} loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(context['sign_in_url']) elif context['username'] != uinfo: return HttpResponse('You are not authorized') user_dict = db.collection(u'Users').document( context['username']).get().to_dict() contact_dict = db.collection(u'Homepage').document( u'contactUs').get().to_dict() if 'isAdmin' in user_dict: context["isAdmin"] = "True" else: context["isAdmin"] = "False" context["Designation"] = user_dict['Designation'] if context['isAdmin'] == "False": return HttpResponse('Sorry, you do not have authorization rights') context['Contact'] = contact_dict return render(request, "home/editcontact.html", context)
def projectDelete(request, pinfo): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponse("You are not logged in") project_dict = db.collection(u'Projects').document(pinfo).get().to_dict() user = project_dict['Creator'].get() if context['username'] != user.id: return HttpResponse("You are not authorized.") db.collection(u'Projects').document(pinfo).delete() return HttpResponseRedirect("/users/" + user.id + "/")
def ViewAssgn(request, cinfo, aid): Designation = getDesig(request, cinfo) print(Designation) if Designation == "UnRegStu": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() user_ref = db.collection(u'Users').document(username).get() user_dict = user_ref.to_dict() # Designation = user_dict['Designation'] group_ref = db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(aid).collection(u'Groups').get() GroupDetails = [] for group in group_ref: GroupDetails.append(group.to_dict()) context['GroupDetails'] = GroupDetails context['cinfo'] = cinfo context['aid'] = aid context['Designation'] = Designation # { # 'GroupDetails': GroupDetails, # 'cinfo': cinfo, # 'aid': aid, # } MyGroupList = [] if Designation == 'Student': for group in GroupDetails: studs = group['StudentList'] for stud in studs: if stud['StudentID'] == db.collection(u'Users').document( username): MyGroupList.append(group) else: MyGroupList = GroupDetails context['MyGroupList'] = MyGroupList return render(request, 'course/viewassgn.html', context)
def faculty(request): user_ref = db.collection(u'Users').get() user_list = [] count = 0 counter_list = [] for user in user_ref: user_dict = user.to_dict() if user_dict["Designation"] == 'Faculty': user_list.append(user.to_dict()) counter_list.append(count % 3) count += 1 uc_list = zip(user_list, counter_list) context = {'uc_list': uc_list} context = loginFLOW(request, context) return render(request, 'home/people.html', context)
def AddCourseMaterial(request, cinfo): Designation = getDesig(request, cinfo) if Designation != "Faculty" and Designation != "TA": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] context = { 'CourseInfo': cinfo, } return render(request, 'course/addcoursematerial.html', context)
def projectEdit(request, pinfo): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponse("You are not logged in") project_dict = db.collection(u'Projects').document(pinfo).get().to_dict() user = project_dict['Creator'].get() if context['username'] != user.id: return HttpResponse("You are not authorized.") context['project'] = project_dict return render(request, "home/editproject.html", context)
def RandomGroups(request, cinfo, aid): Designation = getDesig(request, cinfo) if Designation != "Faculty" and Designation != "TA": return HttpResponse(status=511) context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] context['Designation'] = Designation context['aid'] = aid if request.method == 'GET': context['cinfo'] = cinfo return render(request, 'course/random_groups.html', context) elif request.method == 'POST': NumGroups = request.POST['NumGroups'] NumGroups = int(NumGroups) StudList = db.collection(u'Courses').document( cinfo).get().to_dict()['StudentList'] random.shuffle(StudList) GroupList = [] for i in range(NumGroups): GroupList.append([]) for i in range(len(StudList)): GroupList[i % NumGroups].append(StudList[i]) print(GroupList) for i in range(len(GroupList)): if len(GroupList[i]) > 0: data = { u'GroupID': 'GID_' + str(i + 1), u'ProblemStatement': '', u'ProjectTitle': '', u'StudentList': GroupList[i], } db.collection(u'Courses').document(cinfo).collection( u'Assignments').document(aid).collection( u'Groups').document('GID_' + str(i + 1)).set(data) return redirect('/courses/' + cinfo + '/assignments/' + aid)
def group(request, CourseID, AssignmentID, GroupID): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] context['GroupID_json'] = mark_safe(json.dumps(GroupID)) context['CourseID_json'] = mark_safe(json.dumps(CourseID)) context['AssignmentID_json'] = mark_safe(json.dumps(AssignmentID)) # return render(request, 'discussion/group.html', { # 'GroupID_json' : mark_safe(json.dumps(GroupID)), # 'CourseID_json' : mark_safe(json.dumps(CourseID)), # 'AssignmentID_json' : mark_safe(json.dumps(AssignmentID)), # }) return render(request, 'discussion/group.html', context)
def delete_event(request, CourseID, EventID): context = {} context = loginFLOW(request, context) if context['username'] == '': return HttpResponseRedirect(reverse('home:home')) username = context['username'] page_token = None while True: calendar_list = service.calendarList().list( pageToken=page_token).execute() for calendar_list_entry in calendar_list['items']: if calendar_list_entry['summary'] == CourseID: CalendarID = calendar_list_entry['id'] page_token = calendar_list.get('nextPageToken') if not page_token: break service.events().delete(calendarId=CalendarID, eventId=EventID).execute() return redirect('/discussion/courses/' + CourseID + '/events')