On Jan 2, 2011, at 11:04 AM, Rick wrote:
> 
> Thanks, I changed the code to this:
> Users:
> 
> ==in admin.html==
> <br>
> {{for record in records:}}
> {{=record.username}} : {{=record.password}}
> [
> {{session.username=record.username}}
> <a href="#" onclick="ajax('{{=URL('deleteusr')}}',[],'')">Delete this
> user</a>
> ]<br>
> {{pass}}
> </div>
> 
> ==in a controller file==
> def deleteusr():
>       db(custom_auth_table.username==session.username).delete()
>       return 'the record has been deleted'
> 
> ...but I don't know how to reload the page automatically after
> deleting a user. Any ideas?

The easiest way, in this case, is not to use ajax. Just link directly to your 
deleteusr function.

Something like this:

def deleteusr():
        db(custom_auth_table.username==session.username).delete()
        session.flash('the record has been deleted')
        redirect(wherever)


On Jan 2, 5:13 pm, Jonathan Lundell <jlund...@pobox.com> wrote:
>> On Jan 2, 2011, at 7:01 AM, Rick wrote:
>> 
>> 
>> 
>>> I changed the code but it still doesn't work:
>> 
>> Here's a fragment of my code that I use to delete a user. It's not ajax, but 
>> you'll get the idea:
>> 
>>             ut = auth.settings.table_user
>>             uu = urow.auth_user
>>             ...
>>             if not db(ut.username == username).count():
>>                 ...complain and redirect...
>>             auth.del_group(auth.user_group(uu.id))  # uu.id is the user id 
>> I'm deleting
>>             db(ut.username == username).delete()
>> 
>> If you look at auth.del_group, you'll see that it does quite a bit of work 
>> to clean a user out of the group tables. I think I picked up this logic from 
>> the admin app, but I don't quite remember.
>> 
>> I think it'd be nice if auth had a comprehensive delete-user function.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> ==admin.html==
>>> {{extend 'layout.html'}}
>>> Add a user: <br>
>>> {{=form}}
>>> <br><br>
>>> Users:
>>> <br>
>>> {{for record in records:}}
>>> {{=record.username}} : {{=record.password}}
>>> [
>>> <a href="#"
>>> onclick="ajax('{{=URL('db(auth.settings.table_user_name==record.username).d 
>>> elete()')}}',
>>> [],'')">Delete this user</a>
>>> ]
>>> {{pass}}
>>> ============
>> 
>>> ==Here is some code from models/db.py==
>>> auth = Auth(globals(), db)
>> 
>>> db.define_table(
>>>    auth.settings.table_user_name,
>>>    Field('username'),
>>>    Field('password'),
>>>    Field('registration_key', default=''))
>> 
>>> auth.define_tables()
>> 
>>> custom_auth_table = db[auth.settings.table_user_name] # get the
>>> custom_auth_table
>>> ======
>> 
>>> On Dec 30 2010, 6:21 pm, Rick <sababa.sab...@gmail.com> wrote:
>>>> Hi,
>> 
>>>> I don't know if the way I add users is proper, but it works. Now I try
>>>> to write a <a> tag for deleting users, and it doesn't work. Here is
>>>> the code:
>> 
>>>> ==in a controller file==
>>>> def admin():
>>>>         records = db().select(custom_auth_table.ALL,
>>>> orderby=custom_auth_table.username)
>>>>         #records = SQLFORM(custom_auth_table, user, deletable=True)
>>>>         form = SQLFORM(db[auth.settings.table_user_name])
>>>>         if form.accepts(request.post_vars, session):
>>>>                 session.flash = 'Address saved.'
>>>>                 redirect(URL('admin'))
>>>>         return dict(form=form, records=records)
>>>> ========
>> 
>>>> ==admin.html==
>>>> {{extend 'layout.html'}}
>>>> Add a user: <br>
>>>> {{=form}}
>>>> <br><br>
>>>> Users:
>>>> <br>
>>>> {{for record in records:}}
>>>> {{=record.username}} : {{=record.password}}
>>>>  [
>>>> <a href="#"
>>>> onclick="ajax('{{=URL('db[auth.remove.record.username]')}}',
>>>> [],'')">Delete this user</a>
>>>> ]
>>>> <br>
>>>> {{pass}}
>>>> ========
>> 
>>>> Thanks in advance for help


Reply via email to