diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..5ace4600a1 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/publish-assets-releases.yml b/.github/workflows/publish-assets-releases.yml index 2582632fa0..faf41ed23e 100644 --- a/.github/workflows/publish-assets-releases.yml +++ b/.github/workflows/publish-assets-releases.yml @@ -36,7 +36,7 @@ jobs: - name: Get release id: get_release - uses: bruceadams/get-release@v1.2.0 + uses: bruceadams/get-release@v1.2.3 - name: Upload built Assets to Release uses: actions/upload-release-asset@v1.0.2 diff --git a/cypress/integration/control_date_range.js b/cypress/integration/control_date_range.js new file mode 100644 index 0000000000..6f26b35f84 --- /dev/null +++ b/cypress/integration/control_date_range.js @@ -0,0 +1,42 @@ +context('Date Range Control', () => { + before(() => { + cy.login(); + cy.visit('/app'); + }); + + function get_dialog() { + return cy.dialog({ + title: 'Date Range', + fields: [{ + "label": "Date Range", + "fieldname": "date_range", + "fieldtype": "Date Range", + }] + }); + } + + it('Selecting a date range from the datepicker', () => { + cy.clear_dialogs(); + cy.clear_datepickers(); + + get_dialog().as('dialog'); + cy.get_field('date_range', 'Date Range').click(); + cy.get('.datepicker--nav-title').click(); + cy.get('.datepicker--nav-title').click({force: true}); + + //Inputing date range values in the date range field + cy.get('.datepicker--years > .datepicker--cells > .datepicker--cell[data-year=2020]').click(); + cy.get('.datepicker--months > .datepicker--cells > .datepicker--cell[data-month=0]').click(); + cy.get('.datepicker--cell[data-date=1]:first').click({force: true}); + cy.get('.datepicker--cell[data-date=15]:first').click({force: true}); + + // Verify if the selected date range values is set in the date range field + cy.window() + .its('cur_dialog') + .then(dialog => { + let date_range = dialog.get_value("date_range"); + expect(date_range[0]).to.equal('2020-01-01'); + expect(date_range[1]).to.equal('2020-01-15'); + }); + }); +}); \ No newline at end of file diff --git a/frappe/core/page/permission_manager/permission_manager.js b/frappe/core/page/permission_manager/permission_manager.js index cb218b2eae..8a06a9aac5 100644 --- a/frappe/core/page/permission_manager/permission_manager.js +++ b/frappe/core/page/permission_manager/permission_manager.js @@ -284,7 +284,7 @@ frappe.PermissionEngine = class PermissionEngine { } setup_if_owner(d, role_cell) { - this.add_check(role_cell, d, "if_owner", "Only If Creator") + this.add_check(role_cell, d, "if_owner", "Only if Creator") .removeClass("col-md-4") .css({ "margin-top": "15px" }); } diff --git a/frappe/patches/v14_0/update_integration_request.py b/frappe/patches/v14_0/update_integration_request.py index 7d491461e3..d067411166 100644 --- a/frappe/patches/v14_0/update_integration_request.py +++ b/frappe/patches/v14_0/update_integration_request.py @@ -3,6 +3,10 @@ import frappe def execute(): doctype = "Integration Request" + + if not frappe.db.has_column(doctype, "integration_type"): + return + frappe.db.set_value( doctype, {"integration_type": "Remote", "integration_request_service": ("!=", "PayPal")}, diff --git a/frappe/public/js/frappe/form/controls/date_range.js b/frappe/public/js/frappe/form/controls/date_range.js index 02cac1cf28..a1e796604f 100644 --- a/frappe/public/js/frappe/form/controls/date_range.js +++ b/frappe/public/js/frappe/form/controls/date_range.js @@ -41,7 +41,8 @@ frappe.ui.form.ControlDateRange = class ControlDateRange extends frappe.ui.form. this.set_mandatory && this.set_mandatory(value); } parse(value) { - if (!value || (value && !value.includes('to'))) return value; + if (value == undefined || typeof value == 'object') return value; + // replace the separator (which can be in user language) with comma const to = __('{0} to {1}').replace('{0}', '').replace('{1}', ''); value = value && value.replace(to, ',');