From be92ab6284eeef92051abe891353a79ae25f6b11 Mon Sep 17 00:00:00 2001 From: Ayush8923 Date: Sun, 3 Dec 2023 02:06:35 +0530 Subject: [PATCH 1/4] fix(*): make the change in the roles and permission --- admin/templates/resource/create.html | 8 +++++++- admin/templates/resource/edit.html | 8 +++++++- admin/views.py | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/admin/templates/resource/create.html b/admin/templates/resource/create.html index b1982ac..c8aa72d 100644 --- a/admin/templates/resource/create.html +++ b/admin/templates/resource/create.html @@ -14,7 +14,13 @@
- {% if 'VARCHAR' in attribute.type %} + {% if attribute["name"] == "roles" %} + + {% elif 'VARCHAR' in attribute.type %} {% elif attribute.type == 'INTEGER' %} diff --git a/admin/templates/resource/edit.html b/admin/templates/resource/edit.html index 030bd37..e65793c 100644 --- a/admin/templates/resource/edit.html +++ b/admin/templates/resource/edit.html @@ -14,7 +14,13 @@
- {% if attribute["name"] == admin_configs['user']['secret'] %} + {% if attribute["name"] == "roles" %} + + {% elif attribute["name"] == admin_configs['user']['secret'] %} {% elif 'VARCHAR' in attribute.type %} diff --git a/admin/views.py b/admin/views.py index 20c7326..92dba01 100644 --- a/admin/views.py +++ b/admin/views.py @@ -80,6 +80,7 @@ from models.salesReceipt import SaleReceiptModel from models.unique_entry import UniqueEntry from models.user import UserModel +from models.admin_portal_user import AdminPortalUser from resources.whatsappBot.mandi_v2 import ( update_cs_data_mandi_crop, update_cs_mandi_data, @@ -733,12 +734,14 @@ def resource_create(resource_type): resource_class = get_resource_class(resource_type) model = resource_class.model editable_attributes = get_editable_attributes(resource_type) + roles_list = ["Super Admin", "Data Validator", "Data Collector", "Admin"] if request.method == "GET": return render_template( "resource/create.html", resource_type=resource_type, editable_attributes=editable_attributes, + roles_list=roles_list ) attributes_to_save = {} @@ -845,6 +848,7 @@ def resource_edit(resource_type, resource_id): ) editable_attributes = get_editable_attributes(resource_type) + roles_list = ["Super Admin", "Data Validator", "Data Collector", "Admin"] old_resource = copy.copy( resource ) # make a clone before there are any updates @@ -856,6 +860,7 @@ def resource_edit(resource_type, resource_id): resource=resource, editable_attributes=editable_attributes, admin_configs=admin_configs, + roles_list=roles_list, ) if ( @@ -900,6 +905,8 @@ def resource_edit(resource_type, resource_id): ) setattr(resource, attribute["name"], validated_attribute_value) + update_roles_in_admin_portal_users(resource.id, validated_attribute_value) + if resource_type == "mandi-receipt": updated_mandi = MandiModel.query.get(resource.mandi_id) updated_crop = CropModel.query.get(resource.crop_id) @@ -977,6 +984,15 @@ def resource_delete(resource_type, resource_id): or url_for(".resource_list", resource_type=resource_type) ) +def update_roles_in_admin_portal_users(user_id, roles): + admin_user = AdminPortalUser.query.filter_by(id=user_id).first() + + if admin_user: + admin_user.roles = roles + + db.session.add(admin_user) + db.session.commit() + @admin.route("/resource//download", methods=["GET"]) @login_required From 466d9bb9ced06f4c0effe3f3d3b17e26aca179f5 Mon Sep 17 00:00:00 2001 From: Ayush8923 Date: Sun, 3 Dec 2023 02:11:22 +0530 Subject: [PATCH 2/4] fix(*): linting checks --- admin/views.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/admin/views.py b/admin/views.py index 92dba01..1a50f63 100644 --- a/admin/views.py +++ b/admin/views.py @@ -72,7 +72,7 @@ from flask_bcrypt import Bcrypt from flask_login import current_user, login_required, login_user, logout_user from flask_wtf import FlaskForm - +from models.admin_portal_user import AdminPortalUser # TODO: remove project dependency from models.crop import CropModel from models.mandi import MandiModel @@ -80,7 +80,6 @@ from models.salesReceipt import SaleReceiptModel from models.unique_entry import UniqueEntry from models.user import UserModel -from models.admin_portal_user import AdminPortalUser from resources.whatsappBot.mandi_v2 import ( update_cs_data_mandi_crop, update_cs_mandi_data, @@ -741,7 +740,7 @@ def resource_create(resource_type): "resource/create.html", resource_type=resource_type, editable_attributes=editable_attributes, - roles_list=roles_list + roles_list=roles_list, ) attributes_to_save = {} @@ -905,7 +904,9 @@ def resource_edit(resource_type, resource_id): ) setattr(resource, attribute["name"], validated_attribute_value) - update_roles_in_admin_portal_users(resource.id, validated_attribute_value) + update_roles_in_admin_portal_users( + resource.id, validated_attribute_value + ) if resource_type == "mandi-receipt": updated_mandi = MandiModel.query.get(resource.mandi_id) From 4a9a4bab9afd375e010d4c1539d0f04a4ff09fb3 Mon Sep 17 00:00:00 2001 From: Ayush8923 Date: Sun, 3 Dec 2023 02:12:34 +0530 Subject: [PATCH 3/4] fix(*): linting checks --- admin/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/views.py b/admin/views.py index 1a50f63..b18dcea 100644 --- a/admin/views.py +++ b/admin/views.py @@ -73,6 +73,7 @@ from flask_login import current_user, login_required, login_user, logout_user from flask_wtf import FlaskForm from models.admin_portal_user import AdminPortalUser + # TODO: remove project dependency from models.crop import CropModel from models.mandi import MandiModel @@ -985,6 +986,7 @@ def resource_delete(resource_type, resource_id): or url_for(".resource_list", resource_type=resource_type) ) + def update_roles_in_admin_portal_users(user_id, roles): admin_user = AdminPortalUser.query.filter_by(id=user_id).first() From ec2f0cb1023996f36d9e6b6eda66164567f9bf23 Mon Sep 17 00:00:00 2001 From: Ayush8923 Date: Sun, 3 Dec 2023 22:35:58 +0530 Subject: [PATCH 4/4] fix(*): change the user tab modal --- admin/views.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/admin/views.py b/admin/views.py index b18dcea..35aa5e6 100644 --- a/admin/views.py +++ b/admin/views.py @@ -174,12 +174,12 @@ def process_user_id(user_id): if user_id is None: return False - selected_user = UserModel.query.filter( - UserModel.roles == "cs_user", UserModel.id == user_id + selected_user = AdminPortalUser.query.filter( + AdminPortalUser.roles == "Data Collector", AdminPortalUser.id == user_id ).first() if selected_user is not None: - if selected_user.roles == "cs_user": + if selected_user.roles == "Data Collector": return "Team Member" else: return "Regular User" @@ -585,10 +585,6 @@ def filter_resources( and_(or_(*search_query_conditions), and_(*date_conditions)) ) - if model.__name__ == 'UserModel': - role_condition = model.roles.in_(['cs_user', 'admin', 'user', 'superadmin']) - filter_query = filter_query.filter(or_(role_condition, model.roles.isnot(None))) - if sort and len(sort): sort_conditions = [] for criterion in sort: @@ -1345,8 +1341,8 @@ def resource_filter(resource_type, status): # cs_user_details cs_users = ( - UserModel.query.filter(UserModel.roles == "cs_user") - .order_by(asc(UserModel.name)) + AdminPortalUser.query.filter(AdminPortalUser.roles == "Data Collector") + .order_by(asc(AdminPortalUser.name)) .all() ) list_display = resource_class.list_display @@ -1367,8 +1363,8 @@ def resource_filter(resource_type, status): selected_crop = crop_id if user_id: filter_conditions.append(model.user_id == user_id) - selected_user = UserModel.query.filter( - UserModel.roles == "cs_user", UserModel.id == user_id + selected_user = AdminPortalUser.query.filter( + AdminPortalUser.roles == "Data Collector", AdminPortalUser.id == user_id ).first() selected_user_mobile_number = selected_user.mobile_number selected_user_id = user_id