Merge pull request #157 from toasted-nutbread/duplicate-scope
Add duplicateScope option for addNote
This commit is contained in:
commit
9be1ea30f5
@ -980,7 +980,9 @@ guarantee that your application continues to function properly in the future.
|
|||||||
downloaded files with an MD5 hash that matches the provided value. This is useful for avoiding the saving of error
|
downloaded files with an MD5 hash that matches the provided value. This is useful for avoiding the saving of error
|
||||||
pages and stub files. The `fields` member is a list of fields that should play audio when the card is displayed in
|
pages and stub files. The `fields` member is a list of fields that should play audio when the card is displayed in
|
||||||
Anki. The `allowDuplicate` member inside `options` group can be set to true to enable adding duplicate cards.
|
Anki. The `allowDuplicate` member inside `options` group can be set to true to enable adding duplicate cards.
|
||||||
Normally duplicate cards can not be added and trigger exception.
|
Normally duplicate cards can not be added and trigger exception. The `duplicateScope` member inside `options` can be
|
||||||
|
used to specify the scope for which duplicates are checked. A value of `"deck"` will only check for duplicates in the
|
||||||
|
target deck; any other value will check the entire collection.
|
||||||
|
|
||||||
*Sample request*:
|
*Sample request*:
|
||||||
```json
|
```json
|
||||||
@ -996,7 +998,8 @@ guarantee that your application continues to function properly in the future.
|
|||||||
"Back": "back content"
|
"Back": "back content"
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"allowDuplicate": false
|
"allowDuplicate": false,
|
||||||
|
"duplicateScope": "deck"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"yomichan"
|
"yomichan"
|
||||||
|
@ -204,13 +204,16 @@ class AnkiConnect:
|
|||||||
ankiNote[name] = value
|
ankiNote[name] = value
|
||||||
|
|
||||||
allowDuplicate = False
|
allowDuplicate = False
|
||||||
|
duplicateScope = None
|
||||||
if 'options' in note:
|
if 'options' in note:
|
||||||
if 'allowDuplicate' in note['options']:
|
if 'allowDuplicate' in note['options']:
|
||||||
allowDuplicate = note['options']['allowDuplicate']
|
allowDuplicate = note['options']['allowDuplicate']
|
||||||
if type(allowDuplicate) is not bool:
|
if type(allowDuplicate) is not bool:
|
||||||
raise Exception('option parameter \'allowDuplicate\' must be boolean')
|
raise Exception('option parameter \'allowDuplicate\' must be boolean')
|
||||||
|
if 'duplicateScope' in note['options']:
|
||||||
|
duplicateScope = note['options']['duplicateScope']
|
||||||
|
|
||||||
duplicateOrEmpty = self.isNoteDuplicateOrEmptyInDeck(ankiNote, deck)
|
duplicateOrEmpty = self.isNoteDuplicateOrEmptyInScope(ankiNote, deck, duplicateScope)
|
||||||
if duplicateOrEmpty == 1:
|
if duplicateOrEmpty == 1:
|
||||||
raise Exception('cannot create note because it is empty')
|
raise Exception('cannot create note because it is empty')
|
||||||
elif duplicateOrEmpty == 2:
|
elif duplicateOrEmpty == 2:
|
||||||
@ -223,10 +226,10 @@ class AnkiConnect:
|
|||||||
else:
|
else:
|
||||||
raise Exception('cannot create note for unknown reason')
|
raise Exception('cannot create note for unknown reason')
|
||||||
|
|
||||||
def isNoteDuplicateOrEmptyInDeck(self, note, deck):
|
def isNoteDuplicateOrEmptyInScope(self, note, deck, duplicateScope):
|
||||||
"1 if first is empty; 2 if first is a duplicate, False otherwise."
|
"1 if first is empty; 2 if first is a duplicate, False otherwise."
|
||||||
result = note.dupeOrEmpty()
|
result = note.dupeOrEmpty()
|
||||||
if result != 2:
|
if result != 2 or duplicateScope != 'deck':
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# dupeOrEmpty returns if a note is a global duplicate
|
# dupeOrEmpty returns if a note is a global duplicate
|
||||||
|
Loading…
Reference in New Issue
Block a user