diff --git a/NEWS b/NEWS index 20f8e08..6cefd4b 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,10 @@ +1.4.1: June ?, 2008: + * Updated tools/set_plan.py to automatically update a user's group + membership. + 1.4.0: June 9, 2008 - * Implemented some basic user administration features, allowing you to create - Luminotes users yourself. + * Implemented some basic user administration features, allowing you to + create Luminotes users yourself. * Added new rate plans with support for user administration. * Wrote a tool for manually updating a user's rate plan: tools/set_plan.py * Refactored some of the client-side form-handling code to cut down on diff --git a/controller/Users.py b/controller/Users.py index 40ef74a..b941c1b 100644 --- a/controller/Users.py +++ b/controller/Users.py @@ -1352,12 +1352,12 @@ class Users( object ): raise Payment_error( u"invalid recurring", params ) user.rate_plan = plan_index self.__database.save( user, commit = False ) - self.__update_groups( user ) + self.update_groups( user ) self.__database.commit() elif txn_type == u"subscr_cancel": user.rate_plan = 0 # return the user to the free account level self.__database.save( user, commit = False ) - self.__update_groups( user ) + self.update_groups( user ) self.__database.commit() elif txn_type in ( u"subscr_payment", u"subscr_failed" ): pass # for now, ignore payments and let paypal handle them @@ -1366,7 +1366,7 @@ class Users( object ): return dict() - def __update_groups( self, user ): + def update_groups( self, user ): """ Update a user's group membership as a result of a rate plan change. This method does not commit the current database transaction. diff --git a/tools/set_plan.py b/tools/set_plan.py index a76b3ac..f5cd183 100755 --- a/tools/set_plan.py +++ b/tools/set_plan.py @@ -3,9 +3,12 @@ import os import os.path import sys +import cherrypy from controller.Database import Database +from controller.Users import Users from model.Notebook import Notebook from model.User import User +from config import Common class Plan_setter( object ): @@ -17,6 +20,9 @@ class Plan_setter( object ): self.user_id = user_id self.rate_plan = int( rate_plan ) + rate_plans = Common.settings[ u"global" ][ u"luminotes.rate_plans" ] + self.users = Users( database, None, None, None, None, rate_plans ) + self.set_plan() self.database.commit() @@ -28,7 +34,10 @@ class Plan_setter( object ): sys.exit( 1 ) user.rate_plan = self.rate_plan - self.database.save( user ) + self.database.save( user, commit = False ) + + # update a user's group membership as a result of a rate plan change + self.users.update_groups( user ) def main( args ): database = Database()