Linkedin, Twitter Integration
This commit is contained in:
commit
4e2256f2e3
@ -5,7 +5,7 @@ frappe.ui.form.on('LinkedIn Settings', {
|
|||||||
onload: function(frm){
|
onload: function(frm){
|
||||||
if(frm.doc.session_status == 'Expired' && frm.doc.consumer_key && frm.doc.consumer_secret){
|
if(frm.doc.session_status == 'Expired' && frm.doc.consumer_key && frm.doc.consumer_secret){
|
||||||
frappe.confirm(
|
frappe.confirm(
|
||||||
'Session not valid, Do you want to login?',
|
__('Session not valid, Do you want to login?'),
|
||||||
function(){
|
function(){
|
||||||
frm.trigger("login");
|
frm.trigger("login");
|
||||||
},
|
},
|
||||||
@ -20,7 +20,7 @@ frappe.ui.form.on('LinkedIn Settings', {
|
|||||||
frm.dashboard.set_headline_alert(
|
frm.dashboard.set_headline_alert(
|
||||||
'<div class="row">' +
|
'<div class="row">' +
|
||||||
'<div class="col-xs-12">' +
|
'<div class="col-xs-12">' +
|
||||||
'<span class="indicator whitespace-nowrap red'+ '' +'"><span class="hidden-xs">Session Not Active. Save doc to login.</span></span> ' +
|
'<span class="indicator whitespace-nowrap red"><span class="hidden-xs">'+ __("Session Not Active. Save doc to login.") +'</span></span> ' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>'
|
'</div>'
|
||||||
);
|
);
|
||||||
@ -33,11 +33,11 @@ frappe.ui.form.on('LinkedIn Settings', {
|
|||||||
days = Math.floor(days/(1000 * 3600 * 24));
|
days = Math.floor(days/(1000 * 3600 * 24));
|
||||||
let msg,color;
|
let msg,color;
|
||||||
if(days>0){
|
if(days>0){
|
||||||
msg = "Your Session will be expire in " + days + " days.";
|
msg = __("Your Session will be expire in ") + days + __(" days.");
|
||||||
color = "green";
|
color = "green";
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
msg = "Session is expired. Save doc to login.";
|
msg = __("Session is expired. Save doc to login.");
|
||||||
color = "red";
|
color = "red";
|
||||||
}
|
}
|
||||||
frm.dashboard.set_headline_alert(
|
frm.dashboard.set_headline_alert(
|
||||||
|
|||||||
@ -2,7 +2,17 @@
|
|||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
frappe.ui.form.on('Social Media Post', {
|
frappe.ui.form.on('Social Media Post', {
|
||||||
validate: function(frm){
|
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."))
|
frappe.throw(__("Length Must be less than 280."))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
"engine": "InnoDB",
|
"engine": "InnoDB",
|
||||||
"field_order": [
|
"field_order": [
|
||||||
"campaign_name",
|
"campaign_name",
|
||||||
"sheduled_time",
|
"scheduled_time",
|
||||||
"post_status",
|
"post_status",
|
||||||
"column_break_6",
|
"column_break_6",
|
||||||
"twitter",
|
"twitter",
|
||||||
@ -58,12 +58,6 @@
|
|||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allow_on_submit": 1,
|
|
||||||
"fieldname": "sheduled_time",
|
|
||||||
"fieldtype": "Datetime",
|
|
||||||
"label": "Scheduled Time"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"depends_on": "eval:doc.twitter ==1",
|
"depends_on": "eval:doc.twitter ==1",
|
||||||
"fieldname": "content",
|
"fieldname": "content",
|
||||||
@ -136,11 +130,18 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "column_break_15",
|
"fieldname": "column_break_15",
|
||||||
"fieldtype": "Column Break"
|
"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,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-18 01:28:35.995490",
|
"modified": "2020-04-21 15:10:04.953713",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "CRM",
|
"module": "CRM",
|
||||||
"name": "Social Media Post",
|
"name": "Social Media Post",
|
||||||
|
|||||||
@ -6,10 +6,18 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
import datetime
|
||||||
|
|
||||||
class SocialMediaPost(Document):
|
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):
|
def submit(self):
|
||||||
if self.sheduled_time:
|
if self.scheduled_time:
|
||||||
self.post_status = "Scheduled"
|
self.post_status = "Scheduled"
|
||||||
super(SocialMediaPost, self).submit()
|
super(SocialMediaPost, self).submit()
|
||||||
|
|
||||||
@ -32,15 +40,14 @@ class SocialMediaPost(Document):
|
|||||||
frappe.log_error(message=traceback , title=title)
|
frappe.log_error(message=traceback , title=title)
|
||||||
|
|
||||||
def process_scheduled_social_media_posts():
|
def process_scheduled_social_media_posts():
|
||||||
import datetime
|
posts = frappe.get_list("Social Media Post", filters={"post_status": "Scheduled", "docstatus":1}, fields= ["name", "scheduled_time","post_status"])
|
||||||
posts = frappe.get_list("Social Media Post", filters={"status": "Scheduled"}, fields= ["name", "sheduled_time"])
|
|
||||||
start = frappe.utils.now_datetime()
|
start = frappe.utils.now_datetime()
|
||||||
end = start + datetime.timedelta(minutes=59)
|
end = start + datetime.timedelta(minutes=10)
|
||||||
for post in posts:
|
for post in posts:
|
||||||
post_time = frappe.utils.get_datetime(post.scheduled_time)
|
if post.scheduled_time:
|
||||||
if post_time > start and post_time <= end:
|
post_time = frappe.utils.get_datetime(post.scheduled_time)
|
||||||
post = frappe.get_doc('Social Media Post',post['name'])
|
if post_time > start and post_time <= end:
|
||||||
post.post()
|
publish('Social Media Post', post.name)
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def publish(doctype, name):
|
def publish(doctype, name):
|
||||||
|
|||||||
@ -5,7 +5,7 @@ frappe.ui.form.on('Twitter Settings', {
|
|||||||
onload: function(frm){
|
onload: function(frm){
|
||||||
if(frm.doc.session_status == 'Expired' && frm.doc.consumer_key && frm.doc.consumer_secret){
|
if(frm.doc.session_status == 'Expired' && frm.doc.consumer_key && frm.doc.consumer_secret){
|
||||||
frappe.confirm(
|
frappe.confirm(
|
||||||
'Session not valid, Do you want to login?',
|
__('Session not valid, Do you want to login?'),
|
||||||
function(){
|
function(){
|
||||||
frm.trigger("login");
|
frm.trigger("login");
|
||||||
},
|
},
|
||||||
@ -20,7 +20,7 @@ frappe.ui.form.on('Twitter Settings', {
|
|||||||
frm.dashboard.set_headline_alert(
|
frm.dashboard.set_headline_alert(
|
||||||
'<div class="row">' +
|
'<div class="row">' +
|
||||||
'<div class="col-xs-12">' +
|
'<div class="col-xs-12">' +
|
||||||
'<span class="indicator whitespace-nowrap green'+ '' +'"><span class="hidden-xs">Session Active</span></span> ' +
|
'<span class="indicator whitespace-nowrap green"><span class="hidden-xs">'+ __("Session Active") +'</span></span> ' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>'
|
'</div>'
|
||||||
);
|
);
|
||||||
@ -29,7 +29,7 @@ frappe.ui.form.on('Twitter Settings', {
|
|||||||
frm.dashboard.set_headline_alert(
|
frm.dashboard.set_headline_alert(
|
||||||
'<div class="row">' +
|
'<div class="row">' +
|
||||||
'<div class="col-xs-12">' +
|
'<div class="col-xs-12">' +
|
||||||
'<span class="indicator whitespace-nowrap red'+ '' +'"><span class="hidden-xs">Session Not Active. Save doc to login.</span></span> ' +
|
'<span class="indicator whitespace-nowrap red"><span class="hidden-xs">'+ __("Session Not Active. Save doc to login.") +'</span></span> ' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>'
|
'</div>'
|
||||||
);
|
);
|
||||||
|
|||||||
@ -31,14 +31,14 @@
|
|||||||
"fieldname": "consumer_key",
|
"fieldname": "consumer_key",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Consumer Key",
|
"label": "API Key",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "consumer_secret",
|
"fieldname": "consumer_secret",
|
||||||
"fieldtype": "Password",
|
"fieldtype": "Password",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Consumer Secret Key",
|
"label": "API Secret Key",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -77,7 +77,7 @@
|
|||||||
"image_field": "profile_pic",
|
"image_field": "profile_pic",
|
||||||
"issingle": 1,
|
"issingle": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-08 23:56:20.621246",
|
"modified": "2020-04-21 22:06:43.726798",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "CRM",
|
"module": "CRM",
|
||||||
"name": "Twitter Settings",
|
"name": "Twitter Settings",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user