def aspireSeater(sid): seater = SeaterModel.getSeater(sid) if ProjectModel.isProjectAdmin(getCurrentUid(), seater["pid"]): SeaterModel.assignUser(getCurrentUid(), sid) else: SeaterModel.aspireSeater(getCurrentUid(), sid) return json.dumps({"result": "success"})
def removeSeater(sid): seater = SeaterModel.getSeater(sid) if seater != None: if ProjectModel.isProjectAdmin(getCurrentUid(), seater["pid"]): SeaterModel.removeSeater(sid) return json.dumps({"result": "success"}) else: return render_template("private-api/forbidden-request.html") return render_template("private-api/unknown-request.html")
def assignUser(sid, uid): seater = SeaterModel.getSeater(sid) if seater != None: if ProjectModel.isProjectAdmin(getCurrentUid(), seater["pid"]): if SeaterModel.isThereSeaterAspiration(uid, sid): SeaterModel.assignUser(uid, sid) return json.dumps({"result": "success"}) else: return render_template("private-api/forbidden-request.html") return render_template("private-api/unknown-request.html")
def dismissUserFromSeater(sid): seater = SeaterModel.getSeater(sid) if seater != None: if ProjectModel.isProjectAdmin(getCurrentUid(), seater["pid"]) or (seater["uid"] == getCurrentUid()): SeaterModel.dismissUser(sid) SeaterModel.cancelAspirationToTheSeater(seater["uid"], sid) return json.dumps({"result": "success"}) else: return render_template("private-api/forbidden-request.html") return render_template("private-api/unknown-request.html")
def projectPage(projectName): currentUser = getCurrentUser() project = ProjectModel.getProjectByProjectName(projectName) if project == None: return render_template( "not-found.html", title = "Project Not Found!", msg = "The project you trying to access not found!", currentUser = getCurrentUser() ) projectLinks = ProjectModel.getProjectLinks(project["pid"]) lastProjectPosts = ProjectPostModel.getLastProjectPosts(project["pid"], 10, getCurrentUid()) numberOfMembers = ProjectModel.getNumberOfMembers(project["pid"]) numberOfEmptySeaters = SeaterModel.getProjectEmptySeaterNumber(project["pid"]) popularProjects = ProjectModel.getPopularProjects(10) whoToFollowList = UserModel.getWhoToFollowList(5, getCurrentUid()) return render_template( "project-page.html", currentUser = currentUser, project = project, projectLinks = projectLinks, lastProjectPosts = lastProjectPosts, numberOfMembers = numberOfMembers, numberOfEmptySeaters = numberOfEmptySeaters, popularProjects = popularProjects, whoToFollowList = whoToFollowList )
def saveSeater(pid): if ProjectModel.isProjectAdmin(getCurrentUid(), pid): seater = json.loads(request.data) seater["pid"] = pid if request.method == "POST": # Create seater sid = SeaterModel.createSeater(pid, seater) #Add skills for skill in seater["skills"]: SkillModel.addSeaterSkill(sid, skill) return json.dumps({"result": "success", "sid": sid}) else: # Update seater SeaterModel.updateSeater(seater["sid"], seater) # Get current skills currentSkills = [ i["name"] for i in SkillModel.getSeaterSkills(seater["sid"]) ] skillsToDelete = set(currentSkills).difference( set(seater["skills"])) skillToAdd = set(seater["skills"]).difference(set(currentSkills)) # Delete skills for skill in skillsToDelete: skill.strip() if skill != None and skill != "": SkillModel.removeSeaterSkill(seater["sid"], skill) # Add skills for skill in skillToAdd: skill.strip() if skill != None and skill != "": SkillModel.addSeaterSkill(seater["sid"], skill) return json.dumps({"result": "success"}) return render_template("private-api/forbidden-request.html")
def seaterPage(projectName, sid): project = ProjectModel.getProjectByProjectName(projectName) seater = SeaterModel.getSeater(sid, getCurrentUid()) seater["skills"] = SkillModel.getSeaterSkills(sid) assignedUser = UserModel.getUser(seater["uid"]) seater["isProjectAdmin"] = ProjectModel.isProjectAdmin(getCurrentUid(), project["pid"]) return render_template( "seater-page.html", currentUser= getCurrentUser(), seater = seater, assignedUser = assignedUser )
def seaterSkills(): if request.method == "GET": #Get seater skills sid = request.args.get("sid") if sid != None: skills = SkillModel.getUserSkills(getCurrentUid) return json.dumps(skills, cls=DateTimeEncoder) return render_template("private-api/unknown-request.html") elif request.method == "POST" and isLoggedIn(): #Add seater skill sid = request.args.get("sid") skill = request.args.get("skill") pid = SeaterModel.getSeater(sid)["pid"] if ProjectModel.isProjectAdmin(getCurrentUid(), pid): if skill != None: SkillModel.addSeaterSkill(sid, skill) return json.dumps({"result": "success"}) else: #Delete a user skill skid = request.args.get("skid") if skid != None and isLoggedIn(): skill = SkillModel.getUserSkill(skid) if skill["uid"] == getCurrentUid(): SkillModel.removeUserSkill(skid) return json.dumps({"result": "success"}) else: return render_template("private-api/forbidden-request.html") return render_template("private-api/unknown-request.html")
def seaterAspirationNumber(sid): seater = SeaterModel.getSeater(sid) if ProjectModel.isProjectAdmin(getCurrentUid(), seater["pid"]): number = SeaterModel.getSeaterAspirationNumber(sid) return json.dumps({"number": number}) return render_template("private-api/forbidden-request.html")
def projectFilledSeaters(pid): seaters = SeaterModel.getFilledProjectSeaters(pid) return json.dumps(seaters, cls=DateTimeEncoder)
def cancelSeaterAspiration(sid): if SeaterModel.isThereSeaterAspiration(getCurrentUid(), sid): SeaterModel.cancelAspirationToTheSeater(getCurrentUid(), sid) return json.dumps({"result": "success"}) else: return render_template("private-api/forbidden-request.html")
def seaterAspirations(sid): seater = SeaterModel.getSeater(sid) if ProjectModel.isProjectAdmin(getCurrentUid(), seater["pid"]): aspirations = SeaterModel.getSeaterAspirations(sid) return json.dumps(aspirations, cls=DateTimeEncoder) return render_template("private-api/forbidden-request.html")
def projectEmptySeaterNumber(pid): number = SeaterModel.getEmptyProjectSeaterNumber(pid) return json.dumps({"number": number})
def userSeaters(uid): seaters = SeaterModel.getUserSeaters(uid) return json.dumps(seaters, cls=DateTimeEncoder)
def userSeaterNumber(uid): number = SeaterModel.getUserSeaterNumber(uid) return json.dumps({"number": number})
def projectEmptySeaters(pid): seaters = SeaterModel.getEmptyProjectSeaters(pid) return json.dumps(seaters, cls=DateTimeEncoder)
def getSeater(sid): seater = SeaterModel.getSeater(sid) seater["skills"] = SkillModel.getSeaterSkills(sid) return json.dumps(seater, cls=DateTimeEncoder)