Example #1
0
def user_upload_process(request, sid,
                template_name="imports/users_process.html"):
    if not request.user.profile.is_superuser:
        raise Http403   # admin only page

    sid = str(sid)
    import_dict = get_user_import_settings(request, sid)
    if not import_dict:
        return HttpResponseRedirect(reverse('import.user_upload_add'))

    import_dict['folder_name'] = IMPORT_FOLDER_NAME
    import_dict['id'] = sid

    if not default_storage.exists(os.path.join(import_dict['folder_name'],
                                               import_dict['file_name'])):
        return HttpResponseRedirect(reverse('import.user_upload_add'))

    #reset group - delete all members in the group
    if import_dict['clear_group_membership'] and import_dict['group']:
        GroupMembership.objects.filter(group=import_dict['group']).delete()

    d = request.session[sid]
    d.update({
        'is_completed': False,
        'count_insert': 0,
        'count_update': 0,
        'total_done': 0
    })

    request.session[sid] = d
    d = None

    return render_to_response(template_name, import_dict,
        context_instance=RequestContext(request))
Example #2
0
def user_upload_preview(request, sid,
                        template_name="imports/users_preview.html"):
    if not request.user.profile.is_superuser:
        raise Http403

    sid = str(sid)

    import_dict = get_user_import_settings(request, sid)
    import_dict['folder_name'] = IMPORT_FOLDER_NAME

    if not default_storage.exists(os.path.join(import_dict['folder_name'],
                                               import_dict['file_name'])):
        return HttpResponseRedirect(reverse('iimport.user_upload_add'))

    users_list = user_import_process(request,
                                            import_dict,
                                            preview=True,
                                            id=sid)[0]
    import_dict['users_list'] = users_list
    import_dict['id'] = sid
    import_dict['total'] = request.session[sid].get('total', 0)

    return render_to_response(template_name, import_dict,
        context_instance=RequestContext(request))
Example #3
0
def user_upload_subprocess(request, sid,
                           template_name="imports/users_subprocess.html"):
    if not request.user.profile.is_superuser:
        raise Http403

    sid = str(sid)
    import_dict = get_user_import_settings(request, sid)
    if not import_dict:
        return HttpResponse('')

    import_dict['folder_name'] = IMPORT_FOLDER_NAME

    if not default_storage.exists(os.path.join(import_dict['folder_name'],
                                               import_dict['file_name'])):
        return HttpResponse('')

    users_list, invalid_list = user_import_process(request,
                                                   import_dict,
                                                   preview=False,
                                                   id=sid)
    import_dict['users_list'] = users_list

    # recalculate the total
    import_dict['total_done'] = request.session[sid]['total_done']
    import_dict['total_done'] += import_dict['count_insert'] + \
            import_dict['count_update']
    request.session[sid]['total_done'] = import_dict['total_done']

    d = request.session[sid]
    d.update({'total_done': import_dict['total_done']})
    request.session[sid] = d
    d = None

    import_dict['is_completed'] = request.session[sid]['is_completed']

    # store the recap - so we can retrieve it later
    recap_file_name = '%s_recap.txt' % sid
    recap_path = os.path.join(import_dict['folder_name'], recap_file_name)

    if default_storage.exists(recap_path):
        fd = default_storage.open(recap_path, 'r')
        content = fd.read()
        fd.close()
        recap_dict = cPickle.loads(content)
        recap_dict.update({'users_list': recap_dict['users_list'] + \
                                        import_dict['users_list'],
                           'invalid_list': recap_dict['invalid_list'] + \
                                            invalid_list,
                           'total': import_dict['total'],
                           'total_done': import_dict['total_done'],
                           'count_insert': recap_dict['count_insert'] + \
                                            import_dict['count_insert'],
                           'count_update': recap_dict['count_update'] + \
                                            import_dict['count_update'],
                           'count_invalid': recap_dict['count_invalid'] + \
                                            import_dict['count_invalid']
                           })
        import_dict['count_invalid'] = recap_dict['count_invalid']
    else:
        recap_dict = {'users_list': import_dict['users_list'],
                       'invalid_list': invalid_list,
                       'total': import_dict['total'],
                       'total_done': import_dict['total_done'],
                       'count_insert': import_dict['count_insert'],
                       'count_update': import_dict['count_update'],
                       'count_invalid': import_dict['count_invalid'],
                       'file_name': import_dict['file_name']}

    fd = default_storage.open(recap_path, 'w')
    cPickle.dump(recap_dict, fd)
    fd.close()
    # clear the recap_dict
    recap_dict = None

    if import_dict['is_completed']:
        # log an event
        log_defaults = {
            'event_id': 129005,
            'event_data': """User import: %s<br>INSERTS:%d<br>
                        UPDATES:%d<br>INVALID:%d<br>TOTAL:%d""" % \
                                    (import_dict['file_name'],
                                   import_dict['count_insert'],
                                   import_dict['count_update'],
                                   import_dict['count_invalid'],
                                   import_dict['total']),
            'description': 'user import',
            'user': request.user,
            'request': request,
            'source': 'auth',
        }
        EventLog.objects.log(**log_defaults)

        # clear up the session
        del request.session[sid]

        # remove the imported file
        default_storage.delete(os.path.join(import_dict['folder_name'],
                                            import_dict['file_name']))

    import_dict['id'] = sid
    return render_to_response(template_name, import_dict,
        context_instance=RequestContext(request))