updated feed for comments and login

This commit is contained in:
Rushabh Mehta 2012-02-03 12:56:12 +05:30
parent adc9a61bd7
commit 63d669f390
8 changed files with 85 additions and 37 deletions

View File

@ -34,23 +34,33 @@ feed_dict = {
'Support Ticket': ['[%(status)s] %(subject)s', '#000080']
}
def make_feed(doc, subject, color):
def make_feed(feedtype, doctype, name, owner, subject, color):
"makes a new Feed record"
#msgprint(subject)
from webnotes.model.doc import Document
webnotes.conn.sql("delete from tabFeed where doc_type=%s and doc_name=%s", (doc.doctype, doc.name))
if feedtype in ('Login', 'Comment'):
# delete old login, comment feed
webnotes.conn.sql("""delete from tabFeed where
datediff(curdate(), creation) > 7 and doc_type in ('Comment', 'Login')""")
else:
# one feed per item
webnotes.conn.sql("""delete from tabFeed
where doc_type=%s and doc_name=%s
and ifnull(feed_type,'') != 'Comment'""", (doctype, name))
f = Document('Feed')
f.doc_type = doc.doctype
f.doc_name = doc.name
f.owner = owner
f.feed_type = feedtype
f.doc_type = doctype
f.doc_name = name
f.subject = subject
f.color = color
f.save(1)
f.save()
def update_feed(doc, method=None):
"adds a new feed"
if method=='on_update':
subject, color = feed_dict.get(doc.doctype, [None, None])
if subject:
subject = subject % doc.fields
make_feed(doc, subject, color)
if subject:
make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.fields, color)

View File

@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
'creation': '2011-04-08 10:50:41',
'creation': '2011-04-06 18:11:38',
'docstatus': 0,
'modified': '2011-04-05 09:16:57',
'modified': '2012-02-03 11:28:16',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
@ -14,18 +14,18 @@
{
'autoname': '_FEED.#####',
'colour': 'White:FFF',
'default_print_format': 'Standard',
'doctype': 'DocType',
'module': 'Home',
'name': '__common__',
'section_style': 'Simple',
'show_in_menu': 0,
'version': 1
'version': 2
},
# These values are common for all DocField
{
'doctype': 'DocField',
'fieldtype': 'Data',
'name': '__common__',
'parent': 'Feed',
'parentfield': 'fields',
@ -39,11 +39,19 @@
'name': 'Feed'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'feed_type',
'fieldtype': 'Select',
'label': 'Feed Type'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'doc_type',
'idx': 1,
'fieldtype': 'Data',
'label': 'Doc Type'
},
@ -51,7 +59,7 @@
{
'doctype': 'DocField',
'fieldname': 'doc_name',
'idx': 2,
'fieldtype': 'Data',
'label': 'Doc Name'
},
@ -59,7 +67,7 @@
{
'doctype': 'DocField',
'fieldname': 'subject',
'idx': 3,
'fieldtype': 'Data',
'label': 'Subject'
},
@ -67,7 +75,7 @@
{
'doctype': 'DocField',
'fieldname': 'color',
'idx': 4,
'fieldtype': 'Data',
'label': 'Color'
}
]

View File

@ -456,7 +456,7 @@ FeedList.prototype.make_list = function() {
this.list = new wn.widgets.Listing({
parent: this.list_area,
query: repl('select \
distinct t1.name, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \
distinct t1.name, t1.feed_type, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \
concat(ifnull(t2.first_name,""), " ", ifnull(t2.last_name,"")) as full_name, \
t1.modified, t1.color \
from tabFeed t1, tabProfile t2, tabUserRole t3, tabDocPerm t4 \
@ -495,13 +495,11 @@ FeedItem = function(cell, det, feedlist) {
this.tab = make_table(this.wrapper, 1, 2, '100%', [(100/7)+'%', (600/7)+'%']);
$y(this.tab,{tableLayout:'fixed'})
// image
$y($td(this.tab,0,0),{textAlign:'right',paddingRight:'4px'});
// text
this.text_area = $a($td(this.tab,0,1), 'div');
this.render_references(this.text_area, det);
this.render_references(this.text_area, det);
this.render_tag(det);
// add day separator
@ -537,13 +535,21 @@ FeedItem.prototype.add_day_sep = function(det) {
// -------------------------------------------------
FeedItem.prototype.render_tag = function(det) {
// type is the name
tag = $a($td(this.tab,0,0), 'div', '',
{color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px', whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'});
{color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px',
whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'});
$br(tag,'3px');
$y(tag, {backgroundColor:(det.color || '#273')});
tag.innerHTML = get_doctype_label(det.doc_type);
tag.dt = det.doc_type;
tag.onclick = function() { loaddocbrowser(this.dt); }
// tag label
tag.innerHTML = det.feed_type || get_doctype_label(det.doc_type);
// not comment / label
if(!det.feed_type) {
tag.dt = det.doc_type;
tag.onclick = function() { loaddocbrowser(this.dt); }
}
}
FeedItem.prototype.render_references = function(div, det) {
@ -552,10 +558,15 @@ FeedItem.prototype.render_references = function(div, det) {
var dt = det.doc_type; var dn = det.doc_name
// link
var allow = in_list(profile.can_read, dt);
var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, det.doc_name);
span.dt = dt; span.dn = dn;
if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); }
if(det.feed_type=='Login') {
// nothing - no link
} else {
var allow = in_list(profile.can_read, dt);
var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null,
det.doc_name);
span.dt = dt; span.dn = dn;
if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); }
}
// subject
if(det.subject) {

View File

@ -0,0 +1,6 @@
import webnotes
from webnotes.model.doc import Document
from webnotes.modules import reload_doc
def execute():
reload_doc('home', 'doctype', 'feed')

View File

@ -1,18 +1,18 @@
import webnotes
import webnotes.defs
from webnotes.utils import cint
import home
def on_login(login_manager):
"""
called from login manager, before login
"""
try:
if login_manager.user not in ('Guest', None, ''):
if login_manager.user not in ('Guest', None, ''):
try:
import server_tools.gateway_utils
server_tools.gateway_utils.check_login(login_manager.user)
except ImportError:
pass
except ImportError:
pass
def on_login_post_session(login_manager):
"""
@ -29,9 +29,21 @@ def on_login_post_session(login_manager):
sid!=%s""", \
(webnotes.session['user'], webnotes.session['sid']), as_list=1)
if webnotes.session['user'] not in ('Guest'):
# create feed
from webnotes.utils import nowtime
home.make_feed('Login', 'Profile', login_manager.user, login_manager.user,
'%s logged in at %s' % (login_manager.user_fullname, nowtime()),
login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')
def comment_added(doc):
"""add comment to feed"""
import json
home.make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by,
'<i>"' + doc.comment + '"</i>', '#6B24B3')
def doclist_all(doc, method):
"""doclist trigger called from webnotes.model.doclist on any event"""
import home
home.update_feed(doc, method)
def boot_session(bootinfo):
@ -51,5 +63,6 @@ def boot_session(bootinfo):
def get_letter_heads():
"""load letter heads with startup"""
import webnotes
ret = webnotes.conn.sql("select name, content from `tabLetter Head` where ifnull(disabled,0)=0")
ret = webnotes.conn.sql("""select name, content from `tabLetter Head`
where ifnull(disabled,0)=0""")
return dict(ret)

View File

@ -1 +1 @@
355
357