two tables does not simplify things. why can i not just enter that variable into a crud submission?
On 2/23/2012 3:24 PM, Richard Vézina wrote:
Sorry, my english is terrilble sometimes... I just thought about an other solution :You could have two ips table one that interact with web2py and an other for your other program that access ips table. Then you will have to trigger data synchronisation between the 2 tables.RichardOn Thu, Feb 23, 2012 at 3:16 PM, Larry G. Wapnitsky <la...@kvetsch.com <mailto:la...@kvetsch.com>> wrote:I apologize, but there is a bit of a language barrier here. What you've written is very confusing to me On 2/23/2012 3:14 PM, Richard Vézina wrote:How your other system call you ips table? Directly at backend level? If so you can't just use the proper field type to make work web2py correctly and use plainfully you will have to master much more web2py and how it works to make it works the way you need it to work. If the orther program that use the ips table access the data in ips by passing query to web2py then you can change your field type to integer and let web2py do it works. Richard On Thu, Feb 23, 2012 at 3:07 PM, Larry G. Wapnitsky <la...@kvetsch.com <mailto:la...@kvetsch.com>> wrote: I'm pretty lost in everything you've described. I've been working with web2py for 2+ days and am slowly getting the hang of it. If you could dumb it down a bit, that would be helpful. FYI - I can print the username using auth.user_id.username anyplace else in a web page. I just need to submit that variable to the database when my form is properly filled out. Nothing more, nothing less. I know this can be done using hidden form objects in regular HTML, but I don't see how to do that with CRUD. On 2/23/2012 3:02 PM, Richard Vézina wrote:I am pretty not sure about the hack, but you can try... It is pretty dirty... And you will not be able to use represent except if you transform back you id from string to int. Why you don't just write a simple function that you other ressource will call to get the ids under string format like this : def id_to_string(id): return str(id) Richard On Thu, Feb 23, 2012 at 2:58 PM, Richard Vézina <ml.richard.vez...@gmail.com <mailto:ml.richard.vez...@gmail.com>> wrote: In that case I think you will have to build something on your side... Maybe implement your own IS_IN_DB could be a solution... A hack could be this : db.ips.reportedby.requires=str(IS_IN_DB()) But I don't think you will be able to define a foreign key... You will have to enforce your integrity check by yourself at the form level with validator... So, change your field definition for string only, no "db.auth_user" and by the way that was wrong model definition I didn't catch at first read... Richard On Thu, Feb 23, 2012 at 2:53 PM, Larry G. Wapnitsky <la...@kvetsch.com <mailto:la...@kvetsch.com>> wrote: it's only one user that I need to enter into thedatabase at a time, and only the username. reportedby needs to be text due to anotherapplication that uses the same database. On 2/23/2012 2:51 PM, Richard Vézina wrote:Ok, So you need to create a foreign key relation... So you need "requires="... db.ips.reportedby.requires=IS_IN_DB(db, 'ips.id <http://ips.id>', '%(first_name)s %(last_name)s %(username)s %(whateverfieldname)s') If you have only one referenced user you will have to change the type of reportedby to integer since the id of ips is a int. If you want to reference many users you will have to add something to you IS_IN_DB requires : db.ips.reportedby.requires=IS_IN_DB(db, 'ips.id <http://ips.id>', '%(first_name)s %(last_name)s %(username)s %(whateverfieldname)s', multiple=True) And you will have to change also the type of the field for : list:reference type See book chapter 6 whit keyword list:reference Richard On Thu, Feb 23, 2012 at 2:43 PM, Larry G. Wapnitsky <la...@kvetsch.com <mailto:la...@kvetsch.com>> wrote: I need to have the username added to another SQL table on submission of a form. This is some of the code: db.define_table('ips', Field('id', 'id'), Field('ipaddress','string', length=15, unique=True), Field('dateadded', 'datetime', default=request.now), Field('reportedby', 'string', db.auth_user, writable=False, readable=False), Field('updated', 'datetime', default=request.now), Field('attacknotes', 'text'), Field('b_or_w', 'string', length=1), migrate=False) db.ips.ipaddress.requires = [IS_NOT_IN_DB(db, 'ips.ipaddress')] db.ips.ipaddress.requires.append(IS_IPV4()) the field 'reportedby' needs to be filled in with the username taken from AD for the logged in user. On 2/23/2012 2:37 PM, Richard Vézina wrote:Ok, but what's is the problem... I don't understand sorry. Richard On Thu, Feb 23, 2012 at 2:33 PM, Larry G. Wapnitsky <la...@kvetsch.com <mailto:la...@kvetsch.com>> wrote: The issue is not putting the username into the web2py database, but another database that's storing information. On 2/23/2012 2:32 PM, Richard Vézina wrote:I am not sure how you connect to LDAP, but there is utilities to connect LDAP with web2py. You should read about those in the book searching with LDAP as keyword. If you only want to import LDAP user into web2py database table, I suggest you to use the user table of the RBAC. So then you can access those entries with CRUD, but also manage who is allow to access those sensitive informations. Richard On Thu, Feb 23, 2012 at 2:13 PM, Larry Wapnitsky <la...@kvetsch.com <mailto:la...@kvetsch.com>> wrote: (newbie disclaimer :)) I'm logging in to my application via AD/LDAP. I can get the variable of the username with no issue. What i need to do next is take this variable and insert it into a field in a CRUD form and have it show in my database. Thanks, Larry