Skip to content

Add BookingProject, ContactDetailsGroup and some other small features - #67

Merged
waza-ari merged 19 commits into
waza-ari:mainfrom
Blumenkind111:main
Oct 10, 2026
Merged

waza-ari merged 19 commits into
waza-ari:mainfrom
Blumenkind111:main

Conversation

@Blumenkind111

Copy link
Copy Markdown
Contributor

I added the BookingProject to python-easyverein.

Also rewrote the url construction, that it may parse special letters like "&" correctly + some minor fixes

If needed i can update the docs, but cannot promise, i will get to it in time :)

@Blumenkind111

Copy link
Copy Markdown
Contributor Author

I also noted, that invNumber has not to be required for InvoiceCreate. That makes it possible to let easyverein calculate the next invoice number. So I implemented that

@Blumenkind111 Blumenkind111 changed the title Add BookingProject Add BookingProject, ContactDetailsGroup and some other small features Jun 8, 2026

@waza-ari waza-ari left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @Blumenkind111 , my apologies for coming back so late. I've finally found the time to go through the PR. First of all, much appreciate your time and commitment adding those two endpoints!

Added a few comments in the review, only one somewhat "major". Would appreciate an update and rebase onto main, although there should be no breaking changes.

Also, let's update the docs folder for those new endpoints. Check the existing ones, most of that is auto-generated so it should be quite quick. Happy to merge afterwards!

Comment thread easyverein/models/booking_project.py Outdated
Comment thread easyverein/models/booking_project.py Outdated
Comment thread easyverein/models/contact_details.py
Comment thread easyverein/models/contact_details.py Outdated
Comment thread easyverein/models/booking_project.py Outdated
Comment thread easyverein/models/invoice.py
Comment thread easyverein/models/invoice_item.py
Comment thread easyverein/modules/booking_project.py Outdated
Comment thread easyverein/modules/contact_details_group.py Outdated
Comment thread tests/test_invoice.py
@Blumenkind111

Copy link
Copy Markdown
Contributor Author

Hi, thanks for the thorough feedback 👍 I included the proposed changes and in the meantime added some more features. I also deleted everything in my branch while trying to update it. Not too familiar with git 😵

I am happy to do more changes if the code does not meet the project standard!

I fixed all comments. Also did some actualization of the docs. The autogenerated part has been done by my bot, because i did not know how ... Together we also updated some outdated parts in the readme and global docs files.

@Blumenkind111
Blumenkind111 requested a review from waza-ari July 29, 2026 07:27
… groups

- keep receiver required on BookingCreate, the API rejects missing and
  empty receivers; restore it in the minimal booking test
- remove wrong methodOfPayment TODO, the API returns ints 0-4
- accept decimals and zero in BookingProjectFilter budget__lt/budget__gt
- build get_all() filters with exclude_none, consistent with get()
- drop type: ignore comments by typing selectedOptions payload correctly
- fix ContactDetailsGroup docstrings copied from member groups
- make the contact details search test create and clean up its own record

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@waza-ari

Copy link
Copy Markdown
Owner

Thanks a lot again for this PR! I went through it, ran the tests suite against our demo account and found a few things. They were small, so rather than send everything back I rebased the branch and pushed the fixes on top myself. As a summary, here is what I changed.

Review findings

  • The booking receiver still has to be required. test_create_booking_minimal failed, and a manual check confirmed that the API rejects a booking with no receiver or an empty one ("Das folgende Feld muss ausgefüllt sein"). The "" default also never reached the API, because the client only sends fields that were set explicitly. I put receiver back on the required list for BookingCreate and restored it in the test.
  • The TODO about methodOfPayment returning a string like "Lastschrift" I could not confirm. I checked every contact in the demo account and also created one with direct debit, and the API returned a number from 0 to 4 every time. int is the right type, so I removed the TODO.
  • The budget filters on booking projects only accepted positive whole numbers, so budget__gt=0 or budget__lt=1500.5 were rejected. They're floats now, like the budget field itself.
  • Switching get() to exclude_none was the right call, but get_all() still used exclude_defaults, so the same filter could give different results from the two methods. Both build their filters the same way now.
  • The new # type: ignore comments in the bulk methods and in member_custom_field.py were hiding type mismatches. With main's client typing and a correct type for the selected-options payload they aren't needed, so I removed them.

All 61 tests pass against the demo account, and lint and mypy are clean. Thanks again for the work you put into this!

@waza-ari
waza-ari merged commit 82ce196 into waza-ari:main Oct 10, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants