From 7cb48152a00b350e5af38c2a2906fc2c3f57830c Mon Sep 17 00:00:00 2001 From: Argiris Deligiannidis Date: Wed, 9 Aug 2023 21:01:34 +0000 Subject: [PATCH] Fix inline product forms POST, Add limits to default page, add all orders menu entry and GET option, fix imported modules --- .../__pycache__/settings.cpython-311.pyc | Bin 4050 -> 4050 bytes orders_app/__pycache__/forms.cpython-311.pyc | Bin 12829 -> 14514 bytes orders_app/__pycache__/models.cpython-311.pyc | Bin 10977 -> 10977 bytes orders_app/__pycache__/views.cpython-311.pyc | Bin 37554 -> 40212 bytes orders_app/forms.py | 57 +++- orders_app/models.py | 9 +- orders_app/users.txt | 3 + orders_app/views.py | 77 ++++-- static/formset/jquery.formset.js | 248 ++++++++++++++++++ templates/diaxeirisi/01_menu.html | 9 +- templates/orders/formset.html | 94 ++----- templates/orders/formset_old.html | 57 ++++ templates/orders/order_delete.html | 5 +- 13 files changed, 458 insertions(+), 101 deletions(-) create mode 100644 static/formset/jquery.formset.js create mode 100644 templates/orders/formset_old.html diff --git a/SpitiGlykou/__pycache__/settings.cpython-311.pyc b/SpitiGlykou/__pycache__/settings.cpython-311.pyc index 7cc55707b6b21ef9ac14241f0f96e291bcdecdf1..68b29cbca5eec4b4765d4654ff631b7f5cf38b90 100644 GIT binary patch delta 20 acmca4e@UKuIWI340}%XMczGlDaee?pMFzb9 delta 20 acmca4e@UKuIWI340}y;OyR?z}I6nYDh6YIh diff --git a/orders_app/__pycache__/forms.cpython-311.pyc b/orders_app/__pycache__/forms.cpython-311.pyc index 80286e72ce03c22cadb3470b687cedd38c68eed8..d82271ce7d3957a8538678f956b5d5a5a144d978 100644 GIT binary patch literal 14514 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 Rr^ic6?la268R*O?{|n=DsiXh^ delta 7560 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 0; + }, + + showAddButton = function() { + return maxForms.length == 0 || // For Django versions pre 1.2 + (maxForms.val() == '' || (maxForms.val() - totalForms.val() > 0)); + }, + + /** + * Indicates whether delete link(s) can be displayed - when total forms > min forms + */ + showDeleteLinks = function() { + return minForms.length == 0 || // For Django versions pre 1.7 + (minForms.val() == '' || (totalForms.val() - minForms.val() > 0)); + }, + + insertDeleteLink = function(row) { + var delCssSelector = $.trim(options.deleteCssClass).replace(/\s+/g, '.'), + addCssSelector = $.trim(options.addCssClass).replace(/\s+/g, '.'); + + var delButtonHTML = '' + options.deleteText +''; + if (options.deleteContainerClass) { + // If we have a specific container for the remove button, + // place it as the last child of that container: + row.find('[class*="' + options.deleteContainerClass + '"]').append(delButtonHTML); + } else if (row.is('TR')) { + // If the forms are laid out in table rows, insert + // the remove button into the last table cell: + row.children(':last').append(delButtonHTML); + } else if (row.is('UL') || row.is('OL')) { + // If they're laid out as an ordered/unordered list, + // insert an
  • after the last list item: + row.append('
  • ' + delButtonHTML + '
  • '); + } else { + // Otherwise, just insert the remove button as the + // last child element of the form's container: + row.append(delButtonHTML); + } + + // Check if we're under the minimum number of forms - not to display delete link at rendering + if (!showDeleteLinks()){ + row.find('a.' + delCssSelector).hide(); + } + + row.find('a.' + delCssSelector).click(function() { + var row = $(this).parents('.' + options.formCssClass), + del = row.find('input:hidden[id $= "-DELETE"]'), + buttonRow = row.siblings("a." + addCssSelector + ', .' + options.formCssClass + '-add'), + forms; + if (del.length) { + // We're dealing with an inline formset. + // Rather than remove this form from the DOM, we'll mark it as deleted + // and hide it, then let Django handle the deleting: + del.val('on'); + row.hide(); + forms = $('.' + options.formCssClass).not(':hidden'); + totalForms.val(forms.length); + } else { + row.remove(); + // Update the TOTAL_FORMS count: + forms = $('.' + options.formCssClass).not('.formset-custom-template'); + totalForms.val(forms.length); + } + for (var i=0, formCount=forms.length; i