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
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
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
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