diff --git a/apcd-cms/src/apps/utils/apcd_database.py b/apcd-cms/src/apps/utils/apcd_database.py index 1c98ffcf..001665d5 100644 --- a/apcd-cms/src/apps/utils/apcd_database.py +++ b/apcd-cms/src/apps/utils/apcd_database.py @@ -9,6 +9,44 @@ APCD_DB = settings.APCD_DATABASE +def get_users(): + cur = None + conn = None + try: + conn = psycopg2.connect( + host=APCD_DB['host'], + dbname=APCD_DB['database'], + user=APCD_DB['user'], + password=APCD_DB['password'], + port=APCD_DB['port'], + sslmode='require' + ) + query = """SELECT + users.user_id, + users.user_email, + users.user_name, + users.org_name, + users.role_id, + users.created_at, + users.updated_at, + users.notes + FROM users + ORDER BY users.org_name ASC + """ + cur = conn.cursor() + cur.execute(query) + return cur.fetchall() + + except Exception as error: + logger.error(error) + + finally: + if cur is not None: + cur.close() + if conn is not None: + conn.close() + + def get_users(): cur = None conn = None diff --git a/apcd-cms/src/apps/view_users/templates/view_users.html b/apcd-cms/src/apps/view_users/templates/view_users.html index 972e8a14..38a5f4e7 100644 --- a/apcd-cms/src/apps/view_users/templates/view_users.html +++ b/apcd-cms/src/apps/view_users/templates/view_users.html @@ -17,17 +17,16 @@

View Users

Filter by Organization: - + + + {% for r in rows %} + + {% endfor %}
-
+
{% for k in header %} @@ -35,7 +34,7 @@

View Users

{% endfor %} - + {% for r in rows %} @@ -54,21 +53,39 @@

View Users

{{r.user_id}}
{% endblock %} diff --git a/apcd-cms/src/apps/view_users/views.py b/apcd-cms/src/apps/view_users/views.py index 66fda35a..9df9b147 100644 --- a/apcd-cms/src/apps/view_users/views.py +++ b/apcd-cms/src/apps/view_users/views.py @@ -52,4 +52,59 @@ def _set_modal_content(usr): user_view = [usr for usr in user_content if usr[1] == user[0]] context['rows'].append(_set_user(user,)) + return context +from django.http import HttpResponseRedirect +from django.views.generic.base import TemplateView +from apps.utils.apcd_database import get_users +from apps.utils.apcd_groups import is_apcd_admin +import logging + +logger = logging.getLogger(__name__) + + +class ViewUsersTable(TemplateView): + template_name = 'view_users.html' + user_content = get_users() + + def dispatch(self, request, *args, **kwargs): + if not request.user.is_authenticated or not is_apcd_admin(request.user): + return HttpResponseRedirect('/') + return super(ViewUsersTable, self).dispatch(request, *args, **kwargs) + + def get_context_data(self, *args, **kwargs): + context = super(ViewUsersTable, self).get_context_data(*args, **kwargs) + actions = 'View' + import datetime + user_content = get_users() + + + + + def _set_user(usr): + return { + 'user_id': usr[0], + 'user_email': usr[1], + 'user_name': usr[2], + 'org_name': usr[3], + 'role_id': usr[4], + 'created_at': usr[5], + 'updated_at': usr[6], + 'notes': usr[7], + + } + + def _set_modal_content(usr): + return { + 'notes': usr[7], + + } + + + + context['header'] = ['User ID', 'Email', 'Name', 'Organization', 'Role ID', 'Created', 'Updated', 'Notes'] + context['rows'] = [] + for user in user_content: + user_view = [usr for usr in user_content if usr[1] == user[0]] + context['rows'].append(_set_user(user,)) + return context \ No newline at end of file