Turbogears kid y base de datos
FERNANDO VILLARROEL
fvillarroel en yahoo.com
Mie Abr 23 05:09:13 CEST 2008
Hola a todos.
Me baje turbogears y le estoy metiendo mano.
o
Lo primero es que en dev.cfg lo configure para
conectarme a una base de datos ya existente
PostgreSQL, y todo funciono bien.
La duda es que me imagino que Turbogears es capaz de
mapear el modelo ya exitente?
Es decir luego de configurar dev.cfg ejecute :
$tg-admin sql create
y metin un monton de codigo en model.py
Pero luego quise probar con crud para que me genere
los templates de las tablas de la BBDD.
Pero el resultado no es lo que yo esperaba ya que por
lo que logre entender se genero una carpeta con las
plantillas .kid y un nuevo controllers.py que debo
personalizar; haciendo funciones uno por cada tabla de
base de datos, es eso asi?
Los formatod generados en /templates:
$form.kid __init__.py list.kid master.kid show.kid
y en controllers.py se genera el siguiente codigo
#coding=utf-8
from turbogears import controllers, expose, redirect
from turbogears import validate, flash, error_handler
from accesoabasesdedatos.model import movil
from turbogears import widgets, validators
#from turbogears import identity
#from turbogears import paginate
class movilFields(widgets.WidgetsList):
"""fields definitions. Replace to your Fields"""
name = widgets.TextField(label="Name")
url = widgets.TextField(label="URL")
class movilSchema(validators.Schema):
"""
define validation schema that involves
field dependency or logical operators
"""
name = validators.String(not_empty=True, max=16)
url = validators.URL(add_http=True,
check_exists=True)
class movilForm(widgets.TableForm):
"""form builder"""
#name="Movil"
fields = movilFields()
#validator = movilSchema() # define schema outside
of movilFields
#method="post"
#submit_text = "Create"
model_form = movilForm()
#protect MovilPack with identity by include
#identity.SecureResource in superclass
class MovilPack(controllers.Controller):
"""Basic model admin interface"""
modelname="movil"
@expose()
def default(self, tg_errors=None):
"""handle non exist urls"""
raise redirect("list")
#require = identity.in_group("admin")
@expose()
def index(self):
"""handle front page"""
raise redirect("list")
@expose(template='kid:accesoabasesdedatos.MovilPack.templates.list')
#@paginate('records')
def list(self, **kw):
"""List records in model"""
records = movil.select()
return dict(records = records,
modelname=self.modelname)
@expose(template='kid:accesoabasesdedatos.MovilPack.templates.show')
def show(self,id, **kw):
"""Show record in model"""
record = movil.get(int(id))
return dict(record = record)
@expose(template='kid:accesoabasesdedatos.MovilPack.templates.form')
def new(self, **kw):
"""Create new records in model"""
return dict(modelname = self.modelname, form =
model_form, page='new')
@expose(template='kid:accesoabasesdedatos.MovilPack.templates.form')
def edit(self, id, **kw):
"""Edit record in model"""
try:
record = movil.get(int(id))
except:
flash = "Not valid edit"
return dict(modelname = self.modelname, form =
model_form, page='edit',
record = record)
@validate(model_form)
@error_handler(new)
@expose()
def save(self, id=None, **kw):
"""Save or create record to model"""
#update kw
if id:
#do update
record = movil.get(int(id))
for attr in kw:
setattr(record, attr, kw[attr])
flash("movil was successfully updated.")
raise redirect("../list")
else:
#do create
movil(**kw)
flash("movil was successfully created.")
raise redirect("list")
@expose()
def destroy(self, id):
"""Destroy record in model"""
record = movil.get(int(id))
record.destroySelf()
flash("movil was successfully destroyed.")
raise redirect("../list")
Bueno espero que se entienda mis consultas.
Saludos
Fernando.
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es