Skip to main content

Client for the Plunet 3.0 SOAP API.

Project description

Forks Stargazers Issues MIT License LinkedIn

PyPlunet

Modern Python client for interacting with the Plunet SOAP 3.0 API, BM version 10.8.3.

About The Project

Modern Python client for interacting with the Plunet SOAP API, without having to deal with any of the soapiness.

Ready to use out of the box, you can jump directly into the business logic.

Pip install, import and start working. It really is as easy as that!

  • Implements all services and methods as per BM 10.8.3
  • Fully typed for validation and code completion support
  • Fully documented methods with complete content of the Plunet JavaDocs.

(back to top)

New in 0.11.0

  • Breaking: Dropped support for Python 3.9
  • Added debug mode for the client
  • Fixed type handling of status Enums, which had reverted to plain INTs. Methods taking status arguments now normalize input.

New in 0.10.0

  • Updated models to match BM 10.8.3 (latest BM version to implement changes in DTOs)
  • BREAKING: Dropped support for pydantic 1.10 - only 2.x
  • Updated plunetapi/zeep to support python 3.12 and 3.13
  • Started prep for v1, which will support multiple BM/API versions.

New in 0.9.1

  • Updated readme
  • Fixed typo

New in 0.9.0

  • Added methods and fields up to Plunet 9.11
  • Added missing status and type enums

New in 0.8.0

  • Decided to remove the retrying client
  • Improved flexibility for enums, which now accept both integers and strings that are possible to cast as ints

Built With

(back to top)

Getting Started

Installation

Install via pip

pip install pyplunet

Or clone the repo

git clone https://github.com/kuhnemann/pyplunet.git

(back to top)

Usage

Install using pip like so:

pip install pyplunet

Initialize the client with the base URL of your Plunet instance, authenticate and start doing whatever you aim to do.

from pyplunet import PlunetClient


plunet_client = PlunetClient(base_url="YOUR_URL")

plunet_client.login(username=username, password=password)

order_result = plunet_client.order.get_order_object(order_id=1234)

Complex types and enums are included. Convenient when searching or creating entities:

from datetime import datetime, timedelta

from pyplunet import PlunetClient
from pyplunet.models import OrderIN, SearchFilter_Resource
from pyplunet.enums import ResourceType, ResourceStatus, WorkingStatus


plunet_client = PlunetClient(base_url="YOUR_URL")

plunet_client.login(username=username, password=password)

# prepare the searchfilter
sf_resource = SearchFilter_Resource(
    contact_resourceID=-1,
    languageCode="EN",
    resourceType=ResourceType.PROJECT_MANAGER,
    resourceStatus=ResourceStatus.ACTIVE,
    workingStatus=WorkingStatus.INTERNAL
)
# get the result
pms_result = plunet_client.resource.search(search_filter_resource=sf_resource)

# prepare the OrderIN object. Fields are typed and corresponds to definition from XSD.
order_in = OrderIN(
    currency="SEK",
    customerContactID=1,
    customerID=3,
    deliveryDeadline=datetime.now() + timedelta(days=7),
    orderDate=datetime.now(),
    orderID=-1,
    projectManagerID=11,
    projectManagerMemo="Some memo!",
    projectName="Project has a name",
    rate=-1,
    referenceNumber="This is the reference number",
    subject="This is the subject!"
)
order_integer_result = plunet_client.order.insert2(order_in=order_in)
order_id = order_integer_result.data

(back to top)

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Henrik Kühnemann - hello@yellownape.se

Project Link: https://github.com/kuhnemann/pyplunet

(back to top)

(back to top)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyplunet-0.11.1.tar.gz (123.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyplunet-0.11.1-py3-none-any.whl (98.9 kB view details)

Uploaded Python 3

File details

Details for the file pyplunet-0.11.1.tar.gz.

File metadata

  • Download URL: pyplunet-0.11.1.tar.gz
  • Upload date:
  • Size: 123.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.4

File hashes

Hashes for pyplunet-0.11.1.tar.gz
Algorithm Hash digest
SHA256 e9f5f25d3e69617cd46fe88e90714b370e3147d957b76498d8fad1a8471e1cae
MD5 2ae88a42edb7ff8a1d204aa2b0ae3b93
BLAKE2b-256 00c0c17adf6dbdef2ca36a9f4ac3b2b31811e2f661b04b422d9b3c8f617de0c5

See more details on using hashes here.

File details

Details for the file pyplunet-0.11.1-py3-none-any.whl.

File metadata

  • Download URL: pyplunet-0.11.1-py3-none-any.whl
  • Upload date:
  • Size: 98.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.4

File hashes

Hashes for pyplunet-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b424f761c796902375c87c58a8cb2e27a27e84842143855e7774564907d55de1
MD5 978815201ea2b7a7abdcdb6eb72618f5
BLAKE2b-256 4fc2dc8b1501a52dc6187bcb61ee75f99e9be701667147beb0e21d1a7c923909

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page