- {% if 'VARCHAR' in attribute.type %}
+ {% if attribute["name"] == "roles" %}
+
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..35aa5e6 100644
--- a/admin/views.py
+++ b/admin/views.py
@@ -72,6 +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
@@ -173,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"
@@ -584,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:
@@ -733,12 +730,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 +844,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 +856,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 +901,10 @@ 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)
@@ -978,6 +983,16 @@ def resource_delete(resource_type, resource_id):
)
+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
def resource_download(resource_type):
@@ -1326,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
@@ -1348,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