~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to lib/common/db.py

  • Committer: mattgiuca
  • Date: 2008-02-19 00:54:28 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:500
db: get_user and get_users now return User objects instead of dictionaries.
    This is the major part of replacing dicts with User objects, as it
    propagates upwards.

Propagated User objects up through the following modules:
    listusers.py, dispatch.login, authenticate, userservice, forumutil
All of these now treat users as an object rather than a dict.

To save on the size of the changes so far, login still individually copies
fields over to the session (so the session does not yet store a user object;
that is the second part of this refactor).

WOO!! Revision 500 :)

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
import md5
37
37
import copy
38
38
 
39
 
from common import caps
 
39
from common import (caps, user)
40
40
 
41
41
def _escape(val):
42
42
    """Wrapper around pg.escape_string. Prepares the Python value for use in
343
343
            dry=dry)
344
344
 
345
345
    def get_user(self, login, dry=False):
346
 
        """Given a login, returns a dictionary of the user's DB fields,
347
 
        excluding the passhash field.
 
346
        """Given a login, returns a User object containing details looked up
 
347
        in the DB.
348
348
 
349
349
        Raises a DBException if the login is not found in the DB.
350
350
        """
351
 
        return self.get_single({"login": login}, "login",
 
351
        userdict = self.get_single({"login": login}, "login",
352
352
            self.login_getfields, self.login_primary,
353
353
            error_notfound="get_user: No user with that login name", dry=dry)
 
354
        if dry:
 
355
            return userdict     # Query string
 
356
        # Package into a User object
 
357
        return user.User(**userdict)
354
358
 
355
359
    def get_users(self, dry=False):
356
 
        """Returns a list of all users. The list elements are a dictionary of
357
 
        the user's DB fields, excluding the passhash field.
 
360
        """Returns a list of all users in the DB, as User objects.
358
361
        """
359
 
        return self.get_all("login", self.login_getfields, dry=dry)
 
362
        userdicts = self.get_all("login", self.login_getfields, dry=dry)
 
363
        if dry:
 
364
            return userdicts    # Query string
 
365
        # Package into User objects
 
366
        return [user.User(**userdict) for userdict in userdicts]
360
367
 
361
368
    def user_authenticate(self, login, password, dry=False):
362
369
        """Performs a password authentication on a user. Returns True if