Пример #1
0
def user_upload_add(request, form_class=UserImportForm,
                    template_name="imports/users.html"):
    return HttpResponseRedirect(reverse('profiles.user_import'))

    if not request.user.profile.is_superuser:
        raise Http403

    if request.method == 'POST':
        form = form_class(request.POST, request.FILES)
        if form.is_valid():
            # reset the password_promt session
            del request.session['password_promt']

            # save the uploaded file
            f = request.FILES['file']
            file_name = f.name.replace('&', '')
            file_path = os.path.join(IMPORT_FOLDER_NAME, file_name)
            if os.path.isdir(settings.MEDIA_ROOT):
                file_dir = os.path.join(settings.MEDIA_ROOT, IMPORT_FOLDER_NAME)
                if not os.path.isdir(file_dir):
                    os.makedirs(file_dir)
            handle_uploaded_file(f, file_path)

            interactive = form.cleaned_data['interactive']
            override = form.cleaned_data['override']
            key = form.cleaned_data['key']
            group = form.cleaned_data['group']
            clear_group_membership = form.cleaned_data[
                                    'clear_group_membership'
                                    ]

            # read the spreadsheet into a dictionary
            data_dict_list = extract_from_excel(file_path)

            # generate a unique id for this import
            sid = str(int(time.time()))

            # store the infor in the session to pass to the next page
            request.session[sid] = {'file_name': file_name,
                                   'interactive': interactive,
                                   'override': override,
                                   'key': key,
                                   'group': group,
                                   'clear_group_membership': \
                                        clear_group_membership,
                                   'total': len(data_dict_list),
                                   'data_dict_list': data_dict_list}

            EventLog.objects.log()
            return HttpResponseRedirect(reverse(
                                    'import.user_upload_preview',
                                    args=[sid]))
    else:
        form = form_class()
    return render_to_response(template_name, {'form': form},
        context_instance=RequestContext(request))
Пример #2
0
def user_groups_import_process(import_i, preview=True):
    """
    This function processes each row and store the data
    in the group_object_dict. Then it updates the database
    if preview=False.
    """
    #print "START IMPORT PROCESS"
    data_dict_list = extract_from_excel(import_i.file.name)
    data_dict_list_len = len(data_dict_list)

    group_obj_list = []
    invalid_list = []

    import_i.total_invalid = 0
    import_i.total_created = 0
    if not preview: #update import status
        import_i.status = "processing"
        import_i.save()

    try:
        # loop through the file's entries and determine valid imports
        start = 0
        finish = data_dict_list_len
        for r in range(start, finish):
            invalid = False
            group_object_dict = {}
            data_dict = data_dict_list[r]

            for key in data_dict.keys():
                group_object_dict[key] = data_dict[key]

            group_object_dict['ROW_NUM'] = data_dict['ROW_NUM']

            # Validate Group Name
            try:
                group_exists = Group.objects.get(name=group_object_dict['name'])
                invalid = True
                invalid_reason = "A GROUP WITH NAME '%s' ALREADY EXISTS" % group_object_dict['name']
            except Group.DoesNotExist:
                pass

            # Validate Type Field
            if not group_object_dict['type'] in TYPE_FIELD_CHOICES:
                invalid = True
                invalid_reason = "INVALID TYPE %s" % group_object_dict['type']

            # Validate Auto Respond Priority
            if group_object_dict['auto_respond_priority']:
                try:
                    group_object_dict['auto_respond_priority'] = float(group_object_dict['auto_respond_priority'])
                except ValueError:
                    invalid = True
                    invalid_reason = "AUTO RESPOND PRIORITY ONLY ACCEPTS FLOAT VALUES"
            else:
                group_object_dict['auto_respond_priority'] = 0

            if invalid:
                group_object_dict['ERROR'] = invalid_reason
                group_object_dict['IS_VALID'] = False
                import_i.total_invalid += 1
                if not preview:
                    invalid_list.append({
                        'ROW_NUM': group_object_dict['ROW_NUM'],
                        'ERROR': group_object_dict['ERROR']})
            else:
                group_object_dict['IS_VALID'] = True
                import_i.total_created += 1

                if not preview:
                    group_import_dict = {}
                    group_import_dict['ACTION'] = 'insert'
                    group = do_group_import(group_object_dict)
                    group_import_dict = {}
                    group_import_dict['group'] = group
                    group_import_dict['ROW_NUM'] = group_object_dict['ROW_NUM']
                    group_obj_list.append(group_import_dict)

            if preview:
                group_obj_list.append(group_object_dict)

        if not preview: # save import status
            import_i.status = "completed"
            import_i.save()
    except Exception, e:
        import_i.status = "failed"
        import_i.failure_reason = unicode(e)
        import_i.save()
Пример #3
0
def event_import_process(import_i, preview=True):
    """
    This function processes each row and store the data
    in the event_object_dict. Then it updates the database
    if preview=False.
    """
    #print "START IMPORT PROCESS"
    data_dict_list = extract_from_excel(unicode(import_i.file))

    event_obj_list = []
    invalid_list = []

    import_i.total_invalid = 0
    import_i.total_created = 0
    if not preview:  # update import status
        import_i.status = "processing"
        import_i.save()

    try:
        # loop through the file's entries and determine valid imports
        start = 0
        finish = len(data_dict_list)
        for r in range(start, finish):
            invalid = False
            event_object_dict = {}
            data_dict = data_dict_list[r]

            for key in data_dict.keys():
                if isinstance(data_dict[key], basestring):
                    event_object_dict[key] = data_dict[key].strip()
                else:
                    event_object_dict[key] = data_dict[key]

            event_object_dict['ROW_NUM'] = data_dict['ROW_NUM']

            # Validate date fields
            try:
                datetime.strptime(event_object_dict["start_dt"], VALID_DATE_FORMAT)
                datetime.strptime(event_object_dict["end_dt"], VALID_DATE_FORMAT)
            except ValueError, e:
                invalid = True
                invalid_reason = "INVALID DATE FORMAT. SHOULD BE: %s" % VALID_DATE_FORMAT

            try:
                timezone(event_object_dict["timezone"])
            except UnknownTimeZoneError, e:
                invalid = True
                invalid_reason = "UNKNOWN TIMEZONE %s" % event_object_dict["timezone"]

            if invalid:
                event_object_dict['ERROR'] = invalid_reason
                event_object_dict['IS_VALID'] = False
                import_i.total_invalid += 1
                if not preview:
                    invalid_list.append({
                        'ROW_NUM': event_object_dict['ROW_NUM'],
                        'ERROR': event_object_dict['ERROR']})
            else:
                event_object_dict['IS_VALID'] = True
                import_i.total_created += 1

                if not preview:
                    event_import_dict = {}
                    event_import_dict['ACTION'] = 'insert'
                    event = do_event_import(event_object_dict)
                    event_import_dict = {}
                    event_import_dict['event'] = event
                    event_import_dict['ROW_NUM'] = event_object_dict['ROW_NUM']
                    event_obj_list.append(event_import_dict)

            if preview:
                event_obj_list.append(event_object_dict)
Пример #4
0
def user_groups_import_process(import_i, preview=True):
    """
    This function processes each row and store the data
    in the group_object_dict. Then it updates the database
    if preview=False.
    """
    #print "START IMPORT PROCESS"
    data_dict_list = extract_from_excel(import_i.file.name)
    data_dict_list_len = len(data_dict_list)

    group_obj_list = []
    invalid_list = []

    import_i.total_invalid = 0
    import_i.total_created = 0
    if not preview:  #update import status
        import_i.status = "processing"
        import_i.save()

    try:
        # loop through the file's entries and determine valid imports
        start = 0
        finish = data_dict_list_len
        for r in range(start, finish):
            invalid = False
            group_object_dict = {}
            data_dict = data_dict_list[r]

            for key in data_dict.keys():
                group_object_dict[key] = data_dict[key]

            group_object_dict['ROW_NUM'] = data_dict['ROW_NUM']

            # Validate Group Name
            try:
                group_exists = Group.objects.get(
                    name=group_object_dict['name'])
                invalid = True
                invalid_reason = "A GROUP WITH NAME '%s' ALREADY EXISTS" % group_object_dict[
                    'name']
            except Group.DoesNotExist:
                pass

            # Validate Type Field
            if not group_object_dict['type'] in TYPE_FIELD_CHOICES:
                invalid = True
                invalid_reason = "INVALID TYPE %s" % group_object_dict['type']

            # Validate Auto Respond Priority
            if group_object_dict['auto_respond_priority']:
                try:
                    group_object_dict['auto_respond_priority'] = float(
                        group_object_dict['auto_respond_priority'])
                except ValueError:
                    invalid = True
                    invalid_reason = "AUTO RESPOND PRIORITY ONLY ACCEPTS FLOAT VALUES"
            else:
                group_object_dict['auto_respond_priority'] = 0

            if invalid:
                group_object_dict['ERROR'] = invalid_reason
                group_object_dict['IS_VALID'] = False
                import_i.total_invalid += 1
                if not preview:
                    invalid_list.append({
                        'ROW_NUM': group_object_dict['ROW_NUM'],
                        'ERROR': group_object_dict['ERROR']
                    })
            else:
                group_object_dict['IS_VALID'] = True
                import_i.total_created += 1

                if not preview:
                    group_import_dict = {}
                    group_import_dict['ACTION'] = 'insert'
                    group = do_group_import(group_object_dict)
                    group_import_dict = {}
                    group_import_dict['group'] = group
                    group_import_dict['ROW_NUM'] = group_object_dict['ROW_NUM']
                    group_obj_list.append(group_import_dict)

            if preview:
                group_obj_list.append(group_object_dict)

        if not preview:  # save import status
            import_i.status = "completed"
            import_i.save()
    except Exception, e:
        import_i.status = "failed"
        import_i.failure_reason = unicode(e)
        import_i.save()
Пример #5
0
def event_import_process(import_i, preview=True):
    """
    This function processes each row and store the data
    in the event_object_dict. Then it updates the database
    if preview=False.
    """
    #print "START IMPORT PROCESS"
    data_dict_list = extract_from_excel(unicode(import_i.file))

    event_obj_list = []
    invalid_list = []

    import_i.total_invalid = 0
    import_i.total_created = 0
    if not preview:  # update import status
        import_i.status = "processing"
        import_i.save()

    try:
        # loop through the file's entries and determine valid imports
        start = 0
        finish = len(data_dict_list)
        for r in range(start, finish):
            invalid = False
            event_object_dict = {}
            data_dict = data_dict_list[r]

            for key in data_dict.keys():
                if isinstance(data_dict[key], basestring):
                    event_object_dict[key] = data_dict[key].strip()
                else:
                    event_object_dict[key] = data_dict[key]

            event_object_dict['ROW_NUM'] = data_dict['ROW_NUM']

            # Validate date fields
            try:
                datetime.strptime(event_object_dict["start_dt"], VALID_DATE_FORMAT)
                datetime.strptime(event_object_dict["end_dt"], VALID_DATE_FORMAT)
            except ValueError, e:
                invalid = True
                invalid_reason = "INVALID DATE FORMAT. SHOULD BE: %s" % VALID_DATE_FORMAT

            try:
                timezone(event_object_dict["timezone"])
            except UnknownTimeZoneError, e:
                invalid = True
                invalid_reason = "UNKNOWN TIMEZONE %s" % event_object_dict["timezone"]

            if invalid:
                event_object_dict['ERROR'] = invalid_reason
                event_object_dict['IS_VALID'] = False
                import_i.total_invalid += 1
                if not preview:
                    invalid_list.append({
                        'ROW_NUM': event_object_dict['ROW_NUM'],
                        'ERROR': event_object_dict['ERROR']})
            else:
                event_object_dict['IS_VALID'] = True
                import_i.total_created += 1

                if not preview:
                    event_import_dict = {}
                    event_import_dict['ACTION'] = 'insert'
                    event = do_event_import(event_object_dict)
                    event_import_dict = {}
                    event_import_dict['event'] = event
                    event_import_dict['ROW_NUM'] = event_object_dict['ROW_NUM']
                    event_obj_list.append(event_import_dict)

            if preview:
                event_obj_list.append(event_object_dict)