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