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

« back to all changes in this revision

Viewing changes to ivle/db.py

  • Committer: matt.giuca
  • Date: 2009-01-14 10:10:12 UTC
  • mto: This revision was merged to the branch mainline in revision 1090.
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:branches%2Fstorm:1132
The new ivle.database.User class is now used in Request and usrmgt, which
    means it is now almost universally used in favour of ivle.user.User (now
    deprecated).

Noticeable change: The minor bug where the change to a user object in the
    database is not reflected in the user's session (eg. changing nick doesn't
    update title until log out).

ivle.dispatch:
    Session now contains 'login' (username string) rather than 'user' (full
        ivle.user.User object). This is a unicode string now.

    req.user is now a ivle.database.User object rather than an ivle.user.User
        object. This makes for a whole lot of really subtle differences, but
        largely conforms to the same interface. Note that strings must now all
        be unicode.

    login: Removed use of ivle.db. Now uses User object.

    html: Now handles unicode login and config options.

ivle.db: Removed update_user. Now replaced with Storm model.

ivle.database: Renamed has_cap back to hasCap (saved for later). Fixed small
    unicode bug.

ivle.makeuser.make_svn_auth now takes a store object.

usrmgt-server: Use new User class.

userservice: Now uses User class internally.
    get_user action now returns ISO 8601 date format, rather than a
        time tuple. (Wasn't being used).
    get_user action no longer transmits local_password (small security risk;
        note that it wasn't possible to see this for any user other than
        yourself unless admin).

ivle.util - added function object_to_dict.

Show diffs side-by-side

added added

removed removed

Lines of Context:
401
401
        # Execute the query.
402
402
        return self.insert(fields, "login", self.login_fields, dry=dry)
403
403
 
404
 
    def update_user(self, login, dry=False, **kwargs):
405
 
        """Updates fields of a particular user. login is the name of the user
406
 
        to update. The dict contains the fields which will be modified, and
407
 
        their new values. If any value is omitted from the dict, it does not
408
 
        get modified. login and studentid may not be modified.
409
 
        Passhash may be modified by supplying a "password" field, in
410
 
        cleartext, not a hashed password.
411
 
 
412
 
        Note that no checking is done. It is expected this function is called
413
 
        by a trusted source. In particular, it allows the password to be
414
 
        changed without knowing the old password. The caller should check
415
 
        that the user knows the existing password before calling this function
416
 
        with a new one.
417
 
        """
418
 
        if 'passhash' in kwargs:
419
 
            raise DBException("Supplied arguments include passhash (invalid) (2).")
420
 
        if "password" in kwargs:
421
 
            kwargs = copy.copy(kwargs)
422
 
            kwargs['passhash'] = _passhash(kwargs['password'])
423
 
            del kwargs['password']
424
 
        return self.update({"login": login}, kwargs, "login",
425
 
            self.login_fields, self.login_primary, ["login", "studentid"],
426
 
            dry=dry)
427
 
 
428
404
    def get_user(self, login, dry=False):
429
405
        """Given a login, returns a User object containing details looked up
430
406
        in the DB.