예제 #1
0
    def post(self, forum_id):
        author = cgi.escape(self.request.get('author'))
        forum_name = cgi.escape(self.request.get('forum'))
        title = cgi.escape(self.request.get('title'))
        url = cgi.escape(self.request.get('url'))
        text = cgi.escape(self.request.get('text'))
        post = ForumPost()
        forum = Forum.query(Forum.name == forum_name).get()
        if forum != None:
            forum.posts += 1
        else:
            forum = Forum(name=forum_name, posts=1)
        forum.put()

        author = author[3:-2]
        post.text = text
        post.author = author
        post.forum_name = forum_name
        post.forumnyn_aty = forum.aty
        post.title = title
        post.time = datetime.datetime.now() - datetime.timedelta(
            hours=8)  #For PST
        post.url = url
        post.url_host = urlparse(url).hostname
        post.reference = ''.join(
            random.choice(string.ascii_lowercase + string.digits)
            for _ in range(8))
        post.put()
        self.redirect('/forum/{}'.format(forum_name))
예제 #2
0
    def get_recurring_subreddits(self):
        """
        Utility method returns a list of recurring Forums aka subreddits 
        in top 100 'hot' Submissions of r/popular
        """
        # Get recurring subreddits
        seen_subreddits = {}  # dictionary for seen subreddits
        recurring_subreddits = []
        for submission in self.hot_submissions:
            try:
                # This subredit has already been seen at least once
                seen_subreddits[submission.subreddit] += 1  # increment count

                if seen_subreddits[submission.subreddit] == 2:
                    # First time subreddit has been seen more than once
                    new_forum = Forum(
                        title=submission.subreddit.display_name,
                        description=submission.subreddit.public_description)
                    # Add to list
                    recurring_subreddits.append(new_forum)

            except KeyError:
                # First time seeing this subreddit
                seen_subreddits[submission.subreddit] = 1

        # Return list of recurring Forums (subreddits)
        return recurring_subreddits
예제 #3
0
 def post(self):
     args = self.parser.parse_args()
     if not current_user.is_authenticated:
         return JSON_abort(401, message="You should login first.")
     if not check_title(args["title"]):
         return JSON_abort(400, message="Forbidden symbols")
     editors = ""
     if args["editors"]:
         for nickname in args["editors"].split(", "):
             user = session.query(User).filter(
                 User.nickname == nickname).first()
             if not user:
                 return JSON_abort(
                     400, message=f"Nickname {nickname} not exist.")
             editors += str(user.id) + ","
     forum = Forum()
     forum.title = args["title"]
     forum.private = args["private"]
     forum.editors = editors
     forum.admin_id = current_user.id
     session.add(forum)
     session.commit()
     current_user.follow += str(
         session.query(Forum).order_by(Forum.id.desc()).first().id) + ","
     session.commit()
     return jsonify({'success': 'OK'})
예제 #4
0
def create_forum_submit(request):
    forum = Forum(user=request._user, name="DEFAULT")

    data = ForumForm(request.POST, instance=forum)
    if data.is_valid():
        entity = data.save(commit=False)
        entity.put()
        return HttpResponseRedirect('/')

    return render_to_response('home/create_forum.html', {'forum_form': data})
예제 #5
0
def send():
    try:
        req_data = request.get_json()
        u_id = req_data["u_id"]
        title = req_data["title"]
        content = req_data["content"]
    except:
        return jsonify({'status': 400, 'msg': "请求参数错误"})
    else:
        add_text = Forum(u_id=u_id, f_title=title, f_content=content)
        db.session.add(add_text)
        db.session.commit()
        return jsonify({
            "status": 200,
            "msg": "发送帖子成功",
        })
예제 #6
0
def module002_new_forum():
    form = ForumForm()
    for course in Course.query.filter(Course.user_id == current_user.id):
        form.course_id.choices += [(course.id, str(course.id) + '-' + course.name + '-' + course.institution_name)]
    if request.method == 'POST':
        if current_user.is_authenticated and form.validate_on_submit():
            forum = Forum(author_id=current_user.id,
                          title=form.title.data,
                          course_id=form.course_id.data)
            db.session.add(forum)
            db.session.commit()
            flash("Successfully created a new forum")
            return redirect(url_for('module002.module002_index'))
        else:
            flash("Couldn't create new forum. Form error: {}".format(form))

    return render_template('module002_new_forum.html', module="module002", form=form)
예제 #7
0
    def get_unique_subreddits(self):
        """
        Utility method returns a list of unique Forums aka subreddits 
        in top 100 'hot' Submissions of r/popular.
        """
        unique_subreddits = []
        seen_subreddits = []
        for submission in self.hot_submissions:
            if submission.subreddit not in seen_subreddits:
                # List subreddit as seen
                seen_subreddits.append(submission.subreddit)
                # Translate subreddit into Forum and append to list
                new_forum = Forum(
                    title=submission.subreddit.display_name,
                    description=submission.subreddit.public_description)
                unique_subreddits.append(new_forum)

        # Return list of unique Forums (subreddits)
        return unique_subreddits
예제 #8
0
    def convert_forums(self):
        start_time = time.time()
        cursor = connection.cursor()
        cursor.execute("SELECT * FROM smf_boards;")
        rows = cursor.fetchall()

        for row in rows:
            forum = Forum()
            category = Category.objects.get(old_category_id=row[1])

            forum.category = category
            forum.old_forum_id = row[0]
            forum.position = row[4]
            forum.name = row[10]
            forum.description = row[11]
            forum.active = True
            forum.save()

        self.calculate_time(start_time, time.time())
예제 #9
0
    def post(self):
        imeforum = self.request.get("fime")
        print imeforum
        priimekforum = self.request.get("fpriimek")
        email = self.request.get("femail")

        sporocilo = self.request.get("fsporocilo")
        #params = {"fime" : imeforum }
        if sporocilo != "Obvezno vpisi kaj notri":
            forum = Forum(fime=imeforum,
                          fpriimek=priimekforum,
                          fsporocilo=sporocilo,
                          femail=email)
            forum.put()
            time.sleep(1)
        fseznam = Forum.query().fetch()
        print fseznam
        params = {"forumseznam": fseznam}
        return self.render_template("redirect.html", params=params)
예제 #10
0
    def post(self):
        """
		Creates forum
		"""
        data = request.json
        name = data.get('name')
        author_id = data.get('author_id')
        author_name = data.get('author_name')
        description = data.get('description')
        if (name == "" or author_id == "") or description == "":
            return {'error': 'Missing arguments'}, 400
        if db.session.query(Forum).filter(Forum.name == name).first():
            return {'error': 'Forum name already exist'}, 400
        new_forum = Forum(name=name,
                          author_name=author_name,
                          author_id=int(author_id),
                          description=description)
        db.session.add(new_forum)
        db.session.commit()

        return 201
예제 #11
0
def create_forum():
    form = ForumForm()
    if form.validate_on_submit():
        if not check_title(form.title.data):
            return render_template(
                'create_forum.html',
                title='Создать форум',
                form=form,
                message=f"Название содержит недопустимые символы.")
        editors = ""
        if form.editors.data:
            for nickname in form.editors.data.split(", "):
                user = session.query(User).filter(
                    User.nickname == nickname).first()
                if not user:
                    return render_template(
                        'create_forum.html',
                        title='Создать форум',
                        form=form,
                        message=
                        f"Пользователя с ником {nickname} не существует.")
                editors += str(user.id) + ","
        forum = Forum()
        forum.title = form.title.data
        forum.private = form.private.data
        forum.editors = editors
        forum.admin_id = current_user.id
        session.add(forum)
        session.commit()
        current_user.follow += str(
            session.query(Forum).order_by(Forum.id.desc()).first().id) + ","
        session.commit()
        return redirect('/forums')
    return render_template('create_forum.html',
                           title='Создать форум',
                           form=form,
                           message="")
예제 #12
0
def register(token):
    form = RegisterForm()
    try:
        email = serializer.loads(token,
                                 salt="email_confirmation",
                                 max_age=3600)
    except Exception:
        return render_template(
            'register.html',
            title='Регистрация',
            form=form,
            message="Время вышло. Попробуйте зарегистрироваться еще раз.")
    if session.query(User).filter(User.email == email).first():
        return render_template('register.html',
                               title='Регистрация',
                               form=form,
                               message="Такая электронная почта уже есть",
                               email=email)
    if form.validate_on_submit():
        if form.password.data != form.repeat_password.data:
            return render_template('register.html',
                                   title='Регистрация',
                                   form=form,
                                   message="Пароли не совпадают",
                                   email=email)
        if not check_password(form.password.data):
            return render_template(
                'register.html',
                title='Регистрация',
                form=form,
                message=
                "Пароль должен быть больше 7 символов, и состоять только из цифр, букв латинского алфавита и символов _.!#$%^&*-+=",
                email=email)
        if not check_nick(form.nickname.data):
            return render_template(
                'register.html',
                title='Регистрация',
                form=form,
                message="Никнейм содержит недопустимые символы",
                email=email)
        if session.query(User).filter(
                User.nickname == form.nickname.data).first():
            return render_template('register.html',
                                   title='Регистрация',
                                   form=form,
                                   message="Такой пользователь уже есть",
                                   email=email)
        user = User()
        user.nickname = form.nickname.data
        user.email = email
        user.set_password(form.password.data)
        session.add(user)
        session.commit()
        forum = Forum()
        forum.title = form.nickname.data
        forum.personal = True
        forum.admin_id = session.query(User).order_by(
            User.id.desc()).first().id
        forum.editors = f"{forum.admin_id},"
        session.add(forum)
        session.commit()
        user = session.query(User).filter(User.id == forum.admin_id).first()
        user.forum_id = session.query(Forum).order_by(
            Forum.id.desc()).first().id
        user.follow = f"{user.forum_id},"
        session.commit()
        return redirect('/login')
    return render_template('register.html',
                           title='Регистрация',
                           form=form,
                           message="",
                           email=email)