def create_link_lecturer_file(lecturer_data, subject, file_type, import_errors_link, user_create, user_link): if file_type == "text/xml": data_form = LecturerService.get_form_data_xml(lecturer_data) else: data_form = LecturerService.get_form_data_csv(lecturer_data) form_lecturer = UserEditForm(data=data_form) if form_lecturer.is_valid(): lecturer = LecturerService.create(form_lecturer) LecturerService.save(lecturer) password = id_generator() UserService.save_password(lecturer, password) user_create[lecturer] = password if file_type == "text/xml": data_form_link = ImpartSubjectService.get_form_data_xml(lecturer_data, subject) else: data_form_link = ImpartSubjectService.get_form_data_csv(lecturer_data, subject) form_lecturer_link = UserLinkSubjectForm(data=data_form_link) if form_lecturer_link.is_valid(): ImpartSubjectService.reconstruct_and_save(form_lecturer_link) else: fullname = form_lecturer.data['last_name'] + ", " + form_lecturer.data['first_name'] import_errors_link.append(_("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni']) else: if file_type == "text/xml": data_form_link = ImpartSubjectService.get_form_data_xml(lecturer_data, subject) else: data_form_link = ImpartSubjectService.get_form_data_csv(lecturer_data, subject) form_lecturer_link = UserLinkSubjectForm(data=data_form_link) if form_lecturer_link.is_valid(): lecturer_id = form_lecturer_link.data['lecturer_id'] lecturer = Profesor.objects.get(id=lecturer_id) fullname = form_lecturer.data['last_name'] + ", " + form_lecturer.data['first_name'] if lecturer: if form_lecturer_link.is_valid(): ImpartSubjectService.reconstruct_and_save(form_lecturer_link) user_link.append(lecturer) else: import_errors_link.append(_("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni']) else: import_errors_link.append(_("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni']) else: fullname = form_lecturer.data['last_name'] + ", " + form_lecturer.data['first_name'] import_errors_link.append(_("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni'])
def import_users(request): template_data = {} import_errors_create = [] user_create = {} if request.POST: form = FileUploadForm(request.POST, request.FILES) if form.is_valid(): file_name = form.cleaned_data['file_upload'] data = file_name.read() file_name.close() try: if form.cleaned_data['file_upload'].content_type == "text/xml": # File XML data = xmltodict.parse(data) # Iterate students if data['usuarios']['alumnos']: if not isinstance( data['usuarios']['alumnos']['alumno'], list): # 1 value student_data = data['usuarios']['alumnos'][ 'alumno'] data_form = StudentService.get_form_data_xml( student_data) create_student_file(data_form, import_errors_create, user_create) else: for student_data in data['usuarios']['alumnos'][ 'alumno']: data_form = StudentService.get_form_data_xml( student_data) create_student_file(data_form, import_errors_create, user_create) # Iterate lecturers if data['usuarios']['profesores']: if not isinstance( data['usuarios']['profesores']['profesor'], list): # 1 value lecturer_data = data['usuarios']['profesores'][ 'profesor'] data_form = LecturerService.get_form_data_xml( lecturer_data) create_lecturer_file(data_form, import_errors_create, user_create) else: for lecturer_data in data['usuarios'][ 'profesores']['profesor']: data_form = LecturerService.get_form_data_xml( lecturer_data) create_lecturer_file(data_form, import_errors_create, user_create) else: # File CSV for user in csv.reader(data.splitlines()): type_user = user[0] if type_user == 'Alumno': data_form = StudentService.get_form_data_csv(user) create_student_file(data_form, import_errors_create, user_create) elif type_user == 'Profesor': data_form = LecturerService.get_form_data_csv(user) create_lecturer_file(data_form, import_errors_create, user_create) else: raise KeyError('Alumno o Profesor') message = _('Action completed successfully') EmailService.send_email_create_user(user_create, request) if import_errors_create: messages.warning(request, message) template_data[ 'import_errors_create'] = import_errors_create else: messages.success(request, message) form = FileUploadForm() except KeyError as e: message = _( "The file structure is wrong. It needs a label called: " ) + e.message form.add_error('file_upload', message) UserService.rollback_users(user_create) except AttributeError: message = _("Please, check the attributes of the subjects") form.add_error('file_upload', message) UserService.rollback_users(user_create) except TypeError: message = _("Please, check the xml syntax and data values") form.add_error('file_upload', message) UserService.rollback_users(user_create) except Exception: message = _("Please, check the file") form.add_error('file_upload', message) UserService.rollback_users(user_create) else: form = FileUploadForm() template_data['form'] = form template_name = 'user/import_user.html' return render_to_response(template_name, template_data, context_instance=RequestContext(request))
def import_users(request): template_data = {} import_errors_create = [] user_create = {} if request.POST: form = FileUploadForm(request.POST, request.FILES) if form.is_valid(): file_name = form.cleaned_data["file_upload"] data = file_name.read() file_name.close() try: if form.cleaned_data["file_upload"].content_type == "text/xml": # File XML data = xmltodict.parse(data) # Iterate students if data["usuarios"]["alumnos"]: if not isinstance(data["usuarios"]["alumnos"]["alumno"], list): # 1 value student_data = data["usuarios"]["alumnos"]["alumno"] data_form = StudentService.get_form_data_xml(student_data) create_student_file(data_form, import_errors_create, user_create) else: for student_data in data["usuarios"]["alumnos"]["alumno"]: data_form = StudentService.get_form_data_xml(student_data) create_student_file(data_form, import_errors_create, user_create) # Iterate lecturers if data["usuarios"]["profesores"]: if not isinstance(data["usuarios"]["profesores"]["profesor"], list): # 1 value lecturer_data = data["usuarios"]["profesores"]["profesor"] data_form = LecturerService.get_form_data_xml(lecturer_data) create_lecturer_file(data_form, import_errors_create, user_create) else: for lecturer_data in data["usuarios"]["profesores"]["profesor"]: data_form = LecturerService.get_form_data_xml(lecturer_data) create_lecturer_file(data_form, import_errors_create, user_create) else: # File CSV for user in csv.reader(data.splitlines()): type_user = user[0] if type_user == "Alumno": data_form = StudentService.get_form_data_csv(user) create_student_file(data_form, import_errors_create, user_create) elif type_user == "Profesor": data_form = LecturerService.get_form_data_csv(user) create_lecturer_file(data_form, import_errors_create, user_create) else: raise KeyError("Alumno o Profesor") message = _("Action completed successfully") EmailService.send_email_create_user(user_create, request) if import_errors_create: messages.warning(request, message) template_data["import_errors_create"] = import_errors_create else: messages.success(request, message) form = FileUploadForm() except KeyError as e: message = _("The file structure is wrong. It needs a label called: ") + e.message form.add_error("file_upload", message) UserService.rollback_users(user_create) except AttributeError: message = _("Please, check the attributes of the subjects") form.add_error("file_upload", message) UserService.rollback_users(user_create) except TypeError: message = _("Please, check the xml syntax and data values") form.add_error("file_upload", message) UserService.rollback_users(user_create) except Exception: message = _("Please, check the file") form.add_error("file_upload", message) UserService.rollback_users(user_create) else: form = FileUploadForm() template_data["form"] = form template_name = "user/import_user.html" return render_to_response(template_name, template_data, context_instance=RequestContext(request))
def create_link_lecturer_file(lecturer_data, subject, file_type, import_errors_link, user_create, user_link): if file_type == "text/xml": data_form = LecturerService.get_form_data_xml(lecturer_data) else: data_form = LecturerService.get_form_data_csv(lecturer_data) form_lecturer = UserEditForm(data=data_form) if form_lecturer.is_valid(): lecturer = LecturerService.create(form_lecturer) LecturerService.save(lecturer) password = id_generator() UserService.save_password(lecturer, password) user_create[lecturer] = password if file_type == "text/xml": data_form_link = ImpartSubjectService.get_form_data_xml( lecturer_data, subject) else: data_form_link = ImpartSubjectService.get_form_data_csv( lecturer_data, subject) form_lecturer_link = UserLinkSubjectForm(data=data_form_link) if form_lecturer_link.is_valid(): ImpartSubjectService.reconstruct_and_save(form_lecturer_link) else: fullname = form_lecturer.data[ 'last_name'] + ", " + form_lecturer.data['first_name'] import_errors_link.append( _("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni']) else: if file_type == "text/xml": data_form_link = ImpartSubjectService.get_form_data_xml( lecturer_data, subject) else: data_form_link = ImpartSubjectService.get_form_data_csv( lecturer_data, subject) form_lecturer_link = UserLinkSubjectForm(data=data_form_link) if form_lecturer_link.is_valid(): lecturer_id = form_lecturer_link.data['lecturer_id'] lecturer = Profesor.objects.get(id=lecturer_id) fullname = form_lecturer.data[ 'last_name'] + ", " + form_lecturer.data['first_name'] if lecturer: if form_lecturer_link.is_valid(): ImpartSubjectService.reconstruct_and_save( form_lecturer_link) user_link.append(lecturer) else: import_errors_link.append( _("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni']) else: import_errors_link.append( _("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni']) else: fullname = form_lecturer.data[ 'last_name'] + ", " + form_lecturer.data['first_name'] import_errors_link.append( _("Lecturer") + ": " + fullname + " - " + form_lecturer.data['dni'])