Commits

Kai Diefenbach committed fc24fe3 Merge

Merged.

Comments (0)

Files changed (26)

 0000000000000000000000000000000000000000 0.6.9
 d6a3c0f3de9d1f09891af9b1c2e817f3cc17a3a8 0.6.9
 4da244e38d38cad2bd8e790fc663b82bc6529d97 0.7.0b3
+2741698c16699cf34615fcad50a076702d208635 0.7.0b4
+793d73ec283eddadc6b0cfd6ab723aa538c90dba 0.7.0b5
+63eeae33362c411fb31dd609e2470aebf515d676 0.6.10
+1bf34cbcbd499bf8d69a37bda3363fe5fc56a779 0.6.11
+1bf34cbcbd499bf8d69a37bda3363fe5fc56a779 0.6.11
+0000000000000000000000000000000000000000 0.6.11
+0000000000000000000000000000000000000000 0.6.11
+fa82a5c54664f503af1798c16814471ced09ab08 0.6.11
 trans.pl = lfs/locale/pl/LC_MESSAGES/django.po
 trans.ro = lfs/locale/ro/LC_MESSAGES/django.po
 trans.ru = lfs/locale/ru/LC_MESSAGES/django.po
+trans.zh_CN = lfs/locale/zh_CN/LC_MESSAGES/django.po
+trans.zh_TW = lfs/locale/zh_TW/LC_MESSAGES/django.po
 
 
   Contributor.
 
-* Maciej Wiśniowski
+* Maciej Wiśniowski (pigletto)
 
   Contributor.
 
-  Bug fixes. Autocompletion for manufacturers. Polish translations.
+  Bug fixes. Improvements. Autocompletion for manufacturers. Google like style
+  for page pagination. Polish translations.
+
+* Frank Feng
+
+  Contributor.
+
+  Bug fixes. Chinese translations.
+
+* Radim Novotny (naro)
+
+  Contributor.
+
+  Bug fixes. Czech translations.
 
 * Kai Diefenbach (diefenbach, http://www.iqpp.de)
 
 Unreleased
 ----------
 
+* Bugfix: fixed positions of newly added variants (Maciej Wiśniowski)
+* Bugfix: fixed layout, when there are no portlets at right; issue #173 (Frank Feng)
+* Bugfix: fixed local variable 'message' referenced before assignment (Maciej Wiśniowski)
+* Updated: Polish translations (Maciej Wiśniowski)
+* Updated: Chinese translations (Frank Feng)
+
+0.7.0 beta 5 (24.03.2012)
+-------------------------
+
+* Bugfix: added csrf token to password reset forms; issue #170
+* Bugfix: prevent setting of unsupported locale; #issue 165.
+* Bugfix: removed double slash from logo URLs; issue #166
+* Updated German translations
+
+0.7.0 beta 4 (21.03.2012)
+-------------------------
+
 * Bugfix: fixed edit/view product urls; issue #164 (Frank Feng)
 * Bugfix: removed typo; issue #163 (Frank Feng)
 * Bugfix: fixed accessories tab in manage; #issue #162 (Frank Feng)
 * Bugfix: get_base_price_net; #issue #161
 * Bugfix: display only parent's active base price value for variants
 * Bugfix: take the parent's price calculator for variants
+* Added: Chinese translations (Frank Feng)
 * Added: default footer for email messages (Maciej Wiśniowski)
+* Improved: page pagination for category products view (Maciej Wiśniowski)
 * Improved: email templates (Maciej Wiśniowski)
 * Updated: German translations
+* Updated: Polish translations (Maciej Wiśniowski)
 
-0.7.0 beta 3
-------------
+0.7.0 beta 3 (18.03.2012)
+-------------------------
 
 * Bugfix: fixed number of columns within cart template (Maciej Wiśniowski)
 * Bugfix: fixed display of localized amount of items within cart portlet; issue #159
 * Improved: cleaned up displaying of addresses of orders within LM
 * Updated: Czech translation (naro)
 * Updated: German translation
-* Update: Polish translations (Maciej Wiśniowski)
+* Updated: Polish translations (Maciej Wiśniowski)
 
-0.7.0 beta 2
-------------
+0.7.0 beta 2 (08.03.2012)
+-------------------------
 
 * Security fix
 * Added manufacturer field to product management (Maciej Wiśniowski)
 * Bugfix: fixed updating of attachments; issue #147
 * Improved javascript: prevent FOUC for category-tabs and manage-tabs;
 
-0.7.0 beta 1
-------------
+0.7.0 beta 1 (03.03.2012)
+-------------------------
 
 * Added customer related taxes
 * Added global image management

docs/misc/contributing_translations.rst

 ========
 
 If your are a (Django-)developer you might want to fork django-lfs and
-django-lfstheme on `Bitbucket <https://bitbucket.org/diefenbach/django-lfs>`_ or
-`GitHub <https://github.com/diefenbach/django-lfs>`_, add the translations as
-`used to <https://docs.djangoproject.com/en/dev/topics/i18n/translation
-/#localization-how-to-create-language-files>`_, commit them and send us a pull
-request.
+django-lfstheme on `Bitbucket <https://bitbucket.org/diefenbach/django-lfs>`_
+add the translations as `used to <https://docs.djangoproject.com/en/dev/topics/i18n/translation/#localization-how-to-create-language-files>`_,
+commit them and send us a pull request.
+
+.. Note::
+
+    Please make sure to fork the correct version branch.
 
 Via Transifex
 =============
 your choice and start to translate via the web interface. Once you are ready we
 would add your translations to the source code.
 
+.. Note::
+
+    Please make sure to use the correct version.
+
 Other
 =====
 

lfs/catalog/views.py

 # django imports
 from django.conf import settings
 from django.core.cache import cache
+from django.core.paginator import Paginator, EmptyPage, InvalidPage
 from django.core.urlresolvers import reverse
 from django.http import Http404
 from django.http import HttpResponse
 from lfs.catalog.settings import PROPERTY_VALUE_TYPE_DEFAULT
 from lfs.catalog.settings import SELECT
 from lfs.catalog.settings import VARIANT
-from lfs.core.utils import LazyEncoder
+from lfs.core.utils import LazyEncoder, lfs_pagination
 from lfs.core.templatetags import lfs_tags
 from lfs.utils import misc as lfs_utils
 
 def category_view(request, slug, template_name="lfs/catalog/category_base.html"):
     """
     """
-    start = request.REQUEST.get("start", 0)
+    start = request.REQUEST.get("start", 1)
     category = lfs_get_object_or_404(Category, slug=slug)
     if category.get_content() == CONTENT_PRODUCTS:
         inline = category_products(request, slug, start)
     return result
 
 
-def category_products(request, slug, start=0, template_name="lfs/catalog/categories/product/default.html"):
+def category_products(request, slug, start=1, template_name="lfs/catalog/categories/product/default.html"):
     """Displays the products of the category with passed slug.
 
     This view is called if the user chooses a template that is situated in settings.PRODUCT_PATH ".
     try:
         start = int(start)
     except (ValueError, TypeError):
-        start = 0
+        start = 1
 
     format_info = category.get_format_info()
     amount_of_rows = format_info["product_rows"]
     all_products = lfs.catalog.utils.get_filtered_products_for_category(
         category, product_filter, price_filter, sorting)
 
+    # prepare paginator
+    paginator = Paginator(all_products, amount)
+
+    try:
+        current_page = paginator.page(start)
+    except (EmptyPage, InvalidPage):
+        current_page = paginator.page(paginator.num_pages)
+
     # Calculate products
     row = []
     products = []
-    for i, product in enumerate(all_products[start:start + amount]):
+    for i, product in enumerate(current_page.object_list):
         if product.is_product_with_variants():
             default_variant = product.get_variant_for_category(request)
             if default_variant:
     amount_of_products = all_products.count()
 
     # Calculate urls
-    pages = []
-    for i in range(0, amount_of_products / amount + 1):
-        page_start = i * amount
-        pages.append({
-            "name": i + 1,
-            "start": page_start,
-            "selected": start == page_start,
-        })
-
-    if (start + amount) < amount_of_products:
-        next_url = "%s?start=%s" % (category.get_absolute_url(), start + amount)
-    else:
-        next_url = None
-
-    if (start - amount) >= 0:
-        previous_url = "%s?start=%s" % (category.get_absolute_url(), start - amount)
-    else:
-        previous_url = None
+    pagination_data = lfs_pagination(request, current_page, url=category.get_absolute_url())
 
     render_template = category.get_template_name()
     if render_template != None:
     result = render_to_string(template_name, RequestContext(request, {
         "category": category,
         "products": products,
-        "next_url": next_url,
-        "previous_url": previous_url,
         "amount_of_products": amount_of_products,
-        "pages": pages,
-        "show_pages": amount_of_products > amount,
+        "pagination": pagination_data,
         "all_products": all_products,
     }))
 

lfs/core/tests.py

         self.assertEqual(shop.meta_keywords, u"")
         self.assertEqual(shop.meta_description, u"")
 
+    def test_unsupported_locale(self):
+        """
+        """
+        shop = lfs.core.utils.get_default_shop()
+        shop.default_locale = "unsupported"
+        shop.save()
+
+        self.client.get("/")
+
     def test_from_email(self):
         """
         """

lfs/core/utils.py

 import datetime
 import sys
 import urllib
+from collections import deque
+from itertools import count
 
 # django imports
 from django.conf import settings
             })
 
         return categories
+
+
+def define_page_range(current_page, total_pages, window=6):
+    """ Returns range of pages that contains current page and few pages before and after it.
+
+        @current_page - starts from 1
+        @tota_pages - total number of pages
+        @window - maximum number of pages shown with current page - should be even
+
+        Examples (cucumber style):
+             Given window = 6
+             When current_page is 8
+             and total_pages = 20
+             Then I should see: 5 6 7 [8] 9 10 11
+
+             Given window = 6
+             When current_page is 8
+             and total_pages = 9
+             Then I should see: 3 4 5 6 7 [8] 9
+
+             Given window = 6
+             When current_page is 1
+             and total_pages = 9
+             Then I should see: [1] 2 3 4 5 6 7
+    """
+    # maximum length of page range is window + 1
+    maxlen = window + 1
+    page_range = deque(maxlen=maxlen)
+
+    # minimum possible index is either: (current_page - window) or 1
+    window_start = (current_page - window) if (current_page - window) > 0 else 1
+
+    # maximum possible index is current_page + window or total_pages
+    window_end = total_pages if (current_page + window) > total_pages else (current_page + window)
+
+    # if we have enough pages then we should end at preffered end
+    preffered_end = current_page + int(window / 2.0)
+
+    for i in count(window_start):
+        if i > window_end:
+            # if we're on first page then our window will be [1] 2 3 4 5 6 7
+            break
+        elif i > preffered_end and len(page_range) == maxlen:
+            # if we have enough pages already then stop at preffered_end
+            break
+        page_range.append(i)
+    return list(page_range)
+
+
+def lfs_pagination(request, current_page, url='', getparam='start'):
+    """Prepare data for pagination
+
+       @page - number of current page (starting from 1)
+       @paginator - paginator object, eg. Paginator(contact_list, 25)
+    """
+    paginator = current_page.paginator
+    current_page_no = current_page.number
+
+    has_next = current_page.has_next()
+    has_prev = current_page.has_previous()
+
+    page_range = define_page_range(current_page.number, paginator.num_pages)
+
+    first = 1
+    last = paginator.num_pages
+
+    if first in page_range:
+        first = None
+
+    if last in page_range:
+        last = None
+
+    to_return = {'page_range': page_range,
+                 'current_page': current_page_no,
+                 'total_pages': paginator.num_pages,
+                 'has_next': has_next,
+                 'has_prev': has_prev,
+                 'next': current_page_no + 1,
+                 'prev': current_page_no - 1,
+                 'url': url,
+                 'getparam': getparam,
+                 'first_page': first,
+                 'last_page': last,
+                 'getvars': ''
+                }
+
+    getvars = request.GET.copy()
+    if getparam in getvars:
+        del getvars[getparam]
+    if len(getvars.keys()) > 0:
+        to_return['getvars'] = "&%s" % getvars.urlencode()
+    return to_return

lfs/core/views.py

 from lfs.caching.utils import lfs_get_object_or_404
 from lfs.core.models import Shop
 
+# Load logger
+import logging
+logger = logging.getLogger("default")
+
 
 def shop_view(request, template_name="lfs/shop/shop.html"):
     """Displays the shop.
 
 def one_time_setup():
     shop = lfs_get_object_or_404(Shop, pk=1)
-    locale.setlocale(locale.LC_ALL, str(shop.default_locale))
+    try:
+        locale.setlocale(locale.LC_ALL, str(shop.default_locale))
+    except locale.Error, e:
+        logger.error("Unsupported locale in LMI/Preferences/Default Values/Default Shop Locale: '%s'." % shop.default_locale)

lfs/customer/models.py

     email = models.EmailField(_("E-Mail"), blank=True, null=True, max_length=50)
 
     def __unicode__(self):
-        return "%s / %s" % (self.street, self.city)
+        return "%s / %s" % (self.line1, self.city)
 
 
 class BankAccount(models.Model):
     expiration_date_year = models.IntegerField(_(u"Expiration date year"), )
 
     def __unicode__(self):
-        return "%s / %s" % (self.card_type, self.card_owner)
+        return "%s / %s" % (self.type, self.owner)

lfs/customer/tests.py

 from django.core import mail
 
 # lfs imports
-from lfs.core.models import Shop, Country
-from lfs.customer.models import Customer, Address
+from lfs.customer.models import Address
+from lfs.core.models import Country
+from lfs.core.models import Shop
+from lfs.customer.models import CreditCard
+from lfs.customer.models import Customer
 from lfs.shipping.models import ShippingMethod
 from lfs.tax.models import Tax
 from lfs.payment.models import PaymentMethod
 
 
+class CreditCardTestCase(TestCase):
+    def setUp(self):
+        self.cc = CreditCard(
+            type = "mastercard",
+            owner = "John Doe",
+            number = "4711",
+            expiration_date_month = 8,
+            expiration_date_year = 2012
+        )
+
+    def test_unicode(self):
+        self.assertEquals(self.cc.__unicode__(), "%s / %s" % (self.cc.type, self.cc.owner))
+
+
 class AddressTestCase(TestCase):
 
     fixtures = ['lfs_shop.xml']
             tax=tax,
         )
 
-        address1 = Address.objects.create(
+        self.address1 = Address.objects.create(
             firstname="John",
             lastname="Doe",
             company_name="Doe Ltd.",
             email="john@doe.com",
         )
 
-        address2 = Address.objects.create(
+        self.address2 = Address.objects.create(
             firstname="Jane",
             lastname="Doe",
             company_name="Doe Ltd.",
             user=new_user,
             selected_shipping_method=shipping_method,
             selected_payment_method=payment_method,
-            selected_shipping_address=address1,
-            selected_invoice_address=address2,
+            selected_shipping_address=self.address1,
+            selected_invoice_address=self.address2,
         )
         self.c = Client()
 
+    def test_unicode(self):
+        self.assertEqual(self.address1.__unicode__(), u"%s / %s" % (self.address1.line1, self.address1.city))
+
     def test_address_page(self):
         """
         Tests that we can see a shipping and an invoice address

lfs/locale/de/LC_MESSAGES/django.mo

Binary file modified.

lfs/locale/de/LC_MESSAGES/django.po

 msgstr ""
 "Project-Id-Version: LFS\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-18 10:10-0500\n"
+"POT-Creation-Date: 2012-03-23 10:14-0500\n"
 "PO-Revision-Date: 2009-02-22 07:20+0100\n"
 "Last-Translator: Kai Diefenbach <kai.diefenbach@iqpp.de>\n"
 "Language-Team: Kai Diefenbach <kai.diefenbach@iqpp.de>\n"
 msgid "Zip Code"
 msgstr "PLZ"
 
+#: other_translations.py:10
+msgid "Last Order Number"
+msgstr "Letzte Bestellnummer"
+
+#: other_translations.py:11 templates/manage/shop/default_values_tab.html:27
+msgid "Format"
+msgstr "Format"
+
 #: cart/models.py:48 criteria/models/criteria.py:597 order/models.py:48
 #: templates/manage/cart/carts_inline.html:16
 msgid "User"
 #: templates/manage/cart/carts_inline.html:10
 #: templates/manage/customer/customer_inline.html:125
 #: templates/manage/reviews/review_inline.html:33
-#: templates/manage/reviews/reviews_inline.html:20
+#: templates/manage/reviews/reviews_inline.html:18
 msgid "Creation date"
 msgstr "Erstellungsdatum"
 
 msgid "Cart"
 msgstr "Warenkorb"
 
-#: cart/models.py:236 catalog/models.py:1736 catalog/models.py:1991
-#: catalog/models.py:2057 catalog/models.py:2395 marketing/models.py:13
+#: cart/models.py:236 catalog/models.py:1741 catalog/models.py:1996
+#: catalog/models.py:2062 catalog/models.py:2400 marketing/models.py:13
 #: marketing/models.py:26 marketing/models.py:33
 #: templates/manage/cart/cart_inline.html:100
 #: templates/manage/reviews/review_inline.html:78
-#: templates/manage/reviews/reviews_inline.html:38
+#: templates/manage/reviews/reviews_inline.html:36
 msgid "Product"
 msgstr "Produkt"
 
-#: cart/models.py:237 catalog/models.py:1739
+#: cart/models.py:237 catalog/models.py:1744
 #: templates/manage/product/accessories_inline.html:116
 msgid "Quantity"
 msgstr "Menge"
 msgid "Cart item"
 msgstr "Artikel"
 
-#: cart/models.py:396 catalog/models.py:1944 catalog/models.py:1969
-#: catalog/models.py:1992 catalog/models.py:2017 catalog/models.py:2059
+#: cart/models.py:396 catalog/models.py:1949 catalog/models.py:1974
+#: catalog/models.py:1997 catalog/models.py:2022 catalog/models.py:2064
 #: order/models.py:211 templates/manage/properties/property.html:32
 msgid "Property"
 msgstr "Eigenschaften"
 msgid "Sorry, but '%(product)s' is only %(amount)s times available."
 msgstr "Es tut uns leid, '%(product)s' ist nur noch %(amount)s Mal im Lager."
 
-#: catalog/models.py:160 catalog/models.py:569 catalog/models.py:1769
-#: catalog/models.py:1863 catalog/models.py:2019 catalog/models.py:2183
+#: catalog/models.py:160 catalog/models.py:569 catalog/models.py:1774
+#: catalog/models.py:1868 catalog/models.py:2024 catalog/models.py:2188
 #: core/models.py:19 core/models.py:38 core/models.py:154
 #: discounts/models.py:41 export/models.py:16 manufacturer/models.py:10
 #: payment/models.py:73 shipping/models.py:71
 #: templates/manage/order/order_inline.html:162
 #: templates/manage/order/orders_filter.html:11
 #: templates/manage/order/orders_filters_inline.html:11
-#: templates/manage/order/orders_inline.html:12
+#: templates/manage/order/orders_inline.html:16
 #: templates/manage/product/accessories_inline.html:48
 #: templates/manage/product/accessories_inline.html:107
 #: templates/manage/product/products_inline.html:17
 #: templates/manage/reviews/review_filters_inline.html:11
 #: templates/manage/reviews/review_inline.html:41
 #: templates/manage/reviews/reviews_filters_inline.html:9
-#: templates/manage/reviews/reviews_inline.html:26
+#: templates/manage/reviews/reviews_inline.html:24
 msgid "Name"
 msgstr "Name"
 
 msgid "Slug"
 msgstr "Slug"
 
-#: catalog/models.py:162 catalog/models.py:636 catalog/models.py:2058
+#: catalog/models.py:162 catalog/models.py:636 catalog/models.py:2063
 #: core/models.py:80
 msgid "Parent"
 msgstr "Kategorie"
 msgid "Show all products"
 msgstr "Alle Produkte anzeigen"
 
-#: catalog/models.py:168 catalog/models.py:1770 catalog/models.py:1866
+#: catalog/models.py:168 catalog/models.py:1775 catalog/models.py:1871
 #: catalog/settings.py:70 export/models.py:18
 #: templates/manage/manage_base.html:87
 #: templates/manage/cart/carts_inline.html:25
 msgid "Short description"
 msgstr "Kurzbeschreibung"
 
-#: catalog/models.py:170 catalog/models.py:580 catalog/models.py:2212
-#: catalog/models.py:2393 core/models.py:159 customer_tax/models.py:24
+#: catalog/models.py:170 catalog/models.py:580 catalog/models.py:2217
+#: catalog/models.py:2398 core/models.py:159 customer_tax/models.py:24
 #: payment/models.py:74 shipping/models.py:72 tax/models.py:18
 #: templates/manage/product/attachments.html:21
 msgid "Description"
 msgstr "Beschreibung"
 
-#: catalog/models.py:171 catalog/models.py:2108 core/models.py:160
+#: catalog/models.py:171 catalog/models.py:2113 core/models.py:160
 #: payment/models.py:76 shipping/models.py:74
 #: templates/manage/category/data.html:83
 #: templates/manage/product/images.html:34
 msgid "Image"
 msgstr "Bild"
 
-#: catalog/models.py:172 catalog/models.py:1738 catalog/models.py:1867
-#: catalog/models.py:1970 catalog/models.py:1993 catalog/models.py:2021
-#: catalog/models.py:2109 catalog/models.py:2187 catalog/models.py:2396
+#: catalog/models.py:172 catalog/models.py:1743 catalog/models.py:1872
+#: catalog/models.py:1975 catalog/models.py:1998 catalog/models.py:2026
+#: catalog/models.py:2114 catalog/models.py:2192 catalog/models.py:2401
 #: core/models.py:79 core/management/commands/lfs_migrate.py:123
 #: criteria/models/criteria_objects.py:24 marketing/models.py:14
 #: marketing/models.py:34 page/models.py:18
 msgid "Your unique article number of the product."
 msgstr "Ihre eindeutige Artikelnummer des Produkts."
 
-#: catalog/models.py:572 catalog/models.py:576 catalog/models.py:1875
-#: catalog/models.py:2020 criteria/models/criteria.py:52 order/models.py:56
+#: catalog/models.py:572 catalog/models.py:576 catalog/models.py:1880
+#: catalog/models.py:2025 criteria/models/criteria.py:52 order/models.py:56
 #: payment/models.py:78 payment/models.py:122 shipping/models.py:76
 #: shipping/models.py:165 templates/manage/cart/cart_inline.html:103
 #: templates/manage/criteria/combinedlengthandgirth_criterion.html:14
 #: templates/manage/customer/customer_inline.html:176
 #: templates/manage/marketing/rating_mails.html:60
 #: templates/manage/order/order_inline.html:170
-#: templates/manage/order/orders_inline.html:18
+#: templates/manage/order/orders_inline.html:22
 #: templates/manage/payment/payment_method_prices.html:27
 #: templates/manage/product/products_inline.html:34
 #: templates/manage/product/variants.html:110
 #: templates/manage/reviews/review_filters_inline.html:12
 #: templates/manage/reviews/review_inline.html:21
 #: templates/manage/reviews/reviews_filters_inline.html:10
-#: templates/manage/reviews/reviews_inline.html:51
+#: templates/manage/reviews/reviews_inline.html:49
 #: templates/manage/voucher/vouchers_inline.html:88
 msgid "Active"
 msgstr "Aktiv"
 msgid "Type of quantity field"
 msgstr "Art des Anzahlfelds"
 
-#: catalog/models.py:1737
+#: catalog/models.py:1742
 msgid "Accessory"
 msgstr "Zubehör"
 
-#: catalog/models.py:1864 catalog/models.py:2107 catalog/models.py:2392
+#: catalog/models.py:1869 catalog/models.py:2112 catalog/models.py:2397
 #: core/models.py:76 page/models.py:16
 #: templates/manage/portlets/portlets_inline.html:40
 #: templates/manage/product/attachments.html:18
 msgid "Title"
 msgstr "Titel"
 
-#: catalog/models.py:1865 catalog/models.py:1968 core/models.py:78
+#: catalog/models.py:1870 catalog/models.py:1973 core/models.py:78
 msgid "Group"
 msgstr "Gruppe"
 
-#: catalog/models.py:1868 catalog/models.py:2211
+#: catalog/models.py:1873 catalog/models.py:2216
 msgid "Unit"
 msgstr "Einheit"
 
-#: catalog/models.py:1869
+#: catalog/models.py:1874
 msgid "Display on product"
 msgstr "Am Produkt anzeigen"
 
-#: catalog/models.py:1870
+#: catalog/models.py:1875
 msgid "Local"
 msgstr "Lokal"
 
-#: catalog/models.py:1871
+#: catalog/models.py:1876
 msgid "Filterable"
 msgstr "Filterbar"
 
-#: catalog/models.py:1872
+#: catalog/models.py:1877
 msgid "Display no results"
 msgstr "Keine Ergebnisse anzeigen"
 
-#: catalog/models.py:1873
+#: catalog/models.py:1878
 msgid "Configurable"
 msgstr "Konfigurierbar"
 
-#: catalog/models.py:1874 catalog/models.py:2062 customer/models.py:105
+#: catalog/models.py:1879 catalog/models.py:2067 customer/models.py:105
 #: discounts/models.py:43 templates/manage/portlets/portlets_inline.html:37
 #: templates/manage/voucher/vouchers_inline.html:70
 msgid "Type"
 msgstr "Typ"
 
-#: catalog/models.py:1876
+#: catalog/models.py:1881
 msgid "Display price"
 msgstr "Price anzeigen"
 
-#: catalog/models.py:1877
+#: catalog/models.py:1882
 #: templates/manage/payment/payment_method_prices.html:9
 #: templates/manage/shipping_methods/shipping_method_prices.html:9
 msgid "Add price"
 msgstr "Preis hinzufügen"
 
-#: catalog/models.py:1880 catalog/models.py:2209
+#: catalog/models.py:1885 catalog/models.py:2214
 msgid "Min"
 msgstr "Min"
 
-#: catalog/models.py:1881 catalog/models.py:2210
+#: catalog/models.py:1886 catalog/models.py:2215
 msgid "Max"
 msgstr "Max"
 
-#: catalog/models.py:1882 catalog/models.py:1888
+#: catalog/models.py:1887 catalog/models.py:1893
 msgid "Step"
 msgstr "Schritt"
 
-#: catalog/models.py:1883
+#: catalog/models.py:1888
 msgid "Decimal places"
 msgstr "Dezimalstellen"
 
-#: catalog/models.py:1885
+#: catalog/models.py:1890
 msgid "Required"
 msgstr "Erforderlich"
 
-#: catalog/models.py:1887 templates/manage/properties/step_inline.html:2
+#: catalog/models.py:1892 templates/manage/properties/step_inline.html:2
 msgid "Step type"
 msgstr "Schritttyp"
 
-#: catalog/models.py:1893 templates/manage/manage_base.html:91
+#: catalog/models.py:1898 templates/manage/manage_base.html:91
 #: templates/manage/manage_base.html:93
 #: templates/manage/product/product.html:111
 #: templates/manage/properties/no_properties.html:11
 msgid "Properties"
 msgstr "Eigenschaften"
 
-#: catalog/models.py:2060 discounts/models.py:42 manage/voucher/forms.py:40
+#: catalog/models.py:2065 discounts/models.py:42 manage/voucher/forms.py:40
 #: templates/manage/voucher/vouchers_inline.html:73
 msgid "Value"
 msgstr "Wert"
 
-#: catalog/models.py:2061
+#: catalog/models.py:2066
 msgid "Value as float"
 msgstr "Wert als Dezimalzahl"
 
-#: catalog/models.py:2103 catalog/models.py:2145
+#: catalog/models.py:2108 catalog/models.py:2150
 #: criteria/models/criteria_objects.py:20
 msgid "Content type"
 msgstr "Inhaltstyp"
 
-#: catalog/models.py:2104 catalog/models.py:2146
+#: catalog/models.py:2109 catalog/models.py:2151
 #: criteria/models/criteria_objects.py:17
 #: criteria/models/criteria_objects.py:21
 msgid "Content id"
 msgstr "Inhalts ID"
 
-#: catalog/models.py:2184
+#: catalog/models.py:2189
 msgid "Display files"
 msgstr "Dateien anzeigen"
 
-#: catalog/models.py:2185 templates/manage/manage_base.html:98
+#: catalog/models.py:2190 templates/manage/manage_base.html:98
 msgid "HTML"
 msgstr "HTML"
 
-#: catalog/models.py:2186 templates/manage/static_block/files.html:2
+#: catalog/models.py:2191 templates/manage/static_block/files.html:2
 #: templates/manage/static_block/static_block.html:42
 msgid "Files"
 msgstr "Dateien"
 
 #: catalog/settings.py:19 templates/manage/manage_base.html:176
 #: templates/manage/customer/customer_inline.html:30
+#: templates/manage/order/orders_inline.html:48
 #: templates/manage/product/data.html:227
-#: templates/manage/product/data.html:297
+#: templates/manage/product/data.html:298
 #: templates/manage/product/product_filters_inline.html:42
 #: templates/manage/product/product_filters_inline.html:49
 #: templates/manage/product/stock.html:206
 #: templates/manage/reviews/review_inline.html:25
 #: templates/manage/reviews/review_inline.html:70
 #: templates/manage/reviews/reviews_filters_inline.html:75
-#: templates/manage/reviews/reviews_inline.html:89
-#: templates/manage/reviews/reviews_inline.html:98
+#: templates/manage/reviews/reviews_inline.html:87
+#: templates/manage/reviews/reviews_inline.html:96
 msgid "Yes"
 msgstr "Ja"
 
 #: catalog/settings.py:20 templates/manage/manage_base.html:177
 #: templates/manage/customer/customer_inline.html:32
+#: templates/manage/order/orders_inline.html:50
 #: templates/manage/product/data.html:229
-#: templates/manage/product/data.html:299
+#: templates/manage/product/data.html:300
 #: templates/manage/product/product_filters_inline.html:43
 #: templates/manage/product/product_filters_inline.html:50
 #: templates/manage/product/stock.html:208
 #: templates/manage/reviews/review_inline.html:27
 #: templates/manage/reviews/review_inline.html:72
 #: templates/manage/reviews/reviews_filters_inline.html:76
-#: templates/manage/reviews/reviews_inline.html:92
-#: templates/manage/reviews/reviews_inline.html:101
+#: templates/manage/reviews/reviews_inline.html:90
+#: templates/manage/reviews/reviews_inline.html:99
 msgid "No"
 msgstr "Nein"
 
 msgid "Category with subcategories"
 msgstr "Kategorie mit Unterkategorien"
 
-#: catalog/views.py:56 catalog/views.py:170
+#: catalog/views.py:57 catalog/views.py:171
 msgid "The product has been changed according to your selection."
 msgstr "Das Produkt wurde gemäß Ihrer Auswahl geändert."
 
-#: catalog/views.py:143
+#: catalog/views.py:144
 msgid "Price has been changed according to your selection."
 msgstr "Der Preis wurde gemäß Ihrer Auswahl geändert."
 
-#: catalog/views.py:167 catalog/views.py:622
+#: catalog/views.py:168 catalog/views.py:611
 msgid "The choosen combination of properties is not deliverable."
 msgstr "Die gewählte Kombination von Eigenschaften ist nicht lieferbar"
 
 #: templates/manage/customer/customers_inline.html:28
 #: templates/manage/marketing/rating_mails.html:51
 #: templates/manage/reviews/review_inline.html:54
-#: templates/manage/reviews/reviews_inline.html:32
+#: templates/manage/reviews/reviews_inline.html:30
 msgid "E-Mail"
 msgstr "E-Mail"
 
 #: templates/manage/order/order_inline.html:35
 #: templates/manage/order/orders_filter.html:12
 #: templates/manage/order/orders_filters_inline.html:12
-#: templates/manage/order/orders_inline.html:15
+#: templates/manage/order/orders_inline.html:19
 msgid "State"
 msgstr "Status"
 
 msgid "Owner"
 msgstr "Eigentümer"
 
-#: customer/models.py:107 templates/manage/order/orders_inline.html:6
+#: customer/models.py:107 templates/manage/order/orders_inline.html:10
 #: templates/manage/voucher/vouchers_inline.html:67
 msgid "Number"
 msgstr "Nummer"
 msgstr "Gutschein MwSt."
 
 #: order/models.py:102 templates/manage/customer/customer_inline.html:134
-#: templates/manage/order/orders_inline.html:21
+#: templates/manage/order/orders_inline.html:25
 msgid "Message"
 msgstr "Nachricht"
 
 #: templates/manage/customer/customers_inline.html:10
 #: templates/manage/marketing/rating_mails.html:45
 #: templates/manage/reviews/review_inline.html:13
-#: templates/manage/reviews/reviews_inline.html:14
+#: templates/manage/reviews/reviews_inline.html:12
 msgid "ID"
 msgstr "ID"
 
 #: templates/manage/marketing/rating_mails.html:82
 #: templates/manage/order/order_inline.html:22
 #: templates/manage/order/order_inline.html:38
-#: templates/manage/order/orders_inline.html:32
+#: templates/manage/order/orders_inline.html:35
 msgid "DATETIME_FORMAT"
 msgstr ""
 
 msgstr "Keine"
 
 #: templates/manage/category/data.html:80
-#: templates/manage/product/data.html:369
+#: templates/manage/product/data.html:371
 msgid "Appearance"
 msgstr "Aussehen"
 
 #: templates/manage/category/data.html:114
 #: templates/manage/pages/data_tab.html:10
-#: templates/manage/product/data.html:409
+#: templates/manage/product/data.html:411
 #: templates/manage/static_block/static_block.html:55
 msgid "Save data"
 msgstr "Daten speichern"
 
 #: templates/manage/marketing/rating_mails.html:54
 #: templates/manage/order/order_inline.html:19
-#: templates/manage/order/orders_inline.html:9
+#: templates/manage/order/orders_inline.html:13
 msgid "Date"
 msgstr "Datum"
 
 msgid "Paypal Transaction ID"
 msgstr "PayPal Transaktions-ID"
 
-#: templates/manage/order/orders_inline.html:55
-msgid "There are no orders"
-msgstr "Es gibt keine Bestellungen"
+#: templates/manage/order/orders_inline.html:5
+msgid "No orders found."
+msgstr "Es wurden keine Bestellungen gefunden."
 
 #: templates/manage/order/selectable_orders_inline.html:63
 msgid "N/A"
 #: templates/manage/product/product_filters_inline.html:18
 #: templates/manage/product/products_inline.html:31
 msgid "Sub type"
-msgstr "Unterart"
+msgstr "Typ"
 
 #: templates/manage/product/product_filters_inline.html:64
 msgid "Fiter products"
 msgstr "Bewertung"
 
 #: templates/manage/reviews/review_inline.html:88
-#: templates/manage/reviews/reviews_inline.html:44
+#: templates/manage/reviews/reviews_inline.html:42
 msgid "Score"
 msgstr "Wert"
 
 #: templates/manage/reviews/review_inline.html:98
-#: templates/manage/reviews/reviews_inline.html:48
+#: templates/manage/reviews/reviews_inline.html:46
 msgid "Comment"
 msgstr "Kommentar"
 
-#: templates/manage/reviews/reviews_inline.html:6
+#: templates/manage/reviews/reviews_inline.html:5
 msgid "There are no reviews yet."
 msgstr "Es sind noch keine Bewertungen vorhanden."
 
 msgid "Default Values"
 msgstr "Standardwerte"
 
-#: templates/manage/shop/default_values_tab.html:27
-msgid "Format"
-msgstr "Format"
-
 #: templates/manage/shop/default_values_tab.html:131
 msgid "Localization"
 msgstr "Lokalisierung"

lfs/locale/pl/LC_MESSAGES/django.mo

Binary file modified.

lfs/locale/pl/LC_MESSAGES/django.po

 msgstr ""
 "Project-Id-Version: LFS\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-17 20:52+0100\n"
-"PO-Revision-Date: 2012-03-17 20:55+0100\n"
+"POT-Creation-Date: 2012-03-24 17:28+0100\n"
+"PO-Revision-Date: 2012-03-24 17:33+0100\n"
 "Last-Translator: Maciej Wiśniowski <pigletto@gmail.com>\n"
 "Language-Team: Jarek Miazga <jaroslaw.miazga@gmail.com>\n"
 "Language: \n"
 msgid "Zip Code"
 msgstr "Kod pocztowy"
 
+#: other_translations.py:10
+msgid "Last Order Number"
+msgstr "Numer ostatniego zamówienia"
+
+#: other_translations.py:11
+#: templates/manage/shop/default_values_tab.html:27
+msgid "Format"
+msgstr "Format"
+
 #: cart/models.py:48
 #: criteria/models/criteria.py:597
 #: order/models.py:48
 #: templates/manage/cart/carts_inline.html:10
 #: templates/manage/customer/customer_inline.html:125
 #: templates/manage/reviews/review_inline.html:33
-#: templates/manage/reviews/reviews_inline.html:15
+#: templates/manage/reviews/reviews_inline.html:20
 msgid "Creation date"
 msgstr "Data utworzenia"
 
 msgstr "Koszyk"
 
 #: cart/models.py:236
-#: catalog/models.py:1736
-#: catalog/models.py:1990
-#: catalog/models.py:2056
-#: catalog/models.py:2394
+#: catalog/models.py:1741
+#: catalog/models.py:1996
+#: catalog/models.py:2062
+#: catalog/models.py:2400
 #: marketing/models.py:13
 #: marketing/models.py:26
 #: marketing/models.py:33
 #: templates/manage/cart/cart_inline.html:100
 #: templates/manage/reviews/review_inline.html:78
-#: templates/manage/reviews/reviews_inline.html:33
+#: templates/manage/reviews/reviews_inline.html:38
 msgid "Product"
 msgstr "Produkt"
 
 #: cart/models.py:237
-#: catalog/models.py:1739
+#: catalog/models.py:1744
 #: templates/manage/product/accessories_inline.html:116
 msgid "Quantity"
 msgstr "Ilość"
 
-#: cart/models.py:393
+#: cart/models.py:395
 msgid "Cart item"
 msgstr "Towar w koszyku"
 
-#: cart/models.py:394
-#: catalog/models.py:1943
-#: catalog/models.py:1968
-#: catalog/models.py:1991
-#: catalog/models.py:2016
-#: catalog/models.py:2058
+#: cart/models.py:396
+#: catalog/models.py:1949
+#: catalog/models.py:1974
+#: catalog/models.py:1997
+#: catalog/models.py:2022
+#: catalog/models.py:2064
 #: order/models.py:211
 #: templates/manage/properties/property.html:32
 msgid "Property"
 
 #: catalog/models.py:160
 #: catalog/models.py:569
-#: catalog/models.py:1768
-#: catalog/models.py:1862
-#: catalog/models.py:2018
-#: catalog/models.py:2182
+#: catalog/models.py:1774
+#: catalog/models.py:1868
+#: catalog/models.py:2024
+#: catalog/models.py:2188
 #: core/models.py:19
 #: core/models.py:38
 #: core/models.py:154
 #: templates/manage/order/order_inline.html:162
 #: templates/manage/order/orders_filter.html:11
 #: templates/manage/order/orders_filters_inline.html:11
-#: templates/manage/order/orders_inline.html:12
+#: templates/manage/order/orders_inline.html:18
 #: templates/manage/product/accessories_inline.html:48
 #: templates/manage/product/accessories_inline.html:107
 #: templates/manage/product/products_inline.html:17
 #: templates/manage/product/variants.html:107
 #: templates/manage/product/variants.html:174
 #: templates/manage/properties/options_inline.html:13
-#: templates/manage/properties/pg_products_inline.html:45
-#: templates/manage/properties/pg_products_inline.html:105
-#: templates/manage/properties/properties_inline.html:18
-#: templates/manage/properties/properties_inline.html:68
+#: templates/manage/property_groups/products_inline.html:45
+#: templates/manage/property_groups/products_inline.html:105
+#: templates/manage/property_groups/properties_inline.html:18
+#: templates/manage/property_groups/properties_inline.html:68
 #: templates/manage/reviews/review_filters_inline.html:11
 #: templates/manage/reviews/review_inline.html:41
 #: templates/manage/reviews/reviews_filters_inline.html:9
-#: templates/manage/reviews/reviews_inline.html:21
+#: templates/manage/reviews/reviews_inline.html:26
 msgid "Name"
 msgstr "Imię"
 
 
 #: catalog/models.py:162
 #: catalog/models.py:636
-#: catalog/models.py:2057
+#: catalog/models.py:2063
 #: core/models.py:80
 msgid "Parent"
 msgstr "Rodzic"
 msgstr "Pokaż wszystkie produkty"
 
 #: catalog/models.py:168
-#: catalog/models.py:1769
-#: catalog/models.py:1865
+#: catalog/models.py:1775
+#: catalog/models.py:1871
 #: catalog/settings.py:70
 #: export/models.py:18
 #: templates/manage/manage_base.html:87
 #: templates/manage/category/manage_category.html:44
 #: templates/manage/export/export.html:36
 #: templates/manage/export/export.html:44
-#: templates/manage/manufacturer/manufacturer.html:35
-#: templates/manage/manufacturer/manufacturer.html:43
+#: templates/manage/manufacturers/manufacturer.html:29
+#: templates/manage/manufacturers/manufacturer.html:35
 #: templates/manage/marketing/featured_inline.html:31
 #: templates/manage/marketing/topseller_inline.html:31
+#: templates/manage/product/no_products.html:11
 #: templates/manage/product/products.html:21
-#: templates/manage/properties/pg_products.html:4
-#: templates/manage/properties/pg_products_inline.html:32
-#: templates/manage/properties/property_group.html:32
+#: templates/manage/property_groups/products.html:4
+#: templates/manage/property_groups/products_inline.html:32
+#: templates/manage/property_groups/property_group.html:32
 msgid "Products"
 msgstr "Produkty"
 
 
 #: catalog/models.py:170
 #: catalog/models.py:580
-#: catalog/models.py:2211
-#: catalog/models.py:2392
+#: catalog/models.py:2217
+#: catalog/models.py:2398
 #: core/models.py:159
 #: customer_tax/models.py:24
 #: payment/models.py:74
 msgstr "Opis"
 
 #: catalog/models.py:171
-#: catalog/models.py:2107
+#: catalog/models.py:2113
 #: core/models.py:160
 #: payment/models.py:76
 #: shipping/models.py:74
 msgstr "Grafika"
 
 #: catalog/models.py:172
-#: catalog/models.py:1738
-#: catalog/models.py:1866
-#: catalog/models.py:1969
-#: catalog/models.py:1992
-#: catalog/models.py:2020
-#: catalog/models.py:2108
-#: catalog/models.py:2186
-#: catalog/models.py:2395
+#: catalog/models.py:1743
+#: catalog/models.py:1872
+#: catalog/models.py:1975
+#: catalog/models.py:1998
+#: catalog/models.py:2026
+#: catalog/models.py:2114
+#: catalog/models.py:2192
+#: catalog/models.py:2401
 #: core/models.py:79
 #: core/management/commands/lfs_migrate.py:123
 #: criteria/models/criteria_objects.py:24
 #: templates/manage/product/attachments.html:24
 #: templates/manage/product/images.html:40
 #: templates/manage/properties/options_inline.html:10
-#: templates/manage/properties/properties_inline.html:65
+#: templates/manage/property_groups/properties_inline.html:65
 #: templates/manage/static_block/files.html:20
 msgid "Position"
 msgstr "Pozycja"
 #: templates/manage/product/related_products_inline.html:50
 #: templates/manage/product/related_products_inline.html:110
 #: templates/manage/product/variants.html:170
-#: templates/manage/properties/pg_products_inline.html:48
-#: templates/manage/properties/pg_products_inline.html:108
+#: templates/manage/property_groups/products_inline.html:48
+#: templates/manage/property_groups/products_inline.html:108
 msgid "SKU"
 msgstr "Numer katalogowy"
 
 
 #: catalog/models.py:572
 #: catalog/models.py:576
-#: catalog/models.py:1874
-#: catalog/models.py:2019
+#: catalog/models.py:1880
+#: catalog/models.py:2025
 #: criteria/models/criteria.py:52
 #: order/models.py:56
 #: payment/models.py:78
 #: templates/manage/customer/customer_inline.html:176
 #: templates/manage/marketing/rating_mails.html:60
 #: templates/manage/order/order_inline.html:170
-#: templates/manage/order/orders_inline.html:18
+#: templates/manage/order/orders_inline.html:24
 #: templates/manage/payment/payment_method_prices.html:27
 #: templates/manage/product/products_inline.html:34
 #: templates/manage/product/variants.html:110
 #: templates/manage/product/variants.html:185
 #: templates/manage/properties/options_inline.html:16
-#: templates/manage/shipping/shipping_method_prices.html:27
+#: templates/manage/shipping_methods/shipping_method_prices.html:27
 msgid "Price"
 msgstr "Cena"
 
 #: templates/manage/product/related_products_inline.html:53
 #: templates/manage/product/related_products_inline.html:113
 #: templates/manage/product/variants.html:163
-#: templates/manage/properties/pg_products_inline.html:51
-#: templates/manage/properties/pg_products_inline.html:111
+#: templates/manage/property_groups/products_inline.html:51
+#: templates/manage/property_groups/products_inline.html:111
 #: templates/manage/reviews/review.html:29
 #: templates/manage/reviews/review_filters_inline.html:12
 #: templates/manage/reviews/review_inline.html:21
 #: templates/manage/reviews/reviews_filters_inline.html:10
-#: templates/manage/reviews/reviews_inline.html:46
+#: templates/manage/reviews/reviews_inline.html:51
 #: templates/manage/voucher/vouchers_inline.html:88
 msgid "Active"
 msgstr "Aktywny"
 
 #: catalog/models.py:623
 #: discounts/models.py:44
-#: manage/views/voucher.py:60
+#: manage/voucher/forms.py:45
 #: order/models.py:57
 #: order/models.py:137
 #: payment/models.py:77
 msgid "Type of quantity field"
 msgstr "Typ pola z ilością"
 
-#: catalog/models.py:1737
+#: catalog/models.py:1742
 msgid "Accessory"
 msgstr "Akcesoria"
 
-#: catalog/models.py:1863
-#: catalog/models.py:2106
-#: catalog/models.py:2391
+#: catalog/models.py:1869
+#: catalog/models.py:2112
+#: catalog/models.py:2397
 #: core/models.py:76
 #: page/models.py:16
 #: templates/manage/portlets/portlets_inline.html:40
 msgid "Title"
 msgstr "Tytuł"
 
-#: catalog/models.py:1864
-#: catalog/models.py:1967
+#: catalog/models.py:1870
+#: catalog/models.py:1973
 #: core/models.py:78
 msgid "Group"
 msgstr "Grupa"
 
-#: catalog/models.py:1867
-#: catalog/models.py:2210
+#: catalog/models.py:1873
+#: catalog/models.py:2216
 msgid "Unit"
 msgstr "Jednostka ilości"
 
-#: catalog/models.py:1868
+#: catalog/models.py:1874
 msgid "Display on product"
 msgstr "Wyświetlaj przy produkcie"
 
-#: catalog/models.py:1869
+#: catalog/models.py:1875
 msgid "Local"
 msgstr "Lokalna"
 
-#: catalog/models.py:1870
+#: catalog/models.py:1876
 msgid "Filterable"
 msgstr "Widoczny w filtrze"
 
-#: catalog/models.py:1871
+#: catalog/models.py:1877
 msgid "Display no results"
 msgstr "Wyświetlaj gdy brak wyników"
 
-#: catalog/models.py:1872
+#: catalog/models.py:1878
 msgid "Configurable"
 msgstr "Konfigurowalny"
 
-#: catalog/models.py:1873
-#: catalog/models.py:2061
+#: catalog/models.py:1879
+#: catalog/models.py:2067
 #: customer/models.py:105
 #: discounts/models.py:43
 #: templates/manage/portlets/portlets_inline.html:37
 msgid "Type"
 msgstr "Typ"
 
-#: catalog/models.py:1875
+#: catalog/models.py:1881
 msgid "Display price"
 msgstr "Wyświetlaj cenę"
 
-#: catalog/models.py:1876
+#: catalog/models.py:1882
 #: templates/manage/payment/payment_method_prices.html:9
-#: templates/manage/shipping/shipping_method_prices.html:9
+#: templates/manage/shipping_methods/shipping_method_prices.html:9
 msgid "Add price"
 msgstr "Dodaj cenę"
 
-#: catalog/models.py:1879
-#: catalog/models.py:2208
+#: catalog/models.py:1885
+#: catalog/models.py:2214
 msgid "Min"
 msgstr "Min"
 
-#: catalog/models.py:1880
-#: catalog/models.py:2209
+#: catalog/models.py:1886
+#: catalog/models.py:2215
 msgid "Max"
 msgstr "Max"
 
-#: catalog/models.py:1881
 #: catalog/models.py:1887
+#: catalog/models.py:1893
 msgid "Step"
 msgstr "Krok"
 
-#: catalog/models.py:1882
+#: catalog/models.py:1888
 msgid "Decimal places"
 msgstr "Miejsca dziesiętne"
 
-#: catalog/models.py:1884
+#: catalog/models.py:1890
 msgid "Required"
 msgstr "Wymagane"
 
-#: catalog/models.py:1886
+#: catalog/models.py:1892
 #: templates/manage/properties/step_inline.html:2
 msgid "Step type"
 msgstr "Rodzaj kroku"
 
-#: catalog/models.py:1892
+#: catalog/models.py:1898
 #: templates/manage/manage_base.html:91
 #: templates/manage/manage_base.html:93
 #: templates/manage/product/product.html:111
-#: templates/manage/properties/properties_inline.html:6
+#: templates/manage/properties/no_properties.html:11
 #: templates/manage/properties/property.html:7
-#: templates/manage/properties/property_group.html:33
+#: templates/manage/property_groups/properties_inline.html:6
+#: templates/manage/property_groups/property_group.html:33
 msgid "Properties"
 msgstr "Cechy"
 
-#: catalog/models.py:2059
+#: catalog/models.py:2065
 #: discounts/models.py:42
-#: manage/views/voucher.py:55
+#: manage/voucher/forms.py:40
 #: templates/manage/voucher/vouchers_inline.html:73
 msgid "Value"
 msgstr "Wartość"
 
-#: catalog/models.py:2060
+#: catalog/models.py:2066
 msgid "Value as float"
 msgstr "Wartość jako liczba zmiennoprzecinkowa"
 
-#: catalog/models.py:2102
-#: catalog/models.py:2144
+#: catalog/models.py:2108
+#: catalog/models.py:2150
 #: criteria/models/criteria_objects.py:20
 msgid "Content type"
 msgstr "Typ treści"
 
-#: catalog/models.py:2103
-#: catalog/models.py:2145
+#: catalog/models.py:2109
+#: catalog/models.py:2151
 #: criteria/models/criteria_objects.py:17
 #: criteria/models/criteria_objects.py:21
 msgid "Content id"
 msgstr "Id treści"
 
-#: catalog/models.py:2183
+#: catalog/models.py:2189
 msgid "Display files"
 msgstr "Wyświetlaj pliki"
 
-#: catalog/models.py:2184
+#: catalog/models.py:2190
 #: templates/manage/manage_base.html:98
 msgid "HTML"
 msgstr ""
 
-#: catalog/models.py:2185
+#: catalog/models.py:2191
 #: templates/manage/static_block/files.html:2
 #: templates/manage/static_block/static_block.html:42
 msgid "Files"
 #: catalog/settings.py:19
 #: templates/manage/manage_base.html:176
 #: templates/manage/customer/customer_inline.html:30
+#: templates/manage/order/orders_inline.html:50
 #: templates/manage/product/data.html:227
-#: templates/manage/product/data.html:297
+#: templates/manage/product/data.html:298
 #: templates/manage/product/product_filters_inline.html:42
 #: templates/manage/product/product_filters_inline.html:49
 #: templates/manage/product/stock.html:206
 #: templates/manage/reviews/review_inline.html:25
 #: templates/manage/reviews/review_inline.html:70
 #: templates/manage/reviews/reviews_filters_inline.html:75
-#: templates/manage/reviews/reviews_inline.html:84
-#: templates/manage/reviews/reviews_inline.html:93
+#: templates/manage/reviews/reviews_inline.html:89
+#: templates/manage/reviews/reviews_inline.html:98
 msgid "Yes"
 msgstr "Tak"
 
 #: catalog/settings.py:20
 #: templates/manage/manage_base.html:177
 #: templates/manage/customer/customer_inline.html:32
+#: templates/manage/order/orders_inline.html:52
 #: templates/manage/product/data.html:229
-#: templates/manage/product/data.html:299
+#: templates/manage/product/data.html:300
 #: templates/manage/product/product_filters_inline.html:43
 #: templates/manage/product/product_filters_inline.html:50
 #: templates/manage/product/stock.html:208
 #: templates/manage/reviews/review_inline.html:27
 #: templates/manage/reviews/review_inline.html:72
 #: templates/manage/reviews/reviews_filters_inline.html:76
-#: templates/manage/reviews/reviews_inline.html:87
-#: templates/manage/reviews/reviews_inline.html:96
+#: templates/manage/reviews/reviews_inline.html:92
+#: templates/manage/reviews/reviews_inline.html:101
 msgid "No"
 msgstr "Nie"
 
 #: portlet/templatetags/lfs_portlets_tags.py:107
 #: templates/manage/manage_base.html:86
 #: templates/manage/category/manage_categories_portlet.html:2
+#: templates/manage/category/no_categories.html:11
 #: templates/manage/product/categories.html:3
 #: templates/manage/product/product.html:96
 msgid "Categories"
 msgid "Category with subcategories"
 msgstr "Kategoria z podkategoriami"
 
-#: catalog/views.py:56
-#: catalog/views.py:170
+#: catalog/views.py:57
+#: catalog/views.py:171
 msgid "The product has been changed according to your selection."
 msgstr "Produkt został zmieniony zgodnie z Twoim wyborem."
 
-#: catalog/views.py:143
+#: catalog/views.py:144
 msgid "Price has been changed according to your selection."
 msgstr "Cena została zmieniona zgodnie z Twoim wyborem."
 
-#: catalog/views.py:167
-#: catalog/views.py:622
+#: catalog/views.py:168
+#: catalog/views.py:611
 msgid "The choosen combination of properties is not deliverable."
 msgstr "Wybrana kombinacja cech jest niemozliwa do dostarczenia."
 
 msgstr "Twoja wiadomość dla nas"
 
 #: checkout/forms.py:61
-#: manage/views/product/product.py:96
-#: manage/views/product/product.py:128
-#: manage/views/product/product.py:156
+#: manage/product/product.py:96
+#: manage/product/product.py:128
+#: manage/product/product.py:156
 msgid "This field is required."
 msgstr "To pole jest wymagane."
 
 #: templates/manage/customer/customers_inline.html:28
 #: templates/manage/marketing/rating_mails.html:51
 #: templates/manage/reviews/review_inline.html:54
-#: templates/manage/reviews/reviews_inline.html:27
+#: templates/manage/reviews/reviews_inline.html:32
 msgid "E-Mail"
 msgstr "E-mail"
 
 msgstr "Metoda płatności"
 
 #: criteria/models/criteria.py:481
-#: templates/manage/shipping/shipping_methods.html:4
+#: templates/manage/shipping_methods/shipping_methods.html:4
 msgid "Shipping methods"
 msgstr "Metody wysyłki"
 
 #: templates/manage/order/order_inline.html:35
 #: templates/manage/order/orders_filter.html:12
 #: templates/manage/order/orders_filters_inline.html:12
-#: templates/manage/order/orders_inline.html:15
+#: templates/manage/order/orders_inline.html:21
 msgid "State"
 msgstr "Stan"
 
 msgstr "Właściciel"
 
 #: customer/models.py:107
-#: templates/manage/order/orders_inline.html:6
+#: templates/manage/order/orders_inline.html:12
 #: templates/manage/voucher/vouchers_inline.html:67
 msgid "Number"
 msgstr "Numer"
 msgstr "Akcja została zapisana."
 
 #: manage/actions/views.py:98
+#: manage/categories/category.py:129
+#: manage/categories/seo.py:42
+#: manage/categories/view.py:46
+#: manage/product/product.py:224
+#: manage/product/product.py:440
 #: manage/views/shop.py:140
 #: manage/views/shop.py:163
 #: manage/views/shop.py:186
 #: manage/views/shop.py:212
-#: manage/views/categories/category.py:129
-#: manage/views/categories/seo.py:42
-#: manage/views/categories/view.py:45
-#: manage/views/product/product.py:217
-#: manage/views/product/product.py:433
 msgid "Please correct the indicated errors."
 msgstr "Proszę poprawić wskazane błędy."
 
 msgid "Action has been added."
 msgstr "Akcja została dodana."
 
-#: manage/actions/views.py:146
+#: manage/actions/views.py:147
 msgid "Action has been deleted."
 msgstr "Akcja została usunięta."
 
-#: manage/actions/views.py:166
+#: manage/actions/views.py:167
 msgid "The actions have been sorted."
 msgstr "Akcje zostały posortowane."
 
+#: manage/categories/category.py:83
+#, python-format
+msgid "Do you really want to delete the category <b>'%(name)s'</b> and all its sub categories?"
+msgstr "Czy na pewno chcesz usunąć Kategorię <b>'%(name)s'</b> i wszystkie jej podkategorie?"
+
+#: manage/categories/category.py:127
+msgid "Category data have been saved."
+msgstr "Dane Kategorii zostały zapisane."
+
+#: manage/categories/category.py:224
+msgid "The categories have been sorted."
+msgstr "Kategorie zostały posortowane."
+
+#: manage/categories/products.py:206
+msgid "Selected products have been added to category."
+msgstr "Wybrane Produkty zostały dodane do Kategorii."
+
+#: manage/categories/products.py:235
+msgid "Selected products have been removed from category."
+msgstr "Wybrane Produkty zostały usunięte z Kategorii."
+
+#: manage/categories/seo.py:40
+#: manage/pages/views.py:154
+msgid "SEO data has been saved."
+msgstr "Dane SEO zostały zapisane"
+
+#: manage/categories/view.py:44
+msgid "View data has been saved."
+msgstr "Dane widoku zostały zapisane."
+
 #: manage/customer_tax/forms.py:25
 #, python-format
 msgid "There is already a customer tax with country %(country)s, see %(customer_tax)s %% "
 msgid "Customer tax has been deleted."
 msgstr "Stawka podatku została usunięta."
 
+#: manage/delivery_times/views.py:44
+#: manage/views/delivery_times.py:58
+msgid "Delivery time has been saved."
+msgstr "Czas dostawy został zapisany."
+
+#: manage/delivery_times/views.py:75
+#: manage/views/delivery_times.py:82
+msgid "Delivery time has been added."
+msgstr "Czas dostawy został dodany."
+
+#: manage/delivery_times/views.py:108
+#: manage/views/delivery_times.py:115
+msgid "Delivery time has been deleted."
+msgstr "Czas dostawy został usunięty."
+
+#: manage/discounts/views.py:127
+msgid "Discount method has been added."
+msgstr "Rodzaj rabatu został dodany."
+
+#: manage/discounts/views.py:151
+#: manage/shipping_methods/views.py:212
+#: manage/shipping_methods/views.py:234
+#: manage/views/payment.py:223
+#: manage/views/payment.py:245
+msgid "Modifications have been changed."
+msgstr "Zmiany zostały zapisane."
+
+#: manage/discounts/views.py:172
+msgid "Discount data has been saved."
+msgstr "Dane rabatu zostały zapisane."
+
+#: manage/discounts/views.py:190
+msgid "Discount has been deleted."
+msgstr "Rabat został usunięty."
+
 #: manage/images/views.py:104
 msgid "inline"
 msgstr "w linii"
 msgid "right"
 msgstr "do prawej"
 
+#: manage/manufacturers/views.py:248
+msgid "Manufacturer data has been saved."
+msgstr "Dane Producenta zostały zapisane."
+
+#: manage/pages/views.py:133
+msgid "Data has been saved."
+msgstr "Dane zostały zapisane."
+
+#: manage/pages/views.py:172
+msgid "Page has been added."
+msgstr "Strona została dodana."
+
+#: manage/pages/views.py:194
+msgid "Page has been deleted."
+msgstr "Strona została usunięta."
+
+#: manage/pages/views.py:215
+msgid "The pages have been sorted."
+msgstr "Strony zostały posortowane."
+
+#: manage/product/accessories.py:162
+msgid "Accessories have been added."
+msgstr "Akcesoria zostały dodane."
+
+#: manage/product/accessories.py:194
+msgid "Accessories have been removed."
+msgstr "Akcesoria zostały usunięte."
+
+#: manage/product/accessories.py:224
+#: manage/product/accessories.py:244
+msgid "Accessories have been updated."
+msgstr "Akcesoria zostały uaktualnione."
+
+#: manage/product/attachments.py:36
+msgid "Attachments have been added."
+msgstr "Załączniki zostały dodane."
+
+#: manage/product/attachments.py:68
+#: manage/product/attachments.py:80
+msgid "Attachment has been updated."
+msgstr "Załącznik został uaktualniony."
+
+#: manage/product/attachments.py:71
+msgid "Attachment has been deleted."
+msgstr "Załącznik został usunięty."
+
+#: manage/product/categories.py:92
+msgid "Categories have been saved."
+msgstr "Kategorie zostały zapisane."
+
+#: manage/product/images.py:40
+msgid "Images has been added."
+msgstr "Obrazy zostały dodane."
+
+#: manage/product/images.py:80
+msgid "Images has been deleted."
+msgstr "Obrazy zostały usunięte."
+
+#: manage/product/images.py:90
+msgid "Images has been updated."
+msgstr "Obrazy zostały uaktualnione."
+
+#: manage/product/images.py:188
+msgid "Active images has been updated."
+msgstr "Aktywne obrazy zostały uaktualnione."
+
+#: manage/product/product.py:222
+msgid "Product stock data has been saved."
+msgstr "Dane magazynowe produktu zostały zapisane."
+
+#: manage/product/product.py:392
+msgid "Sub type has been changed."
+msgstr "Podtyp został zmieniony."
+
+#: manage/product/product.py:438
+msgid "Product data has been saved."
+msgstr "Dane Produktu zostały zapisane."
+
+#: manage/product/product.py:496
+msgid "Product filters have been reset"
+msgstr "Filtry produktu zostały zresetowane"
+
+#: manage/product/product.py:523
+msgid "Products have been deleted."
+msgstr "Produkty zostały usunięte."
+
+#: manage/product/product.py:565
+msgid "Products have been saved"
+msgstr "Produkty zostały zapisane"
+
+#: manage/product/product.py:643
+msgid "Product filters have been set"
+msgstr "Filtry Produktu zostały ustawione"
+
+#: manage/product/related_products.py:161
+msgid "Related products have been added."
+msgstr "Powiązane produkty zostały dodane."
+
+#: manage/product/related_products.py:189
+msgid "Related products have been removed."
+msgstr "Powiązane produkty zostały usunięte."
+
+#: manage/product/related_products.py:210
+msgid "Related products have been updated."
+msgstr "Powiązane produkty zostały uaktualnione."
+
+#: manage/product/seo.py:48
+msgid "Seo data has been saved."
+msgstr "Dane SEO zostały zapisane."
+
+#: manage/product/variants.py:221
+#: manage/property/views.py:283
+msgid "Property has been added."
+msgstr "Cecha została dodana."
+
+#: manage/product/variants.py:243
+#: manage/product/variants.py:332
+msgid "Property has been deleted."
+msgstr "Cecha została usunięta."
+
+#: manage/product/variants.py:310
+#: manage/property/views.py:329
+msgid "Option has been added."
+msgstr "Opcja została dodana."
+
+#: manage/product/variants.py:393
+#: manage/product/variants.py:395
+msgid "That slug is already in use. Please use another."
+msgstr "Ten adres url jest już używany. Proszę wybrać inny."
+
+#: manage/product/variants.py:417
+msgid "Variants have been added."
+msgstr "Warianty zostały dodane."
+
+#: manage/product/variants.py:441
+msgid "Variants have been deleted."
+msgstr "Warianty zostały usunięte."
+
+#: manage/product/variants.py:455
+msgid "Variants have been saved."
+msgstr "Warianty zostały zapisane."
+
+#: manage/product/variants.py:556
+msgid "Sup type has been saved."
+msgstr "Podtyp został zapisany."
+
+#: manage/product/variants.py:580
+msgid "Category variant has been saved."
+msgstr "Dane wariantu kategorii zostały zapisane."
+
+#: manage/product_taxes/views.py:43
+msgid "Tax has been saved."
+msgstr "Stawka podatku została zapisana."
+
+#: manage/product_taxes/views.py:74
+msgid "Tax has been added."
+msgstr "Stawka podatku została dodana."
+
+#: manage/product_taxes/views.py:102
+msgid "Tax has been deleted."
+msgstr "Stawka podatku została usunięta."
+
+#: manage/property/views.py:56
+msgid "Property type has been saved."
+msgstr "Typ Cechy został zapisany."
+
+#: manage/property/views.py:105
+msgid "Property type has been changed."
+msgstr "Typ Cechy został zmieniony."
+
+#: manage/property/views.py:157
+msgid "Validators have been saved."
+msgstr "Walidatory zostały zapisane."
+
+#: manage/property/views.py:187
+msgid "Step range has been saved."
+msgstr "Zakres kroku został zapisany."
+
+#: manage/property/views.py:206
+msgid "Step type has been saved."
+msgstr "Rodzaj kroku został zapisany."
+
+#: manage/property/views.py:221
+msgid "Step has been added."
+msgstr "Krok został dodany."
+
+#: manage/property/views.py:232
+msgid "Steps have been updated."
+msgstr "Kroki zostały uaktualnione."
+
+#: manage/property/views.py:256
+msgid "The step has been saved."
+msgstr "Krok został zapisany."
+
+#: manage/property/views.py:331
+msgid "Option could not be added."
+msgstr "Opcja nie mogła zostać dodana."
+
+#: manage/property/views.py:350
+msgid "Options have been update."
+msgstr "Opcje zostały uaktualnione."
+
+#: manage/property_groups/views.py:55
+msgid "Property group has been saved."
+msgstr "Grupa Cech została zapisana"
+
+#: manage/property_groups/views.py:107
+msgid "Property group has been added."
+msgstr "Grupa Cech została dodana."
+
+#: manage/property_groups/views.py:129
+msgid "Property group has been deleted."
+msgstr "Grupa Cech została usunięta."
+
+#: manage/property_groups/views.py:148
+msgid "Properties have been assigned."
+msgstr "Cechy zostały przypisane"
+
+#: manage/property_groups/views.py:167
+msgid "Properties have been removed."
+msgstr "Cechy zostały usunięte."
+
+#: manage/property_groups/views.py:170
+msgid "There are no properties to update."
+msgstr "Nie ma żadnych Cech do uaktualnienia."
+
+#: manage/property_groups/views.py:175
+msgid "Properties have been updated."
+msgstr "Cechy zostały uaktualnione"
+
+#: manage/property_groups/views.py:293
+msgid "Products have been assigned."
+msgstr "Produkty zostały przypisane."
+
+#: manage/property_groups/views.py:317
+msgid "Products have been removed."
+msgstr "Produkty zostały usunięte."
+
+#: manage/shipping_methods/views.py:188
+msgid "Shipping method has been added."
+msgstr "Metoda wysyłki została dodana."
+
+#: manage/shipping_methods/views.py:256
+#: manage/views/payment.py:271
+msgid "Price has been added"
+msgstr "Cena została dodana"
+
+#: manage/shipping_methods/views.py:276
+#: manage/views/payment.py:286
+msgid "Prices have been deleted"
+msgstr "Ceny zostały usunięte"
+
+#: manage/shipping_methods/views.py:288
+#: manage/views/payment.py:297
+msgid "Prices have been updated"
+msgstr "Ceny zostały uaktualnione"
+
+#: manage/shipping_methods/views.py:333
+msgid "Shipping method has been saved."
+msgstr "Metoda wysyłki została zapisana."
+
+#: manage/shipping_methods/views.py:358
+msgid "Shipping method has been deleted."
+msgstr "Metoda wysyłki została usunięta."
+
+#: manage/shipping_methods/views.py:379
+msgid "The shipping methods have been sorted."
+msgstr "Metody wysyłki zostały posortowane."
+
+#: manage/static_blocks/views.py:50
+msgid "Static block has been saved."
+msgstr "Blok statyczny został zapisany."
+
+#: manage/static_blocks/views.py:90
+msgid "Files has been deleted."
+msgstr "Plik został usunięty."
+
+#: manage/static_blocks/views.py:100
+msgid "Files has been updated."
+msgstr "Plik został uaktualniony."
+
+#: manage/static_blocks/views.py:147
+msgid "Files has been added."
+msgstr "Pliki zostały dodane."
+
+#: manage/static_blocks/views.py:184
+msgid "Static block has been added."
+msgstr "Blok statyczny został dodany."
+
+#: manage/static_blocks/views.py:224
+msgid "The static blocks have been sorted."
+msgstr "Bloki statyczne zostały posortowane."
+