Esempio n. 1
0
def load_data(request):
    """
    Load data from uploaded file or disk.

    Note: A uploaded file will be saved on `SMUGGLER_FIXTURE_DIR` if the submit
          button with name "_loadandsave" was pressed.
    """
    form = ImportFileForm()
    if request.method == 'POST':
        data = []
        if request.POST.has_key('_load') or request.POST.has_key('_loadandsave'):
            form = ImportFileForm(request.POST, request.FILES)
            if form.is_valid():
                uploaded_file = request.FILES['file']
                file_name = uploaded_file.name
                file_format = file_name.split('.')[-1]
                if request.POST.has_key('_loadandsave'):
                    destination_path = os.path.join(SMUGGLER_FIXTURE_DIR,
                                                    file_name)
                    save_uploaded_file_on_disk(uploaded_file, destination_path)
                    file_data = open(destination_path, 'r')
                elif uploaded_file.multiple_chunks():
                    file_data = open(uploaded_file.temporary_file_path(), 'r')
                else:
                    file_data = uploaded_file.read()
                data.append((file_format, file_data))
        elif request.POST.has_key('_loadfromdisk'):
            query_dict = request.POST.copy()        
            del(query_dict['_loadfromdisk'])
            del(query_dict['csrfmiddlewaretoken'])
            selected_files = query_dict.values()
            for file_name in selected_files:
                file_path = os.path.join(SMUGGLER_FIXTURE_DIR, file_name)
                file_format = file_name.split('.')[-1]
                file_data = open(file_path, 'r')
                data.append((file_format, file_data))
        counter = 0
        for format, stream in data:
            objects = serializers.deserialize(format, stream)
            for obj in objects:
                counter += 1
                obj.save()
        if data:
            user_msg = ('%(obj_count)d object(s) from %(file_count)d file(s) '
                        'loaded with success.') # TODO: pluralize
            user_msg = _(user_msg) % {
                'obj_count': counter,
                'file_count': len(data)
            }
            messages.add_message(request, messages.INFO, user_msg)
    context = {
        'files_available': get_file_list(SMUGGLER_FIXTURE_DIR) \
            if SMUGGLER_FIXTURE_DIR else [],
        'smuggler_fixture_dir': SMUGGLER_FIXTURE_DIR,
        'import_file_form': form,
    }
    return render_to_response('smuggler/load_data_form.html', context,
                              context_instance=RequestContext(request))
Esempio n. 2
0
def load_data(request):
    """
    Load data from uploaded file or disk.

    Note: A uploaded file will be saved on `SMUGGLER_FIXTURE_DIR` if the submit
          button with name "_loadandsave" was pressed.
    """
    form = ImportFileForm()
    if request.method == 'POST':
        data = []
        if request.POST.has_key('_load') or request.POST.has_key(
                '_loadandsave'):
            form = ImportFileForm(request.POST, request.FILES)
            if form.is_valid():
                uploaded_file = request.FILES['file']
                file_name = uploaded_file.name
                file_format = file_name.split('.')[-1]
                if request.POST.has_key('_loadandsave'):
                    destination_path = os.path.join(SMUGGLER_FIXTURE_DIR,
                                                    file_name)
                    save_uploaded_file_on_disk(uploaded_file, destination_path)
                    file_data = open(destination_path, 'r')
                elif uploaded_file.multiple_chunks():
                    file_data = open(uploaded_file.temporary_file_path(), 'r')
                else:
                    file_data = uploaded_file.read()
                data.append((file_format, file_data))
        elif request.POST.has_key('_loadfromdisk'):
            query_dict = request.POST.copy()
            del (query_dict['_loadfromdisk'])
            del (query_dict['csrfmiddlewaretoken'])
            selected_files = query_dict.values()
            for file_name in selected_files:
                file_path = os.path.join(SMUGGLER_FIXTURE_DIR, file_name)
                file_format = file_name.split('.')[-1]
                file_data = open(file_path, 'r')
                data.append((file_format, file_data))
        if data:
            try:
                obj_count = load_requested_data(data)
                user_msg = (
                    '%(obj_count)d object(s) from %(file_count)d file(s) '
                    'loaded with success.')  # TODO: pluralize
                user_msg = _(user_msg) % {
                    'obj_count': obj_count,
                    'file_count': len(data)
                }
                messages.add_message(request, messages.INFO, user_msg)
            except (IntegrityError, ObjectDoesNotExist), e:
                messages.add_message(
                    request, messages.ERROR,
                    _(u'An exception occurred while loading data: %s') %
                    unicode(e))
Esempio n. 3
0
def load_data(request):
    """
    Load data from uploaded file or disk.

    Note: A uploaded file will be saved on `SMUGGLER_FIXTURE_DIR` if the submit
          button with name "_loadandsave" was pressed.
    """
    form = ImportFileForm()
    if request.method == "POST":
        data = []
        if request.POST.has_key("_load") or request.POST.has_key("_loadandsave"):
            form = ImportFileForm(request.POST, request.FILES)
            if form.is_valid():
                uploaded_file = request.FILES["file"]
                file_name = uploaded_file.name
                file_format = file_name.split(".")[-1]
                if request.POST.has_key("_loadandsave"):
                    destination_path = os.path.join(SMUGGLER_FIXTURE_DIR, file_name)
                    save_uploaded_file_on_disk(uploaded_file, destination_path)
                    file_data = open(destination_path, "r")
                elif uploaded_file.multiple_chunks():
                    file_data = open(uploaded_file.temporary_file_path(), "r")
                else:
                    file_data = uploaded_file.read()
                data.append((file_format, file_data))
        elif request.POST.has_key("_loadfromdisk"):
            query_dict = request.POST.copy()
            del (query_dict["_loadfromdisk"])
            del (query_dict["csrfmiddlewaretoken"])
            selected_files = query_dict.values()
            for file_name in selected_files:
                file_path = os.path.join(SMUGGLER_FIXTURE_DIR, file_name)
                file_format = file_name.split(".")[-1]
                file_data = open(file_path, "r")
                data.append((file_format, file_data))
        counter = 0
        for format, stream in data:
            objects = serializers.deserialize(format, stream)
            for obj in objects:
                counter += 1
                obj.save()
        if data:
            user_msg = "%(obj_count)d object(s) from %(file_count)d file(s) " "loaded with success."  # TODO: pluralize
            user_msg = _(user_msg) % {"obj_count": counter, "file_count": len(data)}
            request.user.message_set.create(message=user_msg)
    context = {
        "files_available": get_file_list(SMUGGLER_FIXTURE_DIR) if SMUGGLER_FIXTURE_DIR else [],
        "smuggler_fixture_dir": SMUGGLER_FIXTURE_DIR,
        "import_file_form": form,
    }
    return render_to_response("smuggler/load_data_form.html", context, context_instance=RequestContext(request))
Esempio n. 4
0
def load_data(request):
    """
    Load data from uploaded file or disk.

    Note: A uploaded file will be saved on `SMUGGLER_FIXTURE_DIR` if the submit
          button with name "_loadandsave" was pressed.
    """
    form = ImportFileForm()
    if request.method == 'POST':
        data = []
        if request.POST.has_key('_load') or request.POST.has_key('_loadandsave'):
            form = ImportFileForm(request.POST, request.FILES)
            if form.is_valid():
                uploaded_file = request.FILES['file']
                file_name = uploaded_file.name
                file_format = file_name.split('.')[-1]
                if request.POST.has_key('_loadandsave'):
                    destination_path = os.path.join(SMUGGLER_FIXTURE_DIR,
                                                    file_name)
                    save_uploaded_file_on_disk(uploaded_file, destination_path)
                    file_data = open(destination_path, 'r')
                elif uploaded_file.multiple_chunks():
                    file_data = open(uploaded_file.temporary_file_path(), 'r')
                else:
                    file_data = uploaded_file.read()
                data.append((file_format, file_data))
        elif request.POST.has_key('_loadfromdisk'):
            query_dict = request.POST.copy()        
            del(query_dict['_loadfromdisk'])
            del(query_dict['csrfmiddlewaretoken'])
            selected_files = query_dict.values()
            for file_name in selected_files:
                file_path = os.path.join(SMUGGLER_FIXTURE_DIR, file_name)
                file_format = file_name.split('.')[-1]
                file_data = open(file_path, 'r')
                data.append((file_format, file_data))
        if data:
            try:
                obj_count = load_requested_data(data)
                user_msg = ('%(obj_count)d object(s) from %(file_count)d file(s) '
                            'loaded with success.') # TODO: pluralize
                user_msg = _(user_msg) % {
                    'obj_count': obj_count,
                    'file_count': len(data)
                }
                messages.add_message(request, messages.INFO, user_msg)
            except (IntegrityError, ObjectDoesNotExist), e:
                messages.add_message(request, messages.ERROR,
                    _(u'An exception occurred while loading data: %s')
                        % unicode(e))