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 <[email protected]> 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 <[email protected]> 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