semvec/pypi-packages huggingface dataset:
django-model-field-meta 0.6
Django model field metadata and utilities
Requires Python: >=3.0

# django-model-field-meta

![](https://github.com/melvinkcx/django-model-field-meta/workflows/tests/badge.svg)

An easy-to-use plugin to allow optional metadata of model fields. 

Compatible with `django-model-utils`, `safedelete`, etc.

Tested on Python 3+, Django 2.1+.

## Example

### Inserting metadata:

```python
from django.db import models   # Remove this 
from model_field_meta import models, FieldMetaMixin

class MyModel(FieldMetaMixin, models.Model):  # Add FieldMetaMixin
    my_field = models.TextField(meta={"key": "value"})
```

Accessing metadata:
```python
model_obj = MyModel.objects.first()

model_obj.get_field_meta("my_field")
# {"key": "value"}
```

Or, 

```python
MyModel.get_field_meta("my_field")
# {"key": "value"}
```

## Installation 

Install from PiPy:

```sh
pip install django-model-field-meta
```

or, if you are using Pipenv:

```sh
pipenv install django-model-field-meta
```

## Why metadata in model field?

In one of my Django projects, I needed to supply extra information about our model fields. 

For my purpose, `help_text` is too limited. Using code comments is not feasible as I need to use those information programatically.

Hence, `django_model_field_meta` package is created. 

## Compatibility with third-party packages

In my project, I use:

 * `django-model-utils` for its `InheritanceManager`.
 * `safedelete` for its `SafeDeleteModel`

So far, I haven't encounter any issue. Feel free to report if you do. 


## Issues 

If you have questions or issues using it, please create a Github issue at:

[https://github.com/melvinkcx/django-model-field-meta/issues](https://github.com/melvinkcx/django-model-field-meta/issues)
aws-ssm-commander 0.0.4
A utility for dealing with AWS SSM Parameter Store

# aws-ssm-commander

[![Build Status](https://travis-ci.org/djcrabhat/aws-ssm-commander.svg?branch=master)](https://travis-ci.org/djcrabhat/aws-ssm-commander)

Inspired by [aws-ssm-tree](https://github.com/brunorubin/aws-ssm-tree)

## Install
```
pip install aws-ssm-commander
```

## Usage
```
Options:
  --debug
  --help   Show this message and exit.

Commands:
  dump   Dump the values in ssm to a param file, for backup or inspection.
  tree   Print out a tree of your SSM parameters
  write  take a yaml file, put it in to SSM
```

### dump
Dumps the params on a path to a json or yaml output
```
~> aws-ssm-commander dump /abc/123
section_a:
  username: abc123
section_b:
  password: blah
  username: foobar
```

### tree
See a visual representation of params on a path.  Useful for making sure your params out in SSM are structured as 
expected
```
~> aws-ssm-commander tree /abc/123/
abc
â””â”€â”€ 123
    â”œâ”€â”€ section_a
    â”‚   â””â”€â”€ username
    â”œâ”€â”€ section_b
    â”‚   â”œâ”€â”€ password
    â”‚   â””â”€â”€ username
```

### write
Takes a yaml input file and a path prefix, and writes params to SSM.

```
~> aws-ssm-commander write /abc/123/ my_file.yml
```

### Saving secrets

There are two ways of saving secrets. First is by supplying a KMS key ID along with the value to encrypt. The second is to use custom KMS to store kms blobs. The former is less secure than the latter.

#### Supplying a KMS key ID along with the value to encrypt
A KMS key ID can be supplied:

password:
  kms_key_id: f0e79e90-5672-431d-b100b-84b8ac8f1525
  value: supersecretpassword

Keep in mind that if the params file is in git, the secret will be exposed in plain text!

#### Using custom KMS keys to store kms blobs in the yaml file
A lot of the stuff you want to put in Param Store are secrets, and you don't store plaintext secrets in git!  Now you could encrypt and decrypt these files on your own, but aws-ssm-commander supports putting a KMS blob in a config file. To use this method, you **must** use a Customer Managed KMS key.

You can put a KMS secret in your config files by prefixing a value with a `!kms` tag

To get a kms blob, 
```bash

KEY_ID=1234abcd-12ab-34cd-56ef-1234567890ab
aws kms encrypt --key-id $KEY_ID --plaintext "MY_SECRET" --output text --query CiphertextBlob 
```

take that output, then drop it in a value in a yaml file like so:

```yaml
my_thing:
  username: foobar
  password: !kms WW05aWJHRjNZbXh2WWc9PQ==
```