Skip to main content

Web based management to catalog things including state and location etc. using Python/Django.

Project description

Web based management to catalog things including state and location etc. using Python/Django.

The project is in an early stage of development. Some things are already implemented and usable. But there is still a lot to do.

Pull requests welcome!

Build Status on github

github.com/jedie/PyInventory/actions

Build Status on travis-ci.org

travis-ci.org/jedie/PyInventory

Coverage Status on codecov.io

codecov.io/gh/jedie/PyInventory

Coverage Status on coveralls.io

coveralls.io/r/jedie/PyInventory

Status on landscape.io

landscape.io/github/jedie/PyInventory/master

about

The focus of this project is on the management of retro computing hardware.

Plan:

  • Web-based

  • Multiuser ready

  • Chaotic warehousing

    • Grouped “Storage”: Graphics card is in computer XY

  • Data structure kept as general as possible

  • You should be able to add the following to the items:

    • Storage location

    • State

    • Pictures

    • URLs

    • receiving and delivering (when, from whom, at what price, etc.)

    • 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

`/src/`_

The main PyInventory source code

`/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 YunoHost App via pyinventory_ynh

This README contains only the information about local development installation.

Read /deployment/README for instruction to install PyInventory on a root server.

prepare

~$ git clone https://github.com/jedie/PyInventory.git
~$ cd PyInventory/
~/PyInventory$ make
_________________________________________________________________
PyInventory - *dev* Makefile

install-poetry         install or update poetry
install                install PyInventory via poetry
manage-update          Collectstatic + makemigration + migrate
update                 update the sources and installation
lint                   Run code formatters and linter
fix-code-style         Fix code formatting
tox-listenvs           List all tox test environments
tox                    Run pytest via tox with all environments
tox-py36               Run pytest via tox with *python v3.6*
tox-py37               Run pytest via tox with *python v3.7*
tox-py38               Run pytest via tox with *python v3.8*
pytest                 Run pytest
update-rst-readme      update README.rst from README.creole
publish                Release new version to PyPi
run-dev-server         Run the django dev server in endless loop.
createsuperuser        Create super user
messages               Make and compile locales message files
dbbackup               Backup database
dbrestore              Restore a database backup
run-docker-dev-server  Start docker containers with current dev source code

local development installation

# install or update Poetry:
~/PyInventory$ make install-poetry

# install PyInventory via poetry:
~/PyInventory$ make install
...

# Collectstatic + makemigration + migrate:
~/PyInventory$ make manage-update

# Create a django super user:
~/PyInventory$ ./manage.sh createsuperuser

# start local dev. web server:
~/PyInventory$ make run-dev-server

The web page is available via: http://127.0.0.1:8000/

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

PyInventory v0.2.0 screenshot 1.png


PyInventory v0.1.0 screenshot 2.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.:

normal user example

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

  • compare v0.8.3…master dev

    • tbc

  • v0.8.3 - 29.12.2020

    • update requirements

    • remove colorama from direct dependencies

    • Small project setup changes

  • v0.8.2 - 20.12.2020

    • Bugfix #33: Upload images to new created Items

  • 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

  • v0.8.0 - 06.12.2020

  • 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

  • v0.6.0 - 15.11.2020

    • User can store images to every item: The image can only be accessed by the same user.

  • v0.5.0 - 14.11.2020

    • Merge separate git branches into one: “/src/” and “/development/” #19

  • v0.4.2 - 13.11.2020

    • Serve static files by Caddy

    • Setup CKEditor file uploads: Store files into random sub directory

    • reduce CKEditor plugins

  • v0.4.1 - 2.11.2020

    • Small bugfixes

  • 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

  • v0.3.2 - 26.10.2020

    • Bugfix missing translations

  • v0.3.0 - 26.10.2020

    • setup production usage:

      • Use 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

  • 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

  • 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 ;)

donation


Note: this file is generated from README.creole 2020-12-29 14:20:27 with "python-creole"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyInventory-0.8.3.tar.gz (49.5 kB view details)

Uploaded Source

Built Distribution

PyInventory-0.8.3-py3-none-any.whl (74.0 kB view details)

Uploaded Python 3

File details

Details for the file PyInventory-0.8.3.tar.gz.

File metadata

  • Download URL: PyInventory-0.8.3.tar.gz
  • Upload date:
  • Size: 49.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.8.5

File hashes

Hashes for PyInventory-0.8.3.tar.gz
Algorithm Hash digest
SHA256 e7a09820b2aaf1d17e9ca6896e83e69999cce99d7d399141648e0d303cef10c7
MD5 ce658359b1ab1f3677233bb6fe18efa6
BLAKE2b-256 f57c6bab9a9a9cd1f58e608d078344d383400e06b9961803414bb66cf33049b6

See more details on using hashes here.

File details

Details for the file PyInventory-0.8.3-py3-none-any.whl.

File metadata

  • Download URL: PyInventory-0.8.3-py3-none-any.whl
  • Upload date:
  • Size: 74.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.8.5

File hashes

Hashes for PyInventory-0.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 03f028a508b9a4e303b5561083476b5c7099914c792b66f20d94f034a8b0db50
MD5 86939ee3d7a96c58894c18239c764135
BLAKE2b-256 f39b4a6735520107f1ba556004fcc61ceccd2720eba90816567cc98dd8352959

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page