def can_cross_all_users_whitelist_and_blacklist(self): bridge_name = "balrog" filter_type = "all-users" bridge = GandalfBridge.get_or_insert(bridge_name) GandalfFilter(bridge=bridge, filter_type=filter_type, whitelist=True).put() GandalfFilter(bridge=bridge, filter_type=filter_type, whitelist=False).put() return gandalf(bridge_name)
def get(self): if not os.environ["SERVER_SOFTWARE"].startswith('Development'): return # Delete all bridges and filters so that we have a fresh testing environment for bridge in GandalfBridge.all(): bridge.delete() for filter in GandalfFilter.all(): filter.delete() step = self.request.get("step") v = None if step == "creating_bridge": v = self.creating_bridge() elif step == "can_cross_empty_bridge": v = self.can_cross_empty_bridge() elif step == "can_cross_all_users_whitelist": v = self.can_cross_all_users_whitelist() elif step == "can_cross_all_users_blacklist": v = self.can_cross_all_users_blacklist() elif step == "can_cross_all_users_whitelist_and_blacklist": v = self.can_cross_all_users_whitelist_and_blacklist() elif step == "can_cross_all_users_inside_percentage": v = self.can_cross_all_users_inside_percentage() elif step == "can_cross_all_users_outside_percentage": v = self.can_cross_all_users_outside_percentage() self.response.out.write(json.dumps(v))
def can_cross_all_users_outside_percentage(self): bridge_name = "balrog" filter_type = "all-users" bridge = GandalfBridge.get_or_insert(bridge_name) filter = GandalfFilter(bridge=bridge, filter_type=filter_type, whitelist=True) filter.put() identity_percentage = BridgeFilter._identity_percentage(filter.key()) filter.percentage = identity_percentage filter.put() return gandalf(bridge_name)
def post(self): if not can_control_gandalf(): return action = self.request.get('action') if action == "new": filter_type = self.request.get('filter_type') bridge_name = self.request.get('bridge_name') whitelist = self.request.get('whitelist') == "1" if not filter_type: raise Exception("Must include 'filter_type' parameter") if not bridge_name: raise Exception("Must include 'bridge_name' parameter") bridge = GandalfBridge.get_by_key_name(bridge_name) if not bridge: raise Exception("Bridge '%s' does not exist" % bridge_name) context = BridgeFilter.find_subclass(filter_type).initial_context() filter = GandalfFilter(bridge=bridge, filter_type=filter_type, context=context, whitelist=whitelist) filter.put() else: filter_key = self.request.get('filter_key') if not filter_key: raise Exception("Must include 'filter_key' parameter") filter = GandalfFilter.get(filter_key) if action == "delete": filter.delete() elif action == "save": try: percentage = int(self.request.get('percentage')) if 0 <= percentage <= 100: filter.percentage = percentage except ValueError: pass for key in filter.context: value = self.request.get(key) if value is not None: filter.context[key] = value filter.put() context = { "success": True, } self.response.headers["Content-Type"] = "application/json" self.response.out.write(jsonify(context))