43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
# backend/infrastructure/paperless_client.py
|
|
|
|
import requests
|
|
from django.conf import settings
|
|
|
|
class PaperlessGateway:
|
|
"""
|
|
Gateway za komunikaciju s Paperless-ngx API-jem.
|
|
"""
|
|
def __init__(self):
|
|
self.base_url = settings.PAPERLESS_API_URL
|
|
self.headers = {
|
|
"Authorization": f"Token {settings.PAPERLESS_API_TOKEN}",
|
|
"Content-Type": "application/json"
|
|
}
|
|
|
|
def upload_document(self, file_content, filename):
|
|
"""Šalje dokument u Paperless."""
|
|
url = f"{self.base_url}/documents/post_document/"
|
|
files = {'document': (filename, file_content)}
|
|
response = requests.post(url, headers={"Authorization": self.headers["Authorization"]}, files=files)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
|
|
def get_document_status(self, task_id):
|
|
"""Provjerava status procesiranja dokumenta."""
|
|
url = f"{self.base_url}/tasks/{task_id}/"
|
|
response = requests.get(url, headers=self.headers)
|
|
return response.json()
|
|
|
|
def get_document_metadata(self, document_id: int):
|
|
"""Dohvaća metapodatke dokumenta iz Paperless-a."""
|
|
url = f"{self.base_url}/api/documents/{document_id}/"
|
|
response = requests.get(url, headers=self.headers)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
|
|
def fetch_unprocessed_documents(self):
|
|
"""Dohvaća listu dokumenata koji čekaju obradu."""
|
|
# Filtriramo dokumente koji nemaju naš 'processed' tag
|
|
url = f"{self.base_url}/api/documents/?query=is_tagged:false"
|
|
response = requests.get(url, headers=self.headers)
|
|
return response.json().get('results', []) |