Example #1
0
    def post(self):
        logged_user = users.get_current_user()

        if not logged_user:
            return self.write("Please login before")

        title_value = self.request.get("title")
        text_value = self.request.get("text")

        if "<script>" in text_value:
            return self.write("No Hack")

        if not text_value:
            return self.write("Required")

        if not title_value:
            return self.write("Required")

        new_topic = Topic(
            title=title_value,
            content=text_value,
            author_email=logged_user.email(),
        )

        new_topic.put()

        return self.redirect_to("topic-detail", topicid=new_topic.key.id())
Example #2
0
def add_topic():
    title = request.form['Title']
    link = request.form['URL']
    category = request.form['Categories']
    topic = Topic(name=title, link=link, category_id=category)
    status = topic.create_topic()
    return redirect(url_for('.main', messages=status))
Example #3
0
    def test_topic_delete_handler(self):
        # POST
        topic = Topic(title="Topic to delete",
                      content="Some text in the topic",
                      author_email="*****@*****.**")
        topic.put()  # save topic in database

        topic_query_1 = Topic.query().get()
        self.assertTrue(
            topic_query_1)  # assert that topic exists in a database

        csrf_token = str(uuid.uuid4())  # create a CSRF token
        memcache.add(key=csrf_token, value=True,
                     time=600)  # save token to memcache

        params = {"csrf_token": csrf_token}

        post = self.testapp.post('/topic/{}/delete'.format(topic.key.id()),
                                 params)  # do a GET request
        self.assertEqual(
            post.status_int, 302
        )  # when topic is deleted, handler redirects to main page (302 == redirect)

        topic_query_2 = Topic.query().get()

        self.assertTrue(topic_query_2.deleted
                        )  # assert that "deleted" field is set to True
    def test_post_comment_delete_handler(self):
        #POST
        topic = Topic(title="New topic",
                      content="Content of new topic!",
                      author_email='*****@*****.**')
        topic.put()
        topic_query = Topic.query().get()
        self.assertTrue(topic_query)

        comment = Comment.create("That is my comment!",
                                 '*****@*****.**', int(topic.key.id()),
                                 topic)
        comment_query = Comment.query().get()
        self.assertTrue(comment_query)

        csrf_token = str(uuid.uuid4())
        memcache.add(key=csrf_token, value='*****@*****.**', time=600)

        params = {"csrf_token": csrf_token}
        post = self.testapp.post('/topic/details/{0}/deleteComment'.format(
            comment.key.id()),
                                 params=params)
        self.assertEqual(post.status_int, 302)

        comment_query_deleted = Comment.query().get()
        self.assertTrue(comment_query_deleted.deleted)
Example #5
0
def CreateTopic(value, note_id):
    new_topic = Topic(
        value = value,
        note_id = note_id
    )
    db.session.add(new_topic)
    db.session.commit()
    def post(self):

        logged_user = users.get_current_user()

        if not logged_user:
            return self.write("Please, login first")

        csrf_token = self.request.get('csrf-token')
        mem_token = memcache.get(key=csrf_token)

        if not mem_token or mem_token != logged_user.email():
            return self.write("This website is protected against CSRF")

        title_value = self.request.get("title")
        text_value = self.request.get("text")

        if not title_value:
            return self.write("Title field is requiered")

        if not text_value:
            return self.write("Text field is requiered")

        new_topic = Topic(
            title=title_value,
            content=text_value,
            author_email=logged_user.email(),
        )

        new_topic.put()

        return self.redirect_to("topic-details", topic_id=new_topic.key.id())
Example #7
0
    def setUp(self):
        app = webapp2.WSGIApplication([
            webapp2.Route('/new_comment/<topic_id:\d+>', NewComment),
            webapp2.Route('/comment/<comment_id:\d+>/delete', CommentDelete),
        ])

        self.testapp = webtest.TestApp(app)
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        """ Uncomment the stubs that you need to run tests. """
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()
        # self.testbed.init_mail_stub()
        # self.testbed.init_taskqueue_stub()
        self.testbed.init_user_stub()
        # ...
        """ Uncomment if you need user (Google Login) and if this user needs to be admin. """
        os.environ['USER_EMAIL'] = '*****@*****.**'
        # os.environ['USER_IS_ADMIN'] = '1'

        test_user = User(email="*****@*****.**", is_active=True)
        test_user.put()

        test_topic = Topic(title="test topic",
                           content="test",
                           user_email="*****@*****.**")
        test_topic.put()
Example #8
0
    def __init__(self, basepath, name):
        self.name = name
        self.fqdn = '{}/{}'.format(basepath, name)
        self.topics = list()

        for file in listdir(self.fqdn):
            self.topics.append(Topic(self.fqdn, file))
Example #9
0
    def test_topic_details_handler(self):
        topic = Topic(title="Test topic",
                      content="Random text content",
                      author_email="*****@*****.**")
        topic.put()

        get_response = self.testapp.get('/topic/{}'.format(topic.key.id()))
        self.assertEqual(get_response.status_int, 200)
Example #10
0
def edit_topic():
    title = request.form['Title']
    link = request.form['URL']
    category_id = request.form['Categories']
    topic_id = request.form['id']
    Topic(topic_id=topic_id, name=title, link=link,
          category_id=category_id).update_topic()
    return redirect("/god")
Example #11
0
def index():
    user = current_user()
    board_id = int(request.args.get('board_id', 0))
    if board_id:
        print('is board id :{}'.format(board_id))
        ms = Topic().find_all(board_id=board_id)
    else:
        print('not board id: {}'.format(board_id))
        ms = Topic().all()
    bs = Board.all()
    token = str(uuid.uuid4())
    csrf_tokens.add(token)
    return render_template("topic/index.html",
                           ms=ms,
                           bs=bs,
                           user=user,
                           token=token)
Example #12
0
    def test_topic_handler(self):
        topic = Topic(title="Test title",
                      content="Test content",
                      user_email="*****@*****.**")
        topic.put()

        response = self.testapp.get('/topic/{}'.format(topic.key.id()))
        self.assertEqual(response.status_int, 200)
Example #13
0
    def test_topic_detail_handler(self):
        topic = Topic(title="Another topic",
                      content="Some text in the topic",
                      author_email="*****@*****.**")
        topic.put()

        get = self.testapp.get('/topic/{}'.format(
            topic.key.id()))  # do a GET request
        self.assertEqual(get.status_int, 200)
Example #14
0
 def post(self):
     user = users.get_current_user()
     if not user:
         return self.write("You're not logged in.")
     title = cgi.escape(self.request.get("title"))
     text = cgi.escape(self.request.get("text"))
     new_topic = Topic(title=title, content=text, author_email=user.email())
     new_topic.put()
     return self.redirect_to("topic-details", topic_id = new_topic.key.id())
Example #15
0
File: topic.py Project: xiecang/bbs
def add_from_node():
    form = request.form
    t = Topic(form)
    if t.validate():
        t.user = current_user._get_current_object()
        t.save()
        flash(u'创建新主题成功')
        return redirect(url_for('topic.node', id=t.node.id))
    return redirect(url_for('topic.index'))
Example #16
0
def select_all():
    topics = []

    sql = "SELECT * FROM topics"
    results = run_sql(sql)

    for result in results:
        topic = Topic(result["name"], result["id"])
        topics.append(topic)
    return topics
Example #17
0
    def post(self):
        user = users.get_current_user()

        title = cgi.escape(self.request.get("title"))
        text = cgi.escape(self.request.get("text"))

        new_topic = Topic(title=title, content=text, user_email=user.email())
        new_topic.put()

        return self.redirect_to("topic-details", topic_id=new_topic.key.id())
Example #18
0
File: topic.py Project: xiecang/bbs
def add():
    form = request.form
    t = Topic(form)
    if t.validate():
        t.user = current_user._get_current_object()
        t.save()
        flash(u'发布成功')
        return redirect(url_for('topic.topic', id=t.id))
    else:
        flash(u'标题不能为空')
    return redirect(url_for('topic.add_view'))
Example #19
0
    def test_topic_details_handler(self):
        # GET
        topic = Topic(
            title="Another topic",
            content="Some text in the topic",
            author_email="*****@*****.**",
            author_avatar="https://s30.postimg.org/6mdag8cip/ninja.png")
        topic.put()

        get = self.testapp.get('/topic/{}'.format(
            topic.key.id()))  # do a GET request
        self.assertEqual(get.status_int, 200)
Example #20
0
def create_new_chrip():
    if request.method == 'GET':
        return render_template('new_blog.html')
    else:
        title = request.form['title']
        description = request.form['description']
        user = User.get_by_username(session['username'])

        new_blog = Topic(user.username, title, description, user._id)
        new_blog.save_to_mongo()
        flash("Posted Successfully", category='success')
        return make_response(user_chrips(user._id))
Example #21
0
def new_topic():
    if request.method == 'POST':
        if "title" not in request.get_json():
            return ClientError(301, 'Invalid entry')
        title = request.get_json()['title']
        if title.strip() == "" or storage.get_topic_by_title(title):
            return ClientError(409, 'Topic already exists')
        description = request.get_json(
        )['description'] if "description" in request.get_json() else ""
        topic = Topic(**{'title': title, 'description': description})
        topic.save()
        return jsonify({'status_code': 1, 'id': topic.id})
Example #22
0
    def post(self):
        user = users.get_current_user()
        if not user:
            return self.write("Please login.")

        title = cgi.escape(self.request.get("title"))
        text = cgi.escape(self.request.get("text"))

        new_topic = Topic(title=title, content=text, author_email=user.email())
        new_topic.put()

        return self.write("Topic created successfully.")
Example #23
0
def created_topic(user_id):
    k = 'created_topic_{}'.format(user_id)
    if cache.exists(k):
        v = cache.get(k)
        ts = json.loads(v)
        ts = [Topic(**t) for t in ts]
        return ts
    else:
        ts = Topic.all(user_id=user_id)
        v = json.dumps([t.json() for t in ts])
        cache.set(k, v)
        return ts
Example #24
0
    def post(self):
        user = users.get_current_user()
        if not user:
            return self.write("You are not logged in.")

        title = self.request.get("title")
        text = self.request.get("text")

        new_topic = Topic(title=title, content=text, author_email=user.email())
        new_topic.put()

        return self.redirect("/")
Example #25
0
    def create_fake_topic_deleted(self,
                                  title="New Test Topic Deleted",
                                  content="This is test.topic",
                                  deleted=True):

        test_author = self.create_fake_admin()
        topic = Topic(title=title,
                      content=content,
                      author_email=test_author.email,
                      deleted=deleted)
        topic.put()
        return topic
    def post(self):
        user = users.get_current_user()

        if not user:
            return self.write("Please login before you're allowed to post a topic.")

        title = self.request.get("title")
        text = self.request.get("text")

        new_topic = Topic(title=title, content=text, author_email=user.email())
        new_topic.put()  # put() saves the object in Datastore

        return self.redirect_to("topic-details", topic_id=new_topic.key.id())
Example #27
0
    def post(self):
        csrf_token = self.request.get('csrf-token')
        if not memcache.get(csrf_token):
            return self.write("CSRF NAPAD")

        title = cgi.escape(self.request.get('title'))
        text = cgi.escape(self.request.get('text'))

        email = users.get_current_user().email()

        topic = Topic(title=title, content=text, user_email=email)
        topic.put()
        return self.redirect('/')
    def test_subscribe_hottest_topic_cron_handler(self):
        # GET
        topic = Topic(title = "New topic", content = "Content of new topic!", author_email = '*****@*****.**',
                      created = datetime.datetime.now() - datetime.timedelta(days = 2),
                      updated = datetime.datetime.now() - datetime.timedelta(hours = 12),
                      deleted = True)
        topic.put()

        topic_query = Topic.query().get()
        self.assertTrue(topic_query)

        get = self.testapp.get('/cron/email-subscribe')
        self.assertEqual(get.status_int, 200)
Example #29
0
File: topic.py Project: xiecang/bbs
def edit(id):
    form = request.form
    t = Topic(form)
    topic = Model.query.get(id)
    if topic is not None and t.validate() and (
            current_user == topic.user or current_user.is_administrator()):
        topic.title = t.title
        topic.content = t.content
        topic.node_id = t.node_id
        topic.save()
        flash(u'更改成功')
        return redirect(url_for('topic.topic', id=id))
    else:
        flash(u'标题不能为空')
    return redirect(url_for('topic.edit_view', id=id))
Example #30
0
    def post(self):
        user = users.get_current_user()

        if not user:
            return self.write("You have to login before post a topic!")

        title = self.request.get("title")
        content = self.request.get("text")

        new_topic = Topic(title=title,
                          content=content,
                          author_email=user.email())
        new_topic.put()

        return self.write("You have sucessfully created new topic!")