Re: [web2py] Update many rows at once separately

2012-08-23 Thread Fabiano Faver
It worked! Thanks Bruno.After this I just needed to add the 
post_vars.iteritems() because without it were giving the 'Too many values 
to unpack' error

This kind of data manipulation cleared many things to me.
Em quarta-feira, 22 de agosto de 2012 18h07min23s UTC-3, rochacbruno 
escreveu:

 You have to give id and name to form inputs, and select needs options.

 Ttry this on web2py shell

 print SELECT(*[OPTION(option, **{_value: option, _selected:selected 
 if option == 1 else None}) for option in (0, 1)], _name=1, _id=1)
 select id=1 name=1option value=00/optionoption 
 selected=selected value=11/option/select

 Adapting to your case:

  {{for row in rows:}}
 trtd{{=row.descricao}}/tdtd{{=SELECT(*[OPTION(option, 
 **{_value: option, _selected:selected if option == row.nivel else 
 None}) for option in (0, 1)], _name=row.id, _id=row.id) }}
{{pass}}

 On Wed, Aug 22, 2012 at 5:47 PM, Fabiano Faver far...@gmail.comjavascript:
  wrote:

 I changed the previous model a little:
 MODEL:
 db.define_table('erro_impressora',
   Field('descricao','string'),
   Field('nivel', 'integer' )
 )



 Controllers:

 def teste():
 rows = db(db.erro_impressora).select()
 return dict(rows=rows)

 def update_nivel():
 for key, value in request.post_vars:
 try:
 db.erro_impressora[key].update_record(nivel=value)
 except:
 pass
 db.commit()
 
 redirect(URL('teste'))


 VIEW:
 {{extend 'layout.html'}}

 form action={{=URL('update_nivel')}} method=POST
 table
 {{for row in rows:}}
 trtd{{=row.descricao}}/tdtd{{= SELECT(0,1, 
 value=row.nivel ) }}
 {{pass}}
 trtd colspan='2'{{=INPUT(_type='submit') }}/td/tr
 /table
 /form

 I`ve done what you suggested but i couldn`t put it to update. action 
 update_nivel() is receiving a empty request.post_vars

 Em quarta-feira, 22 de agosto de 2012 15h36min52s UTC-3, rochacbruno 
 escreveu:

 You can try something like this:

 def test():
 rows = db(db.test).select()
 return dict(rows=rows)

 def update_level():
 for key, value in request.post_vars:
 try:
 db.table[key].update_record(**level=value)
 except:
 # do something if key is invalid.
 db.commit()
 redirect(URL TO REDIRECT AFTER UPDATES)  # or use ajax

 Now in views/controller/test.html

 form action={{=URL(update_level)**}} method=POST
table   
{{for row in rows:}}
tr td{{=row.name}}/tdtd *input type=text value= id={{=
 row.id}} name={{=row.id}} /*/td/tr   
{{pass}}
/table
 /form


 On Wed, Aug 22, 2012 at 3:16 PM, Fabiano Faver far...@gmail.com wrote:

 | name  |  level  |
 --**
   test 1  |combobox(0)   |
   test 2  |combobox(1)   | 
   test 3  |combobox(0)   |
  
  |  Submit  |
  - 


  -- 
  
  
  




-- 





Re: [web2py] Update many rows at once separately

2012-08-22 Thread Bruno Rocha
You can try something like this:

def test():
rows = db(db.test).select()
return dict(rows=rows)

def update_level():
for key, value in request.post_vars:
try:
db.table[key].update_record(level=value)
except:
# do something if key is invalid.
db.commit()
redirect(URL TO REDIRECT AFTER UPDATES)  # or use ajax

Now in views/controller/test.html

form action={{=URL(update_level)}} method=POST
   table
   {{for row in rows:}}
   tr td{{=row.name}}/tdtd *input type=text value= id={{=
row.id}} name={{=row.id}} /*/td/tr
   {{pass}}
   /table
/form


On Wed, Aug 22, 2012 at 3:16 PM, Fabiano Faver far...@gmail.com wrote:

 | name  |  level  |
 --
   test 1  |combobox(0)   |
   test 2  |combobox(1)   |
   test 3  |combobox(0)   |
  
  |  Submit  |
  -


-- 





Re: [web2py] Update many rows at once separately

2012-08-22 Thread Fabiano Faver
Thanks Bruno, I'll try it now.

Em quarta-feira, 22 de agosto de 2012 15h36min52s UTC-3, rochacbruno 
escreveu:

 You can try something like this:

 def test():
 rows = db(db.test).select()
 return dict(rows=rows)

 def update_level():
 for key, value in request.post_vars:
 try:
 db.table[key].update_record(level=value)
 except:
 # do something if key is invalid.
 db.commit()
 redirect(URL TO REDIRECT AFTER UPDATES)  # or use ajax

 Now in views/controller/test.html

 form action={{=URL(update_level)}} method=POST
table   
{{for row in rows:}}
tr td{{=row.name}}/tdtd *input type=text value= id={{=
 row.id}} name={{=row.id}} /*/td/tr   
{{pass}}
/table
 /form


 On Wed, Aug 22, 2012 at 3:16 PM, Fabiano Faver far...@gmail.comjavascript:
  wrote:

 | name  |  level  |
 --
   test 1  |combobox(0)   |
   test 2  |combobox(1)   | 
   test 3  |combobox(0)   |
  
  |  Submit  |
  - 




-- 





Re: [web2py] Update many rows at once separately

2012-08-22 Thread Fabiano Faver
I changed the previous model a little:
MODEL:
db.define_table('erro_impressora',
  Field('descricao','string'),
  Field('nivel', 'integer' )
)



Controllers:

def teste():
rows = db(db.erro_impressora).select()
return dict(rows=rows)

def update_nivel():
for key, value in request.post_vars:
try:
db.erro_impressora[key].update_record(nivel=value)
except:
pass
db.commit()

redirect(URL('teste'))


VIEW:
{{extend 'layout.html'}}

form action={{=URL('update_nivel')}} method=POST
table
{{for row in rows:}}
trtd{{=row.descricao}}/tdtd{{= SELECT(0,1, value=row.nivel 
) }}
{{pass}}
trtd colspan='2'{{=INPUT(_type='submit') }}/td/tr
/table
/form

I`ve done what you suggested but i couldn`t put it to update. action 
update_nivel() is receiving a empty request.post_vars

Em quarta-feira, 22 de agosto de 2012 15h36min52s UTC-3, rochacbruno 
escreveu:

 You can try something like this:

 def test():
 rows = db(db.test).select()
 return dict(rows=rows)

 def update_level():
 for key, value in request.post_vars:
 try:
 db.table[key].update_record(level=value)
 except:
 # do something if key is invalid.
 db.commit()
 redirect(URL TO REDIRECT AFTER UPDATES)  # or use ajax

 Now in views/controller/test.html

 form action={{=URL(update_level)}} method=POST
table   
{{for row in rows:}}
tr td{{=row.name}}/tdtd *input type=text value= id={{=
 row.id}} name={{=row.id}} /*/td/tr   
{{pass}}
/table
 /form


 On Wed, Aug 22, 2012 at 3:16 PM, Fabiano Faver far...@gmail.comjavascript:
  wrote:

 | name  |  level  |
 --
   test 1  |combobox(0)   |
   test 2  |combobox(1)   | 
   test 3  |combobox(0)   |
  
  |  Submit  |
  - 




-- 





Re: [web2py] Update many rows at once separately

2012-08-22 Thread Bruno Rocha
You have to give id and name to form inputs, and select needs options.

Ttry this on web2py shell

print SELECT(*[OPTION(option, **{_value: option, _selected:selected
if option == 1 else None}) for option in (0, 1)], _name=1, _id=1)
select id=1 name=1option value=00/optionoption
selected=selected value=11/option/select

Adapting to your case:

 {{for row in rows:}}
trtd{{=row.descricao}}/tdtd{{=SELECT(*[OPTION(option,
**{_value: option, _selected:selected if option == row.nivel else
None}) for option in (0, 1)], _name=row.id, _id=row.id) }}
   {{pass}}

On Wed, Aug 22, 2012 at 5:47 PM, Fabiano Faver far...@gmail.com wrote:

 I changed the previous model a little:
 MODEL:
 db.define_table('erro_impressora',
   Field('descricao','string'),
   Field('nivel', 'integer' )
 )



 Controllers:

 def teste():
 rows = db(db.erro_impressora).select()
 return dict(rows=rows)

 def update_nivel():
 for key, value in request.post_vars:
 try:
 db.erro_impressora[key].update_record(nivel=value)
 except:
 pass
 db.commit()

 redirect(URL('teste'))


 VIEW:
 {{extend 'layout.html'}}

 form action={{=URL('update_nivel')}} method=POST
 table
 {{for row in rows:}}
 trtd{{=row.descricao}}/tdtd{{= SELECT(0,1, value=row.nivel
 ) }}
 {{pass}}
 trtd colspan='2'{{=INPUT(_type='submit') }}/td/tr
 /table
 /form

 I`ve done what you suggested but i couldn`t put it to update. action
 update_nivel() is receiving a empty request.post_vars

 Em quarta-feira, 22 de agosto de 2012 15h36min52s UTC-3, rochacbruno
 escreveu:

 You can try something like this:

 def test():
 rows = db(db.test).select()
 return dict(rows=rows)

 def update_level():
 for key, value in request.post_vars:
 try:
 db.table[key].update_record(**level=value)
 except:
 # do something if key is invalid.
 db.commit()
 redirect(URL TO REDIRECT AFTER UPDATES)  # or use ajax

 Now in views/controller/test.html

 form action={{=URL(update_level)**}} method=POST
table
{{for row in rows:}}
tr td{{=row.name}}/tdtd *input type=text value= id={{=
 row.id}} name={{=row.id}} /*/td/tr
{{pass}}
/table
 /form


 On Wed, Aug 22, 2012 at 3:16 PM, Fabiano Faver far...@gmail.com wrote:

 | name  |  level  |
 --**
   test 1  |combobox(0)   |
   test 2  |combobox(1)   |
   test 3  |combobox(0)   |
  
  |  Submit  |
  -


  --





--