Beispiel #1
0
def get_product_filters():
    schema = {}
    for key in get_register_fields():
        if key.startswith('DFT-'):
            filter_key = key[4:]
            schema[filter_key] = fields_registry[key]
    return schema
Beispiel #2
0
 def _get_dynamic_catalog_values(self):
     values = {}
     dynamic_schema = self.get_dynamic_schema()
     for key, datatype in get_product_filters().items():
         register_key = 'DFT-%s' % key
         if key in dynamic_schema:
             value = self.get_dynamic_property(key, dynamic_schema)
             if value and getattr(datatype, 'is_range', False):
                 value = int(value * 100)
             if value:
                 values[register_key] = value
     # Dynamic indexation
     register_fields = get_register_fields()
     model = self.get_product_model()
     if model is None:
         return {}
     for key, datatype in self.get_dynamic_schema().items():
         # We index dynamic properties that correspond to
         # an EnumerateTable datatype.
         # So we are able to know if enumerate value is used or not
         if issubclass(datatype, EnumerateTable_to_Enumerate) is True:
             register_key = 'DFT-%s' % datatype.enumerate_name
             if register_key not in register_fields:
                 register_field(register_key, String(is_indexed=True))
             if datatype.multiple is True:
                 values[register_key] = ' '.join(self.get_property(key))
             else:
                 values[register_key] = self.get_property(key)
     return values
Beispiel #3
0
 def _get_dynamic_catalog_values(self):
     values = {}
     dynamic_schema = self.get_dynamic_schema()
     for key, datatype in get_product_filters().items():
         register_key = 'DFT-%s' % key
         if key in dynamic_schema:
             value = self.get_dynamic_property(key, dynamic_schema)
             if value and getattr(datatype, 'is_range', False):
                 value = int(value * 100)
             if value:
                 values[register_key] = value
     # Dynamic indexation
     register_fields = get_register_fields()
     model = self.get_product_model()
     if model is None:
         return {}
     for key, datatype in self.get_dynamic_schema().items():
         # We index dynamic properties that correspond to
         # an EnumerateTable datatype.
         # So we are able to know if enumerate value is used or not
         if issubclass(datatype, EnumerateTable_to_Enumerate) is True:
             register_key = 'DFT-%s' % datatype.enumerate_name
             if register_key not in register_fields:
                 register_field(register_key, String(is_indexed=True))
             if datatype.multiple is True:
                 values[register_key] = ' '.join(self.get_property(key))
             else:
                 values[register_key] = self.get_property(key)
     return values
Beispiel #4
0
 def get_quantity(self, resource, context, item):
     get_value = resource.handler.get_record_value
     name = get_value(item, 'name')
     # On products
     quantity = 0
     register_key = 'DFT-%s' % resource.name
     if register_key not in get_register_fields():
         register_field(register_key, String(is_indexed=True))
     query = PhraseQuery(register_key, name)
     quantity += len(context.root.search(query))
     # On declination
     register_key = 'DFT-DECL-%s' % resource.name
     if register_key not in get_register_fields():
         register_field(register_key, String(is_indexed=True))
     query = PhraseQuery(register_key, name)
     quantity += len(context.root.search(query))
     return quantity
Beispiel #5
0
 def get_quantity(self, resource, context, item):
     get_value = resource.handler.get_record_value
     name = get_value(item, "name")
     # On products
     quantity = 0
     register_key = "DFT-%s" % resource.name
     if register_key not in get_register_fields():
         register_field(register_key, String(is_indexed=True))
     query = PhraseQuery(register_key, name)
     quantity += len(context.root.search(query))
     # On declination
     register_key = "DFT-DECL-%s" % resource.name
     if register_key not in get_register_fields():
         register_field(register_key, String(is_indexed=True))
     query = PhraseQuery(register_key, name)
     quantity += len(context.root.search(query))
     return quantity
Beispiel #6
0
 def _get_dynamic_catalog_values(self):
     values = {}
     register_fields = get_register_fields()
     for key, datatype in self.get_dynamic_schema().items():
         if issubclass(datatype, EnumerateTable_to_Enumerate) is True:
             register_key = 'DFT-DECL-%s' % datatype.enumerate_name
             if register_key not in register_fields:
                 register_field(register_key, String(is_indexed=True))
             if datatype.multiple is True:
                 values[register_key] = ' '.join(self.get_property(key))
             else:
                 values[register_key] = self.get_property(key)
     return values
Beispiel #7
0
 def _get_dynamic_catalog_values(self):
     values = {}
     register_fields = get_register_fields()
     for key, datatype in self.get_dynamic_schema().items():
         if issubclass(datatype, EnumerateTable_to_Enumerate) is True:
             register_key = 'DFT-DECL-%s' % datatype.enumerate_name
             if register_key not in register_fields:
                 register_field(register_key, String(is_indexed=True))
             if datatype.multiple is True:
                 values[register_key] = ' '.join(self.get_property(key))
             else:
                 values[register_key] = self.get_property(key)
     return values
Beispiel #8
0
        abspath = self.get_canonical_path()
        query = AndQuery(PhraseQuery('parent_paths', str(abspath)),
                         PhraseQuery('format', 'category'))
        return len(root.search(query))

    @property
    def nb_products(self):
        return self.get_nb_products()

    @property
    def nb_categories(self):
        return self.get_nb_categories()

    #############################
    # Export
    #############################
    export = Export(export_resource=Product,
                    access='is_allowed_to_edit',
                    file_columns=[
                        'reference', 'state', 'frontoffice_uri', 'cover_uri',
                        'manufacturer', 'price_with_tax', 'description'
                    ])


register_resource_class(Category)

# Add m_title field if it does not already exist
if 'm_title' in get_register_fields() is False:
    register_field('m_title', Unicode(is_stored=True, is_indexed=True))
register_field('m_breadcrumb_title', Unicode(is_stored=True, is_indexed=True))
Beispiel #9
0
        return len(root.search(query))


    @property
    def nb_products(self):
        return self.get_nb_products()


    @property
    def nb_categories(self):
        return self.get_nb_categories()

    #############################
    # Export
    #############################
    export = Export(export_resource=Product,
                    access='is_allowed_to_edit',
                    file_columns=['reference', 'state',
                                  'frontoffice_uri', 'cover_uri',
                                  'manufacturer', 'price_with_tax',
                                  'description'])



register_resource_class(Category)

# Add m_title field if it does not already exist
if 'm_title' in get_register_fields() is False:
    register_field('m_title', Unicode(is_stored=True, is_indexed=True))
register_field('m_breadcrumb_title', Unicode(is_stored=True, is_indexed=True))