codekingpro/portable-devtools
114k
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9 10"""Implements Search Object feature"""11 12from flask import request13from flask_babel import gettext14from pgadmin.user_login_check import pga_login_required15 16from pgadmin.utils import PgAdminModule17from pgadmin.utils.ajax import make_json_response, bad_request,\18 internal_server_error19from pgadmin.utils.preferences import Preferences20from pgadmin.tools.search_objects.utils import SearchObjectsHelper21 22MODULE_NAME = 'search_objects'23 24 25class SearchObjectsModule(PgAdminModule):26 LABEL = gettext('Search objects')27 28 def get_exposed_url_endpoints(self):29 """30 Returns:31 list: URL endpoints for search_object module32 """33 return ['search_objects.search', 'search_objects.types']34 35 def show_system_objects(self):36 """37 return system preference objects38 """39 return self.pref_show_system_objects.get()40 41 def register_preferences(self):42 """43 Get show_system_objects preference44 """45 browser_preference = Preferences.module('browser')46 self.pref_show_system_objects =\47 browser_preference.preference('show_system_objects')48 49 50# Create blueprint for BackupModule class51blueprint = SearchObjectsModule(52 MODULE_NAME, __name__, static_url_path=''53)54 55 56@blueprint.route("/", endpoint='index')57@pga_login_required58def index():59 return bad_request(errormsg=gettext("This URL cannot be called directly."))60 61 62@blueprint.route("types/<int:sid>/<int:did>", endpoint='types')63@pga_login_required64def types(sid, did):65 so_obj = SearchObjectsHelper(sid, did, blueprint.show_system_objects())66 return make_json_response(data=so_obj.get_supported_types())67 68 69@blueprint.route("search/<int:sid>/<int:did>", endpoint='search')70@pga_login_required71def search(sid, did):72 """73 URL args:74 text <required>: search text75 type <optional>: type of object to be searched.76 """77 text = request.args.get('text', None)78 obj_type = request.args.get('type', None)79 80 so_obj = SearchObjectsHelper(sid, did, blueprint.show_system_objects())81 82 status, res = so_obj.search(text, obj_type)83 84 if not status:85 return internal_server_error(errormsg=res)86 87 return make_json_response(data=res)88 