inventree / inventree-python

Python library for communication with inventree via API
https://docs.inventree.org/en/latest/api/python/python/
MIT License
26 stars 34 forks source link

Deleting Part #187

Closed DS1705 closed 1 year ago

DS1705 commented 1 year ago

this is my code for deleting a part:

def deletepart(pk):
    part=Part(api,pk)
    StockItem.bulkDelete(api, filters={'part':pk})
    part.delete()

but i get this error: `Environment:

Request Method: GET Request URL: http://172.27.6.4:8080/part/delete/8/

Django Version: 3.2.18 Python Version: 3.8.10 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'livereload', 'inventory', 'formsetfield'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'livereload.middleware.LiveReloadScript']

Traceback (most recent call last): File "/home/dieter/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/home/dieter/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, callback_kwargs) File "/home/dieter/inventree-api/factory/inventory/views.py", line 97, in deletepart inventreeInterface.deletepart(pk) File "/home/dieter/inventree-api/inventreeInterface.py", line 340, in deletepart part.delete() File "/home/dieter/env/lib/python3.8/site-packages/inventree/base.py", line 199, in delete return self._api.delete(self._url) File "/home/dieter/env/lib/python3.8/site-packages/inventree/api.py", line 367, in delete response = self.request(url, method='delete', headers=headers, kwargs) File "/home/dieter/env/lib/python3.8/site-packages/inventree/api.py", line 344, in request raise requests.exceptions.HTTPError(detail)

Exception Type: HTTPError at /part/delete/8/ Exception Value: {'detail': 'Error occurred during API request', 'url': 'http://172.27.6.4:8000/api/part/8/', 'method': 'DELETE', 'status_code': 405, 'body': '"Part is active: cannot delete"', 'headers': {'AUTHORIZATION': 'Token 813111dbeeaf7a681c1a8301ad861880df43b1e3'}} ` it tells me the part is active but i don't know how to make it not active

miggland commented 1 year ago

In the GUI, the switch is at the end of the edit part window: image

In Python, you can do this:

part.save({'active':False})

Get the status with:

part.active
SchrodingersGat commented 1 year ago

https://docs.inventree.org/en/latest/api/python/examples/#delete-a-part