bug fixes
This commit is contained in:
@ -46,10 +46,7 @@ class HttpClient(AuthMixin):
|
|||||||
else:
|
else:
|
||||||
if response.reason == "Unauthorized":
|
if response.reason == "Unauthorized":
|
||||||
self.config.delete()
|
self.config.delete()
|
||||||
self._retrieve_token()
|
raise response.raise_for_status()
|
||||||
raise response.raise_for_status()
|
|
||||||
else:
|
|
||||||
raise response.raise_for_status()
|
|
||||||
|
|
||||||
|
|
||||||
@authenticated
|
@authenticated
|
||||||
|
@ -3,11 +3,26 @@ from __future__ import annotations
|
|||||||
from .authclient import AuthMixin, AuthError, HEADER_JSON
|
from .authclient import AuthMixin, AuthError, HEADER_JSON
|
||||||
from .mkfilt import make_filter
|
from .mkfilt import make_filter
|
||||||
from .httpclient import HttpClient
|
from .httpclient import HttpClient
|
||||||
from .snippet import Snippet, Basesnippet
|
from .snippet import Snippet, Basesnippet, Paragraph
|
||||||
from typing import TypeVar, Union, List, Type, get_type_hints
|
from typing import TypeVar, Union, List, Type, get_type_hints
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
|
def pinned_to_logbook(logbook_keys):
|
||||||
|
def pinned_to_logbook_inner(func):
|
||||||
|
@functools.wraps(func)
|
||||||
|
def pinned_to_logbook_call(*args, **kwargs):
|
||||||
|
if isinstance(args[0].logbook, Basesnippet):
|
||||||
|
for key in logbook_keys:
|
||||||
|
if key not in kwargs.keys():
|
||||||
|
if key == "parentId":
|
||||||
|
kwargs[key] = args[0].logbook.id
|
||||||
|
else:
|
||||||
|
kwargs[key] = getattr(args[0].logbook, key)
|
||||||
|
else:
|
||||||
|
raise Warning("No logbook selected.")
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
return pinned_to_logbook_call
|
||||||
|
return pinned_to_logbook_inner
|
||||||
|
|
||||||
class SciLogRestAPI(HttpClient):
|
class SciLogRestAPI(HttpClient):
|
||||||
def __init__(self, url):
|
def __init__(self, url):
|
||||||
@ -19,31 +34,34 @@ class SciLog():
|
|||||||
|
|
||||||
def __init__(self, url="https://lnode2.psi.ch/api/v1"):
|
def __init__(self, url="https://lnode2.psi.ch/api/v1"):
|
||||||
self.http_client = SciLogRestAPI(url)
|
self.http_client = SciLogRestAPI(url)
|
||||||
self.logbook_id = None
|
self.logbook = None
|
||||||
self.owner_group = None
|
|
||||||
|
|
||||||
def select_logbook(self, logbook:type(Basesnippet)):
|
def select_logbook(self, logbook:type(Basesnippet)):
|
||||||
self.logbook_id = logbook.id
|
self.logbook = logbook
|
||||||
self.owner_group = logbook.ownerGroup
|
|
||||||
|
|
||||||
|
@pinned_to_logbook(["parentId", "ownerGroup", "accessGroups"])
|
||||||
def get_snippets(self, **kwargs):
|
def get_snippets(self, **kwargs):
|
||||||
url = self.http_client.address + "/basesnippets"
|
url = self.http_client.address + "/basesnippets"
|
||||||
params = self.http_client.make_filter(where=kwargs)
|
params = self.http_client.make_filter(where=kwargs)
|
||||||
headers = HEADER_JSON.copy()
|
headers = HEADER_JSON.copy()
|
||||||
return self.http_client.get_request(url, params=params, headers=headers)
|
return Basesnippet.from_http_response(self.http_client.get_request(url, params=params, headers=headers))
|
||||||
|
|
||||||
|
@pinned_to_logbook(["parentId", "ownerGroup", "accessGroups"])
|
||||||
def send_message(self, msg, **kwargs):
|
def send_message(self, msg, **kwargs):
|
||||||
url = self.http_client.address + "/basesnippets"
|
url = self.http_client.address + "/basesnippets"
|
||||||
payload = kwargs
|
payload = kwargs
|
||||||
kwargs["textcontent"] = msg
|
snippet = Paragraph()
|
||||||
|
snippet.import_dict(kwargs)
|
||||||
|
snippet.textcontent = msg
|
||||||
headers = HEADER_JSON.copy()
|
headers = HEADER_JSON.copy()
|
||||||
return self.http_client.post_request(url, payload=payload, headers=headers)
|
return Basesnippet.from_http_response(self.http_client.post_request(url, payload=payload, headers=headers))
|
||||||
|
|
||||||
|
@pinned_to_logbook(["parentId", "ownerGroup", "accessGroups"])
|
||||||
def post_snippet(self, **kwargs):
|
def post_snippet(self, **kwargs):
|
||||||
url = self.http_client.address + "/basesnippets"
|
url = self.http_client.address + "/basesnippets"
|
||||||
payload = kwargs
|
payload = kwargs
|
||||||
headers = HEADER_JSON.copy()
|
headers = HEADER_JSON.copy()
|
||||||
return self.http_client.post_request(url, payload=payload, headers=headers)
|
return Basesnippet.from_http_response(self.http_client.post_request(url, payload=payload, headers=headers))
|
||||||
|
|
||||||
def get_logbooks(self, **kwargs):
|
def get_logbooks(self, **kwargs):
|
||||||
url = self.http_client.address + "/basesnippets"
|
url = self.http_client.address + "/basesnippets"
|
||||||
|
@ -81,12 +81,13 @@ class Basesnippet(Snippet):
|
|||||||
subsnippets=list,
|
subsnippets=list,
|
||||||
tags=list,
|
tags=list,
|
||||||
dashboardName=str,
|
dashboardName=str,
|
||||||
files=str,
|
files=list,
|
||||||
location=str,
|
location=str,
|
||||||
defaultOrder=int,
|
defaultOrder=int,
|
||||||
linkType=str,
|
linkType=str,
|
||||||
versionable=bool,
|
versionable=bool,
|
||||||
deleted=bool)
|
deleted=bool)
|
||||||
|
self.snippetType = "basesnippet"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -94,6 +95,7 @@ class Paragraph(Basesnippet):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.set_properties(textcontent=str, isMessage=str)
|
self.set_properties(textcontent=str, isMessage=str)
|
||||||
|
self.snippetType = "paragraph"
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Reference in New Issue
Block a user