Example #1
0
def main():
    if request.method == 'POST':
        return "error"
    else:
        blogCreated = False
        link = ""
        currentUser = request.cookies.get('userId', "")
        if currentUser == "":
            link = "signup"
        else:
            db = database()
            queryBuilder = query("blog")
            queryString = queryBuilder.selectAllFilter(
                "username='******'".format(username=currentUser))
            result = db.execute(False, queryString)
            db.disconnect()
            if result == []:
                link = "createBlog"
            else:
                for row in result:
                    link = "blogView?blogName={blogName}".format(
                        blogName=row[1])
                blogCreated = True
        viewObject = Main()
        return viewObject.html.format(
            createEditText="EDIT" if blogCreated else "CREATE",
            createEditLink=link)
Example #2
0
def uploadReaction():
    global blogUrlName
    if request.method == 'POST':
        requestData = request.get_json()
        db = database()
        queryBuilder = query("reactions")
        #need to check if user has reacted to that element before; if so, update instead of insert
        queryString = queryBuilder.selectCountFilter(
            "blogName='{blogName}' and attachedToId='{id}' and username='******'"
            .format(blogName=blogUrlName,
                    id=requestData.get("attachedToId"),
                    currentUser=request.cookies.get('userId')))
        result = db.execute(False, queryString)
        if result[0][0] == 0:
            queryString = queryBuilder.insertRow(
                "'{blogName}', '{attachedToId}', '{currentUser}', '{emote}'".
                format(blogName=blogUrlName,
                       attachedToId=requestData.get("attachedToId"),
                       currentUser=request.cookies.get('userId'),
                       emote=requestData.get("emote")))
        else:
            queryString = queryBuilder.update(
                "emote='{emote}'".format(emote=requestData.get("emote")),
                "blogName='{blogName}' and attachedToId='{id}' and username='******'"
                .format(blogName=blogUrlName,
                        id=requestData.get("attachedToId"),
                        currentUser=request.cookies.get('userId')))
        db.execute(True, queryString)
        db.disconnect()
        return str(requestData)
    else:
        db.disconnect()
        return "error"
Example #3
0
def login():
    if request.method == 'POST':
        #if not successful, append error message to page
        db = database()
        queryString = db.buildQuery(
            "users", "selectAllFilter",
            "email='{email}' and pwd='{password}'".format(
                email=request.form.get("email"),
                password=request.form.get("pwd")))
        result = db.execute(False, queryString)
        if result == []:
            errorMessage = """
                <p style="color: red; font-size: 15px; margin: auto;">The email or password was incorrect</p></br>"""
            loginHTML = Login()
            db.disconnect()
            loginHTML.setHTML(errorMessage)
            return loginHTML.getHTML()
        else:
            redirectTo = redirect('/')
            resp = make_response(redirectTo)
            resp.set_cookie('userId', result[0][0])
            db.disconnect()
            return resp
    else:
        loginHTML = Login()
        loginHTML.setHTML("")
        return loginHTML.getHTML()
Example #4
0
    def displayCurrentInfo(self):
        db = database()
        queryString = db.buildQuery("blog", "selectAllFilter", "blogName='{blogName}'".format(blogName=self.blogName))
        result = db.execute(False, queryString)
        if result == []:
            db.disconnect()
            return "error"
        else:
            for row in result:
                queryString = db.buildQuery("comments", "selectCountFilter", "blogName='{blog}'".format(blog=self.blogName))
                numComments = db.execute(False, queryString)
                queryString = db.buildQuery("comments", "selectCountDistinctFilter", "username", "blogName='{blog}'".format(blog=self.blogName))
                distinctNumComments = db.execute(False, queryString)
                queryString = db.buildQuery("reactions", "selectCountFilter", "blogName='{blog}'".format(blog=self.blogName))
                numReactions = db.execute(False, queryString)
                db.disconnect()
                return """
<div id="currentBlog" style="font-weight:bold; margin-left: 30px;">
    </br>
    <label>Blog Name: {blogName}</label></br>
    <label>Owner: {owner}</label></br>
    <label>Number of Comments: {numComments}</label></br>
    <label>Number of Users Commented: {numCommenters}</label></br>
    <label>Number of Reactions: {numReactions}</label></br>
</div>
""".format(blogName=row[1], owner=row[0], numComments=numComments[0][0],
           numCommenters=distinctNumComments[0][0], numReactions=numReactions[0][0])
Example #5
0
def buildBlogContent():
    db = database()
    content = ""
    content += buildElement(db, "posts")
    content += buildElement(db, "images")
    content += buildElement(db, "videos")
    db.disconnect()
    return content
Example #6
0
    def displayBlogs(self):
        results = ""
        db = database()
        queryString = db.buildQuery("blog", "selectAll")
        result = db.execute(False, queryString)
        for row in result:
            results += self.createElement(row)
        return """
<ul class="list-group" style="width: 800px; margin: auto;">
    <input type="text" id="search" placeholder="Search by blog name and hit enter">
    {blogs}
</ul>
""".format(blogs=results)
Example #7
0
def signup():
    if request.method == 'POST':
        db = database()
        queryString = db.buildQuery(
            "users", "insertRow",
            "'{username}', '{email}', '{password}', null".format(
                username=str(request.form.get("username")),
                email=str(request.form.get("email")),
                password=str(request.form.get("pwd"))))
        db.execute(True, queryString)
        db.disconnect()
        return redirect('/login')
    else:
        signupHTML = SignUp()
        signupHTML.setHTML()
        return signupHTML.getHTML()
Example #8
0
def createBlog():
    if request.method == 'POST':
        requestData = request.get_json()
        db = database()
        queryString = db.buildQuery(
            "blog", "insertRow",
            "'{username}', '{blogName}', '{imageSource}', '{description}', 'rgb(255, 255, 255)', 'arial'"
            .format(username=request.cookies.get('userId'),
                    blogName=requestData.get("blogName"),
                    imageSource=requestData.get("imageSource"),
                    description=requestData.get("description")))
        db.execute(True, queryString)
        db.disconnect()
        return str(requestData)
    else:
        form = CreateBlog()
        return form.getHtml()
Example #9
0
def buildBlogSpecs():
    global blogUrlName
    global blogColor
    global blogFont
    db = database()
    queryBuilder = query("blog")
    queryString = queryBuilder.selectAllFilter(
        "blogName='{blogName}'".format(blogName=blogUrlName))
    result = db.execute(False, queryString)
    db.disconnect()
    if result == []:
        blogColor = "rgb(255, 255, 255)"
        blogFont = "arial"
    else:
        for row in result:
            blogColor = row[4]
            blogFont = row[5].replace('"', '')
Example #10
0
def uploadComment():
    global blogUrlName
    if request.method == 'POST':
        requestData = request.get_json()
        db = database()
        queryBuilder = query("comments")
        queryString = queryBuilder.insertRow(
            "'{blogName}', '{attachedToId}', '{currentUser}', '{comment}'".
            format(blogName=blogUrlName,
                   attachedToId=requestData.get("attachedToId"),
                   currentUser=request.cookies.get('userId'),
                   comment=requestData.get("comment")))
        db.execute(True, queryString)
        db.disconnect()
        return str(requestData)
    else:
        db.disconnect()
        return "error"
Example #11
0
    def generateTable(self):
        tableRows = ""
        db = database()
        #need to iterate for each blog in the blog table
        queryString = db.buildQuery("blog", "selectAll")
        result = db.execute(False, queryString)
        for row in result:
            queryString = db.buildQuery("comments", "selectCountFilter", "blogName='{blog}'".format(blog=row[1]))
            numComments = db.execute(False, queryString)
            queryString = db.buildQuery("comments", "selectCountDistinctFilter", "username", "blogName='{blog}'".format(blog=row[1]))
            distinctNumComments = db.execute(False, queryString)
            queryString = db.buildQuery("reactions", "selectCountFilter", "blogName='{blog}'".format(blog=row[1]))
            numReactions = db.execute(False, queryString)
            tableRows += """
<tr>
    <td>{blogName}</td>
    <td>{owner}</td>
    <td>{numComments}</td>
    <td>{numCommenters}</td>
    <td>{numReactions}</td>
</tr>""".format(blogName=row[1], owner=row[0], numComments=numComments[0][0],
                numCommenters=distinctNumComments[0][0], numReactions=numReactions[0][0])
        db.disconnect()
        return """
<table id="statsTable" class="display" style="width:100%; text-align: center;">
    <thead>
        <tr>
            <th>Blog Name</th>
            <th>Owner</th>
            <th>Number of Comments</th>
            <th>Number of Commenters</th>
            <th>Number of Reactions</th>
        </tr>
    </thead>
    <tbody>
        {rows}
    </tbody>
</table>""".format(rows=tableRows)
Example #12
0
def blogView():
    global blogUrlName
    if request.method == 'POST':
        requestData = request.get_json()  #this is a dictionary
        db = database()
        for key, value in requestData.items():
            #check if action is present, if not, must be blog update
            if "not present" in value.get("action", "not present"):
                queryBuilder = query("blog")
                queryString = queryBuilder.update(
                    "backgroundColor='{color}', font='{font}'".format(
                        color=value.get("backgroundColor"),
                        font=value.get("font")),
                    "blogName='{blogName}'".format(blogName=blogUrlName))
                db.execute(True, queryString)
            elif "insert" in value.get("action"):
                if "post" in key:
                    queryBuilder = query("posts")
                    queryString = queryBuilder.insertRow(
                        "'{blogName}', '{id}', {top}, {left}, {width}, {height}, {depth}, '{title}', '{body}', '{backgroundColor}', '{fontColor}', {hasThread}"
                        .format(blogName=blogUrlName,
                                id=key,
                                top=value.get("top"),
                                left=value.get("left"),
                                width=value.get("width"),
                                height=value.get("height"),
                                depth=value.get("depth"),
                                title=value.get("title"),
                                body=value.get("content"),
                                backgroundColor=value.get("backgroundColor"),
                                fontColor=value.get("fontColor"),
                                hasThread=value.get("hasThread")))
                    db.execute(True, queryString)
                elif "image" in key:
                    queryBuilder = query("images")
                    queryString = queryBuilder.insertRow(
                        "'{blogName}', '{id}', {top}, {left}, {width}, {height}, {depth}, '{source}', {hasThread}"
                        .format(blogName=blogUrlName,
                                id=key,
                                top=value.get("top"),
                                left=value.get("left"),
                                width=value.get("width"),
                                height=value.get("height"),
                                depth=value.get("depth"),
                                source=value.get("source"),
                                hasThread=value.get("hasThread")))
                    db.execute(True, queryString)
                elif "video" in key:
                    queryBuilder = query("videos")
                    queryString = queryBuilder.insertRow(
                        "'{blogName}', '{id}', {top}, {left}, {width}, {height}, {depth}, '{source}', {hasThread}"
                        .format(blogName=blogUrlName,
                                id=key,
                                top=value.get("top"),
                                left=value.get("left"),
                                width=value.get("width"),
                                height=value.get("height"),
                                depth=value.get("depth"),
                                source=value.get("source"),
                                hasThread=value.get("hasThread")))
                    db.execute(True, queryString)
                else:
                    return "error"
            elif "update" in value.get("action"):
                if value.get("hasThread") == 0:
                    queryBuilder = query("comments")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND attachedToId='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                if "post" in key:
                    queryBuilder = query("posts")
                    queryString = queryBuilder.update(
                        "topVal={top}, leftVal={left}, width={width}, height={height}, depth={depth}, title='{title}', body='{body}', backgroundColor='{backgroundColor}', fontColor='{fontColor}', hasThread={hasThread}"
                        .format(top=value.get("top"),
                                left=value.get("left"),
                                width=value.get("width"),
                                height=value.get("height"),
                                depth=value.get("depth"),
                                title=value.get("title"),
                                body=value.get("content"),
                                backgroundColor=value.get("backgroundColor"),
                                fontColor=value.get("fontColor"),
                                hasThread=value.get("hasThread")),
                        "blogName='{blogName}' AND id='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                elif "image" in key:
                    queryBuilder = query("images")
                    queryString = queryBuilder.update(
                        "topVal={top}, leftVal={left}, width={width}, height={height}, depth={depth}, imageSource='{source}', hasThread={hasThread}"
                        .format(top=value.get("top"),
                                left=value.get("left"),
                                width=value.get("width"),
                                height=value.get("height"),
                                depth=value.get("depth"),
                                source=value.get("source"),
                                hasThread=value.get("hasThread")),
                        "blogName='{blogName}' AND id='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                elif "video" in key:
                    queryBuilder = query("videos")
                    queryString = queryBuilder.update(
                        "topVal={top}, leftVal={left}, width={width}, height={height}, depth={depth}, videoSource='{source}', hasThread={hasThread}"
                        .format(top=value.get("top"),
                                left=value.get("left"),
                                width=value.get("width"),
                                height=value.get("height"),
                                depth=value.get("depth"),
                                source=value.get("source"),
                                hasThread=value.get("hasThread")),
                        "blogName='{blogName}' AND id='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                else:
                    return "error"
            elif "delete" in value.get("action"):
                if value.get("hasThread") == 1:
                    queryBuilder = query("comments")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND attachedToId='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                if "post" in key:
                    queryBuilder = query("posts")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND id='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                    #delete all comments for a deleted element
                    queryBuilder = query("reactions")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND attachedToId='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                elif "image" in key:
                    queryBuilder = query("images")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND id='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                    #delete all comments for a deleted element
                    queryBuilder = query("reactions")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND attachedToId='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                elif "video" in key:
                    queryBuilder = query("videos")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND id='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                    #delete all comments for a deleted element
                    queryBuilder = query("reactions")
                    queryString = queryBuilder.delete(
                        "blogName='{blogName}' AND attachedToId='{id}'".format(
                            blogName=blogUrlName, id=key))
                    db.execute(True, queryString)
                else:
                    return "error"
            else:
                return "error"
        db.disconnect()
        return str(requestData)
    else:
        viewObject = BlogView()
        blogUrlName = request.args.get("blogName", "error")
        buildBlogSpecs()
        #if current user token is not owner of blog, don't display edit
        editBlogButton = ""
        currentUser = request.cookies.get('userId', "")
        if currentUser != "":
            db = database()
            queryBuilder = query("blog")
            queryString = queryBuilder.selectAllFilter(
                "blogName='{blogName}' AND username='******'".format(
                    blogName=blogUrlName, username=currentUser))
            result = db.execute(False, queryString)
            db.disconnect()
            if result != []:
                editBlogButton = """
<button type="button" id="enableEditing" style="position: absolute; left: 20px;" class="btn btn-default">Enable Edit Mode</button>
"""
        return viewObject.html.format(blogName=blogUrlName,
                                      blog=blogUrlName,
                                      blogContent=buildBlogContent(),
                                      backgroundColor=blogColor,
                                      font=blogFont,
                                      editButton=editBlogButton)