Also flush the user's ACL's when flushing the sidebar
It is pretty pointless to flush the sidebar if the same ACL's will
be re-used anyway, so make sure the ACL's are flushed as well.
Patch by: Sverre Rabbelier
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/cache/rights.py Wed Jan 28 14:15:00 2009 +0000
@@ -0,0 +1,54 @@
+#!/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.
+
+"""Module contains rights memcache functions.
+"""
+
+__authors__ = [
+ '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+ ]
+
+
+from google.appengine.api import memcache
+
+
+RIGHTS = [
+ 'checkIsLoggedIn',
+ 'checkNotLoggedIn',
+ 'checkIsUser',
+ 'checkIsDeveloper',
+ 'checkCanMakeRequestToGroup',
+ 'checkCanCreateFromRequest',
+ 'checkCanProcessRequest',
+ 'checkIsMyGroupAcceptedRequest',
+ 'checkIsHost',
+ 'checkIsHostForSponsor',
+ 'checkIsClubAdminForClub',
+ 'checkIsApplicationAccepted',
+ 'checkIsMyNotification',
+ 'checkIsMyApplication',
+ 'checkIsMyActiveRole',
+ 'checkHasPickGetArgs',
+ 'checkIsDocumentPublic',
+ ]
+
+
+def flush(id):
+ """Flushes all ACL's for the specified account.
+ """
+
+ key_prefix = '%s.' % id
+ memcache.delete_multi(RIGHTS, key_prefix=key_prefix)
--- a/app/soc/cache/sidebar.py Wed Jan 28 11:26:47 2009 +0000
+++ b/app/soc/cache/sidebar.py Wed Jan 28 14:15:00 2009 +0000
@@ -26,6 +26,7 @@
from google.appengine.api import users
import soc.cache.base
+import soc.cache.rights
def key(id):
@@ -57,18 +58,21 @@
memcache.add(memcache_key, sidebar, retention)
-def flush(user=None):
+def flush(id=None):
"""Removes the sidebar for the current user from the memcache.
+ Also calls soc.cache.rights.flush for the specified user.
+
Args:
- user: defaults to the current user if not set
+ id: defaults to the current account if not set
"""
- if not user:
- user = users.get_current_user()
+ if not id:
+ id = users.get_current_user()
- memcache_key = key(user)
+ memcache_key = key(id)
memcache.delete(memcache_key)
+ soc.cache.rights.flush(id)
# define the cache function