def can_read(self, user, default_acl=None, acl_r=None, acl_w=None): default_acl = default_acl or main.DEFAULT_CONFIG['service']['default_permissions'] acl_r = acl_r or self.acl_read or default_acl['read'] or [] acl_w = acl_w or self.acl_write or default_acl['write'] or [] if u'all' in acl_r or len(acl_r) == 0: return True elif user is not None and u'login' in acl_r: return True elif user is not None and (user.email() in acl_r or user.email() in acl_w): return True elif is_admin_user(user): return True else: return False
def delete(self, user=None): if not is_admin_user(user): raise RuntimeError('Only admin can delete pages.') self.update_content('', self.revision, user=user, dont_create_rev=True, dont_defer=True) self._update_inlinks({}, {'relatedTo': [p[0] for p in self.paths[:-1]]}) self.related_links = {} self.modifier = None self.updated_at = None self.revision = 0 self.put() ndb.delete_multi(r.key for r in self.revisions) caching.del_titles()
def can_write(self, user, default_acl=None, acl_r=None, acl_w=None): default_acl = default_acl or main.DEFAULT_CONFIG['service']['default_permissions'] acl_w = acl_w or self.acl_write or default_acl['write'] or [] if (not self.can_read(user, default_acl, acl_r, acl_w)) and (user is None or user.email() not in acl_w): return False elif 'all' in acl_w: return True elif (len(acl_w) == 0 or u'login' in acl_w) and user is not None: return True elif user is not None and user.email() in acl_w: return True elif is_admin_user(user): return True else: return False
def current_user_is_admin(): user = get_cur_user() return is_admin_user(user)
def is_admin(self): return is_admin_user(self.get_cur_user())