GithubHelp home page GithubHelp logo

morlandi / django-admin-export-action Goto Github PK

View Code? Open in Web Editor NEW

This project forked from otto-torino/django-admin-export-action

0.0 1.0 0.0 2.56 MB

Export action for django admin

License: MIT License

Python 87.47% HTML 12.53%

django-admin-export-action's Introduction

Django Admin Export Action

Version Build status License Coverage

Export action for Django's Admin

Quickstart

Install Django Admin Export Action::

pip install django-admin-export-action

Include it in INSTALLED_APPS::

INSTALLED_APPS = [
    # ...
    'admin_export_action',
]

Add to urlpatterns in urls.py:

path('export_action/', include("admin_export_action.urls", namespace="admin_export_action")),

Configuration

By default the export action will be added sitewide, which means for every app and every admin registered model.

You can disable this behaviour and decide to add manually the export action only for the models you desired:

# settings.py

ADMIN_EXPORT_ACTION = {
    'ENABLE_SITEWIDE': False
}

# model admin
from admin_export_action.admin import export_selected_objects

class MyModelAdmin(models.ModelAdmin):
    # ...
    actions = [export_selected_objects, ]

Convert any value to its xlsx representation can be a nightmare, and you may always find something weird you haven't considered. In order to let you fix every case, you can define an hook which is called when adding a value to a cell:

# settings.py

ADMIN_EXPORT_ACTION = {
    'VALUE_TO_XLSX_CELL': 'news.admin.my_convert_function'
}

# admin.py
def my_convert_function(value):
    if (value == 'convert'):
        return True, 'converted'
    elif (type(value) == list):
        return json.dumps(value)
    return False, None

If called, the hook is called first, it shoud return a tuple success, value. If success is True, then the returned value is used, otherwise the default conversions are performed.

The intermediate admin page used to select the fields to be exported needs the extra context each admin page has. But such context depends on your admin_site instance, for example if you use django-baton the admin site is different from the default one.
For this reason you can specify the path for your admin app:

# settings.py

ADMIN_EXPORT_ACTION = {
    'ADMIN_SITE_PATH': 'baton.autodiscover.admin'
}

This assures the site title and site header ar the ones you see in normal admin pages.

Usage

Go to an admin page where the export action is enabled, select objects, run the action.

In the next page:

  • select the fields you want to export
  • select the output format
  • select whether to get raw choices values or not
  • select whether to include table header (field verbose name) or not
  • click the "Export" button

Features

  • Generic or ready to use action to enable export data from Admin.
  • Automatic traversal of model relations.
  • Selection of fields to export.
  • Can export to XSLx, CSV, JSON and HTML.

Running Tests

Does the code actually work?

cd testapp/app
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements.txt
(myenv) $ python manage.py test

Security

This project assumes staff users are trusted. There may be ways for users to manipulate this project to get more data access than they should have.

Credits

This project is developed by Otto srl, and originally foked from fgmacedo/django-export-action

django-admin-export-action's People

Contributors

abidibo avatar ds4711 avatar josx avatar morlandi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.