Merge pull request #1896 from shackbarth/peg-lockdown
authorGil Moskowitz <gmoskowitz@xtuple.com>
Thu, 2 Oct 2014 14:08:11 +0000 (10:08 -0400)
committerGil Moskowitz <gmoskowitz@xtuple.com>
Thu, 2 Oct 2014 14:08:11 +0000 (10:08 -0400)
peg to patch of node

21 files changed:
enyo-client/database/source/update_version.sql
enyo-client/database/source/xt/functions/pg_advisory_unlock.sql
enyo-client/database/source/xt/functions/trylock.sql
foundation-database/public/tables/setVersion.sql
foundation-database/public/trigger_functions/pkgcmd.sql
foundation-database/public/trigger_functions/pkgcmdarg.sql
foundation-database/public/trigger_functions/pkgimage.sql
foundation-database/public/trigger_functions/pkgmetasql.sql
foundation-database/public/trigger_functions/pkgpriv.sql
foundation-database/public/trigger_functions/pkgreport.sql
foundation-database/public/trigger_functions/pkgscript.sql
foundation-database/public/trigger_functions/pkguiform.sql
lib/enyo-x/source/views/transaction_list_container.js
package.json
scripts/lib/util/convert_specialized.js
scripts/xml/distribution_install.xml
scripts/xml/distribution_package.xml
scripts/xml/postbooks_package.xml
scripts/xml/xtmfg_install.xml
scripts/xml/xtmfg_package.xml
test/specs/invoice.js

index 9d6b744..276adb2 100644 (file)
@@ -1 +1 @@
-UPDATE pkghead SET pkghead_version = '4.7.0' WHERE pkghead_name = 'xt';
+UPDATE pkghead SET pkghead_version = '4.7.0Beta2' WHERE pkghead_name = 'xt';
index 25c3b7a..c892882 100644 (file)
@@ -1,8 +1,4 @@
 create or replace function xt.pg_advisory_unlock(oid integer, id integer) returns boolean as $$
-  var sql = "select pg_catalog.pg_advisory_unlock($1, $2) as result;";
-  return plv8.execute(sql, [oid, id])[0].result;
-  /* temporary: let qt client use advisory locks but web client use xt.lock */
-
   var pid = plv8.execute("select pg_backend_pid() as pid;")[0].pid,
     username = plv8.execute("select geteffectivextuser() as username;")[0].username,
     sql = "select * from xt.lock where lock_table_oid = $1 and lock_record_id = $2 and lock_username = $3 and lock_pid = $4;",
index 719607b..0c73312 100644 (file)
@@ -1,8 +1,4 @@
 create or replace function xt.trylock(oid integer, id integer) returns boolean as $$
-  var sql = "select public.trylock($1, $2) as result;";
-  return plv8.execute(sql, [oid, id])[0].result;
-  /* temporary: let qt client use advisory locks but web client use xt.lock */
-
   var pid = plv8.execute("select pg_backend_pid() as pid;")[0].pid,
     data = Object.create(XT.Data),
     lock = data.tryLock(oid, id, {pid: pid});
index e66a56b..0d396dd 100644 (file)
@@ -1 +1 @@
-SELECT setMetric('ServerVersion', '4.7.0');
+SELECT setMetric('ServerVersion', '4.7.0Beta2');
index 3905379..be407b8 100644 (file)
@@ -45,7 +45,7 @@ CREATE OR REPLACE FUNCTION _pkgcmdalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index 8eb9cb7..09eaa61 100644 (file)
@@ -27,7 +27,7 @@ CREATE OR REPLACE FUNCTION _pkgcmdargalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index 1d51cb1..0f8ae1d 100644 (file)
@@ -43,7 +43,7 @@ CREATE OR REPLACE FUNCTION _pkgimagealterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index 10f7f07..3f9f3c3 100644 (file)
@@ -52,13 +52,8 @@ $$ LANGUAGE 'plpgsql';
 CREATE OR REPLACE FUNCTION _pkgmetasqlalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
-DECLARE
-  _isdba        BOOLEAN := false;
-
 BEGIN
-  SELECT rolsuper INTO _isdba FROM pg_roles WHERE (rolname=getEffectiveXtUser());
-
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index edb8f63..b3af003 100644 (file)
@@ -47,7 +47,7 @@ CREATE OR REPLACE FUNCTION _pkgprivalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index 94f9c4b..d32f4f0 100644 (file)
@@ -50,7 +50,7 @@ CREATE OR REPLACE FUNCTION _pkgreportalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index 954418c..40e2fb4 100644 (file)
@@ -27,7 +27,7 @@ CREATE OR REPLACE FUNCTION _pkgscriptalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index a5f1a92..dc0e307 100644 (file)
@@ -27,7 +27,7 @@ CREATE OR REPLACE FUNCTION _pkguiformalterTrigger() RETURNS TRIGGER AS $$
 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
 -- See www.xtuple.com/CPAL for the full text of the software license.
 BEGIN
-  IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN
+  IF (pkgMayBeModified(TG_TABLE_SCHEMA) OR isDba()) THEN
     IF (TG_OP = 'DELETE') THEN
       RETURN OLD;
     ELSE
index 2116df4..7e3518e 100644 (file)
@@ -227,7 +227,8 @@ trailing:true, white:true, strict:false*/
     */
     setList: function (options) {
       var component,
-      list = options.list;
+        contentHeader = this.$.contentHeader,
+        list = options.list;
 
       component = this.createComponent({
         name: "list",
@@ -248,6 +249,12 @@ trailing:true, white:true, strict:false*/
           memoizeEnabled: false,
           fit: true
         });
+
+        contentHeader.destroyClientControls();
+        if (component.headerComponents) {
+          contentHeader.createComponents(component.headerComponents);
+          contentHeader.render();
+        }
       }
 
       this.init = true;
index 3f804e7..f1e9fa4 100644 (file)
@@ -2,7 +2,7 @@
   "author": "xTuple <dev@xtuple.com>",
   "name": "xtuple",
   "description": "xTuple Enterprise Resource Planning Mobile-Web client",
-  "version": "4.7.0",
+  "version": "4.7.0-beta2",
   "repository": {
     "type": "git",
     "url": "https://github.com/xtuple/xtuple.git"
index 95b8d52..af3f4eb 100644 (file)
@@ -50,10 +50,7 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
       grade = "0",
       tableName = defaultSchema ? defaultSchema + ".pkgreport" : "report",
       description,
-      disableSql,
-      updateSql,
-      insertSql,
-      enableSql;
+      upsertSql;
 
     if (lines[3].indexOf(" <name>") !== 0 ||
         lines[4].indexOf(" <description>") !== 0) {
@@ -68,40 +65,41 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
       grade = grade.substring(0, grade.indexOf("<"));
     }
 
-    disableSql = "ALTER TABLE " + tableName + " DISABLE TRIGGER ALL;";
-
-    insertSql = "insert into " + tableName + " (report_name, report_descrip, " +
-      "report_source, report_loaddate, report_grade) select " +
-      "'" + name + "'," +
-      "$$" + description + "$$," +
-      "$$" + content + "$$," +
-      "now(), " + grade +
-      " where not exists (select c.report_id from " + tableName + " c " +
-      "where report_name = '" + name +
-      "' and report_grade = " + grade + ");";
-
-    updateSql = "update " + tableName + " set " +
-      " report_descrip = $$" + description +
-      "$$, report_source = $$" + content +
-      "$$, report_loaddate = now() " +
-      "where report_name = '" + name +
-      "' and report_grade = " + grade + ";";
-
-    enableSql = "ALTER TABLE " + tableName + " ENABLE TRIGGER ALL;";
-
-    return disableSql + insertSql + updateSql + enableSql;
+    upsertSql = "do language plpgsql $do$" +
+                "declare _grade integer := null;" +
+                " begin" +
+                "  select min(report_grade) into _grade" +
+                "    from " + tableName +
+                "   where report_name = '" + name + "';" +
+                "  if _grade is null then" +
+                "    insert into " + tableName + " (report_name, report_descrip," +
+                "        report_source, report_loaddate, report_grade)" +
+                "      select '" + name + "', $$" + description + "$$," +
+                "        $$" + content + "$$, now(), min(sequence_value)" +
+                "        from sequence" +
+                "       where sequence_value >= " + grade + "" +
+                "         and sequence_value not in (" +
+                "        select report_grade from report" +
+                "         where report_name = '" + name + "'" +
+                "       );" +
+                "  else " +
+                "    update " + tableName + " set" +
+                "      report_descrip = $$" + description + "$$," +
+                "      report_source = $$" + content + "$$," +
+                "      report_loaddate = now() " +
+                "     where report_name = '" + name + "'" +
+                "      and report_grade = _grade;" +
+                "  end if;" +
+                " end $do$;";
+    return upsertSql;
   };
 
   var convertFromScript = function (content, filename, defaultSchema) {
     var name = path.basename(filename, '.js'),
       tableName = defaultSchema ? defaultSchema + ".pkgscript" : "unknown",
       notes = "", //"xtMfg package",
-      disableSql,
       insertSql,
-      updateSql,
-      enableSql;
-
-    disableSql = "ALTER TABLE " + tableName + " DISABLE TRIGGER ALL;";
+      updateSql;
 
     insertSql = "insert into " + tableName + " (script_name, script_order, script_enabled, " +
       "script_source, script_notes) select " +
@@ -117,21 +115,15 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
       "$$, script_notes = '" + notes + "' " +
       "where script_name = '" + name + "';";
 
-    enableSql = "ALTER TABLE " + tableName + " ENABLE TRIGGER ALL;";
-
-    return disableSql + insertSql + updateSql + enableSql;
+    return insertSql + updateSql;
   };
 
   var convertFromUiform = function (content, filename, defaultSchema) {
     var name = path.basename(filename, '.ui'),
       tableName = defaultSchema ? defaultSchema + ".pkguiform" : "unknown",
       notes = "", //"xtMfg package",
-      disableSql,
       insertSql,
-      updateSql,
-      enableSql;
-
-    disableSql = "ALTER TABLE " + tableName + " DISABLE TRIGGER ALL;";
+      updateSql;
 
     insertSql = "insert into " + tableName + " (uiform_name, uiform_order, uiform_enabled, " +
       "uiform_source, uiform_notes) select " +
@@ -146,9 +138,7 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
       "uiform_source = $$" + content + "$$, uiform_notes = '" + notes + "' " +
       "where uiform_name = '" + name + "';";
 
-    enableSql = "ALTER TABLE " + tableName + " ENABLE TRIGGER ALL;";
-
-    return disableSql + insertSql + updateSql + enableSql;
+    return insertSql + updateSql;
   };
 
   exports.conversionMap = {
index 0d32d93..01cf349 100644 (file)
@@ -1,5 +1,5 @@
-<package id        = "distribution-install-470"
-         version   = "4.7.0"
+<package id        = "distribution-install-470beta2"
+         version   = "4.7.0Beta2"
          developer = "xTuple"
          descrip   = "load PostBooks resources"
          updater   = "2.2.4" >
@@ -19,8 +19,8 @@
 
   <prerequisite type = "query"
                 name = "Checking for too-new xTuple ERP database version" >
-    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.8.0';</query>
-    <message>This package may not be applied to a database newer than 4.7.0.
+    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.7.0Beta2' AND fetchMetricText('ServerVersion') != '4.7.0';</query>
+    <message>This package may not be applied to a database newer than 4.7.0Beta.
     </message>
   </prerequisite>
 
index 0518ab7..44532c6 100644 (file)
@@ -1,5 +1,5 @@
-<package id        = "distribution-upgrade-470"
-         version   = "4.7.0"
+<package id        = "distribution-upgrade-470beta2"
+         version   = "4.7.0Beta2"
          developer = "xTuple"
          descrip   = "load PostBooks resources"
          updater   = "2.2.4" >
@@ -19,8 +19,8 @@
 
   <prerequisite type = "query"
                 name = "Checking for too-new xTuple ERP database version" >
-    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.8.0';</query>
-    <message>This package may not be applied to a database newer than 4.7.0.
+    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.7.0Beta2' AND fetchMetricText('ServerVersion') != '4.7.0';</query>
+    <message>This package may not be applied to a database newer than 4.7.0Beta.
     </message>
   </prerequisite>
 
index 464f2b8..7a8c3e2 100644 (file)
@@ -1,5 +1,5 @@
-<package id        = "postbooks-upgrade-470"
-         version   = "4.7.0"
+<package id        = "postbooks-upgrade-470beta2"
+         version   = "4.7.0Beta2"
          developer = "xTuple"
          descrip   = "load PostBooks resources"
          updater   = "2.2.4" >
@@ -19,8 +19,8 @@
 
   <prerequisite type = "query"
                 name = "Checking for too-new xTuple ERP database version" >
-    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.8.0';</query>
-    <message>This package may not be applied to a database newer than 4.7.0.
+    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.7.0Beta2' AND fetchMetricText('ServerVersion') != '4.7.0';</query>
+    <message>This package may not be applied to a database newer than 4.7.0Beta.
     </message>
   </prerequisite>
 
index 3d34014..671a4fb 100644 (file)
@@ -1,5 +1,5 @@
-<package id        = "manufacturing-install-470"
-         version   = "4.7.0"
+<package id        = "manufacturing-install-470beta2"
+         version   = "4.7.0Beta2"
          developer = "xTuple"
          descrip   = "load PostBooks resources"
          updater   = "2.2.4" >
@@ -19,8 +19,8 @@
 
   <prerequisite type = "query"
                 name = "Checking for too-new xTuple ERP database version" >
-    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.8.0';</query>
-    <message>This package may not be applied to a database newer than 4.7.0.
+    <query>SELECT NOT fetchMetricText('ServerVersion') >= '4.7.0Beta2' AND fetchMetricText('ServerVersion') != '4.7.0';</query>
+    <message>This package may not be applied to a database newer than 4.7.0Beta.
     </message>
   </prerequisite>
 
index ef6ce2c..264a45a 100644 (file)
@@ -1,5 +1,5 @@
-<package id        = "manufacturing-upgrade-470"
-         version   = "4.7.0"
+<package id        = "manufacturing-upgrade-470beta2"
+         version   = "4.7.0Beta2"
          developer = "xTuple"
          descrip   = "load PostBooks resources"
          updater   = "2.2.4" >
@@ -30,8 +30,8 @@
 
 <prerequisite type = "query"
                name = "Checking for too-new xTuple ERP database version" >
-<query>SELECT NOT fetchMetricText('ServerVersion') >= '4.8.0';</query>
-    <message>This package may not be applied to a database newer than 4.7.0.
+<query>SELECT NOT fetchMetricText('ServerVersion') >= '4.7.0Beta2' AND fetchMetricText('ServerVersion') != '4.7.0';</query>
+    <message>This package may not be applied to a database newer than 4.7.0Beta2.
     </message>
 </prerequisite>
 
index 0a43b8e..6169c36 100644 (file)
@@ -864,7 +864,7 @@ TODO deferred to later sprint:
         @description When currency or invoice date is changed outstanding credit should be
           recalculated.
       */
-      it.("When currency or invoice date is changed outstanding credit should be recalculated",
+      it.skip("When currency or invoice date is changed outstanding credit should be recalculated",
           function (done) {
 
         this.timeout(9000);