From 6311491e7dd11b80c5fd24b53f49f3245ef7169d Mon Sep 17 00:00:00 2001 From: nahom70 Date: Wed, 8 Jul 2026 18:03:21 +0000 Subject: [PATCH 1/5] added datatable,activeposition, checked user auth --- app/controllers/main_routes/main_routes.py | 12 +++-- app/models/activeposition.py | 12 +++++ app/models/allocation.py | 2 +- app/static/css/managepositions.css | 4 +- app/static/js/managePositions.js | 9 ++++ app/templates/main/departmentPortal.html | 2 +- app/templates/main/managepositions.html | 46 ++++++------------ database/demo_data.py | 54 +++++++++++++++++++++- database/migrate_db.sh | 1 + db_test.py | 2 +- 10 files changed, 103 insertions(+), 41 deletions(-) create mode 100644 app/models/activeposition.py create mode 100644 app/static/js/managePositions.js diff --git a/app/controllers/main_routes/main_routes.py b/app/controllers/main_routes/main_routes.py index 20be4682..55c0b759 100755 --- a/app/controllers/main_routes/main_routes.py +++ b/app/controllers/main_routes/main_routes.py @@ -17,6 +17,7 @@ from app.logic.getTableData import getDatatableData from app.logic.banner import Banner from app.logic.tracy import Tracy +from app.models.activeposition import Activeposition @main_bp.route('/logout', methods=['GET']) def triggerLogout(): @@ -84,15 +85,18 @@ def departmentPortal(org=None,account=None): supervisors = supervisors ) -@main_bp.route('/department///managepositions', methods=['GET']) +@main_bp.route('/department///positions', methods=['GET']) def managePositions(org, account): try: + currentUser = require_login() + if not currentUser or not currentUser.supervisor: + return render_template('errors/403.html'), 403 dept = Department.get(Department.ORG == org, Department.ACCOUNT == account) except DoesNotExist: return render_template('errors/404.html'), 404 - - positions = Tracy().getPositionsFromDepartment(org, account) - print(positions) + print("THIS IS Dept:", dept) + positions = list(Activeposition.select().where(Activeposition.Department == dept)) + print(f"Positions for department {dept.DEPT_NAME}, ID {dept.id}: {[p.title for p in positions]}") return render_template('main/managepositions.html', department = dept, department_name = dept.DEPT_NAME, diff --git a/app/models/activeposition.py b/app/models/activeposition.py new file mode 100644 index 00000000..99832f0f --- /dev/null +++ b/app/models/activeposition.py @@ -0,0 +1,12 @@ +from app.models import * +from app.models.department import Department + +class Activeposition(baseModel): + title = CharField() + positioncode = CharField() + status = CharField(default="Approved") + WLS = IntegerField() + revisiondate = DateField() + Description = TextField(default=None) + Department = ForeignKeyField(Department) + diff --git a/app/models/allocation.py b/app/models/allocation.py index ddd2084d..86e905c0 100644 --- a/app/models/allocation.py +++ b/app/models/allocation.py @@ -8,7 +8,7 @@ class Allocation(baseModel): department = ForeignKeyField(Department) isApproved = BooleanField(default=False) approvedOn = DateField() - approvedBy = ForeignKeyField(Supervisor) + approvedBy = ForeignKeyField(Supervisor, null=True) justification = TextField() primary_10 = IntegerField() primary_12 = IntegerField() diff --git a/app/static/css/managepositions.css b/app/static/css/managepositions.css index 9c40bbe3..af9151ea 100644 --- a/app/static/css/managepositions.css +++ b/app/static/css/managepositions.css @@ -1,7 +1,9 @@ .width-12{ width:12%; } - +.margin-top-10{ + margin-top:-25px; +} *{ /* outline:solid 1px lime; */ margin:0; diff --git a/app/static/js/managePositions.js b/app/static/js/managePositions.js new file mode 100644 index 00000000..ab7e29dc --- /dev/null +++ b/app/static/js/managePositions.js @@ -0,0 +1,9 @@ +$(document).ready(function () { + $('#positionTable').DataTable({ + pageLength: 25, + columnDefs: [ + { className: 'dt-head-center', targets: '_all' }, + { orderable: false, targets: [4, 5] } + ] + }); +}); diff --git a/app/templates/main/departmentPortal.html b/app/templates/main/departmentPortal.html index 87c30bbf..0e4b528d 100644 --- a/app/templates/main/departmentPortal.html +++ b/app/templates/main/departmentPortal.html @@ -103,7 +103,7 @@

Positions

diff --git a/app/templates/main/managepositions.html b/app/templates/main/managepositions.html index f61558a3..740df36a 100644 --- a/app/templates/main/managepositions.html +++ b/app/templates/main/managepositions.html @@ -2,51 +2,32 @@ {% block styles %} {{super()}} + {% endblock %} {% block scripts %} {{super()}} + {% endblock %} {% block app_content %} -
-

{{ department_name }}

-
-
- +
- - + + @@ -54,18 +35,19 @@

Manage Positions

+ {% for position in positions %} - - + + - + - - - + + + diff --git a/database/demo_data.py b/database/demo_data.py index 6a018a04..062916d1 100644 --- a/database/demo_data.py +++ b/database/demo_data.py @@ -20,7 +20,7 @@ from app.models.supervisorDepartment import SupervisorDepartment from app.models.allocation import Allocation from app.models.positionHistory import PositionHistory -from app.models.activeposition import Activeposition +from app.models.activepositions import ActivePosition print("Inserting data for demo and testing purposes") @@ -668,40 +668,30 @@ { "supervisor": "B12361006", "department": 1, - "banStatus": False, - "isActive": True, "isCoordinator": True }, { "supervisor": "B12365892", "department": 1, - "banStatus": True, - "isActive": True, "isCoordinator": False }, { "supervisor": "B12365893", "department": 1, - "banStatus": False, - "isActive": False, "isCoordinator": False }, { "supervisor": "B00763721", "department": 1, - "banStatus": False, - "isActive": True, "isCoordinator": False }, { "supervisor": "B00841417", "department": 1, - "banStatus": False, - "isActive": True, "isCoordinator": True } ] @@ -716,7 +706,7 @@ { "termCode": 202200, "department": 3, - "isApproved": False, + "isFinal": False, "approvedOn": None, "approvedBy": None, "justification": "Downscaling due to decrease in student enrollment caused by current economic conditions", @@ -731,7 +721,7 @@ { "termCode": 202300, "department": 2, - "isApproved": False, + "isFinal": False, "approvedOn": None, "approvedBy": None, "justification": "Increase in student enrollment due to exodous from CS department", @@ -746,7 +736,7 @@ { "termCode": 202400, "department": 1, - "isApproved": False, + "isFinal": False, "approvedOn": None, "approvedBy": None, "justification": "We are hiring more students to help with the increased workload in the department", @@ -761,7 +751,7 @@ { "termCode": 202500, "department": 4, - "isApproved": False, + "isFinal": False, "approvedOn": None, "approvedBy": None, "justification": "Downscaling the number of students in the department due to budget cuts", @@ -776,7 +766,7 @@ { "termCode": 202500, "department": 5, - "isApproved": False, + "isFinal": False, "approvedOn": None, "approvedBy": None, "justification": "Due to rapid department growth, we need to hire more students to help with the increased workload", @@ -797,7 +787,7 @@ { "termCode":f"{current_year}00", "department": 3, - "isApproved": True, + "isFinal": False, "approvedOn": f"{current_year}-06-30", "approvedBy": "B12365892", "justification": "We just want it for fun", @@ -812,7 +802,7 @@ { "termCode":f"{current_year}00", "department": 2, - "isApproved": False, + "isFinal": False, "approvedOn": f"{current_year}-06-20", "approvedBy": "B00763721", "justification": "We need it to lower the amount of allocations we have", @@ -836,98 +826,75 @@ positionhistory = [ { - "positioncode": "S61407", + "positionTitle": "Student Programmer", + "positionCode": "S61407", + "department": 1, "status": "Active", - "WLS": 1, - "revisiondate": f"{current_year}-07-01", - "Description": "", - "Department_id": 1 + "wls": 1, + "revisionDate": f"{current_year}-07-01", + "description": "", + }, { - - "positioncode": "S61408", + "positionTitle": "Research Associate", + "positionCode": "S61408", + "department": 1, "status": "Active", - "WLS": 2, - "revisiondate": f"{current_year}-09-01", - "Description": "", - "Department_id": 1 + "wls": 2, + "revisionDate": f"{current_year}-09-01", + "description": "", }, { - "positioncode": "S61409", + "positionTitle": "Labor Workers", + "positionCode": "S61409", + "department": 1, "status": "Active", - "WLS": 3, - "revisiondate": f"{current_year}-07-01", - "Description": "", - "Department_id": 1 + "wls": 3, + "revisionDate": f"{current_year}-07-01", + "description": "", + }, { - "positioncode": "S61411", + "positionTitle": "Teaching Associate", + "positionCode": "S61411", + "department": 1, "status": "Active", - "WLS":3, - "revisiondate" : f"{current_year}-01-01", - "Description": "", - "Department_id" : 1 + "wls":3, + "revisionDate" : f"{current_year}-01-01", + "description": "", + }, { - "positioncode": "S61410", + "positionTitle": "Teaching Associate", + "positionCode": "S61410", + "department": 1, "status": "Inactive", - "WLS":2, - "revisiondate" : f"{current_year}-01-01", - "Description": "", - "Department_id" : 1 - }, + "wls":2, + "revisionDate" : f"{current_year}-01-01", + "description": "", -] -PositionHistory.insert_many(positionhistory).on_conflict_replace().execute() - -Activepositions = [ - { - "title": "Student Programmer", - "positioncode": "S61407", - "status": "", - "WLS": 1, - "revisiondate": f"{current_year}-07-01", - "Description": "Responsible for programming tasks", - "Department_id": 1 - }, - { - "title": "Student Assistant", - "positioncode": "S61408", - "status": "", - "WLS": 2, - "revisiondate": f"{current_year}-09-01", - "Description": "Responsible for assisting students ", - "Department_id": 1 - }, - { - "title": "Student Researcher", - "positioncode": "S61409", - "status": "", - "WLS": 3, - "revisiondate": f"{current_year}-07-01", - "Description": "Responsible for conducting research", - "Department_id": 1 - }, - { - "title": "Student Consultant", - "positioncode": "S61411", - "status": "Inactive", - "WLS":3, - "revisiondate" : f"{current_year}-01-01", - "Description": "Responsible for providing consulting services", - "Department_id" : 1 - }, { - "title": "Student Coordinator", - "positioncode": "S61410", - "status": "Active", - "WLS":2, - "revisiondate" : f"{current_year}-01-01", - "Description": "Responsible for coordinating student activities", - "Department_id" : 1 - }, + "positionTitle": "Teaching Associate", + "positionCode": "S61410", + "status": "Active", + "wls":2, + "revisionDate" : f"{current_year}-03-29", + "description": "", + "department" : 3 + }, + { + "positionTitle": "DUMMY POSITION", + "positionCode": "S12345", + "status": "Active", + "wls":3, + "revisionDate" : f"{current_year}-01-23", + "description": "", + "department" : 1 + } ] -Activeposition.insert_many(Activepositions).on_conflict_replace().execute() \ No newline at end of file +PositionHistory.insert_many(positionhistory).on_conflict_replace().execute() + +ActivePosition.insert_many(PositionHistory.select().where(PositionHistory.status == "Active")) diff --git a/database/migrate_db.sh b/database/migrate_db.sh index dea226d8..af65b25f 100755 --- a/database/migrate_db.sh +++ b/database/migrate_db.sh @@ -32,6 +32,7 @@ pem add app.models.studentLaborEvaluation.StudentLaborEvaluation pem add app.models.formSearchResult.FormSearchResult pem add app.models.positionHistory.PositionHistory pem add app.models.allocation.Allocation +pem add app.models.activepositions.ActivePosition pem watch pem migrate From efa446556b247713f3287c87f19d3d8e26a79452 Mon Sep 17 00:00:00 2001 From: NYABUTOA Date: Tue, 21 Jul 2026 15:06:05 -0400 Subject: [PATCH 5/5] Added replace with the pw that was put there by mistake --- db_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_test.py b/db_test.py index d3254418..560c0463 100644 --- a/db_test.py +++ b/db_test.py @@ -2,7 +2,7 @@ details = { "user": "ute_limited", - "password": "VB6PlU$WcbDBqZ3m0IDX", + "password": "REPLACE", "server": "timemachine1sql.berea.edu", "db": "UTE" }
Position (WSL)Position CodePositionWLS Status Last Revision Date View Position Description
{{position.POSN_TITLE}} ({{position.WLS}}){{position.POSN_CODE}}{{position.title}} {{position.positioncode}} {{position.WLS}} -

- Active +

+ {{position.status}}

01/01/2024{{position.revisiondate}}
{{position.title}} {{position.positioncode}} {{position.WLS}}{{position.revisiondate}}{{position.positionTitle}} {{position.positionCode}} {{position.wls}}{{position.revisionDate}}