diff --git a/erpnext/crm/doctype/linkedin_settings/linkedin_settings.js b/erpnext/crm/doctype/linkedin_settings/linkedin_settings.js index fd169f8328..b888e721bb 100644 --- a/erpnext/crm/doctype/linkedin_settings/linkedin_settings.js +++ b/erpnext/crm/doctype/linkedin_settings/linkedin_settings.js @@ -5,7 +5,7 @@ frappe.ui.form.on('LinkedIn Settings', { onload: function(frm){ if(frm.doc.session_status == 'Expired' && frm.doc.consumer_key && frm.doc.consumer_secret){ frappe.confirm( - 'Session not valid, Do you want to login?', + __('Session not valid, Do you want to login?'), function(){ frm.trigger("login"); }, @@ -20,7 +20,7 @@ frappe.ui.form.on('LinkedIn Settings', { frm.dashboard.set_headline_alert( '
' + '
' + - ' ' + + ' ' + '
' + '
' ); @@ -33,11 +33,11 @@ frappe.ui.form.on('LinkedIn Settings', { days = Math.floor(days/(1000 * 3600 * 24)); let msg,color; if(days>0){ - msg = "Your Session will be expire in " + days + " days."; + msg = __("Your Session will be expire in ") + days + __(" days."); color = "green"; } else{ - msg = "Session is expired. Save doc to login."; + msg = __("Session is expired. Save doc to login."); color = "red"; } frm.dashboard.set_headline_alert( diff --git a/erpnext/crm/doctype/social_media_post/social_media_post.js b/erpnext/crm/doctype/social_media_post/social_media_post.js index 690e27c79b..517b3b4614 100644 --- a/erpnext/crm/doctype/social_media_post/social_media_post.js +++ b/erpnext/crm/doctype/social_media_post/social_media_post.js @@ -2,7 +2,17 @@ // For license information, please see license.txt frappe.ui.form.on('Social Media Post', { validate: function(frm){ - if(frm.doc.text.length > 280){ + if(frm.doc.twitter==0 && frm.doc.linkedin==0){ + frappe.throw(__("Select atleast one Social Media from Share on.")) + } + if(frm.doc.scheduled_time) { + let scheduled_time = new Date(frm.doc.scheduled_time); + let date_time = new Date(); + if(scheduled_time.getTime() < date_time.getTime()){ + frappe.throw(__("Invalid Scheduled Time")); + } + } + if(frm.doc.text?.length > 280){ frappe.throw(__("Length Must be less than 280.")) } }, diff --git a/erpnext/crm/doctype/social_media_post/social_media_post.json b/erpnext/crm/doctype/social_media_post/social_media_post.json index f8c23a7e46..2601c14b4d 100644 --- a/erpnext/crm/doctype/social_media_post/social_media_post.json +++ b/erpnext/crm/doctype/social_media_post/social_media_post.json @@ -7,7 +7,7 @@ "engine": "InnoDB", "field_order": [ "campaign_name", - "sheduled_time", + "scheduled_time", "post_status", "column_break_6", "twitter", @@ -58,12 +58,6 @@ "print_hide": 1, "read_only": 1 }, - { - "allow_on_submit": 1, - "fieldname": "sheduled_time", - "fieldtype": "Datetime", - "label": "Scheduled Time" - }, { "depends_on": "eval:doc.twitter ==1", "fieldname": "content", @@ -136,11 +130,18 @@ { "fieldname": "column_break_15", "fieldtype": "Column Break" + }, + { + "allow_on_submit": 1, + "fieldname": "scheduled_time", + "fieldtype": "Datetime", + "label": "Scheduled Time", + "read_only_depends_on": "eval:doc.post_status == \"Posted\"" } ], "is_submittable": 1, "links": [], - "modified": "2020-04-18 01:28:35.995490", + "modified": "2020-04-21 15:10:04.953713", "modified_by": "Administrator", "module": "CRM", "name": "Social Media Post", diff --git a/erpnext/crm/doctype/social_media_post/social_media_post.py b/erpnext/crm/doctype/social_media_post/social_media_post.py index 672486deac..2cca60892b 100644 --- a/erpnext/crm/doctype/social_media_post/social_media_post.py +++ b/erpnext/crm/doctype/social_media_post/social_media_post.py @@ -6,10 +6,18 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from frappe import _ +import datetime class SocialMediaPost(Document): + def validate(self): + if self.scheduled_time: + current_time = frappe.utils.now_datetime() + scheduled_time = frappe.utils.get_datetime(self.scheduled_time) + if scheduled_time < current_time: + frappe.throw(_("Invalid Scheduled Time")) + def submit(self): - if self.sheduled_time: + if self.scheduled_time: self.post_status = "Scheduled" super(SocialMediaPost, self).submit() @@ -32,15 +40,14 @@ class SocialMediaPost(Document): frappe.log_error(message=traceback , title=title) def process_scheduled_social_media_posts(): - import datetime - posts = frappe.get_list("Social Media Post", filters={"status": "Scheduled"}, fields= ["name", "sheduled_time"]) + posts = frappe.get_list("Social Media Post", filters={"post_status": "Scheduled", "docstatus":1}, fields= ["name", "scheduled_time","post_status"]) start = frappe.utils.now_datetime() - end = start + datetime.timedelta(minutes=59) + end = start + datetime.timedelta(minutes=10) for post in posts: - post_time = frappe.utils.get_datetime(post.scheduled_time) - if post_time > start and post_time <= end: - post = frappe.get_doc('Social Media Post',post['name']) - post.post() + if post.scheduled_time: + post_time = frappe.utils.get_datetime(post.scheduled_time) + if post_time > start and post_time <= end: + publish('Social Media Post', post.name) @frappe.whitelist() def publish(doctype, name): diff --git a/erpnext/crm/doctype/twitter_settings/twitter_settings.js b/erpnext/crm/doctype/twitter_settings/twitter_settings.js index 359196bcae..be5ae9d710 100644 --- a/erpnext/crm/doctype/twitter_settings/twitter_settings.js +++ b/erpnext/crm/doctype/twitter_settings/twitter_settings.js @@ -5,7 +5,7 @@ frappe.ui.form.on('Twitter Settings', { onload: function(frm){ if(frm.doc.session_status == 'Expired' && frm.doc.consumer_key && frm.doc.consumer_secret){ frappe.confirm( - 'Session not valid, Do you want to login?', + __('Session not valid, Do you want to login?'), function(){ frm.trigger("login"); }, @@ -20,7 +20,7 @@ frappe.ui.form.on('Twitter Settings', { frm.dashboard.set_headline_alert( '
' + '
' + - ' ' + + ' ' + '
' + '
' ); @@ -29,7 +29,7 @@ frappe.ui.form.on('Twitter Settings', { frm.dashboard.set_headline_alert( '
' + '
' + - ' ' + + ' ' + '
' + '
' ); diff --git a/erpnext/crm/doctype/twitter_settings/twitter_settings.json b/erpnext/crm/doctype/twitter_settings/twitter_settings.json index fbdfac907e..f92e7f0495 100644 --- a/erpnext/crm/doctype/twitter_settings/twitter_settings.json +++ b/erpnext/crm/doctype/twitter_settings/twitter_settings.json @@ -31,14 +31,14 @@ "fieldname": "consumer_key", "fieldtype": "Data", "in_list_view": 1, - "label": "Consumer Key", + "label": "API Key", "reqd": 1 }, { "fieldname": "consumer_secret", "fieldtype": "Password", "in_list_view": 1, - "label": "Consumer Secret Key", + "label": "API Secret Key", "reqd": 1 }, { @@ -77,7 +77,7 @@ "image_field": "profile_pic", "issingle": 1, "links": [], - "modified": "2020-04-08 23:56:20.621246", + "modified": "2020-04-21 22:06:43.726798", "modified_by": "Administrator", "module": "CRM", "name": "Twitter Settings",