[ckan-dev] Modifying user's properties with code

Rustam Mehmandarov minspamboks at gmail.com
Sun Sep 11 00:02:36 UTC 2011


Hi again,

While working on this code, I found a possible bug in CKAN when I
tried deleting users using "paster --plugin=ckan user delete" command.

To reproduce the bug do the following:

1. Create a user with an ID (which in my case was a user's full name)
that contains non-unicode caracters like Norwegian "æ", "ø", or "å".

2. Make sure that you can see something like the example below:
(pyenv) rm at mycomputer:$ paster --plugin=ckan user
Users:
name=Rustæm

3. Then try deleting the user with following command:
(pyenv) rm at mycomputer:$ paster --plugin=ckan user delete "Rustæm"

You should now get a python encoding error. I know that this is quite
rare case, but in our case it caused some trouble. Could you guys have
a look at this bug?

CKAN ver. 1.3.3.

Thanks a lot,
Rustam


On 5 September 2011 11:16, David Read <david.read at okfn.org> wrote:
> On 3 September 2011 22:53, Rustam Mehmandarov <minspamboks at gmail.com> wrote:
>> Hi all,
>>
>> I have a code that creates a user if it does not exists:
>>
>> if user is None:
>>            user = User(openid=user_id,
>>                        name=data['name'],
>>                        fullname=data['name'],
>>                        email=data['mail'])
>>            Session.add(user)
>>            Session.commit()
>>            Session.remove()
>>
>> But now, I also need some code that is able to update (for example)
>> the user's name every time I log in (the data is sent from another
>> system that does the authentication for CKAN). Is there some kind of
>> update user function in Session? Then I can do something like:
>>
>> user = User(openid=user_id,
>>            name=data['name'],
>>            fullname=data['name'],
>>            email=data['mail'])
>> if user is None:
>>            Session.add(user)
>> else:
>>            Session.UPDATE(user)
>> Session.commit()
>> Session.remove()
>>
>> Any kind of help is greatly appreciated. :)
>
> Hi Rustam,
>
> The first line of this is probably the key you need:
>
> user = model.Session.query(model.User).filter_by(openid=user_id).first()
> if user:
>    user.name = data['name']
> else:
>    user = User(openid=user_id,
>               name=data['name'],
>               fullname=data['name'],
>               email=data['mail'])
>     Session.add(user)
> Session.commit()
> Session.remove()
>
> David
>
>>
>> Thanks!
>> Rustam
>>
>> _______________________________________________
>> ckan-dev mailing list
>> ckan-dev at lists.okfn.org
>> http://lists.okfn.org/mailman/listinfo/ckan-dev
>>
>
> _______________________________________________
> ckan-dev mailing list
> ckan-dev at lists.okfn.org
> http://lists.okfn.org/mailman/listinfo/ckan-dev
>




More information about the ckan-dev mailing list