def get(self): projects = get_account().projects_posted posted_projects = [] for project_id in projects: project = Project.get_by_id(project_id) project_open = "open" frmtd_end_date = project.end_date if frmtd_end_date is not None: frmtd_end_date = frmtd_end_date.strftime('%b %d, %Y') if project.winner is not None: project_open = "closed(Winner selected)" newProjectJSON = { 'projectid': project_id, 'projectname': project.name, 'bidders': project.bidders, 'winner': project.winner, 'price': project.price, 'bidcount': len(project.bidders), 'enddate': frmtd_end_date, 'additionalstatus': project_open, 'complete': project.complete } posted_projects.append(newProjectJSON) self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(posted_projects))
def convert_to_project_JSON(self, project): account_id = get_account().key.id() frmtd_end_date = project.end_date owner = False if frmtd_end_date is not None: frmtd_end_date = frmtd_end_date.strftime('%b %d, %Y') alreadyBidOn = False if account_id in project.bidders: alreadyBidOn = True if account_id == project.owner: owner = True newProjectJSON = { 'projectid': project.key.id(), 'projectname': project.name, 'bidders': project.bidders, 'winner': project.winner, 'price': project.price, 'bidcount': len(project.bidders), 'enddate': frmtd_end_date, 'complete': project.complete, 'alreadyBidOn': alreadyBidOn, 'owner': owner } print newProjectJSON return newProjectJSON
def get(self, moduleID, title, institution, teachDate, instructors, description): account = get_account() if account: newCourse = dict() newCourse["CourseURL"] = urlparse.unquote( self.request.get('courseURL')) newCourse["Title"] = title newCourse["Institution"] = institution newCourse["TeachingDate"] = teachDate newCourse["Instructors"] = instructors newCourse["Description"] = description newCourse["DownloadPageLink"] = urlparse.unquote( self.request.get('materials')) newCourse["scoreRanking"] = 1 moduleID = int(moduleID) match = Module.query(Module.category == moduleID).fetch() match = match[0] moduleCourses = match.courses newCourse['ID'] = len(moduleCourses) moduleCourses.append(newCourse) match.courses = moduleCourses match.courses = sorted( match.courses, key=lambda k: k['scoreRanking'], reverse=True) match.put() response = {'success': 'Course submitted successfully.'} else: response = {'error': 'You are not logged in. '} self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get(self): account = get_account() placed_bids_ids = account.projects_bidded_on placed_bids = [] for i in placed_bids_ids: project_id = int(i) project = Project.get_by_id(project_id) project_open = "open" frmtd_end_date = project.end_date winner_email = None if frmtd_end_date is not None: frmtd_end_date = frmtd_end_date.strftime('%b %d, %Y') if project.winner is not None: project_open = "Closed (Winner selected)" winner_account = Account.get_by_id(int(project.winner)) if winner_account: winner_email = winner_account.guser.email() projectJSON = { 'projectid': project_id, 'projectname': project.name, 'bidders': project.bidders, 'winner': project.winner, 'winner_email': winner_email, 'price': project.price, 'bidcount': len(project.bidders), 'enddate': frmtd_end_date, 'additionalstatus': project_open, 'complete': project.complete } placed_bids.append(projectJSON) self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(placed_bids))
def get(self, project_id): project_id = int(project_id) project = Project.get_by_id(project_id) account = get_account() projects_posted = account.projects_posted is_owner = False if project_id in projects_posted: is_owner = True if project.winner == None: bidders = project.bidders bidders_expanded = [] for bidder_id in bidders: bidder = Account.get_by_id(bidder_id).guser.email() bidders_expanded.append({ 'id': bidder_id, 'email': bidder, 'is_owner': is_owner }) response = bidders_expanded else: response = {'winner': project.winner} self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get(self): account = get_account() if account: courseVoteList = dict(account.courses_voted) response = { 'success': 'Votes retrieved successfully.', 'voteList': courseVoteList} else: response = {'error': 'You are not logged in. '} self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get(self, projectname, projectdesc, jobtypecsv, budgetoption, duration): user_id = get_account().key.id() end_date = datetime.datetime.now() end_date = end_date + datetime.timedelta(days=int(duration)) project = Project( name=projectname, price=budgetoption, description=projectdesc, job_type=jobtypecsv, end_date=end_date, owner=user_id ) project.put() # do error checking on puts later account = get_account() account.projects_posted.append(project.key.id()) account.put() if account == None: response = 'No logged in account.' else: response = 'Logged in account found. Project Posted' account.projects_posted.append(project) self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get(self, project_id): project_id = int(project_id) project = Project.get_by_id(project_id) if project: account = get_account() # must do redirect for session checks account_id = int(account.key.id()) if account_id not in project.bidders: project.bidders.append(account_id) project.put() account.projects_bidded_on.append(project_id) account.put() response = 'Success' else: response = 'Bidder already added.' else: response = {'error': 'No project of given id.'} self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get(self, subject_text, message_text, to_email): user = users.User(to_email) accounts = Account.query(Account.guser == user).fetch() if len(accounts) > 0: account_to = accounts[0] touserid = account_to.key.id() fromuserid = get_account().key.id() message = Message( fromuserid=fromuserid, touserid=touserid, subject=subject_text, message=message_text, datetime=datetime.datetime.now() ) message.put() response = {'response': 'success!'} else: response = {'error': 'the email does not exist'} self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get(self): userid = get_account().key.id() # inbox messages inboxMessages = Message.query(Message.touserid == userid).fetch() inboxMessages = sorted( inboxMessages, key=lambda inboxMessage: inboxMessage.datetime ) inbox_messages_out = [] for im in inboxMessages: fromuseremail = Account.get_by_id(im.fromuserid).guser.email() im_out = { 'fromuseremail': fromuseremail, 'subject': im.subject, 'message': im.message, 'datetime': im.datetime.strftime("%Y-%m-%d %H:%M:%S") } inbox_messages_out.append(im_out) # sent messages sentMessages = Message.query(Message.fromuserid == userid).fetch() sentMessages = sorted( sentMessages, key=lambda sentMessage: sentMessage.datetime ) sent_messages_out = [] for sm in sentMessages: touseremail = Account.get_by_id(sm.touserid).guser.email() sm_out = { 'touseremail': touseremail, 'subject': sm.subject, 'message': sm.message, 'datetime': sm.datetime.strftime("%Y-%m-%d %H:%M:%S") } sent_messages_out.append(sm_out) messages = { 'inbox_messages': inbox_messages_out, 'sent_messages': sent_messages_out } self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(messages))
def get(self, moduleID, courseID): courseID = int(courseID) account = get_account() if account: courseVoteList = dict(account.courses_voted) idPair = moduleID + "+" + str(courseID) if idPair not in courseVoteList.keys() or courseVoteList[idPair] == 'Y': case = "votedYes" if idPair not in courseVoteList.keys(): case = "notVoted" courseVoteList[idPair] = 'N' account.courses_voted = courseVoteList.items() account.put() moduleID = int(moduleID) match = Module.query(Module.category == moduleID).fetch() match = match[0] moduleCourses = match.courses newScore = 0 for course in moduleCourses: if course: if course['ID'] == courseID: if case == "notVoted": course["scoreRanking"] = course[ "scoreRanking"] - 1 else: course["scoreRanking"] = course[ "scoreRanking"] - 2 newScore = course["scoreRanking"] match.courses = moduleCourses match.courses = sorted( match.courses, key=lambda k: k['scoreRanking'], reverse=True) match.put() response = { 'success': 'Vote submitted successfully.', 'newScore': newScore} else: response = {'error': 'No.'} else: response = {'error': 'You are not logged in. '} self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(response))
def get_info(self, module_id): module_id = int(module_id) module = Module.get_by_id(module_id) votedCourses = {} account = get_account() if account: votedCourses = account.courses_voted votedCourses = dict(votedCourses) newJobsJSON = [] jobs = Project.query(Project.job_type == module.name).fetch() for job in jobs: newProject = self.convert_to_project_JSON(job) newJobsJSON.append(newProject) info = { 'name': module.name, 'youtube': module.youtube, 'yt_type': module.yt_type, 'courses': module.courses, 'category': module.category, 'jobs': newJobsJSON, 'votedCourses': votedCourses } return info