bug fixes

This commit is contained in:
2021-06-01 09:14:03 +02:00
parent b44101b394
commit a57ef9879e
3 changed files with 32 additions and 15 deletions

View File

@ -46,10 +46,7 @@ class HttpClient(AuthMixin):
else:
if response.reason == "Unauthorized":
self.config.delete()
self._retrieve_token()
raise response.raise_for_status()
else:
raise response.raise_for_status()
raise response.raise_for_status()
@authenticated

View File

@ -3,11 +3,26 @@ from __future__ import annotations
from .authclient import AuthMixin, AuthError, HEADER_JSON
from .mkfilt import make_filter
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
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):
def __init__(self, url):
@ -19,31 +34,34 @@ class SciLog():
def __init__(self, url="https://lnode2.psi.ch/api/v1"):
self.http_client = SciLogRestAPI(url)
self.logbook_id = None
self.owner_group = None
self.logbook = None
def select_logbook(self, logbook:type(Basesnippet)):
self.logbook_id = logbook.id
self.owner_group = logbook.ownerGroup
self.logbook = logbook
@pinned_to_logbook(["parentId", "ownerGroup", "accessGroups"])
def get_snippets(self, **kwargs):
url = self.http_client.address + "/basesnippets"
params = self.http_client.make_filter(where=kwargs)
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):
url = self.http_client.address + "/basesnippets"
payload = kwargs
kwargs["textcontent"] = msg
snippet = Paragraph()
snippet.import_dict(kwargs)
snippet.textcontent = msg
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):
url = self.http_client.address + "/basesnippets"
payload = kwargs
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):
url = self.http_client.address + "/basesnippets"

View File

@ -81,12 +81,13 @@ class Basesnippet(Snippet):
subsnippets=list,
tags=list,
dashboardName=str,
files=str,
files=list,
location=str,
defaultOrder=int,
linkType=str,
versionable=bool,
deleted=bool)
self.snippetType = "basesnippet"
@ -94,6 +95,7 @@ class Paragraph(Basesnippet):
def __init__(self):
super().__init__()
self.set_properties(textcontent=str, isMessage=str)
self.snippetType = "paragraph"
if __name__ == "__main__":