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))
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()
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)
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()