Skip to content

hdknr/djuploader

Repository files navigation

djuploader

  • Data Uploader

Reference

Exporting Model

1. header_row and data_row in a QuerySet:

from djuploader.queryset import UploadQuerySet
from django.utils.translation import ugettext_lazy as _


class ContactQuerySet(UploadQuerySet):
    def header_row(self, *args, **kwargs):
        ''' CSV Header '''
        return [_('Family Name'), _('First Name'), ]

    def data_row(self, instance):
        ''' CSV Data '''
        return [instance.family_name, instance.first_name, ]

2. bind this QuerySet as a Manager:

class Contact(AbstractProfile):
    # ....
    objects = querysets.ContactQuerySet.as_manager()

3. FileResponse.export(model_class):

from django.contrib.admin.views.decorators import staff_member_required
from djuploader.utils import FileResponse
from . import models

@staff_member_required
def export_contact(request):
    return FileResponse(filename="contact.csv").export(
        models.Contact.objects.all())

Importing Model

1. Add uplaoded_signal to Model

from django.dispatch import dispatcher

class Community(models.Model):
    uploaded_signal = dispatcher.Signal(providing_args=["instance", ])

2. Add receiver

from django.dispatch import receiver
from . import models

@receiver(models.Community.uploaded_signal)
def on_community_uploaded(instance, *args, **kwargs):

    for line, row, errors in instance.open(encoding='cp932'):
        if not errors:
            print "LINE=", line, " do something with dict", row
  • templates/admin/communities/community/change_list.html
{% extends "admin/change_list.html" %}
{% load uploadertags %}

{% block object-tools-items %}
  {% get_upload_model opts.model as um %}       {# get UploadFile instance #}
  {{ block.super }}
  <li>
   <a href="{% url 'admin:djuploader_uploadfile_add' %}?upload={{ um.id }}">
        {% trans 'Import' %}{% trans 'Community' %}</a>
  </li>
{% endblock %}

About

Data Uploader for Django

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published