コード例 #1
0
def addcomment(post_id):

    post = db_session.query(Post).filter(Post.id == post_id).one()
    text = ""
    popup = None

    if request.method == 'POST':
        if session['logged_in']:
            text = request.form['text']

            if len(text) == 0:
                flash('Empty comment', 'addcom')
            elif len(text) > 140:
                flash('Too long comment (Under 140 characters)', 'addcom')

            messages = get_flashed_messages(category_filter=['addcom'])
            if len(messages) == 0:
                now = datetime.datetime.now()
                comment = Comment(text, now)
                comment.user = db_session.query(User).\
                  filter(User.username==session['username']).one()
                comment.post = post
                db_session.add(comment)
                db_session.commit()
                text = ""
            else:
                popup = 'alert'

    ctx = update_stats()
    ctx['post'] = post
    ctx['comtext'] = text
    ctx['popup'] = popup
    return render_template('showpost.html', **ctx)
コード例 #2
0
ファイル: helper.py プロジェクト: eminusb/NaiveBoard
def update_stats():
    entries = db_session.query(Post).order_by(desc('id'))
    alltags = db_session.query(Tag).order_by('id')
    numposts = db_session.query(Post).count()
    numusers = db_session.query(User).count()
    today = datetime.datetime.now().strftime("%y-%m-%d")
    return dict(entries=entries,
                alltags=alltags,
                numusers=numusers,
                numposts=numposts,
                today=today)
コード例 #3
0
ファイル: posts.py プロジェクト: eminusb/NaiveBoard
def addpost():	

	title = ""
	text = ""
	taginput = ""
	popup = None

	if request.method == 'POST':
		if session['logged_in']:
			title = request.form['title']
			text  = request.form['text']
			tagtextlist = parse_taginput(request.form['tags'])
			taginput = "; ".join(tagtextlist)
			now = datetime.datetime.now()

			if len(title) == 0:
				flash('Empty title', 'addpost')
			elif len(title) > 50:				
				flash('Too long title (Under 50 charaters)', 'addpost')
			
			if len(text) == 0:
				flash('Empty text', 'addpost')
			elif len(text) > 2000:
				flash('Too long text (Under 2000 charaters)', 'addpost')

			for tagtext in tagtextlist:
				if len(tagtext) > 20:
					flash('Too long tag(s) (Under 20 characters)', 'addpost')
					break

			messages = get_flashed_messages(category_filter=['addpost'])
			if len(messages) == 0:
				post = Post(title, text, now)
				post.user = db_session.query(User).\
						filter(User.username==session['username']).one()
				for tagtext in tagtextlist:
					tag = db_session.query(Tag).filter(Tag.text==tagtext).first()
					if tag is None:
						tag = Tag(tagtext)
					tag.posts.append(post)	

				db_session.add(post)
				db_session.commit()				
				return redirect(url_for('showpost', post_id=post.id))
			else:
				popup = 'alert'

	ctx = update_stats()
	ctx['title'] = title
	ctx['text'] = text
	ctx['tags'] = taginput
	ctx['popup'] = popup
	return render_template('addpost.html', **ctx)
コード例 #4
0
ファイル: posts.py プロジェクト: eminusb/NaiveBoard
def search_posts_with_keyword(keyword):
	posts = []
	allposts = db_session.query(Post).order_by(desc('id'))
	for post in allposts:
		if (post.title).find(keyword) != -1 \
				or (post.text).find(keyword) != -1:
				posts.append(post)				
	return posts
コード例 #5
0
ファイル: posts.py プロジェクト: eminusb/NaiveBoard
def showpost(post_id, popup):

	post = db_session.query(Post).filter(Post.id==post_id).first()

	ctx = update_stats()
	ctx['post'] = post
	ctx['popup'] = popup	
	return render_template('showpost.html', **ctx)
コード例 #6
0
def login():
	popup = None
	query = db_session.query(User)
	user = query.filter(User.username==request.form['username']).first()

	if user == None:
		flash('Invalid username', 'login')
		popup = 'alert'	
	elif user.password != hash_password(request.form['password']):
		flash('Invalid password', 'login')
		popup = 'alert'
	else:
		session['logged_in'] = True
		session['username'] = request.form['username']
	
	return redirect(url_for('showentries', popup=popup))
コード例 #7
0
ファイル: posts.py プロジェクト: eminusb/NaiveBoard
def deletepost(post_id):
	post = db_session.query(Post).filter(Post.id==post_id).one()
	
	if session['logged_in'] \
	   and post.user.username==session['username']:
		tags = post.tags
		db_session.delete(post)
		db_session.commit()

		for tag in tags:
			if len(tag.posts)==0:
				db_session.delete(tag)
		
		db_session.commit()
		return redirect(url_for('showentries'))	

	return redirect(url_for('showpost', post_id=post_id))
コード例 #8
0
def deleteuser():

	popup = None

	if request.method == 'POST':		
		query = db_session.query(User)
		user = query.filter(User.username==session['username']).one()
		if user.password == request.form['password']:
			db_session.delete(user)
			db_session.commit()
			session['logged_in'] = False
			return redirect(url_for('showentries'))
		else:
			flash('Wrong password', 'deluser')
			popup = 'alert'

	ctx = update_stats()
	ctx['popup'] = popup
	return render_template('deleteuser.html', **ctx)
コード例 #9
0
def signup():

	popup = None

	if request.method == 'POST':
		username = request.form['username']
		password = request.form['password']
		cfpassword = request.form['cfpassword']
	
		u = db_session.query(User).filter(User.username==username).first()		
		if not u is None:
			flash('Existing username', 'signup')
		else:
			if len(username.split()) != 1:
				flash('Whitespace is Not allowed in a valid username', 'signup')
			elif len(username)<4 or 20<len(username):
				flash('Invalid length of username', 'signup')
			elif len(password)<4 or 20<len(password):
				flash('Invalid length of password', 'signup')
			elif password != cfpassword:
				flash('Invalid confirm password', 'signup')
		
		messages = get_flashed_messages(category_filter=['signup'])
		if len(messages) == 0:			
			user = User(username, hash_password(password))
			db_session.add(user)
			db_session.commit()
			session['logged_in'] = True
			session['username'] = request.form['username']
			return redirect(url_for('showentries'))
		else:
			popup = 'alert'

	ctx = update_stats()
	ctx['popup'] = popup
	return render_template('signup.html', **ctx)
コード例 #10
0
ファイル: posts.py プロジェクト: eminusb/NaiveBoard
def showtaggedlist(tag_id):
	tag = db_session.query(Tag).filter(Tag.id==tag_id).first()
	
	ctx = update_stats()
	ctx['tag'] = tag
	return render_template('taggedlist.html', **ctx)
コード例 #11
0
ファイル: posts.py プロジェクト: eminusb/NaiveBoard
def modifypost(post_id):

	post = db_session.query(Post).filter(Post.id==post_id).one()
	title = post.title
	text = post.text
	taginput = get_taginput(post.tags)
	popup = None

	if request.method == 'POST':
		if session['logged_in'] and \
		   post.user.username==session['username']:
			title = request.form['title']
			text  = request.form['text']
			tagtextlist = parse_taginput(request.form['tags'])
			taginput = "; ".join(tagtextlist)

			if len(title) == 0:
				flash('Empty title', 'addpost')
			elif len(title) > 50:				
				flash('Too long title (Under 50 charaters)', 'modpost')
			
			if len(text) == 0:
				flash('Empty text', 'addpost')
			elif len(text) > 2000:
				flash('Too long text (Under 2000 charaters)', 'modpost')

			for tagtext in tagtextlist:
				if len(tagtext) > 20:
					flash('Too long tag(s) (Under 20 characters)', 'modpost')
					break

			messages = get_flashed_messages(category_filter=['modpost'])
			if len(messages) == 0:
				now = datetime.datetime.now()
				post.title 	= title
				post.text 	= text
				post.date 	= now.strftime("%y-%m-%d")
				post.time	= now.strftime("%H:%M:%S")

				for tag in post.tags:
					post.tags.remove(tag)
					if len(tag.posts)==0:
						db_session.delete(tag)
				db_session.commit()

				for tagtext in tagtextlist:
					tag = db_session.query(Tag).filter(Tag.text==tagtext).first()
					if tag is None:
						tag = Tag(tagtext)
					tag.posts.append(post)

				db_session.add(post)
				db_session.commit()
				return redirect(url_for('showpost', post_id=post_id))
			else:
				popup = 'alert'

	ctx = update_stats()
	ctx['post_id'] = post_id
	ctx['title'] = title
	ctx['text'] = text
	ctx['tags'] = taginput
	ctx['popup'] = popup
	return render_template('modpost.html', **ctx)