Merge branch 'latest' of github.com:webnotes/erpnext into latest

Conflicts:
	erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
This commit is contained in:
Anand Doshi 2012-01-27 12:30:35 +05:30
commit 707cd06606
29 changed files with 581 additions and 33 deletions

View File

@ -11,7 +11,8 @@ from webnotes.utils.scheduler import set_event, cancel_event, Scheduler
in_transaction = webnotes.conn.in_transaction
convert_to_lists = webnotes.conn.convert_to_lists
session = webnotes.session
# -----------------------------------------------------------------------------------------
from utilities.transaction_base import TransactionBase

View File

@ -1,3 +0,0 @@
# version info
version='1.0.0'

View File

@ -212,7 +212,8 @@ HomeWidgetItem.prototype.delete_item = function() {
var callback = function(r,rt) {
$(me.wrapper).slideUp();
}
$c_obj('Home Control',this.widget.delete_method, this.widget.get_item_id(this.det) ,callback);
$c_obj('Home Control',this.widget.delete_method,
this.widget.get_item_id(this.det) ,callback);
}
@ -324,7 +325,7 @@ HomeToDo = function(widget) {
this.widget.get_list_method = 'get_todo_list';
this.widget.delete_method = 'remove_todo_item';
this.widget.no_items_message = 'Nothing to do?';
this.widget.get_item_id = function(det) { return det[0]; }
this.widget.get_item_id = function(det) { return det.name; }
this.widget.decorator = this;

View File

@ -1,9 +1,12 @@
# website patch
import webnotes
from webnotes.model.doc import Document
def execute():
cleanup_file_data()
add_website_manager()
return
cleanup_file_data()
update_patch_log()
from webnotes.modules import reload_doc
reload_doc('website', 'Module Def', 'Website')
@ -13,6 +16,17 @@ def execute():
reload_doc('website', 'doctype', 'top_bar_item')
reload_doc('website', 'page', 'home')
def add_website_manager():
"""add website manager to system manager"""
for i in webnotes.conn.sql("""select distinct parent from tabUserRole
where role='System Manager'"""):
if not webnotes.conn.sql("""select parent from tabUserRole
where role='Website Manager' and parent=%s""", i[0]):
d = Document('UserRole')
d.parent = i[0]
d.role = 'Website Manager'
d.save(1)
def cleanup_file_data():
webnotes.conn.commit()
webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""")

View File

@ -145,8 +145,10 @@ SidebarItem.prototype.onclick = function() {
// page type
this.pointer.select();
$item_set_working(me.pointer.label_area);
loadpage(this.det.module_page, function() { $item_done_working(me.pointer.label_area); });
$(me.pointer.label_area).set_working();
loadpage(this.det.module_page, function() {
$(me.pointer.label_area).done_working();
});
} else {
// show sub items
@ -190,7 +192,7 @@ SidebarItem.prototype.show_items = function() {
this.loading = 1;
var me = this;
$item_set_working(this.pointer.label_area);
$(this.pointer.label_area).set_working();
var callback = function(r,rt){
me.loaded = 1;
me.loading = 0;
@ -199,7 +201,7 @@ SidebarItem.prototype.show_items = function() {
var has_tools = 0;
// widget code
$item_done_working(me.pointer.label_area);
$(me.pointer.label_area).done_working();
if(r.message.il) {
me.il = r.message.il;

View File

@ -1,5 +1,5 @@
h1, h2, h3, h4 {
font-family: Tahoma, Sans Serif;
font-family: Tahoma, Arial, Verdana, sans-serif;
font-weight: bold;
}

View File

@ -5,7 +5,7 @@
{
'creation': '2012-01-23 17:05:32',
'docstatus': 0,
'modified': '2012-01-24 15:57:51',
'modified': '2012-01-27 10:14:58',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
@ -21,6 +21,7 @@
# These values are common for all Module Def Item
{
'doc_type': 'Single DocType',
'doctype': 'Module Def Item',
'name': '__common__',
'parent': 'Website',
@ -48,7 +49,6 @@
{
'display_name': 'Top Bar Settings',
'doc_name': 'Top Bar Settings',
'doc_type': 'Single DocType',
'doctype': 'Module Def Item'
},
@ -56,7 +56,20 @@
{
'display_name': 'Home Settings',
'doc_name': 'Home Settings',
'doc_type': 'Forms',
'doctype': 'Module Def Item'
},
# Module Def Item
{
'display_name': 'Contact Us Settings',
'doc_name': 'Contact Us Settings',
'doctype': 'Module Def Item'
},
# Module Def Item
{
'display_name': 'About Us Settings',
'doc_name': 'About Us Settings',
'doctype': 'Module Def Item'
},

View File

@ -8,6 +8,10 @@ header .topbar .container {
margin: auto;
}
.web-content input[type="text"], .web-content input[type="password"], .web-content select {
min-width: 180px;
}
.web-main-section {
width: 65%;
float: left;
@ -18,4 +22,7 @@ header .topbar .container {
width: 30%;
float: right;
margin-bottom: 20px;
margin-right: 15px;
color: #606060;
overflow-x: hidden;
}

View File

@ -0,0 +1,23 @@
"""
generate html
"""
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def on_update(self):
"""make home html"""
from website.utils import make_template
import os
path = os.path.join(os.path.dirname(__file__), 'template.html')
self.doc.about_team = webnotes.conn.sql("""select * from `tabAbout Us Team`
where parent='About Us Settings'""", as_dict=1)
import markdown2
for t in self.doc.about_team:
t['bio'] = markdown2.markdown(t['bio'])
webnotes.conn.set_value('Page', 'about', 'content', make_template(self.doc, path))

View File

@ -0,0 +1,106 @@
# DocType, About Us Settings
[
# These values are common in all dictionaries
{
'creation': '2012-01-27 10:13:16',
'docstatus': 0,
'modified': '2012-01-27 11:36:44',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all DocType
{
'_last_update': '1327641155',
'allow_attach': 1,
'colour': 'White:FFF',
'doctype': 'DocType',
'issingle': 1,
'max_attachments': 10,
'module': 'Website',
'name': '__common__',
'section_style': 'Simple',
'show_in_menu': 0,
'version': 4
},
# These values are common for all DocField
{
'doctype': 'DocField',
'name': '__common__',
'parent': 'About Us Settings',
'parentfield': 'fields',
'parenttype': 'DocType',
'permlevel': 0
},
# These values are common for all DocPerm
{
'create': 1,
'doctype': 'DocPerm',
'name': '__common__',
'parent': 'About Us Settings',
'parentfield': 'permissions',
'parenttype': 'DocType',
'permlevel': 0,
'read': 1,
'role': 'Website Manager',
'write': 1
},
# DocType, About Us Settings
{
'doctype': 'DocType',
'name': 'About Us Settings'
},
# DocPerm
{
'doctype': 'DocPerm'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'headline',
'fieldtype': 'Data',
'label': 'Headline'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'main_section',
'fieldtype': 'Code',
'label': 'Main Section'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'team',
'fieldtype': 'Table',
'label': 'Team',
'options': 'About Us Team'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'side_section',
'fieldtype': 'Code',
'label': 'Side Section'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'file_list',
'fieldtype': 'Text',
'hidden': 1,
'label': 'File List',
'no_copy': 1,
'print_hide': 1
}
]

View File

@ -0,0 +1,36 @@
<div class="layout_wrapper">
<div class="web-content" id="content-contact-us">
{% if doc.headline %}
<h1>{{ doc.headline }}</h1>
{% endif %}
<div class="web-main-section">
{{ doc.main_section_html }}
{% if doc.about_team %}
<h2>Team</h2>
<table style="width: 90%">
<tbody>
{% for p in doc.about_team %}
<tr>
<td style="width: 110px">
<img src="files/{{ p.image }}"
style="width: 100px; margin-right: 10px;
margin-bottom: 15px;" />
</td>
<td>
<h4>{{ p.person_name }}</h4>
<div class="comment">{{ p.designation }}</div>
<div style="margin-bottom: 15px">{{ p.bio }}</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
<div class="web-side-section">
{{ doc.side_section_html }}
</div>
<div style="clear: both"></div>
</div>
</div>

View File

@ -0,0 +1,74 @@
# DocType, About Us Team
[
# These values are common in all dictionaries
{
'creation': '2012-01-27 10:14:18',
'docstatus': 0,
'modified': '2012-01-27 11:54:18',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all DocType
{
'colour': 'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': 'Website',
'name': '__common__',
'section_style': 'Simple',
'show_in_menu': 0,
'version': 5
},
# These values are common for all DocField
{
'doctype': 'DocField',
'name': '__common__',
'parent': 'About Us Team',
'parentfield': 'fields',
'parenttype': 'DocType',
'permlevel': 0
},
# DocType, About Us Team
{
'doctype': 'DocType',
'name': 'About Us Team'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'person_name',
'fieldtype': 'Data',
'label': 'Person Name'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'designation',
'fieldtype': 'Data',
'label': 'Designation'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'image',
'fieldtype': 'Select',
'label': 'Image',
'options': 'attach_files:'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'bio',
'fieldtype': 'Text',
'label': 'Bio (markdown)',
'width': '300px'
}
]

View File

@ -0,0 +1,16 @@
"""
generate html
"""
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def on_update(self):
"""make home html"""
from website.utils import make_template
import os
path = os.path.join(os.path.dirname(__file__), 'template.html')
webnotes.conn.set_value('Page', 'contact', 'content', make_template(self.doc, path))

View File

@ -0,0 +1,100 @@
# DocType, Contact Us Settings
[
# These values are common in all dictionaries
{
'creation': '2012-01-25 16:01:33',
'docstatus': 0,
'modified': '2012-01-25 16:01:33',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all DocType
{
'colour': 'White:FFF',
'doctype': 'DocType',
'document_type': 'Other',
'issingle': 1,
'module': 'Website',
'name': '__common__',
'section_style': 'Simple',
'show_in_menu': 0,
'version': 1
},
# These values are common for all DocField
{
'colour': 'White:FFF',
'doctype': 'DocField',
'name': '__common__',
'parent': 'Contact Us Settings',
'parentfield': 'fields',
'parenttype': 'DocType',
'permlevel': 0
},
# These values are common for all DocPerm
{
'create': 1,
'doctype': 'DocPerm',
'name': '__common__',
'parent': 'Contact Us Settings',
'parentfield': 'permissions',
'parenttype': 'DocType',
'permlevel': 0,
'read': 1,
'write': 1
},
# DocType, Contact Us Settings
{
'doctype': 'DocType',
'name': 'Contact Us Settings'
},
# DocPerm
{
'doctype': 'DocPerm',
'role': 'Website Manager'
},
# DocPerm
{
'doctype': 'DocPerm',
'role': 'System Manager'
},
# DocField
{
'default': 'Contact Us',
'doctype': 'DocField',
'fieldname': 'headline',
'fieldtype': 'Data',
'label': 'Headline'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'send_email_notification',
'fieldtype': 'Check',
'label': 'Send Email Notification'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'main_section',
'fieldtype': 'Code',
'label': 'Main Section'
},
# DocField
{
'doctype': 'DocField',
'fieldname': 'side_section',
'fieldtype': 'Code',
'label': 'Side Section'
}
]

View File

@ -0,0 +1,24 @@
<div class="layout_wrapper">
<div class="web-content" id="content-contact-us">
{% if doc.headline %}
<h1>{{ doc.headline }}</h1>
{% endif %}
<div class="web-main-section">
<label>Your Name*</label>
<div><input name="contact-name" type="text"/></div>
<br>
<label>Email*</label>
<div><input name="contact-email" type="text"/></div>
<br>
<label>Message*</label>
<div><textarea name="contact-message" style="height: 200px"></textarea></div>
<br>
<div><button class="btn primary">Send</button></div>
{{ doc.main_section_html }}
</div>
<div class="web-side-section">
{{ doc.side_section_html }}
</div>
<div style="clear: both"></div>
</div>
</div>

View File

@ -1,6 +1,7 @@
"""
generate home html
generate html
"""
import webnotes
class DocType:
def __init__(self, d, dl):
@ -8,19 +9,9 @@ class DocType:
def on_update(self):
"""make home html"""
import os, jinja2, markdown2
import webnotes
from website.utils import make_template
import os
path = os.path.join(os.path.dirname(__file__), 'template.html')
# markdown
self.doc.main_section_html = markdown2.markdown(self.doc.main_section or '', \
extras=["wiki-tables"])
self.doc.side_section_html = markdown2.markdown(self.doc.side_section or '', \
extras=["wiki-tables"])
# write template
with open(os.path.join(os.path.dirname(__file__), 'template.html'), 'r') as f:
temp = jinja2.Template(f.read())
html = temp.render(doc = self.doc.fields)
webnotes.conn.set_value('Page', 'Home', 'content', html)
webnotes.conn.set_value('Page', 'home', 'content', make_template(self.doc, path))

View File

@ -1,5 +1,5 @@
<div class="layout_wrapper">
<div id="content-home">
<div class="web-content" id="content-home">
{% if doc.headline %}
<h1>{{ doc.headline }}</h1>
{% endif %}

View File

View File

@ -0,0 +1,42 @@
# Page, about
[
# These values are common in all dictionaries
{
'creation': '2012-01-27 11:37:57',
'docstatus': 0,
'modified': '2012-01-27 11:37:57',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all Page
{
'doctype': 'Page',
'module': 'Website',
'name': '__common__',
'page_name': 'about',
'standard': 'Yes'
},
# These values are common for all Page Role
{
'doctype': 'Page Role',
'name': '__common__',
'parent': 'about',
'parentfield': 'roles',
'parenttype': 'Page',
'role': 'Guest'
},
# Page, about
{
'doctype': 'Page',
'name': 'about'
},
# Page Role
{
'doctype': 'Page Role'
}
]

View File

View File

@ -0,0 +1,30 @@
pscript.onload_contact = function(wrapper) {
$('#content-contact-us .btn.primary').click(function() {
var me = this;
var args = {};
args.name = $('#content-contact-us [name="contact-name"]').val();
args.email = $('#content-contact-us [name="contact-email"]').val();
args.message = $('#content-contact-us [name="contact-message"]').val();
if(!validate_email(args.email)) {
msgprint('Please enter a valid email id');
return;
}
if(args.name && args.email && args.message) {
$(this).set_working();
$c_page('website', 'contact', 'send', args, function(r) {
$('#content-contact-us [name*="contact"]').val('');
$(me).done_working();
});
} else {
msgprint("Please enter info in all the fields.")
}
});
$('#content-contact-us :input').keyup(function(ev) {
if(ev.which == 13) {
$('#content-contact-us .btn.primary').click();
}
});
}

View File

@ -0,0 +1,15 @@
import json, webnotes
def send(args):
"""create support ticket"""
args = json.loads(args)
from webnotes.model.doc import Document
d = Document('Support Ticket')
d.raised_by = args['email']
d.description = 'From: ' + args['name'] + '\n\n' + args['message']
d.subject = 'Website Query'
d.status = 'Open'
d.owner = 'Guest'
d.save(1)
webnotes.msgprint("Thank you for your query. We will respond as soon as we can.")

View File

@ -0,0 +1,42 @@
# Page, contact
[
# These values are common in all dictionaries
{
'creation': '2012-01-25 16:02:15',
'docstatus': 0,
'modified': '2012-01-25 16:02:15',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all Page
{
'doctype': 'Page',
'module': 'Website',
'name': '__common__',
'page_name': 'contact',
'standard': 'Yes'
},
# These values are common for all Page Role
{
'doctype': 'Page Role',
'name': '__common__',
'parent': 'contact',
'parentfield': 'roles',
'parenttype': 'Page',
'role': 'Guest'
},
# Page, contact
{
'doctype': 'Page',
'name': 'contact'
},
# Page Role
{
'doctype': 'Page Role'
}
]

14
erpnext/website/utils.py Normal file
View File

@ -0,0 +1,14 @@
def make_template(doc, path, convert_fields = ['main_section', 'side_section']):
"""make template"""
import os, jinja2, markdown2
# markdown
for f in convert_fields:
doc.fields[f + '_html'] = markdown2.markdown(doc.fields[f] or '', \
extras=["wiki-tables"])
# write template
with open(path, 'r') as f:
temp = jinja2.Template(f.read())
return temp.render(doc = doc.fields)

View File

@ -3,7 +3,7 @@
<meta charset="utf-8">
<title>ERPNext</title>
<meta name="author" content="">
<script type="text/javascript">window._version_number="201";
<script type="text/javascript">window._version_number="215";
/*
* lib/js/wn/class.js

View File

@ -1 +1 @@
201
215