Esempio n. 1
0
    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))
Esempio n. 2
0
 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
Esempio n. 3
0
 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))
Esempio n. 4
0
 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))
Esempio n. 5
0
    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))
Esempio n. 6
0
 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))
Esempio n. 7
0
 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))
Esempio n. 8
0
 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))
Esempio n. 9
0
 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))
Esempio n. 10
0
 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))
Esempio n. 11
0
 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))
Esempio n. 12
0
 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