Dont worry, I learned to do it too thanks to your question, plus I have
learned a new cool term... 'RTFM' question xD... Manual has a lot of
details that sometimes is easy to miss.
Anyway is always good to return some of the help to this group (this group
rocks by the way :) )
El miércoles, 19 de agosto de 2015, 19:12:55 (UTC+2), Carlos Cesar
Caballero escribió:
>
> Works perfectly, many thaks for your answer in a RTFM-like question...
>
> El 18/08/15 a las 15:31, Jaime Sempere escribió:
>
>
> I have just checked a side project that I did today, and noticed that I
> wasnt able to see the pic either. I have been able to fix it using the
> upload field:
>
> form = SQLFORM(db.person, record, upload=URL('download'))
>
>
> I simply added that : upload=URL('download') to my SQLFORM() syntax and
> it worked. But I dont think it will work on create, just on updates
> (because you wont able to see the pic until is submitted, so it wouldnt be
> possible to see it on create).
>
> Give it a try
>
>
>
> El martes, 18 de agosto de 2015, 17:47:43 (UTC+2), Carlos Cesar Caballero
> escribió:
>>
>> Hi, I am creatig a blog app and I am having a problem with the grid, when
>> I create or update a post, the post image is never visible in the form (the
>> form show that there is no image), but everything is ok in the db, I
>> supouse that is something related with the code for tagging, there is my
>> view code:
>>
>> {{if 'edit' in request.args or 'new' in request.args:
>> value = ', '.join(tags) tags_field = DIV(LABEL(T('Tags')+':',
>> _class='control-label col-sm-3'), DIV(INPUT(_name='tags',value=value,
>> _class='form-control string'), _class='col-sm-9'), _class='form-group')
>> grid[0].insert(-1, tags_field)pass}}
>> {{=grid}}
>>
>>
>> and my controller:
>>
>> def posts():
>> db.post.created_by.readable = True db.post.created_on.readable = True
>> db.post.modified_by.readable = True db.post.modified_on.readable =
>> True posts_query = (db.post.created_by == auth.user_id)
>> create_post = False if auth.has_membership('admin') or
>> auth.has_membership('editor'):
>> posts_query = db.post
>>
>> if auth.has_membership('admin') or auth.has_membership('editor') or
>> auth.has_membership('author'):
>> create_post = True grid = SQLFORM.grid(posts_query,
>> orderby=~db.post.created_on, fields=[db.post.lang,
>> db.post.title, db.post.published, db.post.created_on],
>> paginate=10, create=create_post,)
>>
>> if request.args(0) in ['edit']:
>> db.post.created_on.readable = True post =
>> db.post(request.args(2))
>> form = SQLFORM(db.post, post)
>> if form.process().accepted:
>> new_tags = [tag.strip() for tag in request.vars.tags.split(',')]
>> post.update_tags(new_tags)
>> response.flash = T("Post Updated")
>> return dict(grid=form, tags=post.tags)
>>
>> if request.args(0) in ['new']:
>> form = SQLFORM.factory(db.post)
>> post_tags = []
>> if form.process().accepted:
>> post_id = db.post.insert(**db.post._filter_fields(form.vars))
>> post = db(db.post.id == post_id).select().first()
>> new_tags = [tag.strip() for tag in request.vars.tags.split(',')]
>> post.update_tags(new_tags)
>> post_tags = post.tags
>> redirect(URL('dashboard', 'posts'))
>> return dict(grid=form, tags=post_tags)
>>
>> return dict(grid=grid)
>>
>> and the model:
>>
>> """ Post model file"""""" Table definition"""import
>> redb.define_table('post', Field('lang', label=T('Language')),
>> Field('title', unique=True, label=T('Title')),
>> Field('url', unique=True, label=T('URL')), Field('abstract',
>> 'text', label=T('Abstract')), Field('body', 'text',
>> widget=ckeditor.widget, label=T('Body')), Field('image',
>> 'upload', autodelete=True, label=T('Image')),
>> Field('published', 'boolean', default=True, label=T('Published')),
>> Field('show_title', 'boolean', default=True, label=T('Show title')),
>> Field('show_comments', 'boolean', default=True, label=T('Show
>> comments')), Field('close_comments', 'boolean',
>> default=False, label=T('Close comments')), Field('show_tags',
>> 'boolean', default=True, label=T('Show tags')),
>> auth.signature, )
>> # post image thumbnailsthumb.create(db.post.image, (175, 175),
>> use_imageops=True)
>> # Make table sercheablesearch.create(db.post.body)""" Virtual and method
>> fields"""# get post tags objectsdb.post.get_post_tags = Field.Method(lambda
>> row: [post_tag for post_tag
>> in db(db.post_tags.post_id ==
>> row.post.id).select()])
>> # virtual field for post tagsdb.post.tags = Field.Virtual(lambda row:
>> [post_tag.tag_id.name for post_tag
>> in db(db.post_tags.post_id ==
>> row.post.id).select()])
>>
>> # update post tagsdef _(row, new_tags):
>> self = row.post
>> db(db.post_tags.post_id == self.id).delete()
>> for tag in new_tags:
>> if tag:
>> if not db((db.tags.name == tag) & (db.tags.lang ==
>> self.lang)).select():
>> db.tags.insert(name=tag, lang=self.lang)
>> tag_id = db((db.tags.name == tag) & (db.tags.lang ==
>> self.lang)).select().first().id
>> db.post_tags.insert(post_id=self.id, tag_id=tag_id)
>> db.commit()
>> db.post.update_tags = Field.Method(_)
>>
>> # get post commentsdb.post.get_comments = Field.Method(lambda row:
>> db((db.comments.post_id ==
>> row.post.id)).select())
>> """ Functions"""# get post by iddef get_post_by_id(post_id):
>> return db(db.post.id == post_id).select().first()
>>
>> # get posts by langdef get_posts_by_lang(actual_lang=T.accepted_language):
>> return db((db.post.lang == actual_lang) & (db.post.published ==
>> True)).select(orderby=~db.post.created_on)
>>
>> # get post by URLdef get_post_by_url(post_url):
>> return db((db.post.url == post_url)).select()
>>
>> # get posts for paginationdef get_posts_per_page_and_lang(page=0,
>> items_per_page=5, actual_lang=T.accepted_language):
>> page = 0 if not page else page
>> limit_by = (page*items_per_page, (page+1)*items_per_page+1)
>> rows = db((db.post.lang == actual_lang) & (db.post.published ==
>> True)).select(db.post.ALL, limitby=limit_by, orderby=~db.post.created_on)
>> return dict(rows=rows, page=page, items_per_page=items_per_page)
>>
>> # get posts by authordef get_posts_by_author(author_id, lang=None):
>> if not lang:
>> query = (db.post.created_by == author_id)
>> else:
>> query = ((db.post.created_by == author_id) & (db.post.lang == lang))
>> return db(query).select()
>>
>> """ Validations"""db.post.lang.requires = IS_IN_SET(lang_set)
>> db.post.title.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, db.post.title)]
>> db.post.url.requires = [IS_NOT_EMPTY(), IS_SLUG(), IS_NOT_IN_DB(db,
>> db.post.url)]
>> db.post.abstract.requires = IS_NOT_EMPTY()
>> db.post.body.requires = IS_NOT_EMPTY()
>> db.post.published.requires = IS_NOT_EMPTY()db.post.is_active.writable =
>> db.post.is_active.readable = Falsedb.post.created_on.writable =
>> db.post.created_on.readable = Falsedb.post.created_by.writable =
>> db.post.created_by.readable = Falsedb.post.modified_on.writable =
>> db.post.modified_on.readable = Falsedb.post.modified_by.writable =
>> db.post.modified_by.readable = False
>>
>>
>>
>> I can't find the problem, but maybe someone have resolved the same issue,
>> or can see something in the code that I not.
>>
>>
>> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.