[Repoze-checkins] r1624 - in repoze.shootout/trunk/repoze/shootout: . templates
Carlos de la Guardia
cguardia at yahoo.com
Sun Aug 17 04:10:18 EDT 2008
Author: Carlos de la Guardia <cguardia at yahoo.com>
Date: Sun Aug 17 04:10:18 2008
New Revision: 1624
Log:
added tags input box and tag parsing and saving.
Modified:
repoze.shootout/trunk/repoze/shootout/models.py
repoze.shootout/trunk/repoze/shootout/templates/idea_add.pt
repoze.shootout/trunk/repoze/shootout/views.py
Modified: repoze.shootout/trunk/repoze/shootout/models.py
==============================================================================
--- repoze.shootout/trunk/repoze/shootout/models.py (original)
+++ repoze.shootout/trunk/repoze/shootout/models.py Sun Aug 17 04:10:18 2008
@@ -75,7 +75,7 @@
'tags',
metadata,
Column('tag_id', Integer, primary_key=True),
- Column('name', String(50), index=True)
+ Column('name', String(50), unique=True, nullable=False, index=True)
)
ideas_tags_table = Table(
@@ -128,7 +128,7 @@
((ideas_table.c.hits>0 or ideas_table.c.misses>0) and (ideas_table.c.hits/(ideas_table.c.hits+ideas_table.c.misses)*100) or 0).label('hit_percentage')
),
'users':relation(User, order_by=users_table.c.user_id),
- 'tags':relation(Tag, secondary=ideas_tags_table, lazy=False),
+ 'tags':relation(Tag, secondary=ideas_tags_table, backref='ideas'),
})
class IRange(Interface):
Modified: repoze.shootout/trunk/repoze/shootout/templates/idea_add.pt
==============================================================================
--- repoze.shootout/trunk/repoze/shootout/templates/idea_add.pt (original)
+++ repoze.shootout/trunk/repoze/shootout/templates/idea_add.pt Sun Aug 17 04:10:18 2008
@@ -19,11 +19,14 @@
<form id="idea_add_form" action="idea_add" method="post">
<fieldset>
<label for="title">Title:</label>
- <input type="text" name="title" />
+ <input type="text" name="title" size="60" />
<br />
<label for="text">Text:</label>
<textarea name="text" rows="10" cols="60"> </textarea>
<br />
+ <label for="tags">Tags:</label>
+ <input type="text" name="tags" size="60" />
+ <br />
<input tal:condition="target" type="hidden" name="target" value="${target.idea_id}" />
<input type="submit" name="form.submitted" value="Shoot" />
</fieldset>
Modified: repoze.shootout/trunk/repoze/shootout/views.py
==============================================================================
--- repoze.shootout/trunk/repoze/shootout/views.py (original)
+++ repoze.shootout/trunk/repoze/shootout/views.py Sun Aug 17 04:10:18 2008
@@ -8,7 +8,7 @@
from repoze.bfg.security import authenticated_userid
from repoze.shootout.models import DBSession
-from repoze.shootout.models import User, Idea
+from repoze.shootout.models import User, Idea, Tag
COOKIE_VOTED = 'repoze.shootout.voted'
@@ -59,6 +59,7 @@
allow_extra_fields = True
title = formencode.validators.String(not_empty=True)
text = formencode.validators.String(not_empty=True)
+ tags = formencode.validators.String(not_empty=True)
def idea_add(context, request):
app_url = request.application_url
@@ -66,8 +67,9 @@
message = params.get('message','')
if params.get('form.submitted'):
target = params.get('target', None)
- title = params.get('title', None)
- text = params.get('text', None)
+ title = params.get('title')
+ text = params.get('text')
+ tags = params.get('tags')
schema = AddIdea()
try:
form = schema.to_python(params)
@@ -78,6 +80,16 @@
author_id = authenticated_userid(request)
author = DBSession.query(User).filter(User.username==author_id).one().user_id
idea = Idea(target=target, author=author, title=title, text=text)
+ tags = tags.replace(';',' ').replace(',',' ')
+ tags = [tag.lower() for tag in tags.split()]
+ tags = set(tags)
+ if '' in tags:
+ tags.remove('')
+ for tagname in tags:
+ tag = DBSession.query(Tag).filter(Tag.name==tagname).all()
+ if not tag:
+ tag = Tag(name=tagname)
+ idea.tags.append(tag)
DBSession.save(idea)
DBSession.commit()
url = "%s/ideas/%s" % (app_url,idea.idea_id)
More information about the Repoze-checkins
mailing list