PyInventory/README.creole

278 wiersze
12 KiB
Plaintext

= PyInventory
Web based management to catalog things including state and location etc. using Python/Django.
Store information in WYSIWYG-HTML-Editor field and tag them and add Files, Images and Links to them.
Pull requests welcome!
| {{https://github.com/jedie/PyInventory/workflows/test/badge.svg?branch=master|Build Status on github}} | [[https://github.com/jedie/PyInventory/actions|github.com/jedie/PyInventory/actions]] |
| {{https://codecov.io/gh/jedie/PyInventory/branch/master/graph/badge.svg|Coverage Status on codecov.io}} | [[https://codecov.io/gh/jedie/PyInventory|codecov.io/gh/jedie/PyInventory]] |
== about
The focus of this project is on the management of retro computing hardware.
Current features:
* Web-based
* Multiuser ready (Every user see and manage only his own entries)
* Chaotic warehousing
** Grouped "Items" e.g.: Graphics card Foo is in computer Bar
* Data structure kept as general as possible
* Manage information to every item:
** Description: free WYSIWYG-HTML-Editor field
** Storage location
** State
** Images, Files and Web-Links
** receiving and delivering (when, from whom, at what price, etc.)
* Manage "Memos" (Information independent of item/location):
** A free WYSIWYG-HTML-Editor field
** Tags
** Images, Files and Web-Links
Future ideas:
** Information: Publicly visible yes/no
* A public list of existing items (think about it, you can set in your profile if you want to)
* administration a wish & exchange list
any many more... ;)
== Project structure
There are two main directories:
|= directory |= description
| **[[https://github.com/jedie/PyInventory/tree/master/src|/src/]]** | The main PyInventory source code
| **[[https://github.com/jedie/PyInventory/tree/master/deployment|/deployment/]]** | deploy PyInventory for production use case
== install
There exists these kind of installation/usage:
* local development installation using poetry
* production use with docker-compose on a root server
* Install as [[https://yunohost.org|YunoHost]] App via [[https://github.com/YunoHost-Apps/pyinventory_ynh|pyinventory_ynh]]
This README contains only the information about local development installation.
Read [[https://github.com/jedie/PyInventory/tree/master/deployment#readme|/deployment/README]] for instruction to install PyInventory on a root server.
=== local development installation
e.g.:
{{{
# Clone project (Use your fork SSH url!):
~$ git clone https://github.com/jedie/PyInventory.git
~$ cd PyInventory
~/PyInventory$ ./devshell.py
}}}
Helpful for writing and debugging unittests is to run a local test server.
e.g.:
{{{
~/PyInventory$ ./devshell.py run_testserver
}}}
The web page is available via: {{{http://127.0.0.1:8000/}}}
You can also pass a other port number or {{{ipaddr:port}}} combination. See: {{{./devshell.py run_testserver --help}}}
Call manage commands from test project, e.g.:
{{{
~/PyInventory$ ./devshell.py manage --help
}}}
=== local docker dev run
You can run the deployment docker containers with current source code with:
{{{
~/PyInventory$ make run-docker-dev-server
}}}
Just hit Cntl-C to stop the containers
The web page is available via: {{{https://localhost/}}}
== Screenshots
More screenshots are here: [[https://github.com/jedie/jedie.github.io/blob/master/screenshots/PyInventory/README.creole|jedie.github.io/tree/master/screenshots/PyInventory]]
{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/PyInventory/PyInventory v0.2.0 screenshot 1.png|PyInventory v0.2.0 screenshot 1.png}}
----
{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/PyInventory/PyInventory v0.11.0 screenshot memo 1.png|PyInventory v0.11.0 screenshot memo 1.png}}
----
{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/PyInventory/PyInventory v0.1.0 screenshot 2.png|PyInventory v0.1.0 screenshot 2.png}}
----
{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/PyInventory/PyInventory v0.1.0 screenshot 3.png|PyInventory v0.1.0 screenshot 3.png}}
----
== Multi user support
PyInventory supports multiple users. The idea:
* Every normal user sees only his own created database entries
* All users used the Django admin
Note: All created Tags are shared for all existing users!
So setup a normal user:
* Set "Staff status"
* Unset "Superuser status"
* Add user to "normal_user" group
* Don't add any additional permissions
e.g.:
{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/PyInventory/PyInventory normal user example.png|normal user example}}
More screenshots are here: [[https://github.com/jedie/jedie.github.io/blob/master/screenshots/PyInventory/README.creole|jedie.github.io/tree/master/screenshots/PyInventory]]
== Backwards-incompatible changes
=== v0.7.0
Docker-Compose usage: The MEDIA files was not stored on a docker volumes.
You should backup rhe media files **before** update the containers!
e.g.:
{{{
~/PyInventory/deployment$ make shell_inventory
root@inventory:/django# cp -Rfv /media/ /django_volumes/media/
}}}
The files are stored locally here:
{{{
~/PyInventory/deployment$ ls -la volumes/django/media/
}}}
Now, update the containers and copy the files back.
=== v0.5.0
Git branches "master" and "deployment" was merged into one.
Files are separated into: "/src/" and "/development/"
== history
* [[https://github.com/jedie/PyInventory/compare/v0.12.0...master|compare v0.12.0...master]] **dev**
** tbc
* [[https://github.com/jedie/PyInventory/compare/v0.11.0...v0.12.0|v0.12.0 - 22.11.2021]]
** NEW: [[https://github.com/jedie/PyInventory/pull/78|Protect user to overwrite newer Item/Memo/Location with a older one (e.g.: in other browser TAB)]]
** update requirements
* [[https://github.com/jedie/PyInventory/compare/v0.10.1...v0.11.0|v0.11.0 - 09.10.2021]]
** NEW: Memo model/admin: Store Information (incl. images/files/links) independent of items/locations
** Bugfix CKEditor sizes and fix toolbar (e.g.: remove useless pdf generator button and add sourcecode function)
* [[https://github.com/jedie/PyInventory/compare/v0.10.0...v0.10.1|v0.10.1 - 09.10.2021]]
** Update to Django 3.1.x
** Don't make requests to the a name for a Link, if we already have one or if last request was not long ago.
* [[https://github.com/jedie/PyInventory/compare/v0.9.4...v0.10.0|v0.10.0 - 29.09.2021]]
** Group item: default "automatic" mode and can be disabled by filter action
* [[https://github.com/jedie/PyInventory/compare/v0.9.3...v0.9.4|v0.9.4 - 15.09.2021]]
** Pin {{{psycopg < 2.9}}} because of https://github.com/psycopg/psycopg2/issues/1293
* [[https://github.com/jedie/PyInventory/compare/v0.9.2...v0.9.3|v0.9.3 - 15.09.2021]]
** Optimize "items" changelist queries
** Update requirements
** Expand {{{run_testserver}}} command and recognize address and port argument
* [[https://github.com/jedie/PyInventory/compare/v0.9.1...v0.9.2|v0.9.2 - 11.05.2021]]
** Update requirements
** [[https://github.com/jedie/PyInventory/issues/50|Fix error handling if item link is broken]]
* [[https://github.com/jedie/PyInventory/compare/v0.9.0...v0.9.1|v0.9.1 - 28.04.2021]]
* NEW: Besides images, it's now possible to add file(s) to items, too.
* Add a auto login if Django dev. server is used.
* [[https://github.com/jedie/PyInventory/compare/v0.8.4...v0.9.0|v0.9.0 - 11.04.2021]]
** Use https://github.com/jedie/dev-shell for development
* [[https://github.com/jedie/PyInventory/compare/v0.8.3...v0.8.4|v0.8.4 - 19.01.2021]]
** Search items in change list by "kind" and "tags", too
** update requirements
* [[https://github.com/jedie/PyInventory/compare/v0.8.2...v0.8.3|v0.8.3 - 29.12.2020]]
** update requirements
** remove colorama from direct dependencies
** Small project setup changes
* [[https://github.com/jedie/PyInventory/compare/v0.8.1...v0.8.2|v0.8.2 - 20.12.2020]]
** Bugfix [[https://github.com/jedie/PyInventory/issues/33|#33]]: Upload images to new created Items
* [[https://github.com/jedie/PyInventory/compare/v0.8.0...v0.8.1|v0.8.1 - 09.12.2020]]
** Fix migration: Don't create "/media/migrate.log" if there is nothing to migrate
** Fix admin redirect by using the url pattern name
** YunoHost app package created
** update requirements
* [[https://github.com/jedie/PyInventory/compare/v0.7.0...v0.8.0|v0.8.0 - 06.12.2020]]
** Outsource the "MEDIA file serve" part into [[https://github.com/jedie/django-tools/tree/master/django_tools/serve_media_app#readme|django.tools.serve_media_app]]
* [[https://github.com/jedie/PyInventory/compare/v0.6.0...v0.7.0|v0.7.0 - 23.11.2020]]
** Change deployment setup:
*** Replace uwsgi with gunicorn
*** make deploy setup more generic by renaming "inventory" to "django"
*** Bugfix MEDIA path: store the files on a docker volumes
*** run app server as normal user and not root
*** pull all docker images before build
* [[https://github.com/jedie/PyInventory/compare/v0.5.0...v0.6.0|v0.6.0 - 15.11.2020]]
** User can store images to every item: The image can only be accessed by the same user.
* [[https://github.com/jedie/PyInventory/compare/v0.4.2...v0.5.0|v0.5.0 - 14.11.2020]]
** Merge separate git branches into one: "/src/" and "/development/" [[https://github.com/jedie/PyInventory/issues/19|#19]]
* [[https://github.com/jedie/PyInventory/compare/v0.4.1...v0.4.2|v0.4.2 - 13.11.2020]]
** Serve static files by Caddy
** Setup CKEditor file uploads: Store files into random sub directory
** reduce CKEditor plugins
* [[https://github.com/jedie/PyInventory/compare/v0.4.0...v0.4.1|v0.4.1 - 2.11.2020]]
** Small bugfixes
* [[https://github.com/jedie/PyInventory/compare/v0.3.2...v0.4.0|v0.4.0 - 1.11.2020]]
** Move docker stuff and production use information into separate git branch
** Add django-axes: keeping track of suspicious logins and brute-force attack blocking
** Add django-processinfo: collect information about the running server processes
* [[https://github.com/jedie/PyInventory/compare/v0.3.0...v0.3.2|v0.3.2 - 26.10.2020]]
** Bugfix missing translations
* [[https://github.com/jedie/PyInventory/compare/v0.2.0...v0.3.0|v0.3.0 - 26.10.2020]]
** setup production usage:
*** Use [[https://caddyserver.com/|caddy server]] as reverse proxy
*** Use uWSGI as application server
*** autogenerate {{{secret.txt}}} file for {{{settings.SECRET_KEY}}}
*** Fix settings
** split settings for local development and production use
** Bugfix init: move "setup user group" from checks into "post migrate" signal handler
** Bugfix for using manage commands {{{dumpdata}}} and {{{loaddata}}}
* [[https://github.com/jedie/PyInventory/compare/v0.1.0...v0.2.0|v0.2.0 - 24.10.2020]]
** Simplify item change list by nested item
** Activate Django-Import/Export
** Implement multi user usage
** Add Django-dbbackup
** Add docker-compose usage
* [[https://github.com/jedie/PyInventory/compare/v0.0.1...v0.1.0|v0.1.0 - 17.10.2020]]
** Enhance models, admin and finish project setup
* v0.0.1 - 14.10.2020
** Just create a pre-alpha release to save the PyPi package name ;)
== links ==
| Homepage | http://github.com/jedie/PyInventory
| PyPi | https://pypi.org/project/PyInventory/
Discuss here:
* [[https://www.vogons.org/viewtopic.php?f=5&t=77285|vogons.org Forum Thread (en)]]
* [[https://www.python-forum.de/viewtopic.php?f=9&t=50024|Python-Forum (de)]]
* [[https://forum.classic-computing.de/forum/index.php?thread/21738-opensource-projekt-pyinventory-web-basierte-verwaltung-um-seine-dinge-zu-katalog/|VzEkC e. V. Forum Thread (de)]]
* [[https://dosreloaded.de/forum/index.php?thread/3702-pyinventory-retro-sammlung-katalogisieren/|dosreloaded.de Forum Thread (de)]]
== donation ==
* [[https://www.paypal.me/JensDiemer|paypal.me/JensDiemer]]
* [[https://flattr.com/submit/auto?uid=jedie&url=https%3A%2F%2Fgithub.com%2Fjedie%2FPyInventory%2F|Flattr This!]]
* Send [[http://www.bitcoin.org/|Bitcoins]] to [[https://blockexplorer.com/address/1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F|1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F]]