예제 #1
0
    def drop(self, gid, sid, rid=None):

        if rid is None:
            data = request.form if request.form else json.loads(
                request.data, encoding='utf-8')
        else:
            data = {'ids': [rid]}

        for rid in data['ids']:
            status, res = self.conn.execute_dict(
                render_template(self.sql_path + 'permission.sql',
                                rid=rid,
                                conn=self.conn))

            if not status:
                return internal_server_error(
                    _("Error retrieving the role information.\n{0}").format(
                        res))

            if len(res['rows']) == 0:
                return gone(
                    _("Could not find the role on the database "
                      "server."))

            row = res['rows'][0]

            status, res = self.conn.execute_2darray("DROP ROLE {0};".format(
                self.qtIdent(self.conn, row['rolname'])))
            if not status:
                return internal_server_error(
                    _("Could not drop the role.\n{0}").format(res))

        return success_return()
예제 #2
0
def preferences(trans_id):
    """
        This method is used to get/put explain options from/to preferences

        Args:
            trans_id: unique transaction id
    """

    data = None
    if request.data:
        data = json.loads(request.data, encoding='utf-8')
    else:
        data = request.args or request.form
    for k, v in data.items():
        v = bool(v)
        if k == 'explain_verbose':
            blueprint.explain_verbose.set(v)
        elif k == 'explain_costs':
            blueprint.explain_costs.set(v)
        elif k == 'explain_buffers':
            blueprint.explain_buffers.set(v)
        elif k == 'explain_timing':
            blueprint.explain_timing.set(v)

    return success_return()
예제 #3
0
def update_cloud_process(sid):
    """Update Cloud Server Process"""
    _process = Process.query.filter_by(user_id=current_user.id,
                                       server_id=sid).first()
    _process.acknowledge = None
    db.session.commit()
    return success_return()
예제 #4
0
def save(pid):
    """
    Save a specific preference.
    """
    data = request.form if request.form else json.loads(request.data.decode())

    res, msg = Preferences.save(data['mid'], data['cid'], data['id'],
                                data['value'])

    if not res:
        return internal_server_error(errormsg=msg)

    response = success_return()

    # Set cookie & session for language settings.
    # This will execute every time as could not find the better way to know
    # that which preference is getting updated.

    misc_preference = Preferences.module('miscellaneous')
    user_languages = misc_preference.preference('user_language')

    language = 'en'
    if user_languages:
        language = user_languages.get() or language

    setattr(session, 'PGADMIN_LANGUAGE', language)
    response.set_cookie("PGADMIN_LANGUAGE", language)

    return response
예제 #5
0
    def drop(self, gid, sid, rid):

        status, res = self.conn.execute_2darray("DROP ROLE {0};".format(
            self.role))
        if not status:
            return internal_server_error(
                _("ERROR: Couldn't drop the user!\n{0}").format(res))

        return success_return()
예제 #6
0
def preferences(trans_id):
    """
        This method is used to get/put explain options from/to preferences

        Args:
            trans_id: unique transaction id
    """
    if request.method == 'GET':
        # Check the transaction and connection status
        status, error_msg, conn, trans_obj, session_obj = \
            check_transaction_status(trans_id)

        if error_msg == gettext('Transaction ID not found in the session.'):
            return make_json_response(success=0, errormsg=error_msg,
                                      info='DATAGRID_TRANSACTION_REQUIRED',
                                      status=404)

        if status and conn is not None and \
           trans_obj is not None and session_obj is not None:
            # Call the set_auto_commit and set_auto_rollback method of
            # transaction object
            trans_obj.set_auto_commit(blueprint.auto_commit.get())
            trans_obj.set_auto_rollback(blueprint.auto_rollback.get())

            # As we changed the transaction object we need to
            # restore it and update the session variable.
            session_obj['command_obj'] = pickle.dumps(trans_obj, -1)
            update_session_grid_transaction(trans_id, session_obj)

        return make_json_response(
            data={
                'explain_verbose': blueprint.explain_verbose.get(),
                'explain_costs': blueprint.explain_costs.get(),
                'explain_buffers': blueprint.explain_buffers.get(),
                'explain_timing': blueprint.explain_timing.get(),
                'auto_commit': blueprint.auto_commit.get(),
                'auto_rollback': blueprint.auto_rollback.get()
            }
        )
    else:
        data = None
        if request.data:
            data = json.loads(request.data, encoding='utf-8')
        else:
            data = request.args or request.form
        for k, v in data.items():
            v = bool(v)
            if k == 'explain_verbose':
                blueprint.explain_verbose.set(v)
            elif k == 'explain_costs':
                blueprint.explain_costs.set(v)
            elif k == 'explain_buffers':
                blueprint.explain_buffers.set(v)
            elif k == 'explain_timing':
                blueprint.explain_timing.set(v)

        return success_return()
예제 #7
0
    def drop(self, gid, sid, rid):

        status, res = self.conn.execute_2darray(u"DROP ROLE {0};".format(
            self.qtIdent(self.conn, self.role)))
        if not status:
            return internal_server_error(
                _("Could not drop the role.\n{0}").format(res))

        return success_return()
예제 #8
0
    def drop(self, gid, sid, rid):

        status, res = self.conn.execute_2darray(
            "DROP ROLE {0};".format(self.qtIdent(self.conn, self.role))
        )
        if not status:
            return internal_server_error(
                _("Couldn't drop the role.\n{0}").format(res)
            )

        return success_return()
예제 #9
0
def stop_process(pid):
    """
    User has stopped the process

    :param pid: Process ID
    """
    try:
        BatchProcess.stop_process(pid)
        return success_return()
    except LookupError as lerr:
        return gone(errormsg=str(lerr))
예제 #10
0
    def run_now(self, gid, sid, jid):
        """
        This function will set the next run to now, to inform the pgAgent to
        run the job now.
        """
        status, res = self.conn.execute_void(
            render_template("/".join([self.template_path, 'run_now.sql']),
                            jid=jid,
                            conn=self.conn))
        if not status:
            return internal_server_error(errormsg=res)

        return success_return(message=_("Updated the next runtime to now."))
예제 #11
0
def reset_tree_state():
    """Reset the saved tree state."""

    data = Setting.query.filter_by(user_id=current_user.id,
                                   setting='browser_tree_state').first()
    try:
        if data is not None:
            db.session.delete(data)
            db.session.commit()
    except Exception as e:
        return make_json_response(status=410, success=0, errormsg=str(e))

    return success_return()
예제 #12
0
def save(pid):
    """
    Save a specific preference.
    """
    data = request.form if request.form else json.loads(request.data.decode())

    res, msg = Preferences.save(data['mid'], data['cid'], data['id'],
                                data['value'])

    if not res:
        return internal_server_error(errormsg=msg)

    return success_return()
예제 #13
0
def save():
    """
    Save a specific preference.
    """
    pref_data = get_data()

    for data in pref_data:
        if data['name'] in ['vw_edt_tab_title_placeholder',
                            'qt_tab_title_placeholder',
                            'debugger_tab_title_placeholder'] \
                and data['value'].isspace():
            data['value'] = ''

        res, msg = Preferences.save(
            data['mid'], data['category_id'], data['id'], data['value'])
        sgm.get_nodes(sgm)

        if not res:
            return internal_server_error(errormsg=msg)

        response = success_return()

        # Set cookie & session for language settings.
        # This will execute every time as could not find the better way to know
        # that which preference is getting updated.

        misc_preference = Preferences.module('misc')
        user_languages = misc_preference.preference(
            'user_language'
        )

        language = 'en'
        if user_languages:
            language = user_languages.get() or language

        domain = dict()
        if config.COOKIE_DEFAULT_DOMAIN and \
                config.COOKIE_DEFAULT_DOMAIN != 'localhost':
            domain['domain'] = config.COOKIE_DEFAULT_DOMAIN

        setattr(session, 'PGADMIN_LANGUAGE', language)
        response.set_cookie("PGADMIN_LANGUAGE", value=language,
                            path=config.COOKIE_DEFAULT_PATH,
                            secure=config.SESSION_COOKIE_SECURE,
                            httponly=config.SESSION_COOKIE_HTTPONLY,
                            samesite=config.SESSION_COOKIE_SAMESITE,
                            **domain)

    return response
예제 #14
0
def acknowledge(pid):
    """
    User has acknowledge the process

    Args:
        pid:  Process ID

    Returns:
        Positive status
    """
    try:
        BatchProcess.acknowledge(pid)
        return success_return()
    except LookupError as lerr:
        return gone(errormsg=str(lerr))
예제 #15
0
def acknowledge(pid):
    """
    User has acknowledge the process

    Args:
        pid:  Process ID

    Returns:
        Positive status
    """
    try:
        BatchProcess.acknowledge(pid)
        return success_return()
    except LookupError as lerr:
        return gone(errormsg=str(lerr))
예제 #16
0
    def run_now(self, gid, sid, jid):
        """
        This function will set the next run to now, to inform the pgAgent to
        run the job now.
        """
        status, res = self.conn.execute_void(
            render_template(
                "/".join([self.template_path, 'run_now.sql']),
                jid=jid, conn=self.conn
            )
        )
        if not status:
            return internal_server_error(errormsg=res)

        return success_return(
            message=_("Updated the next runtime to now.")
        )
예제 #17
0
def update_cloud_details(pid):
    """
    Update the cloud details and get instance details

    Args:
        pid:  Process ID

    Returns:
        Positive status
    """
    try:
        process = BatchProcess(id=pid)
        status, server = process.update_cloud_details()
        if status and len(server) > 0:
            return make_json_response(success=1,
                                      data={
                                          'node': {
                                              'sid':
                                              server['id'],
                                              'gid':
                                              server['servergroup_id'],
                                              '_type':
                                              'server',
                                              'icon':
                                              'icon-server-not-connected',
                                              'id':
                                              'server_{}'.format(server['id']),
                                              'label':
                                              server['name'],
                                              'status':
                                              server['status'],
                                              'cloud_status':
                                              server['cloud_status']
                                          }
                                      })
        elif status and len(server) == 0:
            return success_return()
        else:
            return gone(errormsg=str(server))
    except LookupError as lerr:
        return gone(errormsg=str(lerr))
예제 #18
0
def save(pid):
    """
    Save a specific preference.
    """
    data = request.form if request.form else json.loads(request.data.decode())

    res, msg = Preferences.save(
        data['mid'], data['category_id'], data['id'], data['value'])

    if not res:
        return internal_server_error(errormsg=msg)

    response = success_return()

    # Set cookie & session for language settings.
    # This will execute every time as could not find the better way to know
    # that which preference is getting updated.

    misc_preference = Preferences.module('miscellaneous')
    user_languages = misc_preference.preference(
        'user_language'
    )

    language = 'en'
    if user_languages:
        language = user_languages.get() or language

    domain = dict()
    if config.COOKIE_DEFAULT_DOMAIN and\
            config.COOKIE_DEFAULT_DOMAIN != 'localhost':
        domain['domain'] = config.COOKIE_DEFAULT_DOMAIN

    setattr(session, 'PGADMIN_LANGUAGE', language)
    response.set_cookie("PGADMIN_LANGUAGE", value=language,
                        path=config.COOKIE_DEFAULT_PATH,
                        **domain)

    return response
예제 #19
0
def save_browser_tree_state():
    """Save the browser tree state."""
    data = request.form if request.form else request.data.decode('utf-8')
    old_data = get_setting('browser_tree_state')

    if old_data and old_data != 'null':
        if data:
            data = json.loads(data)

        old_data = json.loads(old_data)

        old_data.update(data)
        new_data = json.dumps(old_data)
    else:
        new_data = data

    try:
        store_setting('browser_tree_state', new_data)
    except Exception as e:
        current_app.logger.exception(e)
        return internal_server_error(errormsg=str(e))

    return success_return()
예제 #20
0
def save_browser_tree_state():
    """Save the browser tree state."""
    data = request.form if request.form else request.data.decode('utf-8')
    old_data = get_setting('browser_tree_state')

    if old_data and old_data != 'null':
        if data:
            data = json.loads(data)

        old_data = json.loads(old_data)

        old_data.update(data)
        new_data = json.dumps(old_data)
    else:
        new_data = data

    try:
        store_setting('browser_tree_state', new_data)
    except Exception as e:
        current_app.logger.exception(e)
        return internal_server_error(errormsg=str(e))

    return success_return()