|
|
|
===========================
|
|
|
|
Ordr2 - CPI Ordering System
|
|
|
|
===========================
|
|
|
|
|
|
|
|
In our chair at the University of Freiburg there are about forty people working
|
|
|
|
in the lab but only four of them are accredited for the SAP ordering system
|
|
|
|
used by the university - the rest has to order through them. This leads to
|
|
|
|
a quite large amount of mails, post-its and calls per purchaser. To give this
|
|
|
|
some better structure, our small ordering system was developed. It is actually
|
|
|
|
a 'would-you-please-order-for-me-system' and disconnected from the upstream
|
|
|
|
system.
|
|
|
|
|
|
|
|
This is a complete rewrite of the CPI `ordering system`_ originally written in
|
|
|
|
PHP.
|
|
|
|
|
|
|
|
|
|
|
|
Goals
|
|
|
|
-----
|
|
|
|
* more information on orders:
|
|
|
|
* record the status change in order in a log
|
|
|
|
* add a new status "hold" if there are questions
|
|
|
|
* simpler reordering of already placed orders
|
|
|
|
* better tools for consumables (templates for new orders):
|
|
|
|
* propose consumables on placed orders
|
|
|
|
* check unused or outdated consumables
|
|
|
|
* make categories editable
|
|
|
|
* revamped user management:
|
|
|
|
* validate email address on registration
|
|
|
|
* forgot password system
|
|
|
|
* make password hashing future proof
|
|
|
|
* move away from PHP as a programming language (done, branch php2pyhton)
|
|
|
|
* update the front end tools to current versions
|
|
|
|
|
|
|
|
|
|
|
|
Notes on technologies used
|
|
|
|
---------------------------
|
|
|
|
|
|
|
|
The project uses `Pyramid`_ as a web framework, especially the `traversal`_
|
|
|
|
style routing instead of the more widely spread url dispatch method. This
|
|
|
|
decision was made because:
|
|
|
|
|
|
|
|
* the starter of this project likes this kind of routing
|
|
|
|
* it eliminates the need of defining routes separately
|
|
|
|
* `row level security`_ is easy to implement since traversal works with
|
|
|
|
resources from the start.
|
|
|
|
|
|
|
|
The new system should have automated unit- and integration tests for all
|
|
|
|
self written code, aming at 100% coverage although this might never be
|
|
|
|
reached.
|
|
|
|
|
|
|
|
To run a test use the ``make coverage`` command or if you'd like to test
|
|
|
|
without a coverage report use ``make test``
|
|
|
|
|
|
|
|
Also the code should be documented well enough to support the current and
|
|
|
|
new developers. Good Documentation is hard, so please be forgiving in this
|
|
|
|
regard. A set of documents can be compiled and viewed with the ``make docs``
|
|
|
|
command.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. _ordering system: https://ordr.cpi.imtek.uni-freiburg.de
|
|
|
|
.. _Pyramid: https://trypyramid.com
|
|
|
|
.. _traversal: https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/muchadoabouttraversal.html
|
|
|
|
.. _row level security: https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/security.html
|