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))
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))
def filter_class(self): return BridgeFilter.find_subclass(self.filter_type)