maybe a fifth option is to make the username a settable item, much like auth_table_name is, have a username_name item, and thus the tables can be defined this way?
The advantage is it would simplify the tools code (instead of adding try/except), and I think would serve the need you point out. What do you think? Still just thinking out loud... On Thu, Aug 6, 2009 at 9:00 PM, Yarko Tymciurak <yark...@gmail.com> wrote: > That's fine - then if you are building an OpenID application, you can > either: > manually have a separate field, or - have the OpenID solution modify what > the default auth fields are. > > This way, other apps still have choice. > > > On Thu, Aug 6, 2009 at 8:54 PM, Bottiger <bottig...@gmail.com> wrote: > >> >> > well, the problem then is that if you WANT to use email as username, you >> > have duplicate fields; >> >> Actually as I am implementing OpenID, I am finding a need for a >> separate field. In websites where you need to publicly display the >> person's username, such as with comments etc... your users might not >> like it if you displayed their email or First/Last name to the whole >> Internet. >> >> >> On Aug 6, 6:47 pm, Yarko Tymciurak <yark...@gmail.com> wrote: >> > On Thu, Aug 6, 2009 at 8:42 PM, Bottiger <bottig...@gmail.com> wrote: >> > >> > > Well you see, unlike the "username" column, the "email" column is >> > > actually defined. >> > >> > > So there are 3 possible solutions. >> > >> > > 1. Define a "username" column in the "auth_user" table by default. >> > >> > well, the problem then is that if you WANT to use email as username, you >> > have duplicate fields; >> > I don't like this solution; >> > >> > >> > >> > > 2. Change "username" to a column that is actually defined, such as >> > > "first_name" >> > >> > It would have to be unique, and this isn't reasonable constraint for >> > first_name or last_name (or even a combination of the two); >> > I don't like this either; >> > >> > >> > >> > > 3. Remove the "username" check and usage completely. >> > >> > I think I like my action: try username if that is what is passed in the >> > dict, perhaps raise a ticket a single time, >> > and fall back to 'email' if 'username' doesn't exist. >> > >> > What do others think? >> > >> > >> > >> > > On Aug 6, 6:38 pm, Yarko Tymciurak <yark...@gmail.com> wrote: >> > > > I see - so you would want an exception to be raised? What do you >> > > propose? >> > >> > > > On Thu, Aug 6, 2009 at 8:26 PM, Bottiger <bottig...@gmail.com> >> wrote: >> > >> > > > > The function takes a dictionary where if the username key is >> defined, >> > > > > then it assumes that your database has a "username" column which >> is >> > > > > incorrect behavior. >> > >> > > > > On Aug 6, 6:16 pm, Yarko Tymciurak <yark...@gmail.com> wrote: >> > > > > > On Thu, Aug 6, 2009 at 8:09 PM, Bottiger <bottig...@gmail.com> >> > > wrote: >> > >> > > > > > > I am using the latest version. >> > >> > > > > > By "latest version" do you mean revision 1062 from Launchpad, or >> do >> > > you >> > > > > > mean >> > >> > > > > > > I know there is a check, but the check is useless. If you >> specify a >> > > > > > > username in the dictionary that comes with the argument, then >> it >> > > will >> > > > > > > automatically assume that your auth_users table has a username >> > > column, >> > > > > > > which isn't the case. >> > >> > > > > > You you define the auth_users table, then you can define this >> > > additional >> > > > > > field; >> > > > > > if not, it uses the email field. >> > > > > > This is how it is designed. >> > >> > > > > > Am I missing something? >> > >> > > > > > > On Aug 6, 5:58 pm, Yarko Tymciurak <yark...@gmail.com> wrote: >> > > > > > > > Which version of web2py are you looking at? >> > >> > > > > > > > First - in the most current version, I think you are talking >> > > about >> > > > > line >> > > > > > > 653, >> > > > > > > > in >> > > > > > > > get_or_create_user(); >> > >> > > > > > > > You will note at the beginning of that function: >> > >> > > > > > > > if 'username' in keys: >> > > > > > > > username = 'username' >> > > > > > > > elif 'email' in keys: >> > > > > > > > username = 'email' >> > > > > > > > else: >> > > > > > > > raise SyntaxError, "user must have username or >> email" >> > >> > > > > > > > (there are 2 other places with lines like this, and they do >> > > similar >> > > > > > > checks; >> > > > > > > > so you can define a username in your auth, or by default it >> uses >> > > > > email). >> > >> > > > > > > > You might want to get a look at: >> > >> > >http://bazaar.launchpad.net/~mdipierro/web2py/devel/annotate/head%3A/<http://bazaar.launchpad.net/%7Emdipierro/web2py/devel/annotate/head%3A/> >> <http://bazaar.launchpad.net/%7Emdipierro/web2py/devel/annotate/head%3A/> >> > > < >> http://bazaar.launchpad.net/%7Emdipierro/web2py/devel/annotate/head%3A/> >> > > > > .< >> > > >> http://bazaar.launchpad.net/%7Emdipierro/web2py/devel/annotate/head%3A/ >> > > > > .> >> > > > > > > .. >> > >> > > > > > > > BEWARE: if you get the latest revision from launchpad, >> there is >> > > a >> > > > > bug in >> > > > > > > > template.py - which I'm waiting for Massimo to apply the >> patch >> > > for... >> > > > > > > You >> > > > > > > > can remove the ".read()" portion of line 120 yourself in the >> > > > > meantime, >> > > > > > > that >> > > > > > > > is in parse_template(): >> > >> > > > > > > > try: >> > > > > > > > fp = open(t, 'rb').read() >> > > > > > > > parent = fp.read() >> > > > > > > > fp.close() >> > >> > > > > > > > should read: >> > >> > > > > > > > try: >> > > > > > > > fp = open(t, 'rb') >> > > > > > > > parent = fp.read() >> > > > > > > > fp.close() >> > >> > > > > > > > - Yarko >> > >> > > > > > > > On Thu, Aug 6, 2009 at 7:29 PM, Bottiger < >> bottig...@gmail.com> >> > > > > wrote: >> > >> > > > > > > > > I am trying to incorporate OpenID into Auth. >> > >> > > > > > > > > In my attempt to implement a CAS style plugin into auth, I >> > > stumbled >> > > > > > > > > upon a bizzare error. >> > >> > > > > > > > > On line 628 of gluon.tools, there is the following line: >> > >> > > > > > > > > "users = self.db(table_user[username] == >> > > keys[username]).select()" >> > >> > > > > > > > > username is defined to be "username" if you have a >> username and >> > > > > > > > > "email" if you have email specified. However, when I >> looked at >> > > the >> > > > > > > > > auth_user table, there is no "username" column. >> > >> > > > > > > > > The closest thing to a username column is first_name or >> > > last_name, >> > > > > but >> > > > > > > > > obviously this isn't the same thing. >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@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 -~----------~----~----~----~------~----~------~--~---