class Document:
def __init__(self, id, category_id, topic_id, file_name):
self.id = id
self.category_id = category_id
self.topic_id = topic_id
self.file_name = file_name
self.tags = []
@classmethod
def from_instances(cls, id, category: Category, topic: Topic, file_name):
return cls(id, category.id, topic.id, file_name)
def add_tag(self, tag_content):
if tag_content in self.tags:
return
self.tags.append(tag_content)
def remove_tag(self, tag_content):
if tag_content not in self.tags:
return
self.tags.remove(tag_content)
def edit(self, file_name):
self.file_name = file_name
def __repr__(self):
tags_joined = ', '.join(self.tags)
return f"Document {self.id}: {self.file_name}; category {self.category_id}, topic {self.topic_id}, tags: {tags_joined}"