diff --git a/CHANGES.rst b/CHANGES.rst index f5c36056..2a30fa8b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,13 @@ Changelog - Use Decimal for shipping and article defaults. [agitator] +- Fix availability details pop-up + [petri] + +- Refactor buyable.[py|pt] for localized number output and better Decimal usage. + Also use Python expressions for performance. + [jensens] + - Use Decimal field for net price and cast to Decimal (for old values) in accessor. [jensens] @@ -52,6 +59,12 @@ Changelog - Update version and classifiers - 2.x targets Plone 5.1/5.2 without Archetypes [agitator] +- Italian translations + [ale-rt] + +- migration: fixed an edgecase when upgrading old shop installations + [petschki] + 1.0a1 (unreleased) ------------------ diff --git a/src/bda/plone/shop/browser/availability.py b/src/bda/plone/shop/browser/availability.py index 12ed0991..f72d701a 100644 --- a/src/bda/plone/shop/browser/availability.py +++ b/src/bda/plone/shop/browser/availability.py @@ -14,6 +14,7 @@ class CartItemAvailability(CartItemAvailabilityBase): details_template = ViewPageTemplateFile("availability_details.pt") + @property def details(self): return self.details_template(self) diff --git a/src/bda/plone/shop/browser/buyable.pt b/src/bda/plone/shop/browser/buyable.pt index d27d634f..8ae0db3e 100644 --- a/src/bda/plone/shop/browser/buyable.pt +++ b/src/bda/plone/shop/browser/buyable.pt @@ -5,7 +5,7 @@ ajax:bind="cart_changed" tal:define="addable view/item_addable; css string:cart_item_${context/UID}" - tal:attributes="ajax:target context/absolute_url; + tal:attributes="ajax:target python:context.absolute_url(); ajax:action string:buyable_controls:.${css}:replace; class string:buyable viewlet ${css}"> @@ -18,7 +18,7 @@  
+ tal:content="structure python:view.availability_details"> deliverable until 1.1.2013
@@ -105,9 +105,8 @@ + class="cart_item_uid" + style="display: none;">${view/item_uid}
diff --git a/src/bda/plone/shop/browser/buyable.py b/src/bda/plone/shop/browser/buyable.py index bbd91ef4..42e027df 100644 --- a/src/bda/plone/shop/browser/buyable.py +++ b/src/bda/plone/shop/browser/buyable.py @@ -74,16 +74,20 @@ def currency(self): return CURRENCY_LITERALS[currency] return "" + def format_number_localized(self, value, quantizer=None): + formatter = self.request.locale.numbers.getFormatter('decimal') + formatter.type = Decimal + if quantizer is not None: + value = value.quantize(Decimal(quantizer)) + return formatter.format(value) + @property def item_uid(self): return IUUID(self.context) @property def item_vat(self): - vat = self._item_data.vat - if vat % 2 != 0: - return Decimal(vat).quantize(Decimal("1.0")) - return Decimal(vat) + return Decimal(self._item_data.vat) @property def item_net_original(self): diff --git a/src/bda/plone/shop/i18n.sh b/src/bda/plone/shop/i18n.sh index efb23b2f..f1f3cb9e 100755 --- a/src/bda/plone/shop/i18n.sh +++ b/src/bda/plone/shop/i18n.sh @@ -26,8 +26,7 @@ done # Assume i18ndude is installed with buildout # and this script is run under src/ folder with two nested namespaces in the package name (like collective.bla) -#I18NDUDE=../../../../bin/i18ndude -I18NDUDE=../../../../../../bin/i18ndude +I18NDUDE=$(which i18ndude || ../../../../../../bin/i18ndude) if test ! -e $I18NDUDE; then echo "You must install i18ndude with buildout" diff --git a/src/bda/plone/shop/locales/it/LC_MESSAGES/bda.plone.shop.po b/src/bda/plone/shop/locales/it/LC_MESSAGES/bda.plone.shop.po index 0c791294..e4f3fc6b 100644 --- a/src/bda/plone/shop/locales/it/LC_MESSAGES/bda.plone.shop.po +++ b/src/bda/plone/shop/locales/it/LC_MESSAGES/bda.plone.shop.po @@ -22,16 +22,16 @@ msgstr "" #: ./profiles/default/actions.xml msgid "Activate Buyable on Item" -msgstr "Activate Buyable on Item" +msgstr "Rendi l'articolo acquistabile" #: ./profiles/default/actions.xml msgid "Activate vendor area on this context" -msgstr "" +msgstr "Attiva l'area del venditore in questa sezione" #. Default: "Article" #: ./interfaces.py:175 msgid "Article" -msgstr "" +msgstr "Articolo" #. Default: "Canadian Dollar" #: ./vocabularies.py:106 @@ -46,7 +46,7 @@ msgstr "" #. Default: "Cart" #: ./interfaces.py:109 msgid "Cart" -msgstr "" +msgstr "Carrello" #. Default: "Danish Krone" #: ./vocabularies.py:112 @@ -59,11 +59,11 @@ msgstr "Disattiva le informazioni sull'articolo relative all'oggetto" #: ./profiles/default/actions.xml msgid "Deactivates vendor area on this context" -msgstr "" +msgstr "Disattiva l'area del venditore in questa sezione" #: ./profiles/default/actions.xml msgid "Disable Vendor Area" -msgstr "" +msgstr "Disattiva l'area del venditore" #: ./profiles/default/actions.xml msgid "Disables Buyable" @@ -76,11 +76,11 @@ msgstr "" #: ./profiles/default/actions.xml msgid "Enable Buyable" -msgstr "Ensattiva le informazioni sull'articolo relative all'oggetto" +msgstr "Attiva le informazioni sull'articolo relative all'oggetto" #: ./profiles/default/actions.xml msgid "Enable Vendor Area" -msgstr "" +msgstr "Abilita l'area del venditore" #. Default: "British Pound Sterling" #: ./vocabularies.py:108 @@ -95,7 +95,7 @@ msgstr "" #. Default: "Invoice" #: ./interfaces.py:488 msgid "Invoice" -msgstr "" +msgstr "Fattura" #. Default: "Norwegian Krone" #: ./vocabularies.py:110 @@ -110,20 +110,20 @@ msgstr "" #. Default: "Notifications" #: ./interfaces.py:418 msgid "Notifications" -msgstr "" +msgstr "Notifiche" #. Default: "Payment" #: ./interfaces.py:626 msgid "Payment" -msgstr "" +msgstr "Pagamento" #: ./profiles/default/actions.xml msgid "Personal Information" -msgstr "" +msgstr "Informazioni personali" #: ./profiles/default/actions.xml msgid "Personal Preferences" -msgstr "" +msgstr "Preferenze personali" #. Default: "Swedish Krona" #: ./vocabularies.py:111 @@ -133,16 +133,16 @@ msgstr "" #. Default: "Shipping" #: ./interfaces.py:269 msgid "Shipping" -msgstr "" +msgstr "Consegna" #: ./browser/controlpanel.py:49 #: ./profiles/default/controlpanel.xml msgid "Shop settings" -msgstr "" +msgstr "Impostazioni del negozio" #: ./interfaces.py:380 msgid "Tax Settings" -msgstr "" +msgstr "Impostazioni delle tasse" #. Default: "US Dollar" #: ./vocabularies.py:104 @@ -190,32 +190,32 @@ msgstr "" #: ./browser/buyable.pt:116 #: ./browser/buyable_mini.pt:89 msgid "add_to_cart" -msgstr "Aggiungi" +msgstr "Aggiungi al carrello" #. Default: "Administration" #: ./browser/navigation.py:695 msgid "administration" -msgstr "" +msgstr "Amministrazione" #. Default: "No longer available, please remove from cart" #: ./cartdata.py:295 msgid "alert_item_no_longer_available" -msgstr "" +msgstr "Articolo non più disponibile. Per favore rimuovilo dal carrello" #. Default: "Limit exceed by ${exceed} ${quantity_unit}" #: ./cartdata.py:307 msgid "alert_item_number_exceed" -msgstr "" +msgstr "Limite superato di ${exceed} ${quantity_unit}" #. Default: "${reserved} ${quantity_unit} reserved" #: ./cartdata.py:315 msgid "alert_item_number_reserved" -msgstr "" +msgstr "${reserved} ${quantity_unit} prenotati" #. Default: "Partly reserved" #: ./cartdata.py:303 msgid "alert_item_some_reserved" -msgstr "" +msgstr "Parzialmente prenotato" #. Default: "Availability" #: ./browser/buyable.pt:15 @@ -229,42 +229,42 @@ msgstr "" #. Default: "Bookings" #: ./browser/navigation.py:345 msgid "bookings" -msgstr "" +msgstr "Prenotazioni" #. Default: "Bookings (global)" #: ./browser/navigation.py:370 msgid "bookings_global" -msgstr "" +msgstr "Prenotazioni (globale)" #. Default: "Bookings in Container" #: ./browser/navigation.py:418 msgid "bookings_in_container" -msgstr "" +msgstr "Prenotazioni in questo contenitore" #. Default: "Bookings in Context" #: ./browser/navigation.py:386 msgid "bookings_in_context" -msgstr "" +msgstr "Prenotazioni in questa sezione" #. Default: "Bookings (site-wide)" #: ./browser/navigation.py:372 msgid "bookings_site" -msgstr "" +msgstr "Prenotazioni (tutto il sito)" #. Default: "Bookings (vendor specific)" #: ./browser/navigation.py:374 msgid "bookings_vendor" -msgstr "" +msgstr "Prenotazioni (per venditore)" #. Default: "Buyable item with UID {uuid} does not exist." #: ./cartdata.py:195 msgid "buyable_does_not_exist" -msgstr "" +msgstr "L'articolo con UID {uuid} non esiste" #. Default: "Cart Discount" #: ./browser/navigation.py:623 msgid "cart_discount" -msgstr "" +msgstr "Sconto carrello" #. Default: "Cash and Carry" #: ./shipping.py:234 @@ -274,48 +274,48 @@ msgstr "" #. Default: "Customer picks up goods at dealer's place" #: ./shipping.py:238 msgid "cash_and_carry_descripton" -msgstr "" +msgstr "Il cliente ritira il bene presso il venditore" #. Default: "Centimeter" #: ./vocabularies.py:20 msgid "centimeter" -msgstr "" +msgstr "Centimetri" #. Default: "Comment" #: ./browser/buyable.pt:95 #: ./browser/buyable_mini.pt:68 msgid "comment" -msgstr "commento" +msgstr "Commento" #. Default: "Contacts" #: ./browser/navigation.py:444 msgid "contacts" -msgstr "" +msgstr "Contatti" #. Default: "Just ${available} items(s) left." #: ./browser/availability.py:114 msgid "critical_available_message" -msgstr "" +msgstr "Solo ${available} articolo/i rimasti." #. Default: "Low items available" #: ./browser/availability_details.pt:26 msgid "critical_available_title" -msgstr "" +msgstr "Disponibilità limitata di articoli" #. Default: "Default Shipping" #: ./shipping.py:39 msgid "default_shipping" -msgstr "" +msgstr "Consegna predefinita" #. Default: "Delivery Address" #: ./user/userdata.py:40 msgid "delivery_address" -msgstr "" +msgstr "Indirizzo di consegna" #. Default: "Delivery" #: ./browser/availability_details.pt:46 msgid "delivery_duration_title" -msgstr "" +msgstr "Consegna" #. Default: "Disabled Buyable." #: ./browser/actions.py:49 @@ -325,12 +325,12 @@ msgstr "Disattiva le informazioni sull'articolo" #. Default: "Disabled Vendor." #: ./browser/actions.py:56 msgid "disabled_vendor" -msgstr "" +msgstr "Disabilita venditore" #. Default: "Discount" #: ./browser/navigation.py:612 msgid "discount" -msgstr "" +msgstr "Sconto" #. Default: "Enabled Buyable." #: ./browser/actions.py:48 @@ -340,7 +340,7 @@ msgstr "Disattiva le informazioni sull'articolo" #. Default: "Enabled Vendor." #: ./browser/actions.py:55 msgid "enabled_vendor" -msgstr "" +msgstr "Abilita venditore" #: ./browser/buyable.pt:68 msgid "excl." @@ -349,7 +349,7 @@ msgstr "" #. Default: "Export" #: ./browser/navigation.py:479 msgid "export" -msgstr "" +msgstr "Esporta" #. Default: "Export Orders" #: ./browser/navigation.py:490 @@ -359,97 +359,102 @@ msgstr "Esporta gli ordini" #. Default: "Export Orders in Container" #: ./browser/navigation.py:542 msgid "exportorders_in_container" -msgstr "" +msgstr "Esporta gli ordini in questa sezione" #. Default: "Export Orders on this Item" #: ./browser/navigation.py:510 msgid "exportorders_item" -msgstr "" +msgstr "Esporta gli ordini di questo articolo" #. Default: "Flat Rate" #: ./shipping.py:260 msgid "flat_rate" -msgstr "" +msgstr "Tasso fisso" #. Default: "Free Shipping" #: ./shipping.py:59 msgid "free_shipping" -msgstr "" +msgstr "Consegna gratuita" #. Default: "Minimum ${flat} ${currency} or ${item} ${currency} per item in cart. Free shipping if gross purchase price above ${limit} ${currency}" #: ./shipping.py:101 msgid "free_shipping_limit_flat_and_item_gross" -msgstr "" +msgstr "Minimo ${flat} ${currency} o ${item} ${currency} per articolo nel carrello. Consegna gratuita se il prezzo totale lordo supera ${limit} ${currency}" #. Default: "Minimum ${flat} ${currency} or ${item} ${currency} per item in cart. Free shipping if net purchase price above ${limit} ${currency}" #: ./shipping.py:110 msgid "free_shipping_limit_flat_and_item_net" -msgstr "" +msgstr "Minimo ${flat} ${currency} o ${item} ${currency} per articolo nel carrello. Consegna gratuita se il prezzo totale netto supera ${limit} ${currency}" #. Default: "Flat ${flat} ${currency}. Free shipping if gross purchase price above ${limit} ${currency}" #: ./shipping.py:130 msgid "free_shipping_limit_flat_only_gross" -msgstr "" +msgstr "Prezzo fisso ${flat} ${currency}. Consegna gratuita se il prezzo totale lordo supera ${limit} ${currency}" #. Default: "Flat ${flat} ${currency}. Free shipping if net purchase price above ${limit} ${currency}" #: ./shipping.py:138 msgid "free_shipping_limit_flat_only_net" -msgstr "" +msgstr "Prezzo fisso ${flat} ${currency}. Consegna gratuita se il prezzo totale netto supera ${limit} ${currency}" #. Default: "${item} ${currency} per item in cart. Free shipping if gross purchase price above ${limit} ${currency}" #: ./shipping.py:156 msgid "free_shipping_limit_item_only_gross" -msgstr "" +msgstr "${item} ${currency} per articolo nel carrello. Consegna gratuita se il prezzo totale lordo supera ${limit} ${currency}" #. Default: "${item} ${currency} per item in cart. Free shipping if net purchase price above ${limit} ${currency}" #: ./shipping.py:164 msgid "free_shipping_limit_item_only_net" -msgstr "" +msgstr "${item} ${currency} per articolo nel carrello. Consegna gratuita se il prezzo totale netto supera ${limit} ${currency}" #. Default: "${available} items(s) available." #: ./browser/availability.py:102 msgid "full_available_message" -msgstr "" +msgstr "${available} articolo/i disponibile/i." #. Default: "Item available" #: ./browser/availability_details.pt:17 msgid "full_available_title" -msgstr "" +msgstr "Articolo disponibile" #. Default: "Gram" #: ./vocabularies.py:22 msgid "gram" -msgstr "" +msgstr "Grammo" + +#. Default: "Gross" +#: ./browser/buyable.pt:59 +msgid "gross" +msgstr "Lordo" #. Default: "Tick this box to indicate that you have found, read and accepted the terms of use for this site." #: ./user/userdata.py:172 msgid "help_accept" -msgstr "" +msgstr "Seleziona per indicare che hai trovato, letto e accettato le condizioni d'uso per questo sito." #. Default: "No typos please...." #: ./interfaces.py:59 msgid "help_admin_email" -msgstr "" +msgstr "Per favore non commettere errori!" #. Default: "Name used for Shop E-Mails." #: ./interfaces.py:67 msgid "help_admin_name" -msgstr "" +msgstr "Nome da utilizzare per le e-mail del negozio" #. Default: "Delivery address is different from billing address." #: ./user/userdata.py:117 msgid "help_alternative_delivery" -msgstr "" +msgstr "L'indirizzo di consegna è diverso dall'indirizzo di fatturazione" #. Default: "Available payment methods in checkout" #: ./interfaces.py:640 msgid "help_available_payment_methods" -msgstr "" +msgstr "Metodi di pagamento disponibili" #. Default: "Available shipping methods in checkout" #: ./interfaces.py:298 msgid "help_available_shipping_methods" -msgstr "" +msgstr "Metodi di consegna disponibili" #: ./user/userdata.py:103 msgid "help_city" @@ -466,47 +471,47 @@ msgstr "" #. Default: "Choose the default currency" #: ./interfaces.py:91 msgid "help_currency" -msgstr "" +msgstr "Cambia la valuta predefinita" #. Default: "Shop administrator will be notified if stock is less than the specified threshold." #: ./interfaces.py:253 msgid "help_default_item_stock_warning_threshold" -msgstr "" +msgstr "L'amministratore del magazzino riceverà una notifica se la giacenza è inferiora alla soglia specificata" #. Default: "default measurement" #: ./interfaces.py:208 msgid "help_default_quantity_unit" -msgstr "" +msgstr "Unità di misura predefinita" #. Default: "Flag whether item is shippable by default, i.e. downloads are not" #: ./interfaces.py:287 msgid "help_default_shipping_item_shippable" -msgstr "" +msgstr "Seleziona se l'articolo è inviabile, per esempio un abbonamento non lo è" #. Default: "Specify default vat name" #: ./interfaces.py:395 msgid "help_default_vat" -msgstr "" +msgstr "Specifica il nome predefinito della tassa sul valore aggiunto" #. Default: "No total number of items in cart limit" #: ./interfaces.py:140 msgid "help_disable_max_article" -msgstr "" +msgstr "Nessun limite al numero di articoli nel carrello" #. Default: "Fill in your given name." #: ./user/userdata.py:64 msgid "help_firstname" -msgstr "" +msgstr "Inserisci il tuo nome" #. Default: "Net flat shipping cost" #: ./interfaces.py:356 msgid "help_flat_shipping_cost" -msgstr "" +msgstr "Prezzo netto di consegna" #. Default: "Do not add shipping costs to orders with price bigger than limit. If limit applies to gross or net purchase price depends on 'Calculate shipping limit from gross' setting" #: ./interfaces.py:330 msgid "help_free_shipping_limit" -msgstr "" +msgstr "Non aggiungere un costo di consegna per prezzi superiori a questo limite. Il limite si applica al totale lordo o netto in funzione della scelta fatta in 'Calcola la soglia per le spese di consegna gratuite dal prezzo lordo'" #: ./user/userdata.py:57 msgid "help_gender" @@ -515,107 +520,107 @@ msgstr "" #. Default: "Global Trade Item Number" #: ./dx.py:510 msgid "help_gtin" -msgstr "" +msgstr "Global Trade Item Number" #. Default: "Hide cart if no items contained" #: ./interfaces.py:122 msgid "help_hide_cart_if_empty" -msgstr "" +msgstr "Nascondi il carrelo se non contiene nessun articolo" #. Default: "Invoice sender banking account BIC" #: ./interfaces.py:596 msgid "help_invoice_bic" -msgstr "" +msgstr "BIC del conto bancario di chi invia la fattura" #. Default: "City of invoice sender" #: ./interfaces.py:551 msgid "help_invoice_city" -msgstr "" +msgstr "Città di chi invia la fattura" #. Default: "Company name of invoice sender." #: ./interfaces.py:508 msgid "help_invoice_company" -msgstr "" +msgstr "Azienda di chi invia la fattura" #. Default: "Optional additional line displayed under company name" #: ./interfaces.py:516 msgid "help_invoice_companyadd" -msgstr "" +msgstr "Testo addizionale mostrato sotto il nome della compagnia" #. Default: "Country of invoice sender" #: ./interfaces.py:557 msgid "help_invoice_country" -msgstr "" +msgstr "Paese di chi invia la fattura" #. Default: "Optional email address of invoice sender" #: ./interfaces.py:572 msgid "help_invoice_email" -msgstr "" +msgstr "Indirizzo e-mail di chi invia la fattura" #. Default: "Given name of invoice sender" #: ./interfaces.py:525 msgid "help_invoice_firstname" -msgstr "" +msgstr "Nome di chi invia la fattura" #. Default: "Invoice sender banking account IBAN" #: ./interfaces.py:588 msgid "help_invoice_iban" -msgstr "" +msgstr "IBAN del conto bancario di chi invia la fattura" #. Default: "Last name of invoice sender" #: ./interfaces.py:533 msgid "help_invoice_lastname" -msgstr "" +msgstr "Cognome di chi invia la fattura" #. Default: "Optional phone number of invoice sender" #: ./interfaces.py:564 msgid "help_invoice_phone" -msgstr "" +msgstr "Telefono di chi invia la fattura" #. Default: "Street of invoice sender" #: ./interfaces.py:539 msgid "help_invoice_street" -msgstr "" +msgstr "Indirizzo di chi invia la fattura" #. Default: "Optional web address of invoice sender" #: ./interfaces.py:580 msgid "help_invoice_web" -msgstr "" +msgstr "Indirizzo web di chi invia la fattura" #. Default: "Postal code of invoice sender" #: ./interfaces.py:545 msgid "help_invoice_zip" -msgstr "" +msgstr "Codice postale di chi invia la fattura" #. Default: "Show price with taxes included" #: ./dx.py:119 msgid "help_item_display_gross" -msgstr "" +msgstr "Mostra il prezzo includendo le tasse" #. Default: "Buyable Item number" #: ./dx.py:504 msgid "help_item_number" -msgstr "" +msgstr "Numero dell'articolo acquistabile" #. Default: "Net shipping cost per item in cart. If flat shipping cost set and item shipping cost below flat shipping cost, flat shipping cost is used" #: ./interfaces.py:363 msgid "help_item_shipping_cost" -msgstr "" +msgstr "Prezzo netto di consegna per articolo nel carrello. Se viene selezionato un prezzo fisso and le spese di consegna di un articolo sono inferiori a tale valore, tale valore viene usato" #. Default: "Fill in your surname or your family name." #: ./user/userdata.py:70 msgid "help_lastname" -msgstr "" +msgstr "Inserisci il tuo cognome" #. Default: "Maximum number of articles in cart if disable max article flag set" #: ./interfaces.py:130 msgid "help_max_artice_count" -msgstr "" +msgstr "Numero massimo di articoli nel carrello" #. Default: "Default payment method in checkout" #: ./interfaces.py:654 msgid "help_payment_method" -msgstr "" +msgstr "Metodo di pagamento predefinito" #: ./user/userdata.py:78 msgid "help_phone" @@ -624,32 +629,32 @@ msgstr "" #. Default: "Quantity units (what the buyable items are measured in)" #: ./interfaces.py:193 msgid "help_quantity_units" -msgstr "" +msgstr "Unità di misura (utilizzate per misurare gli articoli acquistabili)" #. Default: "Flag whether shipping of this item is free." #: ./dx.py:326 msgid "help_shipping_item_free_shipping" -msgstr "" +msgstr "Seleziona se l'articolo non ha spese di consegna." #. Default: "Flag whether item is shippable, i.e. downloads are not" #: ./dx.py:313 msgid "help_shipping_item_shippable" -msgstr "" +msgstr "Seleziona se l'articolo è consegnabile, per sempio gli abbonamenti non lo sono." #. Default: "If set to False, shipping limit gets calculated from net price instead of gross." #: ./interfaces.py:347 msgid "help_shipping_limit_from_gross" -msgstr "" +msgstr "Se non selezionato, il limite delle spese di consegna viene calcolato dal prezzo netto invece che da quello lordo." #. Default: "Default shipping method in checkout" #: ./interfaces.py:312 msgid "help_shipping_method" -msgstr "" +msgstr "Metodo di consegna predefinito" #. Default: "VAT used to calculate shipping costs" #: ./interfaces.py:320 msgid "help_shipping_vat" -msgstr "" +msgstr "Includi l'IVA nel calcolare i consti di spedizione" #: ./interfaces.py:157 msgid "help_show_checkout" @@ -670,12 +675,12 @@ msgstr "" #. Default: "Show only total value in cart summary" #: ./interfaces.py:149 msgid "help_summary_total_only" -msgstr "" +msgstr "Mostra solo il totale nel riepilogo del carrello" #. Default: "Specify all allowed vat settings" #: ./interfaces.py:385 msgid "help_vat" -msgstr "" +msgstr "Imposta tutte le impostazioni IVA valide" #: ./user/userdata.py:97 msgid "help_zip" @@ -688,191 +693,191 @@ msgstr "" #. Default: "Item Discount" #: ./browser/navigation.py:643 msgid "item_discount" -msgstr "" +msgstr "Sconto sull'articolo" #. Default: "Item Discount in Container" #: ./browser/navigation.py:669 msgid "item_discount_in_container" -msgstr "" +msgstr "Sconto sull'articolo nel contenitore" #. Default: "Item no longer buyable" #: ./cartdata.py:226 msgid "item_no_longer_buyable" -msgstr "" +msgstr "Articolo non più acquistabile" #. Default: "Item not buyable yet" #: ./cartdata.py:219 msgid "item_not_buyable_yet" -msgstr "" +msgstr "Articolo non ancora acquistabile" #. Default: "Kilogram" #: ./vocabularies.py:23 msgid "kilo" -msgstr "" +msgstr "Chilogrammo" #. Default: "Accept terms of use" #: ./user/userdata.py:171 msgid "label_accept" -msgstr "" +msgstr "Accetta i termini d'uso" #. Default: "Add Customer role to new Users" #: ./interfaces.py:73 msgid "label_add_customer_role_to_new_users" -msgstr "" +msgstr "Assegna il ruolo Customer (Consumatore) ai nuovi utenti" #. Default: "Shop Admin E-Mail" #: ./interfaces.py:58 msgid "label_admin_email" -msgstr "" +msgstr "E-mail dell'amministatore del negozio" #. Default: "Shop Admin Name" #: ./interfaces.py:66 msgid "label_admin_name" -msgstr "" +msgstr "Nome dell'amministatore del negozio" #. Default: "Alternative delivery address" #: ./user/userdata.py:116 msgid "label_alternative_delivery" -msgstr "" +msgstr "Indirizzo di consegna alternativo" #. Default: "Available Payment Methods" #: ./interfaces.py:637 msgid "label_available_payment_methods" -msgstr "" +msgstr "Metodi di pagamento disponibili" #. Default: "Available Shipping Methods" #: ./interfaces.py:295 msgid "label_available_shipping_methods" -msgstr "" +msgstr "Metodi di consegna disponibili" #. Default: "BIC" #: ./interfaces.py:595 msgid "label_bic" -msgstr "" +msgstr "BIC" #. Default: "Buyable effective date" #: ./dx.py:470 msgid "label_buyable_effective_date" -msgstr "" +msgstr "Data dalla quale l'articolo è acquistabile" #. Default: "Buyable expiration date" #: ./dx.py:475 msgid "label_buyable_expiration_date" -msgstr "" +msgstr "Data dalla quale l'articolo non è più acquistabile" #. Default: "Cash on delivery costs in gross" #: ./interfaces.py:679 msgid "label_cash_on_delivery_costs" -msgstr "" +msgstr "Costi di spedizione in contanti al lordo" #. Default: "City" #: ./interfaces.py:550 #: ./user/userdata.py:102 msgid "label_city" -msgstr "" +msgstr "Città" #. Default: "Company" #: ./interfaces.py:507 #: ./user/userdata.py:83 msgid "label_company" -msgstr "" +msgstr "Azienda" #. Default: "Company additional" #: ./interfaces.py:515 msgid "label_companyadd" -msgstr "" +msgstr "Azienda aggiuntiva" #. Default: "Country" #: ./interfaces.py:556 #: ./user/userdata.py:108 msgid "label_country" -msgstr "" +msgstr "Paese" #. Default: "Currency" #: ./interfaces.py:90 msgid "label_currency" -msgstr "" +msgstr "Valuta" #. Default: "Quantity limit of an item in the cart." #: ./interfaces.py:241 msgid "label_default_item_cart_count_limit" -msgstr "" +msgstr "Limite per articolo nel carrello" #. Default: "Comment enabled by default" #: ./interfaces.py:218 msgid "label_default_item_comment_enabled" -msgstr "" +msgstr "Commenti abilitati come impostazione predefinita" #. Default: "Comment required by default" #: ./interfaces.py:225 msgid "label_default_item_comment_required" -msgstr "" +msgstr "Richiedi un commento come impostazione predefinita" #. Default: "Display Gross by default" #: ./interfaces.py:83 msgid "label_default_item_display_gross" -msgstr "" +msgstr "Mostra il valore lordo come impostazione predefinita" #. Default: "Default Item net price" #: ./interfaces.py:213 msgid "label_default_item_net" -msgstr "" +msgstr "Prezzo netto predefinito per un articolo" #. Default: "Quantity as float as default" #: ./interfaces.py:233 msgid "label_default_item_quantity_unit_float" -msgstr "" +msgstr "Le quantità sono frazionarie come impostazione predefinita" #. Default: "Item stock warning threshold." #: ./interfaces.py:249 msgid "label_default_item_stock_warning_threshold" -msgstr "" +msgstr "Soglia di allerta per le giacenze di un articolo in magazzino." #. Default: "Specify default quantity name." #: ./interfaces.py:205 msgid "label_default_quantity_units" -msgstr "" +msgstr "Specifica il nome dell'unità di misura predefinita." #. Default: "Item Shippable by default" #: ./interfaces.py:283 msgid "label_default_shipping_item_shippable" -msgstr "" +msgstr "Articolo inviabile come modalità predefinita" #. Default: "Default Value added tax name" #: ./interfaces.py:394 msgid "label_default_vat" -msgstr "" +msgstr "Nome predefinito per la tassa sul valore aggiunto" #. Default: "Disable max article" #: ./interfaces.py:139 msgid "label_disable_max_article" -msgstr "" +msgstr "Disabilita il massimo per un articolo" #. Default: "Email address" #: ./interfaces.py:571 msgid "label_email" -msgstr "" +msgstr "Indirizzo e-mail" #. Default: "First name" #: ./interfaces.py:524 #: ./user/userdata.py:63 msgid "label_firstname" -msgstr "" +msgstr "Nome" #. Default: "Flat shipping cost" #: ./interfaces.py:355 msgid "label_flat_shipping_cost" -msgstr "" +msgstr "Prezzi di consegna fissi" #. Default: "Free Shipping Limit" #: ./interfaces.py:329 msgid "label_free_shipping_limit" -msgstr "" +msgstr "Limite oltre il quale la consegna è gratuita" #. Default: "Gender" #: ./user/userdata.py:56 msgid "label_gender" -msgstr "" +msgstr "Sesso" #. Default: "GTIN" #: ./dx.py:509 @@ -882,7 +887,7 @@ msgstr "" #. Default: "Hide Cart if empty" #: ./interfaces.py:121 msgid "label_hide_cart_if_empty" -msgstr "" +msgstr "Nascondi il carrelo se è vuoto" #. Default: "IBAN" #: ./interfaces.py:587 @@ -892,42 +897,42 @@ msgstr "" #. Default: "Item stock available" #: ./dx.py:235 msgid "label_item_available" -msgstr "" +msgstr "Scorta di magazzino disponibile" #. Default: "Max count of this item in cart" #: ./dx.py:109 msgid "label_item_cart_count_limit" -msgstr "" +msgstr "Massimo conteggio di questo articolo nel carrello" #. Default: "Comment enabled" #: ./dx.py:127 msgid "label_item_comment_enabled" -msgstr "Comment enabled" +msgstr "Commenti abilitati" #. Default: "Comment required" #: ./dx.py:133 msgid "label_item_comment_required" -msgstr "Comment required" +msgstr "Commento obbligatorio" #. Default: "Display Gross Price" #: ./dx.py:118 msgid "label_item_display_gross" -msgstr "" +msgstr "Mostra il prezzo lordo" #. Default: "Display item stock" #: ./dx.py:229 msgid "label_item_display_stock" -msgstr "" +msgstr "Mostra la scorta di magazzino" #. Default: "Additional overall notification text for the order confirmation mail of this item" #: ./dx.py:406 msgid "label_item_global_notification_text" -msgstr "" +msgstr "Testo di notifica aggiuntivo per l'e-mail di conferma dell'ordine di questo articolo" #. Default: "Additional overall notification text for the order confirmation mail of this item ordered if out of stock" #: ./dx.py:415 msgid "label_item_global_overbook_notification_text" -msgstr "" +msgstr "Testo di notifica aggiuntivo per l'e-mail di conferma dell'ordine di questo articolo se non disponibile in magazzino" #. Default: "Item net price" #: ./dx.py:95 @@ -937,22 +942,22 @@ msgstr "Prezzo netto" #. Default: "Notification text for this item in the order confirmation mail" #: ./dx.py:380 msgid "label_item_notification_text" -msgstr "" +msgstr "Testo di notifica per questo articolo nella mail di conferma dell'ordine" #. Default: "Item number" #: ./dx.py:503 msgid "label_item_number" -msgstr "" +msgstr "Numero dell'articolo" #. Default: "Item stock overbook" #: ./dx.py:240 msgid "label_item_overbook" -msgstr "" +msgstr "Sovraprenotazione delle scorte di magazzino" #. Default: "Notification text for this item in the order confirmation mail if item is out of stock" #: ./dx.py:389 msgid "label_item_overbook_notification_text" -msgstr "" +msgstr "Testo di notifica per questo articolo nella mail di conferma dell'ordine se non disponibile in magazzino" #. Default: "Quantity unit" #: ./dx.py:145 @@ -962,17 +967,17 @@ msgstr "Pezzo" #. Default: "Quantity as float" #: ./dx.py:139 msgid "label_item_quantity_unit_float" -msgstr "Inserimento decimali nella quantitŕ > facoltativo" +msgstr "Inserimento decimali nella quantità facoltativo" #. Default: "Item shipping cost" #: ./interfaces.py:362 msgid "label_item_shipping_cost" -msgstr "" +msgstr "Costo di spedizione dell'articolo" #. Default: "Item stock warning threshold." #: ./dx.py:244 msgid "label_item_stock_warning_threshold" -msgstr "" +msgstr "Soglia di allerta per le scorte di magazzino" #. Default: "Item VAT (in %)" #: ./dx.py:102 @@ -983,290 +988,290 @@ msgstr "IVA (in %)" #: ./interfaces.py:532 #: ./user/userdata.py:69 msgid "label_lastname" -msgstr "" +msgstr "Cognome" #. Default: "Maximum number articles in cart" #: ./interfaces.py:129 msgid "label_max_artice_count" -msgstr "" +msgstr "Massimo numero di articoli nel carrello" #. Default: "Payment Method" #: ./interfaces.py:653 msgid "label_payment_method" -msgstr "" +msgstr "Metodo di pagamento" #. Default: "Payment Texts" #: ./interfaces.py:670 msgid "label_payment_text" -msgstr "" +msgstr "Testi di pagamento" #. Default: "Phone" #: ./interfaces.py:563 #: ./user/userdata.py:77 msgid "label_phone" -msgstr "" +msgstr "Telefono" #. Default: "Specify quantity units allowed in shop." #: ./interfaces.py:190 msgid "label_quantity_units" -msgstr "" +msgstr "Unità di misura consentite nel negozio" #. Default: "Free Shipping" #: ./dx.py:325 msgid "label_shipping_item_free_shipping" -msgstr "" +msgstr "Consegna gratuita" #. Default: "Item Shippable" #: ./dx.py:312 msgid "label_shipping_item_shippable" -msgstr "" +msgstr "Articolo consegnabile" #. Default: "Item Weight" #: ./dx.py:321 msgid "label_shipping_item_weight" -msgstr "" +msgstr "Peso dell'articolo" #. Default: "Calculate shipping limit from gross" #: ./interfaces.py:343 msgid "label_shipping_limit_from_gross" -msgstr "" +msgstr "Calcola la soglia per le spese di consegna gratuite dal prezzo lordo" #. Default: "Shipping Method" #: ./interfaces.py:311 msgid "label_shipping_method" -msgstr "" +msgstr "Metodo di consegna" #. Default: "Shipping VAT" #: ./interfaces.py:319 msgid "label_shipping_vat" -msgstr "" +msgstr "IVA sulla consegna" #. Default: "Show checkout link in portlet" #: ./interfaces.py:156 msgid "label_show_checkout" -msgstr "" +msgstr "Mostra il collegamento alla cassa nel riquadro" #. Default: "Show the currency for items" #: ./interfaces.py:96 msgid "label_show_currency" -msgstr "" +msgstr "Mostra la valuta per gli articoli" #. Default: "Show link to cart in portlet" #: ./interfaces.py:162 msgid "label_show_to_cart" -msgstr "" +msgstr "Mostra il collegamento al carrello nel riquadro" #. Default: "Overall notification text for order confirmation mail" #: ./interfaces.py:456 msgid "label_site_global_notification_text" -msgstr "" +msgstr "Testo di notifica generale per posta di conferma dell'ordine" #. Default: "Overall notification text for order confirmation mail if order contains items out of stock" #: ./interfaces.py:468 msgid "label_site_global_overbook_notification_text" -msgstr "" +msgstr "Testo di notifica generale per posta di conferma dell'ordine se l'ordine contiene articoli non disponibili in magazzino" #. Default: "Default notification text for items in order confirmation mail" #: ./interfaces.py:429 msgid "label_site_item_notification_text" -msgstr "" +msgstr "Testo di notifica predefinito per gli articoli nella mail di conferma dell'ordine" #. Default: "Default notification text for items in order confirmation mail if item out of stock." #: ./interfaces.py:442 msgid "label_site_item_overbook_notification_text" -msgstr "" +msgstr "Testo di notifica predefinito per gli articoli nella mail di conferma dell'ordine se l'ordine contiene articoli non disponibili in magazzino" #. Default: "Skip Payment if order contains reservations" #: ./interfaces.py:661 msgid "label_skip_payment_if_order_contains_reservations" -msgstr "" +msgstr "Salta il pagamento se l'ordine contiene delle prenotazioni" #. Default: "Street" #: ./interfaces.py:538 #: ./user/userdata.py:90 msgid "label_street" -msgstr "" +msgstr "Via" #. Default: "Cart Summary total only" #: ./interfaces.py:148 msgid "label_summary_total_only" -msgstr "" +msgstr "Mostra solo il riepilogo totale del carrello" #. Default: "VAT in %" #: ./interfaces.py:384 msgid "label_vat" -msgstr "" +msgstr "IVA in %" #. Default: "Web address" #: ./interfaces.py:579 msgid "label_web" -msgstr "" +msgstr "Indirizzo web" #. Default: "Postal Code" #: ./interfaces.py:544 #: ./user/userdata.py:96 msgid "label_zip" -msgstr "" +msgstr "Codice postale" #. Default: "Language" #: ./interfaces.py:403 msgid "language" -msgstr "" +msgstr "Lingua" #. Default: "Legal" #: ./user/userdata.py:52 msgid "legal" -msgstr "" +msgstr "Legale" #. Default: "Liters" #: ./vocabularies.py:25 msgid "liters" -msgstr "" +msgstr "Litri" #. Default: "Mail Templates" #: ./browser/navigation.py:568 msgid "mailtemplates" -msgstr "" +msgstr "Modello per le e-mail" #. Default: "Notification Templates (global)" #: ./browser/navigation.py:589 msgid "mailtemplates_global" -msgstr "" +msgstr "Modelli per le e-mail di notifica (globale)" #. Default: "Notification Templates (site-wide)" #: ./browser/navigation.py:593 msgid "mailtemplates_site" -msgstr "" +msgstr "Modelli per le e-mail di notifica (tutto il sito)" #. Default: "Notification Templates (vendor specific)" #: ./browser/navigation.py:597 msgid "mailtemplates_vendor" -msgstr "" +msgstr "Modelli per le e-mail di notifica (per venditore)" #. Default: "Main Address" #: ./user/userdata.py:24 msgid "main_address" -msgstr "" +msgstr "Indirizzo principale" #. Default: "Meter" #: ./vocabularies.py:21 msgid "meter" -msgstr "" +msgstr "Metro" #. Default: "Milliliters" #: ./vocabularies.py:24 msgid "milliliters" -msgstr "" +msgstr "Millimetri" #. Default: "My Orders" #: ./browser/navigation.py:325 msgid "my_orders" -msgstr "" +msgstr "I miei ordini" #. Default: "No" #: ./vocabularies.py:128 msgid "no" -msgstr "" +msgstr "No" #. Default: "Minimum ${flat} ${currency} or ${item} ${currency} per item in cart" #: ./shipping.py:64 msgid "no_free_shipping_flat_and_item" -msgstr "" +msgstr "Minimo ${flat} ${currency} o ${item} ${currency} per articolo nel carrello" #. Default: "Flat ${flat} ${currency}" #: ./shipping.py:79 msgid "no_free_shipping_flat_only" -msgstr "" +msgstr "Prezzo fisso ${flat} ${currency}" #. Default: "${item} ${currency} per item in cart" #: ./shipping.py:88 msgid "no_free_shipping_item_only" -msgstr "" +msgstr "${item} ${currency} per articolo nel carrello" #. Default: "Item is no longer purchasable." #: ./browser/availability_details.pt:77 msgid "no_longer_purchasable" -msgstr "" +msgstr "L'articolo non è più acquistabile" #. Default: "Item is sold out." #: ./browser/availability_details.pt:11 msgid "not_available_message" -msgstr "" +msgstr "L'articolo non è più disponibile" #. Default: "Item not available" #: ./browser/availability_details.pt:8 msgid "not_available_title" -msgstr "" +msgstr "L'articolo non è disponibile" #. Default: "Item not available yet." #: ./browser/availability_details.pt:65 msgid "not_available_yet_title" -msgstr "" +msgstr "L'articolo non è ancora disponibile" #. Default: "Order Text" #: ./interfaces.py:435 msgid "order_text" -msgstr "" +msgstr "Testo dell'ordine" #. Default: "Orders" #: ./browser/navigation.py:226 msgid "orders" -msgstr "" +msgstr "Ordini" #. Default: "Orders (global)" #: ./browser/navigation.py:251 msgid "orders_global" -msgstr "Ordini (global)" +msgstr "Ordini (globale)" #. Default: "Orders in Container" #: ./browser/navigation.py:299 msgid "orders_in_container" -msgstr "" +msgstr "Ordini nel contenitore" #. Default: "Orders in Context" #: ./browser/navigation.py:267 msgid "orders_in_context" -msgstr "" +msgstr "Ordini in questa sezione" #. Default: "Orders (site-wide)" #: ./browser/navigation.py:253 msgid "orders_site" -msgstr "Ordini (site-wide)" +msgstr "Ordini (tutto il sito)" #. Default: "Orders (vendor specific)" #: ./browser/navigation.py:255 msgid "orders_vendor" -msgstr "Ordini (vendor specific)" +msgstr "Ordini (per venditore)" #. Default: "Item is sold out. You can pre-order ${reservable} items. As soon as item is available again, it gets delivered." #: ./browser/availability.py:131 msgid "overbook_available_message" -msgstr "" +msgstr "Tutta la scorta è stata venduta. Puoi pre-ordinare ${reservable} articoli. L'articolo verrà consegnato non appena diventerà nuovamente disponibile." #. Default: "Pre-order available" #: ./browser/availability_details.pt:35 msgid "overbook_available_title" -msgstr "" +msgstr "Pre-ordini disponibili" #. Default: "Overbook Text" #: ./interfaces.py:448 msgid "overbook_text" -msgstr "" +msgstr "Testo sovraprenotazione" #. Default: "Payment" #: ./interfaces.py:606 msgid "payment" -msgstr "" +msgstr "Pagamento" #. Default: "Payment Text" #: ./interfaces.py:672 msgid "payment_text" -msgstr "" +msgstr "Testo del pagamento" #. Default: "Permission to buy ${title} not granted." #: ./cartdata.py:204 msgid "permission_not_granted_to_buy_item" -msgstr "" +msgstr "Non ti è permesso comprare ${title}." #. Default: "Price" #: ./browser/buyable.pt:36 @@ -1276,22 +1281,22 @@ msgstr "Prezzo" #. Default: "Item is purchasable as of ${date}" #: ./browser/availability.py:163 msgid "purchasable_as_of_message" -msgstr "" +msgstr "L'articolo è acquistabile dal ${date}" #. Default: "Item is purchasable until ${date}" #: ./browser/availability.py:148 msgid "purchasable_until_message" -msgstr "" +msgstr "L'articolo è acquistabile fino al ${date}" #. Default: "Quantity" #: ./vocabularies.py:19 msgid "quantity" -msgstr "" +msgstr "Quantità" #. Default: "Shop" #: ./browser/toolbar.py:13 msgid "shop" -msgstr "" +msgstr "Negozio" #. Default: "Shop" #: ./browser/admin.pt:9 @@ -1301,27 +1306,32 @@ msgstr "Negozio" #. Default: "Shop Controlpanel (global)" #: ./browser/navigation.py:716 msgid "shop_controlpanel_global" -msgstr "" +msgstr "Pannello di controllo del negozio (globale)" #. Default: "Shop Controlpanel (site-wide)" #: ./browser/navigation.py:720 msgid "shop_controlpanel_site" -msgstr "" +msgstr "Pannello di controllo del negozio (tutto il sito)" #. Default: "Shop Portlet" #: ./browser/admin.py:25 msgid "shop_portlet" -msgstr "" +msgstr "Riquadro del negozio" #. Default: "Symbol" #: ./vocabularies.py:129 msgid "symbol" -msgstr "" +msgstr "Simbolo" #. Default: "Text" #: ./interfaces.py:408 msgid "text" -msgstr "" +msgstr "Testo" + +#. Default: "update cart" +#: ./browser/buyable.pt:111 +msgid "update_cart" +msgstr "Aggiorna il carrello" #. Default: "Vat" #: ./browser/buyable.pt:70 @@ -1331,4 +1341,4 @@ msgstr "IVA" #. Default: "Yes" #: ./vocabularies.py:127 msgid "yes" -msgstr "" +msgstr "Sì" diff --git a/src/bda/plone/shop/mailnotify.py b/src/bda/plone/shop/mailnotify.py index f4349217..ad050910 100644 --- a/src/bda/plone/shop/mailnotify.py +++ b/src/bda/plone/shop/mailnotify.py @@ -86,7 +86,9 @@ def __init__(self, context): def _lookup_text(self, field): settings = get_shop_notification_settings() - enum = getattr(settings, field) + enum = getattr(settings, field, None) + if enum is None: + return portal_state = self.context.restrictedTraverse("@@plone_portal_state") lang = portal_state.language() for entry in enum: diff --git a/src/bda/plone/shop/profiles/default/userschema.xml b/src/bda/plone/shop/profiles/default/userschema.xml index 712bb787..30b2453e 100644 --- a/src/bda/plone/shop/profiles/default/userschema.xml +++ b/src/bda/plone/shop/profiles/default/userschema.xml @@ -41,11 +41,11 @@ bda.plone.shop.vocabularies.GenderVocabulary - Fill in your given name. + First name - Fill in your surname or your family name. + Last name diff --git a/src/bda/plone/shop/upgrades/upgrades.py b/src/bda/plone/shop/upgrades/upgrades.py index 93e8a26e..e70cc0f9 100644 --- a/src/bda/plone/shop/upgrades/upgrades.py +++ b/src/bda/plone/shop/upgrades/upgrades.py @@ -17,12 +17,14 @@ def update_notification_text_registry_entries(ctx=None): # XXX registry = getUtility(IRegistry) - key = "bda.plone.shop.interfaces.INotificationTextSettings.order_text" - del registry.records[key] - key = "bda.plone.shop.interfaces.INotificationTextSettings.overbook_text" - del registry.records[key] - key = "bda.plone.shop.interfaces.IPaymentTextSettings.payment_text" - del registry.records[key] + obsolete_keys = ( + "bda.plone.shop.interfaces.INotificationTextSettings.order_text", + "bda.plone.shop.interfaces.INotificationTextSettings.overbook_text", + "bda.plone.shop.interfaces.IPaymentTextSettings.payment_text", + ) + for key in obsolete_keys: + if key in registry.records: + del registry.records[key] def install_userproperties_pas_plugin(context): @@ -33,30 +35,32 @@ def install_userproperties_pas_plugin(context): def remove_old_resources(context): """Remove old resources for Plone 5""" - portal_css = getToolByName(context, "portal_css") - old_css = ( - "++resource++bda.plone.cart.css", - "++resource++bda.plone.checkout.css", - "++resource++bda.plone.discount.css", - "++resource++bda.plone.orders.css", - "++resource++bda.plone.orders_print.css", - "++resource++bda.plone.payment.css", - "++resource++bda.plone.shop.css", - ) - for css in old_css: - portal_css.unregisterResource(css) - logger.info("Removed old resource: {0}".format(css)) - - portal_js = getToolByName(context, "portal_javascripts") - old_js = ( - "++resource++bda.plone.cart.js", - "@@bda.plone.cart.translations.js", - "++resource++bda.plone.checkout.js", - "++resource++bda.plone.discount.js", - "++resource++qrcode.js", - "++resource++bda.plone.orders.js", - "++resource++bda.plone.shop.js", - ) - for js in old_js: - portal_js.unregisterResource(js) - logger.info("Removed old resource: {0}".format(js)) + portal_css = getToolByName(context, "portal_css", None) + if portal_css: + old_css = ( + "++resource++bda.plone.cart.css", + "++resource++bda.plone.checkout.css", + "++resource++bda.plone.discount.css", + "++resource++bda.plone.orders.css", + "++resource++bda.plone.orders_print.css", + "++resource++bda.plone.payment.css", + "++resource++bda.plone.shop.css", + ) + for css in old_css: + portal_css.unregisterResource(css) + logger.info("Removed old resource: {0}".format(css)) + + portal_js = getToolByName(context, "portal_javascripts", None) + if portal_js: + old_js = ( + "++resource++bda.plone.cart.js", + "@@bda.plone.cart.translations.js", + "++resource++bda.plone.checkout.js", + "++resource++bda.plone.discount.js", + "++resource++qrcode.js", + "++resource++bda.plone.orders.js", + "++resource++bda.plone.shop.js", + ) + for js in old_js: + portal_js.unregisterResource(js) + logger.info("Removed old resource: {0}".format(js))