CPI Ordering System (the old version)
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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
Holger Frey e53788559f added settings page 7 years ago
.github initial import 7 years ago
docs added pyramid_mailer to requirements 7 years ago
ordr2 added settings page 7 years ago
tests removed xfail from reset password functional test 7 years ago
.editorconfig initial import 7 years ago
.gitignore added settings page 7 years ago
AUTHORS.rst initial import 7 years ago
CONTRIBUTING.rst working on documentation 7 years ago
HISTORY.rst working on documentation 7 years ago
LICENSE initial import 7 years ago
MANIFEST.in initial import 7 years ago
Makefile 'make test' runs last failed test 7 years ago
README.rst more work on documentation 7 years ago
development.ini added test user to db init 7 years ago
passlib.ini added passlib for pasword hashing 7 years ago
production.ini initial import 7 years ago
pytest.ini initial import 7 years ago
requirements_dev.txt removed tox from setup 7 years ago
setup.cfg initial import 7 years ago
setup.py added pyramid_mailer to requirements 7 years ago

README.rst

===========================
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