예제 #1
0
  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)
예제 #2
0
  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()