On a second thought. My fix in trunk is not the proper way so I am revering it. The problem is that your custom type needs to have an encoder and perhaps a decoder. Try this:
cidr = SQLCustomType ( type='string', native='cidr', encoder=lambda x: repr(str(x)) ) On Dec 30, 8:33 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > Please try the version in trunk. > > Massimo > > On Dec 30, 1:20 am, KMax <mkostri...@gmail.com> wrote: > > > This code start to work > > =========== > > from gluon.sql import SQLCustomType > > > db = DAL('postgres://web2py:gfhj...@db.sibnet.su/test1', > > pool_size=10) > > inet = SQLCustomType ( type='string',native='inet') > > > db.define_table('firewall', > > SQLField('network',type=inet)) > > =========== > > Look like > > ==from gluon.dal import SQLCustomType > > was not good idea. > > BUT > > Inserting or updating using web2py db admin > > Shows following: > > ------------------- > > Traceback (most recent call last): > > File "gluon/restricted.py", line 173, in restricted > > exec ccode in environment > > File "/home/web2py/applications/test/controllers/appadmin.py", line > > 304, in <module> > > File "gluon/globals.py", line 96, in <lambda> > > self._caller = lambda f: f() > > File "/home/web2py/applications/test/controllers/appadmin.py", line > > 286, in update > > if form.accepts(request.vars, session): > > File "gluon/sqlhtml.py", line 896, in accepts > > self.table._db(self.table.id == self.record.id).update(**fields) > > File "gluon/sql.py", line 3151, in update > > self._db._execute(query) > > File "gluon/sql.py", line 952, in <lambda> > > self._execute = lambda *a, **b: self._cursor.execute(*a, **b) > > ProgrammingError: syntax error at or near ".3" > > LINE 1: UPDATE firewall SET network=1.2.3.5 WHERE firewall.id=1; > > =================== > > Traceback (most recent call last): > > File "gluon/restricted.py", line 173, in restricted > > exec ccode in environment > > File "/home/web2py/applications/test/controllers/appadmin.py", line > > 304, in <module> > > File "gluon/globals.py", line 96, in <lambda> > > self._caller = lambda f: f() > > File "/home/web2py/applications/test/controllers/appadmin.py", line > > 124, in insert > > if form.accepts(request.vars, session): > > File "gluon/sqlhtml.py", line 898, in accepts > > self.vars.id = self.table.insert(**fields) > > File "gluon/sql.py", line 1844, in insert > > self._db._execute(query) > > File "gluon/sql.py", line 952, in <lambda> > > self._execute = lambda *a, **b: self._cursor.execute(*a, **b) > > ProgrammingError: syntax error at or near ".1" > > LINE 1: INSERT INTO firewall(network) VALUES (1.1.1.2); > > > Thank you for your helping > > On Dec 30, 12:31 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > I need your help debugging this... the relevant code in sql.py is > > > > if isinstance(field.type,SQLCustomType): > > > ftype = field.type.native or field.type.type > > > elif ... > > > elif not field.type in self._db._translator: > > > raise SyntaxError, 'Field: unknown field type: %s for %s' > > > % \ > > > (field.type, field.name) > > > > You get error on the last line but given the code you show me, it > > > should never get there. The first if should be true because field.type > > > should be cidr which is SQLCustomType. > > > > Try add some print statements and see what happens. > > -- 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.