I remember a post about an ORM layer class on top of DAL, that allowed for dynamic selects django style, I can't find the post though, can anyone remember what it was called?
-Thadeus On Tue, Feb 9, 2010 at 9:11 AM, tiago almeida <tiago.b.alme...@gmail.com> wrote: > Hello all, > > I've been thinking about implementing a module that takes a DAL table > definition and generates a class object from that definition. The purpose of > this is to use those automatically generated classes in the controllers > instead of accessing the DAL directly. Eg: Creating an instance of that > class could make an insertion in the db transparently; setting attributes on > that instance triggers db updates, etc.. > One important feature is that every table Row is mapped to an instance of > some class and this layer is completely opaque, i.e. it can't expose any > Rows/Row/Field objects to the client. > > A more concrete example of whats being pursued: > ----------------- > db.define_table( "Person", Field('name') ) > db.define_table( "Dog", Field("name"), Field("Owner",db.Person) ) > > createClass(db.Person) > createClass(db.Dog) > > #and now you can do: > > p = Person("John") #selects person with name="John", possibly > throwing exception or creating such a record (have to weigh the pros and > cons) > johns_dogs = p.dog_list #johns_dogs is a list of Dog instances > johns_dogs[0].name #returns name of one of the john's dogs. > johns_dogs[0].name = "new name" #updates this dogs name in db > ----------------- > > I've had some success a this, namely, made a function that takes a Rows > object and returns a list of Storage instances where each storage has the > same attributes as the corresponding Row fields and, whenever the value of a > Row's Field is a Sql.Set, it .selects() it and continues recursively until > everything is converted into a big tree of Storage instances. > > This is where I ask for some help. Ideally I don't want to convert every Row > into a Storage, I'd like a Row of table Product (e.g.) to be converted into > an instance of class Product (which was automatically generated when table > Product was defined). Yet, I do not know of an easy way to get the Table > from which a specific Row came from. Is it possible without major hacks in > the DAL? > > Also, since you're at it, what do you think about this? My motivation is > that it gets tiring to be defining helper functions to make the controller > code simpler and then be constantly updating those helper functions whenever > the model changes. > > > Thanks a lot in advance, > Tiago > > > -- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To post to this group, send email to web...@googlegroups.com. > To unsubscribe from this group, send email to > web2py+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/web2py?hl=en. > -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.