@@ -1,8 +0,0 @@ | |||||
// Copyright (c) 2018, Frappe Technologies and contributors | |||||
// For license information, please see license.txt | |||||
frappe.ui.form.on('Post', { | |||||
refresh: function() { | |||||
} | |||||
}); |
@@ -1,343 +0,0 @@ | |||||
{ | |||||
"allow_copy": 0, | |||||
"allow_events_in_timeline": 0, | |||||
"allow_guest_to_view": 0, | |||||
"allow_import": 0, | |||||
"allow_rename": 0, | |||||
"beta": 0, | |||||
"creation": "2018-09-25 11:39:04.533626", | |||||
"custom": 0, | |||||
"docstatus": 0, | |||||
"doctype": "DocType", | |||||
"document_type": "", | |||||
"editable_grid": 1, | |||||
"engine": "InnoDB", | |||||
"fields": [ | |||||
{ | |||||
"allow_bulk_edit": 0, | |||||
"allow_in_quick_entry": 0, | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fetch_if_empty": 0, | |||||
"fieldname": "content", | |||||
"fieldtype": "Text Editor", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_global_search": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 0, | |||||
"label": "Content", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"translatable": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_bulk_edit": 0, | |||||
"allow_in_quick_entry": 0, | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fetch_if_empty": 0, | |||||
"fieldname": "comments", | |||||
"fieldtype": "Table", | |||||
"hidden": 1, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_global_search": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "comments", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Post Comment", | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"translatable": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_bulk_edit": 0, | |||||
"allow_in_quick_entry": 0, | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fetch_if_empty": 0, | |||||
"fieldname": "liked_by", | |||||
"fieldtype": "Small Text", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_global_search": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Liked By", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 1, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"translatable": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_bulk_edit": 0, | |||||
"allow_in_quick_entry": 0, | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fetch_if_empty": 0, | |||||
"fieldname": "is_pinned", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_global_search": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Is Pinned", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 2, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"translatable": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_bulk_edit": 0, | |||||
"allow_in_quick_entry": 0, | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fetch_if_empty": 0, | |||||
"fieldname": "is_globally_pinned", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_global_search": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Is Globally Pinned", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 1, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"translatable": 0, | |||||
"unique": 0 | |||||
} | |||||
], | |||||
"has_web_view": 0, | |||||
"hide_heading": 0, | |||||
"hide_toolbar": 0, | |||||
"idx": 0, | |||||
"image_view": 0, | |||||
"in_create": 0, | |||||
"is_submittable": 0, | |||||
"issingle": 0, | |||||
"istable": 0, | |||||
"max_attachments": 0, | |||||
"modified": "2019-03-11 16:32:20.638805", | |||||
"modified_by": "Administrator", | |||||
"module": "Social", | |||||
"name": "Post", | |||||
"name_case": "", | |||||
"owner": "Administrator", | |||||
"permissions": [ | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 0 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "System Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 1, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 0 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 1, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "System Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 1, | |||||
"import": 0, | |||||
"permlevel": 2, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "System Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 2, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 0 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 1, | |||||
"import": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
} | |||||
], | |||||
"quick_entry": 1, | |||||
"read_only": 0, | |||||
"read_only_onload": 0, | |||||
"show_name_in_global_search": 0, | |||||
"sort_field": "modified", | |||||
"sort_order": "DESC", | |||||
"track_changes": 1, | |||||
"track_seen": 0, | |||||
"track_views": 1 | |||||
} |
@@ -1,104 +0,0 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2018, Frappe Technologies and contributors | |||||
# License: MIT. See LICENSE | |||||
import frappe | |||||
import requests | |||||
from bs4 import BeautifulSoup | |||||
from frappe.model.document import Document | |||||
class Post(Document): | |||||
def on_update(self): | |||||
if (self.is_globally_pinned): | |||||
frappe.publish_realtime('global_pin', after_commit=True) | |||||
def after_insert(self): | |||||
frappe.publish_realtime('new_post', self.owner, after_commit=True) | |||||
@frappe.whitelist() | |||||
def toggle_like(post_name, user=None): | |||||
liked_by = frappe.db.get_value('Post', post_name, 'liked_by') | |||||
liked_by = liked_by.split('\n') if liked_by else [] | |||||
user = user or frappe.session.user | |||||
if user in liked_by: | |||||
liked_by.remove(user) | |||||
else: | |||||
liked_by.append(user) | |||||
liked_by = '\n'.join(liked_by) | |||||
frappe.db.set_value('Post', post_name, 'liked_by', liked_by) | |||||
frappe.publish_realtime('update_liked_by' + post_name, liked_by, after_commit=True) | |||||
@frappe.whitelist() | |||||
def frequently_visited_links(): | |||||
return frappe.get_all('Route History', fields=['route', 'count(name) as count'], filters={ | |||||
'user': frappe.session.user | |||||
}, group_by="route", order_by="count desc", limit=5) | |||||
@frappe.whitelist() | |||||
def get_link_info(url): | |||||
cached_link_info = frappe.cache().hget("link_info", url) | |||||
if cached_link_info: | |||||
return cached_link_info | |||||
try: | |||||
page = requests.get(url) | |||||
except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError): | |||||
frappe.cache().hset("link_info", url, {}) | |||||
return {} | |||||
soup = BeautifulSoup(page.text) | |||||
meta_obj = {} | |||||
for meta in soup.findAll('meta'): | |||||
meta_name = meta.get('property') or meta.get('name', '').lower() | |||||
if meta_name: | |||||
meta_obj[meta_name] = meta.get('content') | |||||
frappe.cache().hset("link_info", url, meta_obj) | |||||
return meta_obj | |||||
@frappe.whitelist() | |||||
def delete_post(post_name): | |||||
post = frappe.get_doc('Post', post_name) | |||||
post.delete() | |||||
frappe.publish_realtime('delete_post' + post_name, after_commit=True) | |||||
def get_unseen_post_count(): | |||||
post_count = frappe.db.count('Post') | |||||
view_post_count = get_viewed_posts(True) | |||||
return post_count - view_post_count | |||||
@frappe.whitelist() | |||||
def get_posts(filters=None, limit_start=0): | |||||
filters = frappe.utils.get_safe_filters(filters) | |||||
posts = frappe.get_list('Post', | |||||
fields= ['name', 'content', 'owner', 'creation', 'liked_by', 'is_pinned', 'is_globally_pinned'], | |||||
filters=filters, | |||||
limit_start=limit_start, | |||||
limit=20, | |||||
order_by= 'is_globally_pinned desc, creation desc') | |||||
viewed_posts = get_viewed_posts() | |||||
for post in posts: | |||||
post['seen'] = post.name in viewed_posts | |||||
return posts | |||||
def get_viewed_posts(only_count=False): | |||||
view_logs = frappe.db.get_all('View Log', filters={ | |||||
'reference_doctype': 'Post', | |||||
'viewed_by': frappe.session.user | |||||
}, fields=['reference_name']) | |||||
return len(view_logs) if only_count else [log.reference_name for log in view_logs] | |||||
@frappe.whitelist() | |||||
def set_seen(post_name): | |||||
frappe.get_doc({ | |||||
'doctype': 'View Log', | |||||
'reference_doctype': 'Post', | |||||
'reference_name': post_name, | |||||
'viewed_by': frappe.session.user | |||||
}).insert(ignore_permissions=True) |
@@ -1,8 +0,0 @@ | |||||
// Copyright (c) 2018, Frappe Technologies and contributors | |||||
// For license information, please see license.txt | |||||
frappe.ui.form.on('Post Comment', { | |||||
refresh: function() { | |||||
} | |||||
}); |
@@ -1,133 +0,0 @@ | |||||
{ | |||||
"allow_copy": 0, | |||||
"allow_events_in_timeline": 0, | |||||
"allow_guest_to_view": 0, | |||||
"allow_import": 0, | |||||
"allow_rename": 0, | |||||
"beta": 0, | |||||
"creation": "2018-10-14 10:16:22.852930", | |||||
"custom": 0, | |||||
"docstatus": 0, | |||||
"doctype": "DocType", | |||||
"document_type": "", | |||||
"editable_grid": 1, | |||||
"engine": "InnoDB", | |||||
"fields": [ | |||||
{ | |||||
"allow_bulk_edit": 0, | |||||
"allow_in_quick_entry": 0, | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "content", | |||||
"fieldtype": "Text", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_global_search": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Content", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"translatable": 0, | |||||
"unique": 0 | |||||
} | |||||
], | |||||
"has_web_view": 0, | |||||
"hide_heading": 0, | |||||
"hide_toolbar": 0, | |||||
"idx": 0, | |||||
"image_view": 0, | |||||
"in_create": 0, | |||||
"is_submittable": 0, | |||||
"issingle": 0, | |||||
"istable": 0, | |||||
"max_attachments": 0, | |||||
"modified": "2018-11-01 10:16:03.433920", | |||||
"modified_by": "Administrator", | |||||
"module": "Social", | |||||
"name": "Post Comment", | |||||
"name_case": "", | |||||
"owner": "Administrator", | |||||
"permissions": [ | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "System Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 0 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 1, | |||||
"if_owner": 1, | |||||
"import": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
} | |||||
], | |||||
"quick_entry": 0, | |||||
"read_only": 0, | |||||
"read_only_onload": 0, | |||||
"show_name_in_global_search": 0, | |||||
"sort_field": "modified", | |||||
"sort_order": "DESC", | |||||
"track_changes": 0, | |||||
"track_seen": 0, | |||||
"track_views": 0 | |||||
} |
@@ -1,19 +0,0 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2018, Frappe Technologies and contributors | |||||
# License: MIT. See LICENSE | |||||
import frappe | |||||
from frappe.model.document import Document | |||||
from frappe.core.doctype.user.user import extract_mentions | |||||
class PostComment(Document): | |||||
def after_insert(self): | |||||
mentions = extract_mentions(self.content) | |||||
for mention in mentions: | |||||
if mention == self.owner: continue | |||||
frappe.publish_realtime('mention', """{} mentioned you! | |||||
<br><a class="text-muted text-small" href="desk#social/home">Check Social<a>""" | |||||
.format(frappe.utils.get_fullname(self.owner)), | |||||
user=mention, | |||||
after_commit=True) | |||||
frappe.publish_realtime('new_post_comment' + self.parent, self, after_commit=True) |