Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/system/user_mgmt/__init__.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/system/user_mgmt/__init__.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/system/user_mgmt/__init__.py	(working copy)
@@ -9,7 +9,15 @@
 from hive.model.query import clear_cache_all
 from hive.session import ANSession
 from hive.model.base import ANModel
-from hive.model.fields.builtin import FieldGroup, CharField, PasswordField, EnumField, IntegerField, BooleanField, JSONField
+from hive.model.fields.builtin import (
+    FieldGroup,
+    CharField,
+    PasswordField,
+    EnumField,
+    IntegerField,
+    BooleanField,
+    JSONField
+)
 from hive.model.fields import FieldGroup
 from hive.model.action import Action
 from hive.model.manager import CLIManager
@@ -51,38 +59,60 @@
     class Manager(CLIManager):
         def _get_query_set(self):
             self.cli.set_enable()
+            # Get base user list (username, passwords, level)
             result_name = self.cli.cmd('show user name', EasyParser('user', ['?username', '?passwords', '?level']))
+            # Get additional info (email, phone_num)
             result_info = self.cli.cmd('show user info', EasyParser('user', ['?username', '?email', '?phone_num']))
+            # Build a lookup for extra info by username
+            info_by_username = {item['username']: item for item in result_info}
+
+            model = get_model('cm', ['system', 'user_mgmt', 'UserAuthorization'])
+            manager = model.get_manager(self._session)
+
+            admins = []
             for item_name in result_name:
-                model = get_model('cm', ['system', 'user_mgmt', 'UserAuthorization'])
-                manager = model.get_manager(self._session)
-                if 'user_type' not in item_name:
-                    item_name['user_type'] = "Common Admin"
-                if 'role_id' not in item_name:
-                    item_name['role_id'] = 0
-                if 'role_name' not in item_name:
-                    item_name['role_name'] = ""
-                user_auth_entry = manager.get({'username': item_name['username']}).get_field_dict()
-                item_name['root'] = user_auth_entry['root']
-                if 'user_type' in user_auth_entry and user_auth_entry['user_type'] is not None:
-                    item_name['user_type'] = user_auth_entry['user_type']
-                if item_name['user_type'] is None or item_name['user_type'] == "":
-                    item_name['user_type'] = 'Common Admin'
-                if 'role_id' in user_auth_entry and user_auth_entry['role_id'] is not None:
-                    item_name['role_id'] = user_auth_entry['role_id']
-                if 'role_name' in user_auth_entry and user_auth_entry['role_name'] is not None:
-                    item_name['role_name'] = user_auth_entry['role_name']
-                for item_info in result_info:
-                    if item_info['username'] == item_name['username']:
-                        item_name.update(item_info)
-                        if 'email' not in item_name:
-                            item_name['email'] = ""
-                        if 'phone_num' not in item_name:
-                            item_name['phone_num'] = ""
-            for data in result_name:
-                self._model._meta.mark_delay_query(data)
-            return QuerySet(self._model, result_name)
+                username = item_name.get('username')
+                user = Administrator()
 
+                # Set defaults via a dictionary
+                defaults = {
+                    'username': username,
+                    'passwords': item_name.get('passwords'),
+                    'level': item_name.get('level'),
+                    'user_type': "Common Admin",
+                    'role_id': 0,
+                    'role_name': "",
+                    'root': False,
+                    'email': "",
+                    'phone_num': ""
+                }
+                for key, value in defaults.items():
+                    setattr(user, key, value)
+
+                # Fetch info from user authorization if available
+                try:
+                    user_auth_entry = manager.get({'username': username}).get_field_dict()
+                    if 'root' in user_auth_entry:
+                        user.root = user_auth_entry.get('root', False)
+                    if 'user_type' in user_auth_entry and user_auth_entry['user_type']:
+                        user.user_type = user_auth_entry.get('user_type', "Common Admin") or "Common Admin"
+                    if 'role_id' in user_auth_entry and user_auth_entry['role_id'] is not None:
+                        user.role_id = user_auth_entry.get('role_id', 0) or 0
+                    if 'role_name' in user_auth_entry and user_auth_entry['role_name']:
+                        user.role_name = user_auth_entry.get('role_name', "") or ""
+                except Exception:
+                    # UserAuthorization entry not found, keep defaults
+                    pass
+
+                # Merge additional info if available
+                extra_info = info_by_username.get(username, {})
+                user.email = extra_info.get('email', "")
+                user.phone_num = extra_info.get('phone_num', "")
+
+                admins.append(user)
+
+            return admins
+
         # ToDO: Bug-1022 - Fix should be from the backend for errors & exceptions, revamp hive/manager.py to handle the exceptions & error responses better.
         def _insert(self, instance):
             data = instance.get_field_dict()
@@ -312,8 +342,15 @@
             data = db.fetchall(select_sql)
             db.close()
             key = ['id', 'role_name']
-            result = [dict(zip(key, each)) for each in data]
-            return QuerySet(self._model, result)
+            # Create list of Role objects
+            roles = []
+            for row in data:
+                values = dict(zip(key, row))
+                role = Role()
+                role.id = values['id']
+                role.role_name = values['role_name']
+                roles.append(role)
+            return roles
 
         def _insert(self, instance):
             data = instance.get_field_dict()
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/log_location.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/log_location.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/log_location.py	(working copy)
@@ -49,8 +49,9 @@
             oper_log('error', 'system', e.message)
             return ge.handle_exception(e)
         except Exception as e:
-            oper_log('error', 'system', 'An Unexpected error occurred,  details: {}'.format(e))
-            e.message = 'An Unexpected error occurred,  details: {}'.format(e)
+            msg = str(e).replace("'", "")
+            oper_log('error', 'system', f'An Unexpected error occurred,  details: {msg}')
+            e.message = f'An Unexpected error occurred,  details: {msg}'
             return ge.handle_exception(e)
 
     else:
@@ -71,8 +72,9 @@
                 'message': "Invalid HTTP method"
             }), content_type='application/json')
     except Exception as e:
-        oper_log('error', 'system', 'An Unexpected error occurred,  details: {}'.format(e))
-        e.message = 'An Unexpected error occurred,  details: {}'.format(e)
+        msg = str(e).replace("'", "")
+        oper_log('error', 'system', f'An Unexpected error occurred,  details: {msg}')
+        e.message = f'An Unexpected error occurred,  details: {msg}'
         return ge.handle_exception(e)
 
 
@@ -111,8 +113,9 @@
         return ge.handle_exception(e)
     except Exception as e:
         # Handle unexpected exceptions
-        oper_log('error', 'system', 'An unexpected error occurred: {}'.format(e))
-        e.message = 'An unexpected error occurred: {}'.format(e)
+        msg = str(e).replace("'", "")
+        oper_log('error', 'system', f'An unexpected error occurred: {msg}')
+        e.message = f'An unexpected error occurred: {msg}'
         return ge.handle_exception(e)
 
 
@@ -156,8 +159,9 @@
         return ge.handle_exception(e)
     except Exception as e:
         # Handle unexpected exceptions
-        oper_log('error', 'system', 'An unexpected error occurred: {}'.format(e))
-        e.message = 'An unexpected error occurred: {}'.format(e)
+        msg = str(e).replace("'", "")
+        oper_log('error', 'system', f'An unexpected error occurred: {msg}')
+        e.message = f'An unexpected error occurred: {msg}'
         return ge.handle_exception(e)
 
 
@@ -183,8 +187,9 @@
                                         'file_list': files}), content_type='application/json')
 
     except Exception as e:
-        oper_log('error', 'system', 'An unexpected error occurred: {}'.format(e))
-        e.message = 'An unexpected error occurred: {}'.format(e)
+        msg = str(e).replace("'", "")
+        oper_log('error', 'system', f'An unexpected error occurred: {msg}')
+        e.message = f'An unexpected error occurred: {msg}'
         return ge.handle_exception(e)
 
 
@@ -236,6 +241,7 @@
         }), content_type='application/json')
     except Exception as e:
         # Handle unexpected exceptions
-        oper_log('error', 'system', 'An unexpected error occurred: {}'.format(e))
-        e.message = 'An unexpected error occurred: {}'.format(e)
+        msg = str(e).replace("'", "")
+        oper_log('error', 'system', f'An unexpected error occurred: {msg}')
+        e.message = f'An unexpected error occurred: {msg}'
         return ge.handle_exception(e)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/action.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/action.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/action.py	(working copy)
@@ -52,13 +52,13 @@
             result = self.perform(options=options, **kwargs)
         else:
             result = self.perform(**kwargs)
-        if type(result) is types.DictType:
+        if isinstance(result, dict):
             res = result.copy()
             res.update({'config_change': self.config_change, 'refresh_page': self.refresh_page, 'msg': ''})
             return res
-        elif type(result) is types.StringType:
+        elif isinstance(result, str):
             return {'config_change': self.config_change, 'refresh_page': self.refresh_page, 'msg': result}
-        elif type(result) is types.ListType:
+        elif isinstance(result, list):
             # some output of cli parser is [None] or [[],[]]
             # but we don't need it.
             if len(result) > 0:
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/ajax.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/ajax.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/ajax.py	(working copy)
@@ -105,12 +105,18 @@
             raise Http404
         try:
             options = args['options']
+            if isinstance(options, list) and len(options) == 1:
+                options = options[0]
+            if isinstance(options, str):
+                options = json.loads(options)
+            elif options is None:
+                options = {}
             del args['options']
         except KeyError:
             options = None
         msg = ''
         try:
-            msg = self.manager.perform_action(action_name, json.loads(options), **args)
+            msg = self.manager.perform_action(action_name, options, **args)
         except ActionPerformException as e:
             return json.dumps([False, str(e)])
         except ModelQueryException as e:
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/options.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/options.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/options.py	(working copy)
@@ -801,6 +801,8 @@
         return self._actions
 
     def get_action_by_name(self, name):
+        if isinstance(name, list):
+            name = name[0]
         for each in self.actions:
             if each.name == name:
                 return each
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/router.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/router.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/router.py	(working copy)
@@ -604,20 +604,27 @@
             if host:
                 proxy_ip = host["ip_address"]
                 if isinstance(proxy_ip, dict):
-                    host_ip = proxy_ip.values()[0]
+                    host_ip = list(proxy_ip.values())[0]
                 else:
                     host_ip = proxy_ip
-                if request.META['REQUEST_URI'][0:18] == '/proxy_req_dev/api':
-                    new_url = '/aest' + request.META['REQUEST_URI'][18:]
-                elif request.META['REQUEST_URI'][0:19] == '/proxy_req_dev/rest':
+
+                # Use request.path instead of request.META['REQUEST_URI']
+                req_path = request.path
+
+                if req_path.startswith('/proxy_req_dev/api'):
+                    new_url = '/aest' + req_path[18:]
+                elif req_path.startswith('/proxy_req_dev/rest'):
                     if cm_type == "host":
-                        new_url = '/rest/avx' + request.META['REQUEST_URI'][19:]
+                        new_url = '/rest/avx' + req_path[19:]
                     else:
-                        new_url = ('/rest/%s' + request.META['REQUEST_URI'][19:]) % get_device_type(host["type"])
+                        new_url = ('/rest/%s' + req_path[19:]) % get_device_type(host["type"])
                 else:
-                    new_url = '/pest' + request.META['REQUEST_URI'][14:]
-                rest_response_data = call_restapi(request.method, new_url, request.body, host_ip, host["restapi_port"],
-                                                  host["restapi_username"], host["restapi_password"], 'https', cookie)
+                    new_url = '/pest' + req_path[14:]
+
+                rest_response_data = call_restapi(
+                    request.method, new_url, request.body, host_ip, host["restapi_port"],
+                    host["restapi_username"], host["restapi_password"], 'https', cookie
+                )
                 return HttpResponse(rest_response_data["body"])
     raise Http404('Host Not Found')
 
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/services/log_location_service.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/services/log_location_service.py	(revision 2678)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/services/log_location_service.py	(working copy)
@@ -29,7 +29,7 @@
                 secondary_drive_info = {'is_disk_available': True, 'is_mounted': True, 'disk_name': disk_name,
                                         'total': total_space, 'used': used_space, 'free': available_space}
 
-        if secondary_drive_info.has_key('is_disk_available') and secondary_drive_info.has_key('is_mounted') and \
+        if 'is_disk_available' in secondary_drive_info and 'is_mounted' in secondary_drive_info and \
                 secondary_drive_info['is_disk_available'] and secondary_drive_info['is_mounted']:
             return secondary_drive_info
 
