zoom.users module

zoom.users

class zoom.users.User(*args, **kwargs)

Bases: zoom.utils.Record

Zoom User

activate()

Activate the user

add_group(group)

Make user a member of the group

allows(user, action)
apps

Returns the names of the apps the user can access

authenticate(password)

authenticate user credentials

authorize(action, thing)

authorize a user to perform an action on thing

If user is not allowed to perform the action an exception is raised. Object thing must provide allows(user, action) method.

can(action, thing)

test to see if user can action a thing object.

Object thing must provide allows(user, action) method.

can_run(app)

test if user can run an app

deactivate()

Deactivate the user

default_app

returns the default app for the user

full_name

user full name

get_groups()

get groups this user belongs to

>>> from zoom.database import setup_test
>>> users = Users(setup_test())
>>> user = users.first(username='guest')
>>> user.get_groups()[-4:]
['a_passreset', 'a_signup', 'everyone', 'guests']
>>> user = users.first(username='admin')
>>> user.get_groups()[:2]
['a_admin', 'a_apps']
get_memberships()
groups

Returns the groups the user belongs to

groups_ids

Returns the IDs for the groups the user belongs to

helpers()

provide user helpers

initialize(request)

Initialize user based on a request

is_active

get user active status

is_member(group)

determine if user is a member of a group

key

user as link

login(request, password, remember_me=False)

log user in

logout()

log user out

memberships
name

user full name

remove_groups()

Remove user membership in the group

set_password(password)

set the user password

status_text

Return status as human friendly text

update_last_seen()

Record the latest activity time for the user

avoid the record store put so as not to update the updated timestamp

Human friendly user account

url

user view url

user_id

Return user record id

when_last_seen
when_updated

Human friendly updated timestamp

class zoom.users.Users(db, entity=<class 'zoom.users.User'>)

Bases: zoom.records.RecordStore

Zoom Users

>>> import datetime
>>> from zoom.database import setup_test
>>> db = setup_test()
>>> users = Users(db)
>>> user = users.first(username='guest')
>>> user.created = datetime.datetime(2017, 3, 30, 17, 23, 43)
>>> user.updated = datetime.datetime(2017, 3, 30, 17, 23, 43)
>>> user.now = datetime.datetime(2017, 4, 30, 17, 23, 43)
>>> print(user)
User
  user_id .............: 3
  key .................: 'guest'
  name ................: 'Guest User'
  first_name ..........: 'Guest'
  last_name ...........: 'User'
  now .................: datetime.datetime(2017, 4, 30, 17, 23, 43)
  url .................: '/admin/users/guest'
  apps ................: ['content', 'forgot', 'login', 'passreset', 'signup']
  link ................: 'guest'
  email ...............: 'guest@datazoomer.com'
  phone ...............: ''
  groups ..............: ['everyone', 'guests']
  status ..............: 'A'
  created .............: datetime.datetime(2017, 3, 30, 17, 23, 43)
  request .............: None
  updated .............: datetime.datetime(2017, 3, 30, 17, 23, 43)
  is_admin ............: False
  password ............: ''
  username ............: 'guest'
  full_name ...........: 'Guest User'
  is_active ...........: True
  created_by ..........: 1
  groups_ids ..........: [4, 3]
  updated_by ..........: 1
  default_app .........: '/home'
  memberships .........: {3}
  status_text .........: 'active'
  is_developer ........: False
  when_updated ........: 'over a month ago'
  when_last_seen ......: 'never'
  updated_by_link .....: 'admin'
  is_authenticated ....: False
after_insert(user)

Things to do right after inserting a new user

before_delete(user)

Things to do right before deleting a user

before_insert(user)

Things to do just before inserting a new User record

before_update(user)

Things to do just before updating a User record

locate(key)
zoom.users.authorize(*roles)

Decorator that authorizes (or not) the current user

Raises an exception if the current user does not have at least one of the listed roles.

zoom.users.get_current_username(request)

get current user username

zoom.users.get_groups(db, user)

get groups for a user

>>> from zoom.database import setup_test
>>> db = setup_test()
>>> users = Users(db)
>>> guest = users.first(username='guest')
>>> guest.username
'guest'
>>> guest._id
3
>>> groups = get_groups(db, guest)
>>> len(groups)
7
>>> 'everyone' in groups
True
>>> 'a_login' in groups
True
>>> 'managers' in groups
False
>>> 'administrators' in groups
False
>>> admin = users.first(username='admin')
>>> groups = get_groups(db, admin)
>>> 'everyone' in groups
True
>>> 'a_login' in groups
False
>>> 'managers' in groups
True
>>> 'administrators' in groups
True
zoom.users.handler(request, next_handler, *rest)

handle user

zoom.users.key_for(username)

Calculates a valid HTML tag id given an arbitrary string.

>>> key_for('Test 123')
'test-123'
>>> key_for('New Record')
'new-record'
>>> key_for('New "special" Record')
'new-special-record'
>>> key_for("hi test")
'hi-test'
>>> key_for("hi-test")
'hi-test'
>>> key_for(1234)
'1234'
>>> key_for('this %$&#@^is##-$&*!it')
'this-is-it'
>>> key_for('test-this')
'test-this'
>>> key_for('test.this')
'test.this'
>>> key_for('test\\this')
'test-this'
zoom.users.set_current_user(request)

Set current user

Set the current user based on the current username.