Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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})
Exemple #4
0
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
    }
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
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
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
 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
Exemple #11
0
 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
Exemple #12
0
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
    })
Exemple #13
0
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
Exemple #14
0
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})
Exemple #15
0
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'])
Exemple #16
0
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
Exemple #17
0
def _postDoesExist(postID):
    if post.getPost(postID):
        return True
    return False
Exemple #18
0
    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