You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
===========================
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