updated feed for comments and login
diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py
index 7059cec..5ebf7c0 100644
--- a/erpnext/home/__init__.py
+++ b/erpnext/home/__init__.py
@@ -34,23 +34,33 @@
'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)
diff --git a/erpnext/home/doctype/feed/feed.txt b/erpnext/home/doctype/feed/feed.txt
index 5aa4f91..f239f7c 100644
--- a/erpnext/home/doctype/feed/feed.txt
+++ b/erpnext/home/doctype/feed/feed.txt
@@ -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',
@@ -42,8 +42,16 @@
# 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'
}
]
\ No newline at end of file
diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js
index 784577a..90aef9e 100644
--- a/erpnext/home/page/event_updates/event_updates.js
+++ b/erpnext/home/page/event_updates/event_updates.js
@@ -456,7 +456,7 @@
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 @@
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.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 @@
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) {
diff --git a/erpnext/patches/jan_mar_2012/latest/feed.py b/erpnext/patches/jan_mar_2012/latest/feed.py
new file mode 100644
index 0000000..c913c49
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/latest/feed.py
@@ -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')
\ No newline at end of file
diff --git a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py b/erpnext/patches/jan_mar_2012/latest/login.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/subdomain_login_patch.py
rename to erpnext/patches/jan_mar_2012/latest/login.py
diff --git a/erpnext/patches/jan_mar_2012/website.py b/erpnext/patches/jan_mar_2012/latest/website.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website.py
rename to erpnext/patches/jan_mar_2012/latest/website.py
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index d9fb451..e3e7fa9 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -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 @@
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 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)
diff --git a/version.num b/version.num
index ac471d3..2a9c18a 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-355
\ No newline at end of file
+357
\ No newline at end of file