fau-fablab / FabLabKasse

FabLabKasse, a Point-of-Sale Software for FabLabs and other public and trust-based workshops
https://fablabkasse.readthedocs.io
GNU General Public License v3.0
15 stars 4 forks source link

crash if UTF8 character in top category #154

Closed mgmax closed 5 years ago

mgmax commented 5 years ago

If the category directly under "All products" contains a unicode character, FabLabKasse crashes.

Traceback (most recent call last):
  File "/home/kasse/FabLabKasse/FabLabKasse/gui.py", line 485, in updateProductsAndCategories
    categories = self.shoppingBackend.get_subcategories(self.current_category)
  File "/home/kasse/FabLabKasse/FabLabKasse/shopping/backend/offline_base.py", line 238, in get_subcategories
    return self.tree.get_subcategories(current_category)
  File "/home/kasse/FabLabKasse/FabLabKasse/shopping/backend/offline_base.py", line 101, in get_subcategories
    return self._sort_categories(filter(lambda categ: categ.parent_id == categ_id, self.categories.itervalues()))
  File "/home/kasse/FabLabKasse/FabLabKasse/shopping/backend/offline_base.py", line 116, in _sort_categories
    return natsorted(categ_list, key=lambda cat: OfflineCategoryTree.simplify_searchstring(cat.name))
  File "/usr/lib/python2.7/dist-packages/natsort/natsort.py", line 328, in natsorted
    key=natsort_keygen(key, alg=alg))
  File "/usr/lib/python2.7/dist-packages/natsort/utils.py", line 237, in _natsort_key
    val = key(val)
  File "/home/kasse/FabLabKasse/FabLabKasse/shopping/backend/offline_base.py", line 116, in <lambda>
    return natsorted(categ_list, key=lambda cat: OfflineCategoryTree.simplify_searchstring(cat.name))
  File "/home/kasse/FabLabKasse/FabLabKasse/shopping/backend/offline_base.py", line 106, in simplify_searchstring
    string = string.replace(u"\ufeff", "")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 7: ordinal not in range(128)