|
4 | 4 | from typing import Any |
5 | 5 |
|
6 | 6 | from wikibaseintegrator.entities.baseentity import BaseEntity |
7 | | -from wikibaseintegrator.models.forms import Forms |
| 7 | +from wikibaseintegrator.models.forms import Form, Forms |
8 | 8 | from wikibaseintegrator.models.lemmas import Lemmas |
9 | | -from wikibaseintegrator.models.senses import Senses |
| 9 | +from wikibaseintegrator.models.senses import Sense, Senses |
10 | 10 | from wikibaseintegrator.wbi_config import config |
| 11 | +from wikibaseintegrator.wbi_helpers import lexeme_add_form, lexeme_add_sense |
11 | 12 |
|
12 | 13 |
|
13 | 14 | class LexemeEntity(BaseEntity): |
@@ -163,3 +164,27 @@ def write(self, **kwargs: Any) -> LexemeEntity: |
163 | 164 | """ |
164 | 165 | json_data = super()._write(data=self.get_json(), **kwargs) |
165 | 166 | return self.from_json(json_data=json_data) |
| 167 | + |
| 168 | + def write_form(self, form: Form) -> str: |
| 169 | + if not self.id: |
| 170 | + raise Exception('You must set a Lexeme id before writing a Form.') |
| 171 | + return lexeme_add_form(lexeme_id=self.id, data=form.get_json())['form']['id'] |
| 172 | + |
| 173 | + def write_forms(self) -> list[str]: |
| 174 | + ids: list = [] |
| 175 | + for form in self.forms: |
| 176 | + ids.append(self.write_form(form)) |
| 177 | + |
| 178 | + return ids |
| 179 | + |
| 180 | + def write_sense(self, sense: Sense) -> str: |
| 181 | + if not self.id: |
| 182 | + raise Exception('You must set a Lexeme id before writing a Sense.') |
| 183 | + return lexeme_add_sense(lexeme_id=self.id, data=sense.get_json())['sense']['id'] |
| 184 | + |
| 185 | + def write_senses(self) -> list[str]: |
| 186 | + ids: list = [] |
| 187 | + for sense in self.senses: |
| 188 | + ids.append(self.write_sense(sense)) |
| 189 | + |
| 190 | + return ids |
0 commit comments