Skip to content

Commit

Permalink
added app_labels and hexdigest for cache_key to avoid unicode decode …
Browse files Browse the repository at this point in the history
…error when slug contains special characters
  • Loading branch information
pigletto committed May 3, 2015
1 parent 71176b1 commit c7d0fe5
Show file tree
Hide file tree
Showing 14 changed files with 101 additions and 1 deletion.
4 changes: 4 additions & 0 deletions lfs/caching/utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# django imports
import hashlib

from django.db import models
from django.db.models.query import QuerySet
from django.conf import settings
Expand Down Expand Up @@ -45,6 +47,7 @@ def lfs_get_object(klass, *args, **kwargs):
object is found.
"""
cache_key = "%s-%s-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, klass.__name__.lower(), kwargs.values()[0])
cache_key = hashlib.md5(cache_key).hexdigest()

This comment has been minimized.

Copy link
@diefenbach

diefenbach Feb 16, 2017

Owner

This breaks at least tests. Example: test_page_view_2, as the cache invalidation doesn't use the hash. This is most likely to break more things.

object = cache.get(cache_key)
if object is not None:
return object
Expand Down Expand Up @@ -72,6 +75,7 @@ def lfs_get_object_or_404(klass, *args, **kwargs):
object is found.
"""
cache_key = "%s-%s-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, klass.__name__.lower(), kwargs.values()[0])
cache_key = hashlib.md5(cache_key).hexdigest()
object = cache.get(cache_key)
if object is not None:
return object
Expand Down
7 changes: 7 additions & 0 deletions lfs/cart/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,9 @@ def _update_product_amounts(self):
cache_key = "%s-cart-items-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, self.id)
cache.delete(cache_key)

class Meta:
app_label = 'cart'


class CartItem(models.Model):
"""
Expand Down Expand Up @@ -239,6 +242,7 @@ class CartItem(models.Model):

class Meta:
ordering = ['id']
app_label = 'cart'

def __unicode__(self):
return u"Product: %(product)s, Quantity: %(amount)f, Cart: %(cart)s" % {'product': self.product,
Expand Down Expand Up @@ -397,3 +401,6 @@ class CartItemPropertyValue(models.Model):
property = models.ForeignKey(Property, verbose_name=_(u"Property"))
property_group = models.ForeignKey(PropertyGroup, verbose_name=_(u'Property group'), null=True, blank=True)
value = models.CharField("Value", blank=True, max_length=100)

class Meta:
app_label = 'cart'
15 changes: 15 additions & 0 deletions lfs/catalog/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ class Meta:
ordering = ("position", )
verbose_name = _('Category')
verbose_name_plural = _('Categories')
app_label = 'catalog'

def __unicode__(self):
return u"%s (%s)" % (self.name, self.slug)
Expand Down Expand Up @@ -693,6 +694,7 @@ class Product(models.Model):

class Meta:
ordering = ("name", )
app_label = 'catalog'

def __unicode__(self):
return u"%s (%s)" % (self.name, self.slug)
Expand Down Expand Up @@ -2026,6 +2028,7 @@ class ProductAccessories(models.Model):
class Meta:
ordering = ("position", )
verbose_name_plural = "Product accessories"
app_label = 'catalog'

def __unicode__(self):
return u"%s -> %s" % (self.product.name, self.accessory.name)
Expand Down Expand Up @@ -2059,6 +2062,7 @@ class PropertyGroup(models.Model):

class Meta:
ordering = ("position", )
app_label = 'catalog'

def __unicode__(self):
return self.name
Expand Down Expand Up @@ -2182,6 +2186,7 @@ class Property(models.Model):
class Meta:
verbose_name_plural = _(u"Properties")
ordering = ["position"]
app_label = 'catalog'

def __unicode__(self):
return self.name
Expand Down Expand Up @@ -2240,6 +2245,7 @@ class FilterStep(models.Model):

class Meta:
ordering = ["start"]
app_label = 'catalog'

def __unicode__(self):
return u"%s %s" % (self.property.name, self.start)
Expand Down Expand Up @@ -2270,6 +2276,7 @@ class GroupsPropertiesRelation(models.Model):
class Meta:
ordering = ("position", )
unique_together = ("group", "property")
app_label = 'catalog'


class ProductsPropertiesRelation(models.Model):
Expand Down Expand Up @@ -2298,6 +2305,7 @@ class ProductsPropertiesRelation(models.Model):
class Meta:
ordering = ("position", )
unique_together = ("product", "property")
app_label = 'catalog'


class PropertyOption(models.Model):
Expand Down Expand Up @@ -2333,6 +2341,7 @@ class PropertyOption(models.Model):

class Meta:
ordering = ["position"]
app_label = 'catalog'

def __unicode__(self):
return self.name
Expand Down Expand Up @@ -2378,6 +2387,7 @@ class ProductPropertyValue(models.Model):

class Meta:
unique_together = ("product", "property", "property_group", "value", "type")
app_label = 'catalog'

def __unicode__(self):
property_group_name = self.property_group.name if self.property_group_id else ''
Expand Down Expand Up @@ -2433,6 +2443,7 @@ class Image(models.Model):

class Meta:
ordering = ("position", )
app_label = 'catalog'

def __unicode__(self):
return self.title
Expand Down Expand Up @@ -2476,6 +2487,7 @@ class File(models.Model):

class Meta:
ordering = ("position", )
app_label = 'catalog'

def __unicode__(self):
return self.title
Expand Down Expand Up @@ -2513,6 +2525,7 @@ class StaticBlock(models.Model):

class Meta:
ordering = ("position", )
app_label = 'catalog'

def __unicode__(self):
return self.name
Expand Down Expand Up @@ -2544,6 +2557,7 @@ class DeliveryTime(models.Model):

class Meta:
ordering = ("min", )
app_label = 'catalog'

def __unicode__(self):
return self.round().as_string()
Expand Down Expand Up @@ -2756,6 +2770,7 @@ class ProductAttachment(models.Model):

class Meta:
ordering = ("position", )
app_label = 'catalog'

def get_url(self):
if self.file.url:
Expand Down
7 changes: 7 additions & 0 deletions lfs/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def __unicode__(self):
class Meta:
verbose_name_plural = 'Countries'
ordering = ("name", )
app_label = 'core'


class ActionGroup(models.Model):
Expand All @@ -39,6 +40,7 @@ class ActionGroup(models.Model):

class Meta:
ordering = ("name", )
app_label = 'core'

def __unicode__(self):
return self.name
Expand Down Expand Up @@ -84,6 +86,7 @@ def __unicode__(self):

class Meta:
ordering = ("position", )
app_label = 'core'


class Shop(models.Model):
Expand Down Expand Up @@ -194,6 +197,7 @@ class Shop(models.Model):

class Meta:
permissions = (("manage_shop", "Manage shop"),)
app_label = 'core'

def __unicode__(self):
return self.name
Expand Down Expand Up @@ -252,5 +256,8 @@ def get_meta_description(self):
class Application(models.Model):
version = models.CharField(_("Version"), blank=True, max_length=10)

class Meta:
app_label = 'core'


from monkeys import *
28 changes: 28 additions & 0 deletions lfs/criteria/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ class Criterion(models.Model):

class Meta:
ordering = ("position", )
app_label = 'criteria'

EQUAL = 0
LESS_THAN = 1
Expand Down Expand Up @@ -409,6 +410,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class CombinedLengthAndGirthCriterion(Criterion):
"""
Expand Down Expand Up @@ -460,6 +464,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class CountryCriterion(Criterion):
"""
Expand Down Expand Up @@ -500,6 +507,9 @@ def is_valid(self):
else:
return country not in self.value.all()

class Meta:
app_label = 'criteria'


class HeightCriterion(Criterion):
"""
Expand Down Expand Up @@ -538,6 +548,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class LengthCriterion(Criterion):
"""
Expand Down Expand Up @@ -576,6 +589,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class PaymentMethodCriterion(Criterion):
"""
Expand Down Expand Up @@ -636,6 +652,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class ShippingMethodCriterion(Criterion):
"""
Expand Down Expand Up @@ -701,6 +720,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class WeightCriterion(Criterion):
"""
Expand Down Expand Up @@ -739,6 +761,9 @@ def is_valid(self):
else:
return False

class Meta:
app_label = 'criteria'


class WidthCriterion(Criterion):
"""
Expand Down Expand Up @@ -776,3 +801,6 @@ def is_valid(self):
return True

return False

class Meta:
app_label = 'criteria'
9 changes: 9 additions & 0 deletions lfs/customer/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,9 @@ def sync_selected_to_default_addresses(self, force=False):
self.sync_selected_to_default_invoice_address(force)
self.sync_selected_to_default_shipping_address(force)

class Meta:
app_label = 'customer'


class BankAccount(models.Model):
"""
Expand Down Expand Up @@ -161,6 +164,9 @@ class BankAccount(models.Model):
def __unicode__(self):
return u"%s / %s" % (self.account_number, self.bank_name)

class Meta:
app_label = 'customer'


class CreditCard(models.Model):
"""
Expand Down Expand Up @@ -193,3 +199,6 @@ class CreditCard(models.Model):

def __unicode__(self):
return u"%s / %s" % (self.type, self.owner)

class Meta:
app_label = 'customer'
5 changes: 5 additions & 0 deletions lfs/export/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class Export(models.Model):

class Meta:
ordering = ("position", "name")
app_label = 'export'

def __unicode__(self):
return u"%s.%s" % (self.module, self.method)
Expand Down Expand Up @@ -62,6 +63,7 @@ def __unicode__(self):
class Meta:
ordering = ("name", )
unique_together = ("module", "method")
app_label = 'export'


class CategoryOption(models.Model):
Expand All @@ -70,3 +72,6 @@ class CategoryOption(models.Model):
category = models.ForeignKey(Category, verbose_name=_(u"Category"))
export = models.ForeignKey(Export, verbose_name=_(u"Export"))
variants_option = models.PositiveSmallIntegerField(_(u"Variant"), choices=CATEGORY_VARIANTS_CHOICES)

class Meta:
app_label = 'export'
1 change: 1 addition & 0 deletions lfs/manufacturer/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class Manufacturer(models.Model):

class Meta:
ordering = ("name", )
app_label = 'manufacturer'

def __unicode__(self):
return self.name
Expand Down
8 changes: 8 additions & 0 deletions lfs/marketing/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class Topseller(models.Model):

class Meta:
ordering = ["position"]
app_label = 'marketing'

def __unicode__(self):
return u"%s (%s)" % (self.product.name, self.position)
Expand All @@ -26,6 +27,9 @@ class ProductSales(models.Model):
product = models.ForeignKey(Product, verbose_name=_(u"Product"))
sales = models.IntegerField(_(u"sales"), default=0)

class Meta:
app_label = 'marketing'


class FeaturedProduct(models.Model):
"""Featured products are manually selected by the shop owner
Expand All @@ -36,6 +40,7 @@ class FeaturedProduct(models.Model):

class Meta:
ordering = ["position"]
app_label = 'marketing'

def __unicode__(self):
return u"%s (%s)" % (self.product.name, self.position)
Expand All @@ -49,3 +54,6 @@ class OrderRatingMail(models.Model):

def __unicode__(self):
return u"%s (%s)" % (self.order.id, self.send_date.strftime(ugettext('DATE_FORMAT')))

class Meta:
app_label = 'marketing'
Loading

0 comments on commit c7d0fe5

Please sign in to comment.