Metadata-Version: 2.2
Name: django-model-curation
Version: 0.0.0
Summary: A Django app that adds admin curations for custom models.
Home-page: https://gitlab.com/bscherbaum/django-model-curation
Author: Benjamin Scherbaum
License: MIT
Project-URL: Source, https://gitlab.com/bscherbaum/django-model-curation
Classifier: Environment :: Web Environment
Classifier: Framework :: Django :: 3.0
Classifier: Framework :: Django :: 4.0
Classifier: Framework :: Django :: 5.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django>=3.0

# Django Model Curation

Adds a simple but flexible curation environment to admin panel for django models.  


### Install:

``pip install django-model-curation``


### Example Use:

models.py:
```python
from django.db import models
from django_model_curation.models import AbstractCuration


class Book(models.Model):
    pass
  

class BookCuration(AbstractCuration, models.Model):
    book = models.OneToOneField(
        to=Book,
        on_delete=models.CASCADE,
        related_name="curation",
        blank=True,
        null=True,
    )

    # This property is required by AbstractCuration
    @property
    def curation_object(self):
        return self.book

```

admin.py
```python
from django.contrib import admin
from models import BookCuration

from django_model_curation.admin import GenericCurationModelAdmin

@admin.register(BookCuration)
class BookCurationModelAdmin(GenericCurationModelAdmin):
    pass

```

complement your own business logic by accessing the field ``status``,   
for example show only curated objects on your website.

```python
from django_model_curation.models import (
    CURATION_PENDING,
    CURATION_ACCEPTED, 
    CURATION_RECALLED_BY_USER,
    CURATION_UPDATE_BY_USER,
    CURATION_REJECTED_PERMANENTLY,
    CURATION_REJECTED_TEMPORARILY
    )

def get_curated_books():
  return Books.objects.filter(curation__status=CURATION_ACCEPTED)

```

### Admin Permissions
  actions:  
  {{model}}_can_revert_curation  
  {{model}}_can_accept_curation  
  {{model}}_can_reject_curation_permanently  
  {{model}}_can_reject_curation_temporarily  

  meta:  
  {{model}}_allow_actions_on_accepted  
  {{model}}_allow_actions_on_rejected  
