Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mlebreuil/netbox-contract

Contract plugin for netbox
https://github.com/mlebreuil/netbox-contract

netbox-plugin

Last synced: 3 months ago
JSON representation

Contract plugin for netbox

Awesome Lists containing this project

README

        

# Contract pluggin
## Overview
The pluggin adds contracts and invoices model to Netbox.
It allows to register contract with objects.
Add invoices to contracts.

Check the [documentation](https://mlebreuil.github.io/netbox-contract/) for additional information

## Installation

### Activate venv
To ensure our plugin is accessible to the NetBox installation, we first need to activate the Python [virtual environment](https://docs.python.org/3/library/venv.html) that was created when we installed NetBox. To do this, determine the virtual environment's path (this will be `/opt/netbox/venv/` if you use the documentation's defaults) and activate it:

```bash
$ source /opt/netbox/venv/bin/activate
```

### Install the package

```bash
$ python3 -m pip install netbox-contract
```

### Configure NetBox

Finally, we need to configure NetBox to enable our new plugin. Over in the NetBox installation path, open `netbox/netbox/configuration.py` and look for the `PLUGINS` parameter; this should be an empty list. (If it's not yet defined, go ahead and create it.) Add the name of our plugin to this list:

```python
# configuration.py
PLUGINS = [
'netbox_contract',
]
```

### Customize the plugin

The following configurationitems can be set:

```python
# configuration.py
PLUGINS_CONFIG = {
'netbox_contract': {
'top_level_menu': True,
'default_accounting_dimensions':{
"account": "",
"project": "",
"cost center": ""
},
'mandatory_contract_fields': ['accounting_dimensions'],
'hidden_contract_fields': [],
'mandatory_invoice_fields': ['accounting_dimensions'],
'hidden_invoice_fields': [],
}
}

```

* top_level_menu : If "Contracts" appears under the "Plugins" menu item or on its own
* default_accounting_dimensions: The accounting dimensions which will appear in the field' background when empty.
* mandatory_contract_fields, mandatory_invoice_fields: Fields which are not required by default and can be set as such. The list of fields is at the bottom of the contract import form.
* hidden_contract_fields, hidden_invoice_fields: List of fields to be hidden. Fields should not be required to be hidden.

### Customize the plugin fields choices

Internal partie reference the legal entity of your organization that is a partie to the contract.

```python
# configuration.py
FIELD_CHOICES = {
'netbox_contract.Contract.internal_partie': (
('Nagravision SARL', 'Nagravision SARL', 'green'),
('Nagra USA', 'Nagra USA', 'green'),
('Nagra India', 'Nagra India', 'green'),
),
'netbox_contract.Contract.currency': (
('usd', 'USD'),
('eur', 'EUR'),
('chf', 'CHF'),
('pln', 'PLN'),
),
'netbox_contract.Contract.status': (
('Active', 'Active', 'green'),
('Cancled', 'Canceled', 'red'),
)
}

```

### Run database migrations

```bash
(venv) $ cd /opt/netbox/netbox/
(venv) $ python3 manage.py migrate
```