Пример #1
0
def import_subject(request):
    template_data = {}
    import_errors_create = []
    import_errors_link = []
    subject_create = []
    subject_link = []

    if request.POST:

        form = FileUploadSubjectForm(request.POST, request.FILES)

        if form.is_valid():

            file_name = form.cleaned_data['file_upload']
            certifications = set(form.cleaned_data['certifications'])
            data = file_name.read()
            file_name.close()

            try:
                if form.cleaned_data['file_upload'].content_type == "text/xml":
                    # File XML
                    data = xmltodict.parse(data)

                    if data['asignaturas']:
                        if not isinstance(data['asignaturas']['asignatura'],
                                          list):
                            # 1 value
                            subject = data['asignaturas']['asignatura']
                            data_form = SubjectService.get_form_data_xml(
                                subject)
                            create_link_subject_file(data_form, certifications,
                                                     import_errors_create,
                                                     import_errors_link,
                                                     subject_create,
                                                     subject_link)
                        else:
                            for subject_data in data['asignaturas'][
                                    'asignatura']:
                                data_form = SubjectService.get_form_data_xml(
                                    subject_data)
                                create_link_subject_file(
                                    data_form, certifications,
                                    import_errors_create, import_errors_link,
                                    subject_create, subject_link)
                else:

                    # File CSV
                    for subject in csv.reader(data.splitlines()):
                        data_form = SubjectService.get_form_data_csv(subject)
                        create_link_subject_file(data_form, certifications,
                                                 import_errors_create,
                                                 import_errors_link,
                                                 subject_create, subject_link)

                if not import_errors_create and not import_errors_link:
                    message = _('Action completed successfully')
                    messages.success(request, message)
                else:
                    if import_errors_create:
                        template_data[
                            'import_errors_create'] = import_errors_create
                    if import_errors_link:
                        template_data[
                            'import_errors_link'] = import_errors_link
                    if import_errors_create or import_errors_link:
                        message = _('Action completed successfully')
                        messages.warning(request, message)

                form = FileUploadSubjectForm()

            except KeyError as e:
                message = _(
                    "The file structure is wrong. It needs a label called: " +
                    e.message)
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link,
                                        certifications)
            except AttributeError:
                message = _("Please, check the attributes of the subjects")
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link,
                                        certifications)
            except TypeError:
                message = _("Please, check the xml syntax and data values")
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link,
                                        certifications)
            except Exception:
                message = _("Please, check the file")
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link,
                                        certifications)

    else:
        form = FileUploadSubjectForm()

    template_data['form'] = form
    template_name = 'subject/import_subject.html'
    return render_to_response(template_name,
                              template_data,
                              context_instance=RequestContext(request))
Пример #2
0
def import_subject(request):
    template_data = {}
    import_errors_create = []
    import_errors_link = []
    subject_create = []
    subject_link = []

    if request.POST:

        form = FileUploadSubjectForm(request.POST, request.FILES)

        if form.is_valid():

            file_name = form.cleaned_data['file_upload']
            certifications = set(form.cleaned_data['certifications'])
            data = file_name.read()
            file_name.close()

            try:
                if form.cleaned_data['file_upload'].content_type == "text/xml":
                    # File XML
                    data = xmltodict.parse(data)

                    if data['asignaturas']:
                        if not isinstance(data['asignaturas']['asignatura'], list):
                            # 1 value
                            subject = data['asignaturas']['asignatura']
                            data_form = SubjectService.get_form_data_xml(subject)
                            create_link_subject_file(data_form, certifications, import_errors_create,
                                                     import_errors_link, subject_create, subject_link)
                        else:
                            for subject_data in data['asignaturas']['asignatura']:
                                data_form = SubjectService.get_form_data_xml(subject_data)
                                create_link_subject_file(data_form, certifications, import_errors_create,
                                                         import_errors_link, subject_create, subject_link)
                else:

                    # File CSV
                    for subject in csv.reader(data.splitlines()):
                        data_form = SubjectService.get_form_data_csv(subject)
                        create_link_subject_file(data_form, certifications, import_errors_create, import_errors_link,
                                                 subject_create, subject_link)

                if not import_errors_create and not import_errors_link:
                    message = _('Action completed successfully')
                    messages.success(request, message)
                else:
                    if import_errors_create:
                        template_data['import_errors_create'] = import_errors_create
                    if import_errors_link:
                        template_data['import_errors_link'] = import_errors_link
                    if import_errors_create or import_errors_link:
                        message = _('Action completed successfully')
                        messages.warning(request, message)

                form = FileUploadSubjectForm()

            except KeyError as e:
                message = _("The file structure is wrong. It needs a label called: " + e.message)
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link, certifications)
            except AttributeError:
                message = _("Please, check the attributes of the subjects")
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link, certifications)
            except TypeError:
                message = _("Please, check the xml syntax and data values")
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link, certifications)
            except Exception:
                message = _("Please, check the file")
                form.add_error('file_upload', message)
                SubjectService.rollback(subject_create, subject_link, certifications)

    else:
        form = FileUploadSubjectForm()

    template_data['form'] = form
    template_name = 'subject/import_subject.html'
    return render_to_response(template_name, template_data, context_instance=RequestContext(request))