def userFavoriteNotification(username, postId, postType): if postType == "Seller": postItem = post.getPost(postId, postType) poster = postItem['sellerName'] title = postItem['title'] if postType == 'Buyer': postItem = post.getPost(postId, postType) poster = postItem['buyerName'] title = postItem['title'] msg = username + " has added your post " + title + " with Id " + str( postId) + " to favorite list." sendMessage(sender="system", receiver=poster, content=msg)
def newCommentNotification(postId, postType): if postType == "Seller": postItem = post.getPost(postId, postType) poster = postItem['sellerName'] title = postItem['title'] if postType == 'Buyer': postItem = post.getPost(postId, postType) poster = postItem['buyerName'] title = postItem['title'] msg = "Your " + postType + " post " + title + " with Id " + str( postId) + " has a new comment." sendMessage(sender="system", receiver=poster, content=msg)
def submitNewApplication(request): success = False applicantUsername = request.POST.get("applicant") postID = request.POST.get("postID") if applicantUsername and postID: try: applicant = models.UserAccount.objects.get( username=applicantUsername) except models.UserAccount.DoesNotExist: pass else: destPost = post.getPost(postID) if destPost: messageContent = "<a onclick='redirectToUser(\"{0}\");'>{1}</a> submitted an application for your post <a onclick='redirectToPost(\"{2}\");'>{3}</a>.".format( applicantUsername, applicant.cleanName, postID, destPost.title) if request.POST.get("content"): messageContent = messageContent + "\n\n{0} added this message:\n{1}".format( applicant.firstName, request.POST.get("content")) if applicant.resume: messageContent = messageContent + "\n\nView {0}'s <a onclick='redirectToUser(\"{1}\");'>profile</a>, or go straight to the <a href='/media/{2}'>resume</a>.".format( applicant.firstName, applicantUsername, applicant.resume) success = _sendMessage(applicantUsername, destPost.poster, messageContent, application=True) return JsonResponse({"success": success})
def _uploadTempPictureToPostDatabase(request): success = False tempPicture = None tempPictureURL = None postInstance = post.getPost(request.POST.get("postID")) if postInstance: tempPostPictureID = request.POST.get("tempPostPictureID") if tempPostPictureID: try: tempPicture = models.TempPostPicture.objects.get( tempID=tempPostPictureID) except models.TempPostPicture: pass else: postData = _getPostPictureRequestData(request) if tempPicture and tempPicture.postPicture and postData: tempPictureURL = str(tempPicture.postPicture.url) postInstance.postPicture = tempPicture.postPicture postInstance.save() success = helpers.savePostPictureInDatabase( request, "postPicture", postInstance, postData.get("cropInfo", {}), postData.get("filename")) return { "success": success, "post": postInstance, "tempPictureURL": tempPictureURL }
def test_getPost(): for boardName in board.getBoards(): l = boardDIR.getPostsList(boardName) for thePost in l: filename = thePost["filename"] content = post.getPost(boardName, filename) assert type(content) == str
def buyOrder(): if not loggedIn(): return render_template('login.html', error='Please login first') postId = int(request.args['postId']) postData = post.getPost(postId, "Seller") if postData == None: return render_template('notFound.html'), 404 return render_template("order.html", item=postData)
def test_getPost(): for boardName in board.getBoards(): l = boardDIR.getPostsList( boardName ) for thePost in l: filename = thePost["filename"] content = post.getPost(boardName,filename) assert type(content) == str
def getPostData(): if not loggedIn(): return json.dumps("not logged in") postType = str(request.form['postType']) postId = int(request.form['postId']) postData = post.getPost(postId, postType) role = postType.lower() + "Name" if postData[role] != session['username']: return json.dumps("error") postData['postType'] = postType return json.dumps(postData)
def editPost(): if not loggedIn(): return render_template('login.html', error='Please login first') postType = str(request.args['postType']) postId = int(request.args['postId']) postData = post.getPost(postId, postType) role = postType.lower() + "Name" if postData[role] != session['username']: return render_template('notFound.html'), 404 postData['postType'] = postType return render_template("editpost.html", post=postData)
def adminPosts(self): if self._adminPosts is None: self._adminPosts = [] postIDs = [ x.postID for x in PostAdmin.objects.filter(username=self.username) ] for postID in postIDs: adminPost = post.getPost(postID) if adminPost: self._adminPosts.append(adminPost) return self._adminPosts
def followedPosts(self): if self._followedPosts is None: self._followedPosts = [] postIDs = [ x.postID for x in PostFollow.objects.filter(username=self.username) ] if postIDs: for postID in postIDs: followedPost = post.getPost(postID) if followedPost: self._followedPosts.append(followedPost) return self._followedPosts
def editExistingPost(request): postID = request.POST.get("postID") editSuccess = False pictureSuccess = False pictureURL = None removedPicture = False postInstance = None if postID: postObj = post.getPost(postID) if postObj: # Save the text values of the form createPage = constants.CREATE_POST_PAGE_MAP.get(postObj.postType) PostInstanceClass = post.getPostInstanceClass(postID) if PostInstanceClass: postInstance = PostInstanceClass( request=request, postID=postID, projectID=request.POST.get("projectID"), postType=createPage, formSubmitted=True) editSuccess = postInstance.formIsValid() # If there is a temp picture saved, upload it to this post tempPicID = request.POST.get("tempPostPictureID") if tempPicID: newPicData = _uploadTempPictureToPostDatabase(request) pictureSuccess = newPicData.get("success") postObj = newPicData.get("post") pictureURL = newPicData.get("tempPictureURL") else: if request.POST.get("removePostPicture") in [ True, "True", "true" ]: deletePostPicture(request) removedPicture = True pictureSuccess = True # If no temp picture saved, return the existing pic path if not pictureURL: pictureURL = postObj and postObj.postPicture and str( postObj.postPicture.url) or None return JsonResponse({ "success": editSuccess and pictureSuccess, "pictureURL": pictureURL, "postID": postID, "removedPicture": removedPicture, "errors": postInstance and postInstance.formErrors })
def getOrderByUser(username): orders = [] for order in Order.query.filter_by(sellerName=username).all(): order = from_sql(order) order['type'] = 'selling' orders.append(order) for order in Order.query.filter_by(buyerName=username).all(): order = from_sql(order) order['type'] = 'buying' orders.append(order) for order in orders: post = getPost(order['postId'], 'Seller') order['product'] = post['title'] order['price'] = post['price'] return orders
def getPostData(request): """Return a key:value dict of a single post, postID should be passed in request""" postID = request.POST.get("postID") success = False dataDict = {} if (postID): postObj = post.getPost(postID) if postObj: for key in postObj.__dict__: # Skip hidden attributes if not key.startswith("_"): dataDict[key] = postObj.__dict__[key] if postObj.postPicture: dataDict["postPicture"] = postObj.postPicture and str( postObj.postPicture.url) success = True # Get participants participants = models.PostParticipant.objects.filter(postID=postID) participantList = [] if participants: for part in participants: try: user = models.UserAccount.objects.get( username=part.username) except models.UserAccount.DoesNotExist: continue else: newPart = { "username": part.username, "status": part.status, "publicParticipation": part.publicParticipation, "profilePictureURL": user.profilePicture and user.profilePicture.url or constants.NO_PROFILE_PICTURE_PATH, "cleanName": user.cleanName, "profession": user.mainProfession } participantList.append(newPart) if participantList: dataDict["participants"] = participantList return JsonResponse({"success": success, "postData": dataDict})
def getPost(postId, flag): if not loggedIn(): return render_template('login.html', error='Please login first') isSeller = flag == "Seller" isBuyer = flag == "Buyer" postData = post.getPost(postId, flag) if isSeller and not postData["valid"]: return redirect('/') postData["favorite"] = account.searchFavorite(session['username'], postId, flag) if postData == None: if isSeller: return redirect('/NewSellerPost') if isBuyer: return redirect('/NewBuyerPost') return render_template("postdetail.html", seller=isSeller, buyer=isBuyer, post=postData, username=session['username'])
def _getPostPictureRequestData(request): data = {} postID = request.POST.get("postID") if postID: postType = request.POST.get("postType") if not postType: postObj = post.getPost(postID) if postObj: postType = postObj.postType data = { "postID": postID, "database": post.getPostDatabase(postID), "filename": constants.MEDIA_FILE_NAME_MAP.get(postType, "tempfile_{0}").format(postID), "cropInfo": _getCropInfo(request), } if None in data["cropInfo"].values(): data["cropInfo"] = {} return data
def _postDoesExist(postID): if post.getPost(postID): return True return False
def projects(self): """ Returns a dict of all projects the user is associated with. Searches project participants, project sub-post participants, casting post actorNames, and work post workerNames. """ if self._projects is None: self._projects = {} # Search post participants to find participating projects participants = PostParticipant.objects.filter( username=self.username) for part in participants: newProjectID = part.postID labels = [] # If participant post is not a project (ie is casting or work), check if there is a project associated if not post.isProjectPost(part.postID): userPost = post.getPost(part.postID) if hasattr(userPost, "projectID") and userPost.projectID: newProjectID = userPost.projectID if post.isCastingPost(part.postID): labels.append({ "label": userPost.characterType, "extra": userPost.characterName }) elif post.isWorkPost(part.postID): labels.append({"label": userPost.profession}) else: labels.append({"label": part.status}) if newProjectID in self._projects: self._projects[newProjectID]["labels"] += labels else: self._projects[newProjectID] = { "labels": labels, "display": part.publicParticipation } roles = CastingPost.objects.filter(actorName=self.username) for role in roles: if role.projectID: newLabelAddition = { "label": role.characterType, "extra": role.characterName } if role.projectID in self._projects: """if any(newLabelAddition["label"] == x["label"] for x in self._projects[role.projectID]["labels"]): # self._projects[role.projectID]["labels"].append(newLabelAddition) print "adding {0}".format(newLabelAddition) #self._projects[role.projectID]["labels"].append(newLabelAddition)""" else: self._projects[role.projectID] = { "labels": [newLabelAddition], "display": True } jobs = WorkPost.objects.filter(workerName=self.username) for job in jobs: if job.projectID: if job.projectID in self._projects: self._projects[job.projectID]["labels"].append( {"label": job.profession}) else: self._projects[job.projectID] = { "labels": [{ "label": job.profession }], "display": True } unregProjects = UnregisteredProject.objects.filter( poster=self.username) for project in unregProjects: self._projects[project.postID] = { "labels": [{ "label": project.profession }], "display": True } removeProjectIDList = [] for projectID in self._projects: pictureURL = None registeredProject = False try: currentProject = ProjectPost.objects.get(postID=projectID) pictureURL = currentProject.postPicture and currentProject.postPicture.url or constants.NO_PICTURE_PATH registeredProject = True except ProjectPost.DoesNotExist: try: currentProject = UnregisteredProject.objects.get( postID=projectID) pictureURL = constants.NO_PICTURE_PATH except UnregisteredProject.DoesNotExist: removeProjectIDList.append(projectID) continue self._projects[projectID]["name"] = currentProject.title self._projects[projectID]["year"] = currentProject.year self._projects[projectID]["postPictureURL"] = pictureURL self._projects[projectID]["status"] = currentProject.status self._projects[projectID][ "projectType"] = currentProject.projectType self._projects[projectID]["projectID"] = projectID self._projects[projectID]["registered"] = registeredProject if removeProjectIDList: for projectID in removeProjectIDList: del self._projects[projectID] return self._projects