fix: Commonified function and updated scheduler events
Co-authored-by: marination <maricadsouza221197@gmail.com>
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 3beae3b..f8b6be7 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -284,7 +284,7 @@
scheduler_events = {
"cron": {
"0/30 * * * *": [
- "erpnext.utilities.doctype.video.video.update_youtube_data_half_hourly",
+ "erpnext.utilities.doctype.video.video.update_youtube_data",
]
},
"all": [
@@ -302,7 +302,6 @@
"erpnext.projects.doctype.project.project.collect_project_status",
"erpnext.hr.doctype.shift_type.shift_type.process_auto_attendance_for_all_shifts",
"erpnext.support.doctype.issue.issue.set_service_level_agreement_variance",
- "erpnext.utilities.doctype.video.video.update_youtube_data"
],
"daily": [
"erpnext.stock.reorder_item.reorder_item",
diff --git a/erpnext/utilities/doctype/video/video.py b/erpnext/utilities/doctype/video/video.py
index 6971beb..7918b82 100644
--- a/erpnext/utilities/doctype/video/video.py
+++ b/erpnext/utilities/doctype/video/video.py
@@ -50,45 +50,37 @@
title = "Failed to Update YouTube Statistics for Video: {0}".format(self.name)
frappe.log_error(title + "\n\n" + frappe.get_traceback(), title=title)
+
def is_tracking_enabled():
return frappe.db.get_single_value("Video Settings", "enable_youtube_tracking")
-def get_frequency(value):
- if not value:
- return None
- # Return frequency in hours
+def get_frequency(value):
+ # Return numeric value from frequency field, return 1 as fallback default value: 1 hour
if value != "Daily":
return frappe.utils.cint(value[:2].strip())
- else:
- # 24 hours for Daily
+ elif value:
return 24
-
-
-def update_youtube_data_half_hourly():
- # Called every 30 mins via hooks
- frequency = get_frequency(frappe.db.get_single_value("Video Settings", "frequency"))
- if not is_tracking_enabled() or not frequency:
- return
-
- if frequency == 30:
- batch_update_youtube_data()
+ return 1
def update_youtube_data():
- # Called every hour via hooks
- frequency = get_frequency(frappe.db.get_single_value("Video Settings", "frequency"))
+ # Called every 30 minutes via hooks
+ enable_youtube_tracking, frequency = frappe.db.get_value("Video Settings", "Video Settings", ["enable_youtube_tracking", "frequency"])
- # if frequency is 30 mins dont proceed, as its handled in another method
- if not is_tracking_enabled() or not frequency or frequency == 30:
+ if not enable_youtube_tracking:
return
+ frequency = get_frequency(frequency)
time = datetime.now()
timezone = pytz.timezone(frappe.utils.get_time_zone())
site_time = time.astimezone(timezone)
- if site_time.hour % frequency == 0:
+ if frequency == 30:
batch_update_youtube_data()
+ elif site_time.hour % frequency == 0:
+ batch_update_youtube_data()
+
def get_formatted_ids(video_list):
# format ids to comma separated string for bulk request
@@ -98,6 +90,7 @@
return ','.join(ids)
+
@frappe.whitelist()
def get_id_from_url(url):
"""
@@ -128,7 +121,8 @@
'like_count' : video_stats.get('likeCount'),
'view_count' : video_stats.get('viewCount'),
'dislike_count' : video_stats.get('dislikeCount'),
- 'comment_count' : video_stats.get('commentCount')
+ 'comment_count' : video_stats.get('commentCount'),
+ 'video_id': video_id
}
frappe.db.sql("""
@@ -138,7 +132,7 @@
view_count = %(view_count)s,
dislike_count = %(dislike_count)s,
comment_count = %(comment_count)s
- WHERE youtube_video_id = '{0}'""".format(video_id), stats)
+ WHERE youtube_video_id = %(video_id)s""", stats)
video_list = frappe.get_all("Video", fields=["youtube_video_id"])
if len(video_list) > 50:
@@ -150,4 +144,4 @@
start += 50
end += 50
else:
- prepare_and_set_data(video_list)
\ No newline at end of file
+ prepare_and_set_data(video_list)