Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def delete_tags(self, *payload):
"""
Delete a group of tags
pass in up to 50 tags, or use *[tags]
"""
if len(payload) > 50:
raise ze.TooManyItems("Only 50 tags or fewer may be deleted")
modified_tags = " || ".join([tag for tag in payload])
# first, get version data by getting one tag
self.tags(limit=1)
headers = {
"If-Unmodified-Since-Version": self.request.headers["last-modified-version"]
}
headers.update(self.default_headers())
return requests.delete(
url=self.endpoint
+ "/{t}/{u}/tags".format(t=self.library_type, u=self.library_id),
params={"tag": modified_tags},
headers=headers,
)
def get_subset(self, subset):
"""
Retrieve a subset of items
Accepts a single argument: a list of item IDs
"""
if len(subset) > 50:
raise ze.TooManyItems("You may only retrieve 50 items per call")
# remember any url parameters that have been set
params = self.url_params
retr = []
for itm in subset:
retr.extend(self.item(itm))
self.url_params = params
# clean up URL params when we're finished
self.url_params = None
return retr
def create_items(self, payload):
"""
Create new Zotero items
Accepts one argument, a list containing one or more item dicts
"""
if len(payload) > 50:
raise ze.TooManyItems(
"You may only create up to 50 items per call")
# TODO: strip extra data if it's an existing item
to_send = json.dumps([i for i in self._cleanup(*payload)])
headers = {
'Zotero-Write-Token': token(),
'Content-Type': 'application/json',
}
headers.update(self.default_headers())
req = requests.post(
url=self.endpoint
+ '/{t}/{u}/items'.format(
t=self.library_type,
u=self.library_id),
data=to_send,
headers=dict(headers))
try:
def create_items(self, payload, parentid=None, last_modified=None):
"""
Create new Zotero items
Accepts two arguments:
a list containing one or more item dicts
an optional parent item ID.
Note that this can also be used to update existing items
"""
if len(payload) > 50:
raise ze.TooManyItems("You may only create up to 50 items per call")
# TODO: strip extra data if it's an existing item
headers = {"Zotero-Write-Token": token(), "Content-Type": "application/json"}
if last_modified is not None:
headers["If-Unmodified-Since-Version"] = str(last_modified)
to_send = json.dumps([i for i in self._cleanup(*payload, allow=("key"))])
headers.update(self.default_headers())
self._check_backoff()
req = requests.post(
url=self.endpoint
+ "/{t}/{u}/items".format(t=self.library_type, u=self.library_id),
data=to_send,
headers=dict(headers),
)
self.request = req
try:
req.raise_for_status()
def get_subset(self, subset):
"""
Retrieve a subset of items
Accepts a single argument: a list of item IDs
"""
if len(subset) > 50:
raise ze.TooManyItems(
"You may only retrieve 50 items per call")
# remember any url parameters that have been set
params = self.url_params
retr = []
for itm in subset:
retr.extend(self.item(itm))
self.url_params = params
# clean up URL params when we're finished
self.url_params = None
return retr