diff --git a/frappe/__init__.py b/frappe/__init__.py index 4c40d0b3cf..deb2a0f9f4 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = '7.2.17' +__version__ = '7.2.18' __title__ = "Frappe Framework" local = Local() diff --git a/frappe/oauth.py b/frappe/oauth.py index 89f00c41a6..16d0a9c390 100644 --- a/frappe/oauth.py +++ b/frappe/oauth.py @@ -34,6 +34,7 @@ class WebApplicationServer(AuthorizationEndpoint, TokenEndpoint, ResourceEndpoin :param kwargs: Extra parameters to pass to authorization-, token-, resource-, and revocation-endpoint constructors. """ + implicit_grant = ImplicitGrant(request_validator) auth_grant = AuthorizationCodeGrant(request_validator) refresh_grant = RefreshTokenGrant(request_validator) openid_connect_auth = OpenIDConnectAuthCode(request_validator) @@ -48,6 +49,7 @@ class WebApplicationServer(AuthorizationEndpoint, TokenEndpoint, ResourceEndpoin 'code token': openid_connect_auth, 'code id_token': openid_connect_auth, 'code token id_token': openid_connect_auth, + 'token': implicit_grant }, default_token_type=bearer) TokenEndpoint.__init__(self, default_grant_type='authorization_code', @@ -205,7 +207,7 @@ class OAuthWebRequestValidator(RequestValidator): otoken.user = request.user otoken.scopes = get_url_delimiter().join(request.scopes) otoken.access_token = token['access_token'] - otoken.refresh_token = token['refresh_token'] + otoken.refresh_token = token.get('refresh_token') otoken.expires_in = token['expires_in'] otoken.save(ignore_permissions=True) frappe.db.commit() diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index 583e6a7827..720b47f21f 100644 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -713,17 +713,17 @@ frappe.ui.form.ControlDatetime = frappe.ui.form.ControlDate.extend({ }); frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({ - + make_input: function() { var me = this var me = this; var _super = this._super; _super.apply(me); import_daterangepicker(function() { - + me.refresh(); me.set_daterangepicker(); - + }); }, set_daterangepicker: function() { @@ -758,7 +758,7 @@ frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({ 'Last Financial Year': [moment(frappe.defaults.get_default("year_start_date"), "YYYY-MM-DD").subtract(1, 'year'), moment(frappe.defaults.get_default("year_end_date"), "YYYY-MM-DD").subtract(1, 'year')] } } - + this.$input.daterangepicker(daterangepicker_options) .on('apply.daterangepicker',function(ev,picker){ me.set_input(picker.startDate,picker.endDate) @@ -787,7 +787,7 @@ frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({ this.$input && this.$input.val("") } this.set_disp_area(); - + this.set_mandatory && this.set_mandatory(value); }, parse: function(value) { @@ -797,7 +797,7 @@ frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({ value2 = dateutil.user_to_obj(vals[vals.length-1]); return [value,value2]; } - + }, format_for_input: function(value,value2) { if(value && value2) { @@ -805,7 +805,7 @@ frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({ value2 = dateutil.str_to_user(value2); return value + " - " + value2 } - + return ""; }, validate: function(value, callback) { @@ -1423,7 +1423,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ ui.item.action.apply(me); } - // if remember_last_selected is checked in the doctype against the field, + // if remember_last_selected is checked in the doctype against the field, // then add this value // to defaults so you do not need to set it again // unless it is changed. diff --git a/frappe/public/js/frappe/form/formatters.js b/frappe/public/js/frappe/form/formatters.js index 2ab935c9a6..166fb6ae39 100644 --- a/frappe/public/js/frappe/form/formatters.js +++ b/frappe/public/js/frappe/form/formatters.js @@ -59,7 +59,7 @@ frappe.form.formatters = { if(value) { return ''; } else { - return ''; + return ''; } }, Link: function(value, docfield, options, doc) { diff --git a/frappe/utils/data.py b/frappe/utils/data.py index ca3c9e3aad..405e1cadf6 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -6,7 +6,7 @@ from __future__ import unicode_literals # IMPORTANT: only import safe functions as this module will be included in jinja environment import frappe import operator -import re, urllib, datetime, math +import re, urllib, datetime, math, time import babel.dates from babel.core import UnknownLocaleError from dateutil import parser @@ -117,6 +117,9 @@ def now_datetime(): dt = convert_utc_to_user_timezone(datetime.datetime.utcnow()) return dt.replace(tzinfo=None) +def get_timestamp(date): + return time.mktime(getdate(date).timetuple()) + def get_eta(from_time, percent_complete): diff = time_diff(now_datetime(), from_time).total_seconds() return str(datetime.timedelta(seconds=(100 - percent_complete) / percent_complete * diff))