def add_tag(self, tag, force_add=False): name = tag.name if not name: return score = getattr(tag, 'score', 1.0) or 1.0 parents = getattr(tag, 'parents', []) or [] items = getattr(tag, 'items', []) or [] instance_items = [] equal_to = getattr(tag, 'equal_to', '') or '' for item in items: slug = item['slug'] or name if (not force_add) and (self.memory_normal_items.exists(slug) or self.memory_place_items.exists(slug)): continue category = item['class'] if category == 'NORMAL': item_info = Normal.get_by_slug(slug, json_format=True) if not item_info: continue item_instance = NormalItemEntity(tag_name=name, parents=parents, **item_info) self.memory_normal_items.add(slug, item_instance) else: item_info = Place.get_by_slug(slug, json_format=True) if not item_info: continue item_instance = PlaceItemEntity(tag_name=name, **item_info) self.memory_place_items.add(slug, item_instance) instance_items.append(item_instance) tag_instance = TagEntity(name, score=score, equal_to=equal_to, parents=parents, items=instance_items) self.memory_tags.add(name, tag_instance)
def load(self): with open(name=self.path, mode='r') as f: for each_line in f.readlines(): name, parents_str = each_line.decode('utf-8')[:-1].split('\t') parents = parents_str.split(',') print(name, parents) # To normal model exists = Normal.get_by_slug(name) if not exists: item = Normal(slug=name) print("Saving Normal Item %s" % name) item.save() for parent in parents: exists = Normal.get_by_slug(parent) if not exists: parent_item = Normal(slug=parent) print("Saving Normal Item %s" % parent) parent_item.save() # To tag model exists = Tag.get_by_name(name) if not exists: tag = Tag(name=name, parents=parents, score=self.score, items=[{'slug': name, 'class': 'NORMAL'},], proxy='NORMAL') print("Tag Item, %s" % name) tag.save() for parent in parents: exists = Tag.get_by_name(parent) if not exists: tag = Tag(name=parent, score=self.score, items=[{'slug': parent, 'class': 'NORMAL'},], proxy='NORMAL') print("Tag item %s " % parent) tag.save()