Add config group actions

+ Move the multi action to a more sensible position
This commit is contained in:
David Bailey 2017-08-17 13:25:06 +01:00
parent 6399da13e7
commit 5ec2d7e33e
2 changed files with 239 additions and 21 deletions

View File

@ -474,6 +474,13 @@ class AnkiBridge:
return self.collection().sched return self.collection().sched
def multi(self, actions):
response = []
for item in actions:
response.append(AnkiConnect.handler(ac, item))
return response
def media(self): def media(self):
collection = self.collection() collection = self.collection()
if collection is not None: if collection is not None:
@ -502,11 +509,59 @@ class AnkiBridge:
return [field['name'] for field in model['flds']] return [field['name'] for field in model['flds']]
def multi(self, actions): def confForDeck(self, deck):
response = [] if not deck in self.deckNames():
for item in actions: return False
response.append(AnkiConnect.handler(ac, item))
return response id = self.collection().decks.id(deck)
return self.collection().decks.confForDid(id)
def saveConf(self, conf):
id = str(conf['id'])
if not id in self.collection().decks.dconf:
return False
mod = anki.utils.intTime()
usn = self.collection().usn()
conf['mod'] = mod
conf['usn'] = usn
self.collection().decks.dconf[id] = conf
self.collection().decks.changed = True
return True
def changeConf(self, decks, confId):
for deck in decks:
if not deck in self.deckNames():
return False
if not str(confId) in self.collection().decks.dconf:
return False
for deck in decks:
did = str(self.collection().decks.id(deck))
aqt.mw.col.decks.decks[did]['conf'] = confId
return True
def addConf(self, name, cloneFrom=1):
if not str(cloneFrom) in self.collection().decks.dconf:
return False
cloneFrom = self.collection().decks.getConf(cloneFrom)
return self.collection().decks.confId(name, cloneFrom)
def remConf(self, id):
if id == 1 or not str(id) in self.collection().decks.dconf:
return False
self.collection().decks.remConf(id)
return True
def deckNames(self): def deckNames(self):
@ -759,6 +814,11 @@ class AnkiConnect:
return handler(**params) return handler(**params)
@webApi
def multi(self, actions):
return self.anki.multi(actions)
@webApi @webApi
def deckNames(self): def deckNames(self):
return self.anki.deckNames() return self.anki.deckNames()
@ -780,8 +840,28 @@ class AnkiConnect:
@webApi @webApi
def multi(self, actions): def confForDeck(self, deck):
return self.anki.multi(actions) return self.anki.confForDeck(deck)
@webApi
def saveConf(self, conf):
return self.anki.saveConf(conf)
@webApi
def changeConf(self, decks, confId):
return self.anki.changeConf(decks, confId)
@webApi
def addConf(self, name, cloneFrom=1):
return self.anki.addConf(name, cloneFrom)
@webApi
def remConf(self, id):
return self.anki.remConf(id)
@webApi @webApi

166
README.md
View File

@ -103,6 +103,35 @@ Below is a list of currently supported actions. Requests with invalid actions or
``` ```
4 4
``` ```
* **multi**
Performs multiple actions in one request, returning an array with the response of each action (in the given order).
*Sample request*:
```
{
"action": "multi",
"params": {
"actions": [
{"action": "deckNames"},
{
"action": "browse",
"params": {"query": "deck:current"}
}
]
}
}
```
*Sample response*:
```
[
["Default"],
[1494723142483, 1494703460437, 1494703479525]
]
```
* **deckNames** * **deckNames**
Gets the complete list of deck names for the current user. Gets the complete list of deck names for the current user.
@ -180,32 +209,141 @@ Below is a list of currently supported actions. Requests with invalid actions or
] ]
``` ```
* **multi** * **confForDeck**
Performs multiple actions in one request, returning an array with the response of each action (in the given order). Gets the config group object for the given deck.
*Sample request*: *Sample request*:
``` ```
{ {
"action": "multi", "action": "confForDeck",
"params": { "params": {
"actions": [ "deck": "Default"
{"action": "deckNames"},
{
"action": "browse",
"params": {"query": "deck:current"}
}
]
} }
} }
``` ```
*Sample response*: *Sample response*:
``` ```
[ {
["Default"], "lapse": {
[1494723142483, 1494703460437, 1494703479525] "leechFails": 8,
] "delays": [10],
"minInt": 1,
"leechAction": 0,
"mult": 0
},
"dyn": false,
"autoplay": true,
"mod": 1502970872,
"id": 1,
"maxTaken": 60,
"new": {
"bury": true,
"order": 1,
"initialFactor": 2500,
"perDay": 20,
"delays": [1, 10],
"separate": true,
"ints": [1, 4, 7]
},
"name": "Default",
"rev": {
"bury": true,
"ivlFct": 1,
"ease4": 1.3,
"maxIvl": 36500,
"perDay": 100,
"minSpace": 1,
"fuzz": 0.05
},
"timer": 0,
"replayq": true,
"usn": -1
}
```
* **saveConf**
Saves the given config group, returning `true` on success or `false` if the ID of the config group is invalid (i.e.
it does not exist).
*Sample request*:
```
{
"action": "saveConf",
"params": {
"conf": (config group object)
}
}
```
*Sample response*:
```
true
```
* **changeConf**
Changes the configuration group for the given decks to the one with the given ID. Returns `true` on success or
`false` if the given configuration group or any of the given decks do not exist.
*Sample request*:
```
{
"action": "changeConf",
"params": {
"decks": ["Default"],
"confId": 1
}
}
```
*Sample response*:
```
true
```
* **addConf**
Creates a new config group with the given name, cloning from the group with the given ID, or from the default group
if this is unspecified. Returns the ID of the new config group, or `false` if the specified group to clone from does
not exist.
*Sample request*:
```
{
"action": "addConf",
"params": {
"name": "Copy of Default",
"cloneFrom": 1
}
}
```
*Sample response*:
```
1502972374573
```
* **remConf**
Removes the config group with the given ID, returning `true` if successful, or `false` if attempting to remove
either the default config group (ID = 1) or a config group that does not exist.
*Sample request*:
```
{
"action": "remConf",
"params": {
"id": 1502972374573
}
}
```
*Sample response*:
```
true
``` ```
* **addNote** * **addNote**