From 45048ac41a08aeef05bb8acba78e17140fcae147 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 27 Jan 2016 12:26:21 +0530 Subject: [PATCH] [realtime] ability to get socket working in website, now_datetime should not be timezone aware and web-form properties should take preceedence --- frappe/public/js/frappe/socketio_client.js | 8 ++++++-- frappe/sessions.py | 1 - frappe/templates/base.html | 1 + frappe/utils/data.py | 13 +++++++------ frappe/utils/jinja.py | 4 +++- frappe/website/doctype/web_form/web_form.py | 5 +++-- frappe/website/js/website.js | 1 + 7 files changed, 21 insertions(+), 12 deletions(-) diff --git a/frappe/public/js/frappe/socketio_client.js b/frappe/public/js/frappe/socketio_client.js index 4a112526c1..371fb2ea61 100644 --- a/frappe/public/js/frappe/socketio_client.js +++ b/frappe/public/js/frappe/socketio_client.js @@ -6,6 +6,10 @@ frappe.socket = { return; } + if (frappe.socket.socket) { + return; + } + //Enable secure option when using HTTPS if (window.location.protocol == "https:") { frappe.socket.socket = io.connect(frappe.socket.get_host(), {secure: true}); @@ -71,8 +75,8 @@ frappe.socket = { } }, get_host: function() { - var host = frappe.urllib.get_base_url(); - if(frappe.boot.dev_server) { + var host = window.location.origin; + if(window.dev_server) { parts = host.split(":"); if(parts.length > 2) { host = parts[0] + ":" + parts[1]; diff --git a/frappe/sessions.py b/frappe/sessions.py index 138b8efc8d..9c655e3172 100644 --- a/frappe/sessions.py +++ b/frappe/sessions.py @@ -128,7 +128,6 @@ def get(): frappe.get_attr(hook)(bootinfo=bootinfo) bootinfo["lang"] = frappe.translate.get_user_lang() - bootinfo["dev_server"] = os.environ.get('DEV_SERVER', False) bootinfo["disable_async"] = frappe.conf.disable_async return bootinfo diff --git a/frappe/templates/base.html b/frappe/templates/base.html index f949c23bc7..721b372059 100644 --- a/frappe/templates/base.html +++ b/frappe/templates/base.html @@ -42,6 +42,7 @@ frappe.page_ready_events[location.pathname].push(fn); } } + window.dev_server = {{ dev_server }}; diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 38b06301a6..ead62d3a38 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -108,7 +108,8 @@ def time_diff_in_hours(string_ed_date, string_st_date): return round(float(time_diff(string_ed_date, string_st_date).total_seconds()) / 3600, 6) def now_datetime(): - return convert_utc_to_user_timezone(datetime.datetime.utcnow()) + dt = convert_utc_to_user_timezone(datetime.datetime.utcnow()) + return dt.replace(tzinfo=None) def _get_time_zone(): time_zone = (frappe.db.get_single_value("System Settings", "time_zone") @@ -275,7 +276,7 @@ def rounded(num, precision=0): num = round(num) return (num / multiplier) if precision else num - + def remainder(numerator, denominator, precision=2): precision = cint(precision) multiplier = 10 ** precision @@ -284,13 +285,13 @@ def remainder(numerator, denominator, precision=2): _remainder = ((numerator * multiplier) % (denominator * multiplier)) / multiplier else: _remainder = numerator % denominator - + return flt(_remainder, precision); def round_based_on_smallest_currency_fraction(value, currency, precision=2): - smallest_currency_fraction_value = flt(frappe.db.get_value("Currency", + smallest_currency_fraction_value = flt(frappe.db.get_value("Currency", currency, "smallest_currency_fraction_value")) - + if smallest_currency_fraction_value: remainder_val = remainder(value, smallest_currency_fraction_value, precision) if remainder_val > (smallest_currency_fraction_value / 2): @@ -299,7 +300,7 @@ def round_based_on_smallest_currency_fraction(value, currency, precision=2): value -= remainder_val else: value = rounded(value) - + return flt(value, precision) def encode(obj, encoding="utf-8"): diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index dc86687c27..db78fb5a74 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -29,6 +29,7 @@ def render_template(template, context, is_path=None): return get_jenv().from_string(template).render(context) def get_allowed_functions_for_jenv(): + import os import frappe import frappe.utils import frappe.utils.data @@ -87,7 +88,8 @@ def get_allowed_functions_for_jenv(): "_": frappe._, "get_shade": get_shade, "scrub": scrub, - "guess_mimetype": mimetypes.guess_type + "guess_mimetype": mimetypes.guess_type, + "dev_server": os.environ.get('DEV_SERVER', False) } def get_jloader(): diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index 789ad518ab..5e32419832 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -7,7 +7,6 @@ from frappe.website.website_generator import WebsiteGenerator from frappe import _ from frappe.utils.file_manager import save_file, remove_file_by_url from frappe.website.utils import get_comment_list -from frappe.model import default_fields from frappe.custom.doctype.customize_form.customize_form import docfield_properties class WebForm(WebsiteGenerator): @@ -37,7 +36,9 @@ class WebForm(WebsiteGenerator): continue for prop in docfield_properties: - if df.fieldtype==meta_df.fieldtype and prop != "idx": + if df.fieldtype==meta_df.fieldtype and prop not in ("idx", + "reqd", "default", "description", "default", "options", + "hidden", "read_only", "label"): df.set(prop, meta_df.get(prop)) if df.fieldtype == "Link": diff --git a/frappe/website/js/website.js b/frappe/website/js/website.js index fe3da0daea..1d2d676d5d 100644 --- a/frappe/website/js/website.js +++ b/frappe/website/js/website.js @@ -3,6 +3,7 @@ frappe.provide("website"); frappe.provide("frappe.search_path"); +cur_frm = null; $.extend(frappe, { boot: {},