# HG changeset patch # User Lennard de Rijk # Date 1232710615 0 # Node ID f18c0a56da8b5c79ad65502e6a86fb72e1b4eeb3 # Parent 27c656c01591d083d2bc3a7daa0130f51b37e2a3 Redid removeRequestForRole to completeRequestForRole. Patch by: Lennard de Rijk Reviewed by: to-be-reviewed diff -r 27c656c01591 -r f18c0a56da8b app/soc/logic/helper/request.py --- a/app/soc/logic/helper/request.py Fri Jan 23 11:34:58 2009 +0000 +++ b/app/soc/logic/helper/request.py Fri Jan 23 11:36:55 2009 +0000 @@ -1,54 +1,51 @@ -#!/usr/bin/python2.5 -# -# Copyright 2008 the Melange authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Functions that are useful when dealing with requests. -""" - -__authors__ = [ - '"Lennard de Rijk" ', - ] - - -import soc.logic.models as model_logic - - -def removeRequestForRole(role_entity): - """Removes the request that leads to the creation of the given entity. - - Args: - role_entity : A datastore entity that is either a role or a subclass of the role model - - """ - - # get the type of the role entity using the classname - role_type = role_entity.__class__.__name__ - - # get the request logic so we can query the datastore - request_logic = model_logic.request.logic - - # create the query properties for the specific role - properties = {'scope' : role_entity.scope, - 'link_id' : role_entity.link_id, - 'role' : role_type.lower() } - - # get the request that complies with properties - request_entity = request_logic.getForFields(properties, unique=True) - - # delete the request from the datastore, if there is any - if request_entity: - request_logic.delete(request_entity) - - \ No newline at end of file +#!/usr/bin/python2.5 +# +# Copyright 2008 the Melange authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Functions that are useful when dealing with requests. +""" + +__authors__ = [ + '"Lennard de Rijk" ', + ] + + +import soc.logic.models as model_logic + + +def completeRequestForRole(role_entity, role_name): + """Marks the request that leads to the given role_entity as completly accepted. + + Args: + role_entity : A datastore entity that is either a role or a subclass of the role model + role_name : The name in the request that is used to describe the type of the role_entity + + """ + + # get the request logic so we can query the datastore + request_logic = model_logic.request.logic + + # create the query properties for the specific role + properties = {'scope_path' : role_entity.scope_path, + 'link_id' : role_entity.link_id, + 'role' : role_name} + + # get the request that complies with properties + request_entity = request_logic.getForFields(properties, unique=True) + + # mark the request completed, if there is any + if request_entity: + request_logic.updateModelProperties(request_entity, + {'completed' : True, 'group_accepted' : True, 'user_accepted' : True}) diff -r 27c656c01591 -r f18c0a56da8b app/soc/logic/models/club_admin.py --- a/app/soc/logic/models/club_admin.py Fri Jan 23 11:34:58 2009 +0000 +++ b/app/soc/logic/models/club_admin.py Fri Jan 23 11:36:55 2009 +0000 @@ -19,9 +19,11 @@ __authors__ = [ '"Sverre Rabbelier" ', + '"Lennard de Rijk" ', ] +from soc.logic.helper import request from soc.logic.models import role from soc.logic.models import club as club_logic @@ -42,4 +44,11 @@ scope_logic=scope_logic) + def _onCreate(self, entity): + """Will mark any outstanding requests for the new Club Admin as completly accepted. + """ + # TODO(ljvderijk) apply this to all other role logics if this solution is accepted + request.completeRequestForRole(entity, 'club_admin') + + logic = Logic() diff -r 27c656c01591 -r f18c0a56da8b app/soc/logic/models/role.py --- a/app/soc/logic/models/role.py Fri Jan 23 11:34:58 2009 +0000 +++ b/app/soc/logic/models/role.py Fri Jan 23 11:36:55 2009 +0000 @@ -23,7 +23,6 @@ ] -from soc.logic.helper import request from soc.logic.models import base import soc.models.role @@ -40,12 +39,6 @@ super(Logic, self).__init__(model, base_model=base_model, scope_logic=scope_logic) - - def _onCreate(self, entity): - """Will remove any outstanding requests for the new role entity. - """ - - request.removeRequestForRole(entity) logic = Logic()