Esempio n. 1
0
    def update(self, wines=[]):
        """
        Recalculate this object's rank,
        and
        create a search index for it.
        """
        if not self.key:
            raise Exception("Can't update without a key.")

        index = search.Index(name="wineries")
        
        searchkey = str(self.key.id())
        self.rank = self.calculate_rank(wines)
        
        location = ""
        if self.has_location:
            location = self.to_dict()['location']
        elif self.has_location_fuzzy:
            location = self.to_dict()['location_fuzzy']
        partial_location = BaseModel.partial_search_string(location)

        fields = []

        name = self.to_dict()['name']
        partial_name = BaseModel.partial_search_string(name)
        fields.append(search.TextField(name='name', value=name))
        fields.append(search.TextField(name='partial_name',
                                       value=partial_name))

        fields.append(search.TextField(name='location', value=location))
        fields.append(search.TextField(name='partial_location',
                                       value=partial_location))
        
        if self.has_country:
            country = self.to_dict()['country']
            fields.append(search.AtomField(name='country', value=country))

        if self.has_region:
            region = self.to_dict()['region']
            fields.append(search.AtomField(name='region', value=region))

        if self.has_subregion:
            subregion = self.to_dict()['subregion']
            fields.append(search.AtomField(name='subregion', value=subregion))

        fields.append(search.AtomField(name='verified',
                                       value=str(self.has_verified)))

        fields.append(search.NumberField(name='rank',
                                         value=self.rank))
        
        fields.append(search.TextField(name='id',
                                       value=str(self.key.id())))

        searchdoc = search.Document(doc_id=searchkey,
                                    fields=fields,
                                    rank=self.rank)
        
        index.put(searchdoc)
        return None
Esempio n. 2
0
    def update(self, wines=[]):
        """
        Recalculate this object's rank,
        and
        create a search index for it.
        """
        if not self.key:
            raise Exception("Can't update without a key.")

        index = search.Index(name="wineries")

        searchkey = str(self.key.id())
        self.rank = self.calculate_rank(wines)

        location = ""
        if self.has_location:
            location = self.to_dict()['location']
        elif self.has_location_fuzzy:
            location = self.to_dict()['location_fuzzy']
        partial_location = BaseModel.partial_search_string(location)

        fields = []

        name = self.to_dict()['name']
        partial_name = BaseModel.partial_search_string(name)
        fields.append(search.TextField(name='name', value=name))
        fields.append(search.TextField(name='partial_name',
                                       value=partial_name))

        fields.append(search.TextField(name='location', value=location))
        fields.append(
            search.TextField(name='partial_location', value=partial_location))

        if self.has_country:
            country = self.to_dict()['country']
            fields.append(search.AtomField(name='country', value=country))

        if self.has_region:
            region = self.to_dict()['region']
            fields.append(search.AtomField(name='region', value=region))

        if self.has_subregion:
            subregion = self.to_dict()['subregion']
            fields.append(search.AtomField(name='subregion', value=subregion))

        fields.append(
            search.AtomField(name='verified', value=str(self.has_verified)))

        fields.append(search.NumberField(name='rank', value=self.rank))

        fields.append(search.TextField(name='id', value=str(self.key.id())))

        searchdoc = search.Document(doc_id=searchkey,
                                    fields=fields,
                                    rank=self.rank)

        index.put(searchdoc)
        return None
Esempio n. 3
0
    def create_search_index(self, winery):
        """
        create a search index for this wine
        """
        if not self.key:
            raise Exception("Can't update without a key.")
        
        index = search.Index(name="wines")
        
        searchkey = str(self.key.id())
        # search rank is winery rank + individual rank
        rank = winery.to_dict()['rank'] + self.calculate_rank()
        
        fields = []
        
        if self.has_year:
            year = self.to_dict()['year']
            fields.append(search.NumberField(name='year', value=year))
        
        if self.has_name:
            name = self.to_dict()['name']
            partial_name = BaseModel.partial_search_string(name)
            fields.append(search.TextField(name='name', value=name))
            fields.append(search.TextField(name='partial_name',
                                           value=partial_name))

        winery_name = winery.to_dict()['name']
        partial_winery_name = BaseModel.partial_search_string(winery_name)
        fields.append(search.TextField(name='winery', value=winery_name))
        fields.append(search.TextField(name='partial_winery',
                                       value=partial_winery_name))
        
        if self.has_winetype:
            winetype = self.to_dict()['winetype']
            fields.append(search.AtomField(name='winetype', value=winetype))
        
        if self.has_varietal:
            varietal = self.to_dict()['varietal']
            partial_varietal = BaseModel.partial_search_string(varietal)
            fields.append(search.TextField(name='varietal', value=varietal))
            fields.append(search.TextField(name='partial_varietal',
                                           value=partial_varietal))
        
        if self.has_upc:
            upc = self.to_dict()['upc']
            fields.append(search.TextField(name='upc', value=upc))
        
        fields.append(search.AtomField(name='verified',
                                       value=str(self.has_verified)))
        
        fields.append(search.TextField(name='id',
                                       value=str(self.key.id())))
        fields.append(search.TextField(name='winery_id',
                                       value=str(winery.key.id())))
        
        fields.append(search.NumberField(name='rank',
                                         value=rank))
        
        searchdoc = search.Document(doc_id=searchkey,
                                    fields=fields,
                                    rank=rank)
        
        index.put(searchdoc)
        return None
Esempio n. 4
0
    def create_search_index(self, winery):
        """
        create a search index for this wine
        """
        if not self.key:
            raise Exception("Can't update without a key.")

        index = search.Index(name="wines")

        searchkey = str(self.key.id())
        # search rank is winery rank + individual rank
        rank = winery.to_dict()['rank'] + self.calculate_rank()

        fields = []

        if self.has_year:
            year = self.to_dict()['year']
            fields.append(search.NumberField(name='year', value=year))

        if self.has_name:
            name = self.to_dict()['name']
            partial_name = BaseModel.partial_search_string(name)
            fields.append(search.TextField(name='name', value=name))
            fields.append(
                search.TextField(name='partial_name', value=partial_name))

        winery_name = winery.to_dict()['name']
        partial_winery_name = BaseModel.partial_search_string(winery_name)
        fields.append(search.TextField(name='winery', value=winery_name))
        fields.append(
            search.TextField(name='partial_winery', value=partial_winery_name))

        if self.has_winetype:
            winetype = self.to_dict()['winetype']
            fields.append(search.AtomField(name='winetype', value=winetype))

        if self.has_varietal:
            varietal = self.to_dict()['varietal']
            partial_varietal = BaseModel.partial_search_string(varietal)
            fields.append(search.TextField(name='varietal', value=varietal))
            fields.append(
                search.TextField(name='partial_varietal',
                                 value=partial_varietal))

        if self.has_upc:
            upc = self.to_dict()['upc']
            fields.append(search.TextField(name='upc', value=upc))

        fields.append(
            search.AtomField(name='verified', value=str(self.has_verified)))

        fields.append(search.TextField(name='id', value=str(self.key.id())))
        fields.append(
            search.TextField(name='winery_id', value=str(winery.key.id())))

        fields.append(search.NumberField(name='rank', value=rank))

        searchdoc = search.Document(doc_id=searchkey, fields=fields, rank=rank)

        index.put(searchdoc)
        return None