Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
362 changes: 201 additions & 161 deletions frontend/package-lock.json

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,20 @@
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/tailwindcss": "^3.1.0",
"@typescript-eslint/eslint-plugin": "^8.20.0",
"@typescript-eslint/parser": "^8.20.0",
"@typescript-eslint/eslint-plugin": "^8.58.0",
"@typescript-eslint/parser": "^8.58.0",
"@vitejs/plugin-react": "^4.3.4",
"autoprefixer": "^10.4.19",
"eslint": "^9.18.0",
"eslint": "^9.39.4",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.16",
"globals": "^15.14.0",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.39",
"tailwindcss": "^3.4.6",
"tailwindcss": "^3.4.19",
"typescript": "~5.6.2",
"typescript-eslint": "^8.18.2",
"typescript-eslint": "^8.58.0",
"vite": "^6.4.1"
}
}
4 changes: 2 additions & 2 deletions next_pms/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def get_user_calendar_events(start_date: datetime, end_date: datetime):
return None

google_calendar = frappe.get_all("Google Calendar", filters={"user": user}, fields=["*"])[0]
google_calendar_api_obj, account = get_google_calendar_object(google_calendar.name)
google_calendar_api_obj, _account = get_google_calendar_object(google_calendar.name)
time_min = datetime(start_date.year, start_date.month, start_date.day, 0, 0, 0)
time_max = datetime(end_date.year, end_date.month, end_date.day, 23, 59, 59)
time_min_str = time_min.isoformat() + "Z"
Expand All @@ -71,7 +71,7 @@ def get_user_calendar_events(start_date: datetime, end_date: datetime):


@frappe.whitelist()
def get_doc_with_meta(doctype, docname):
def get_doc_with_meta(doctype: str, docname: str):
"""Fetch all fields (excluding non-data fields) and their values categorized under respective tabs."""

doc = frappe.get_doc(doctype, docname)
Expand Down
4 changes: 2 additions & 2 deletions next_pms/project_currency/tasks/reminde_project_threshold.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ def send_reminder_mail_for_project(project: str):
"project": project,
}

message = frappe.render_template(email_message, args)
subject = frappe.render_template(email_subject, args)
message = frappe.render_template(email_message, args) # nosemgrep - trusted Email Template from DB
subject = frappe.render_template(email_subject, args) # nosemgrep - trusted Email Template from DB

frappe.sendmail(recipients=recipients, subject=subject, message=message)

Expand Down
14 changes: 7 additions & 7 deletions next_pms/resource_management/api/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
def get_resource_management_project_view_data(
date: str,
max_week: int = 2,
project_name=None,
customer=None,
billing_type=None,
is_billable=-1,
page_length=10,
start=0,
project_id=None,
project_name: str | None = None,
customer: str | None = None,
billing_type: str | None = None,
is_billable: int = -1,
page_length: int = 10,
start: int = 0,
project_id: str | list | None = None,
):
permissions = resource_api_permissions_check()

Expand Down
20 changes: 10 additions & 10 deletions next_pms/resource_management/api/team.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@
def get_resource_management_team_view_data(
date: str,
max_week: int = 2,
employee_name=None,
business_unit=None,
designation=None,
reports_to=None,
is_billable=-1,
page_length=10,
start=0,
skills=None,
employee_id=None,
need_hours_summary=False,
employee_name: str | None = None,
business_unit: str | None = None,
designation: str | None = None,
reports_to: str | None = None,
is_billable: int = -1,
page_length: int = 10,
start: int = 0,
skills: list | str | None = None,
employee_id: list | str | None = None,
need_hours_summary: bool = False,
):
permissions = resource_api_permissions_check()

Expand Down
6 changes: 4 additions & 2 deletions next_pms/resource_management/tasks/no_allocation_reminder.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,9 @@ def send_reminder():
template = get_doc("Email Template", doc.allocation_email_template)

for arg in args:
message = render_template(template.response if not template.use_html else template.response_html, arg)
subject = render_template(template.subject, arg)
message = render_template( # nosemgrep - trusted Email Template from DB
template.response if not template.use_html else template.response_html, arg
)
subject = render_template(template.subject, arg) # nosemgrep - trusted Email Template from DB
sender = template.custom_sender_email if hasattr(template, "custom_sender_email") else None
sendmail(recipients=arg["user_id"], subject=subject, message=message, sender=sender)
20 changes: 10 additions & 10 deletions next_pms/timesheet/api/employee.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def get_data():


@frappe.whitelist()
def get_employee_from_user(user=None, throw_exception=False):
def get_employee_from_user(user: str | None = None, throw_exception: bool = False):
user = frappe.session.user
employee = frappe.db.get_value("Employee", {"user_id": user})
if not employee and throw_exception:
Expand Down Expand Up @@ -74,7 +74,7 @@ def get_employee_weekly_working_norm(employee: str) -> int:


@frappe.whitelist()
def get_employee(filters=None, fieldname=None):
def get_employee(filters: dict | str | None = None, fieldname: list | str | None = None):
import json

if not fieldname:
Expand All @@ -91,15 +91,15 @@ def get_employee(filters=None, fieldname=None):

@frappe.whitelist()
def get_employee_list(
employee_name=None,
department=None,
project=None,
page_length=None,
start=0,
status=None,
user_group=None,
employee_name: str | None = None,
department: str | None = None,
project: str | None = None,
page_length: int | None = None,
start: int = 0,
status: list | str | None = None,
user_group: str | None = None,
reports_to: str | None = None,
ignore_default_filters=False,
ignore_default_filters: bool = False,
):
from . import filter_employees

Expand Down
14 changes: 7 additions & 7 deletions next_pms/timesheet/api/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@

@whitelist()
def get_projects(
limit=20,
currency=None,
fields=None,
filters=None,
or_filters=None,
start=0,
order_by="modified desc",
limit: int = 20,
currency: str | None = None,
fields: list | str | None = None,
filters: list | str | None = None,
or_filters: list | str | None = None,
start: int = 0,
order_by: str = "modified desc",
):
meta = get_meta("Project")
if isinstance(fields, str):
Expand Down
4 changes: 2 additions & 2 deletions next_pms/timesheet/api/project_status_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ def notify_mentions(
"document_type": doc_type,
"document_name": doc_name,
"from_user": current_user,
"email_content": frappe.render_template(
"email_content": frappe.render_template( # nosemgrep - trusted template file
"next_pms/timesheet/templates/project_status_update/mention_notification.html",
{
"current_user_name": current_user_name,
Expand Down Expand Up @@ -475,7 +475,7 @@ def send_project_publish_email(user, title, project_name, project_url):

subject = f"Project Status Update '{title}' has been published"

message = frappe.render_template(
message = frappe.render_template( # nosemgrep - trusted template file
"next_pms/timesheet/templates/project_status_update/publish_notification.html",
{
"user_doc": user_doc,
Expand Down
2 changes: 1 addition & 1 deletion next_pms/timesheet/api/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def get_task_list(
search: str = None,
page_length: int | bool = 20,
start: int | None = 0,
projects=None,
projects: list | str | None = None,
status: list | str = None,
fields: list | str = None,
filter_recent: bool = False,
Expand Down
22 changes: 11 additions & 11 deletions next_pms/timesheet/api/team.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,17 @@
def get_compact_view_data(
date: str,
max_week: int = 2,
employee_name=None,
employee_name: str | None = None,
employee_ids: list[str] | str | None = None,
department=None,
project=None,
user_group=None,
page_length=10,
start=0,
status_filter=None,
status=None,
department: str | None = None,
project: str | None = None,
user_group: str | None = None,
page_length: int = 10,
start: int = 0,
status_filter: list | str | None = None,
status: list | str | None = None,
reports_to: str | None = None,
by_pass_access_check=False,
by_pass_access_check: bool = False,
):
if not by_pass_access_check:
only_for(["Timesheet Manager", "Timesheet User", "Projects Manager"], message=True)
Expand Down Expand Up @@ -389,6 +389,6 @@ def trigger_notification_for_approved_or_rejected_timesheet(
"dates": dates,
"updated_by": get_value("User", frappe.session.user, "full_name"),
}
message = frappe.render_template(email_message, args)
subject = frappe.render_template(email_subject, args)
message = frappe.render_template(email_message, args) # nosemgrep - trusted Email Template from DB
subject = frappe.render_template(email_subject, args) # nosemgrep - trusted Email Template from DB
frappe.sendmail(recipients=employee.user_id, subject=subject, message=message)
6 changes: 3 additions & 3 deletions next_pms/timesheet/api/timesheet.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

@frappe.whitelist()
@error_logger
def get_timesheet_data(employee: str, start_date=None, max_week: int = 4):
def get_timesheet_data(employee: str, start_date: str | None = None, max_week: int = 4):
"""Get timesheet data for the given employee for the given number of weeks."""
if not employee:
employee = get_employee_from_user(throw_exception=frappe.session.user != "Administrator")
Expand Down Expand Up @@ -505,7 +505,7 @@ def get_timesheet_details(date: str, task: str, employee: str):

@frappe.whitelist()
@error_logger
def bulk_update_timesheet_detail(data):
def bulk_update_timesheet_detail(data: list):
for entry in data:
if isinstance(entry, str):
entry = frappe.parse_json(entry)
Expand All @@ -514,7 +514,7 @@ def bulk_update_timesheet_detail(data):


@frappe.whitelist()
def bulk_save(timesheet_entries):
def bulk_save(timesheet_entries: list):
"""
Create multiple time entries in Timesheet Detail child table.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def get_views():


@frappe.whitelist()
def create_view(view):
def create_view(view: dict):
import json

view = frappe._dict(view)
Expand Down Expand Up @@ -70,7 +70,7 @@ def create_view(view):


@frappe.whitelist()
def update_view(view):
def update_view(view: dict):
import json

view = frappe._dict(view)
Expand Down
4 changes: 2 additions & 2 deletions next_pms/timesheet/tasks/daily_reminder_for_time_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ def send_reminder(start=INITIAL_OFFSET, limit=BATCH_SIZE):
"hour": hour,
"daily_norm": daily_norm,
}
message = frappe.render_template(email_message, args)
subject = frappe.render_template(email_subject, args)
message = frappe.render_template(email_message, args) # nosemgrep - trusted Email Template from DB
subject = frappe.render_template(email_subject, args) # nosemgrep - trusted Email Template from DB
send_mail(user, subject, message)

frappe.enqueue(
Expand Down
4 changes: 2 additions & 2 deletions next_pms/timesheet/tasks/reminder_on_approval_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def send_mail(employee: str, reporting_manager: str, start_date: str, end_date:
"reporting_manager": reporting_manager,
"notes": notes,
}
message = frappe.render_template(email_message, args)
subject = frappe.render_template(email_subject, args)
message = frappe.render_template(email_message, args) # nosemgrep - trusted Email Template from DB
subject = frappe.render_template(email_subject, args) # nosemgrep - trusted Email Template from DB

frappe.sendmail(recipients=recipients, subject=subject, message=message)
4 changes: 2 additions & 2 deletions next_pms/timesheet/tasks/send_weekly_reminder.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def send_reminder():

email_subject = reminder_template.subject

message = frappe.render_template(email_message)
subject = frappe.render_template(email_subject)
message = frappe.render_template(email_message) # nosemgrep - trusted Email Template from DB
subject = frappe.render_template(email_subject) # nosemgrep - trusted Email Template from DB

frappe.sendmail(recipients=users, subject=subject, message=message)
2 changes: 1 addition & 1 deletion next_pms/www/next-pms/index.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def get_context(context):
return context


@frappe.whitelist(methods=["POST"], allow_guest=True)
@frappe.whitelist(methods=["POST"], allow_guest=True) # nosemgrep - guarded by developer_mode check
def get_context_for_dev():
if not frappe.conf.developer_mode:
frappe.throw(frappe._("This method is only meant for developer mode"))
Expand Down
12 changes: 6 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading