Files
intern2020/fet2020api/djangoapi.py
2020-10-26 20:30:12 +00:00

77 lines
2.4 KiB
Python

import requests
from urllib.parse import urljoin
import json
class django_crud_api():
def __init__(self,**kwargs):
self.endpoint=kwargs.get('endpoint')
def find(self, filter):
try:
r = requests.request('GET', self.endpoint, params={'format':'json',**filter})
r.raise_for_status()
r=r.json()
except requests.exceptions.RequestException as e:
print(e)
return None
return r
def find_one(self,filter):
r=self.find(filter)
if r is None:
return None
if len(r)>1:
raise LookupError("Mehr als ein Objekt von der API zurückgegeben")
if len(r)==0:
return None
return r[0]
def get(self,pk):
try:
r = requests.request('GET', urljoin(self.endpoint,pk), params={'format':'json'})
r=r.json()
except requests.exceptions.RequestException as e:
print(e)
return None
return r
def update(self,pk,d):
try:
files=d.pop("files",None)
headers = None #{'Content-type': 'multipart/form-data'}
print("Updated %s " % pk)
r = requests.request('PUT', urljoin(self.endpoint,pk)+"/", headers=headers,data=d,files=files)
r.raise_for_status()
except requests.exceptions.RequestException as e:
print(e)
if r:
print(r.text)
print(d.keys())
print("Tryed to reach %s with PUT Action" % urljoin(self.endpoint,pk))
return None
if r.status_code==200:
r=r.json()
return r
def create(self, d):
try:
files=d.pop("files",None)
headers = None #{'Content-type': 'application/json'}
print("Create %s" % d["slug"])
# print("Create with data %s" % str(d))
r = requests.post(self.endpoint,headers=headers,data=d,files=files)
r.raise_for_status()
except requests.exceptions.RequestException as e:
print(e)
if r and r.status_code==400:
print(r.text)
print("Tryed to reach %s with POST Action" % self.endpoint)
return None
if r.status_code==200:
return r.json()
print(r)
return r