Beispiel #1
0
def import_wxr(request, blog_slug='', blog_root=''):

    from forms import ImportForm

    if request.method == "POST":

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

        if form.is_valid():

            if form.cleaned_data.get('format') == "WXR":

                blog_slug = form.cleaned_data['blog_slug']
                included_tags = form.cleaned_data['include_tags']
                excluded_tags = form.cleaned_data['exclude_tags']
                wxr_file = request.FILES['input_file']
                tools.import_wxr(blog_slug, wxr_file, included_tags, excluded_tags)
    else:

        form = ImportForm()

    td = dict(form=form)


    return render_to_response("blog/tools/import_wxr.html",
                              td,
                              context_instance=RequestContext(request))
def index():
    form = ImportForm()
    if form.validate_on_submit():
        # Remove excessive whitespace from user input
        import_code = form.import_code.data.strip()
        return vendor(import_code)
    return render_template("index.html", form=form)
Beispiel #3
0
def importgrades(request):
    username = request.user.username
    if request.POST:
        form = ImportForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                xlsfile = request.FILES.get('grades', '')
                filename = xlsfile.name
                #创建文件存储的路径
                fname = os.path.join(
                    settings.MEDIA_ROOT,
                    'uploads/grades/%s' % strftime("%Y/%m/%d", localtime()),
                    filename)
                if os.path.exists(fname):
                    os.remove(fname)
                dirs = os.path.dirname(fname)
                if not os.path.exists(dirs):
                    os.makedirs(dirs)
                #写入文件
                if os.path.isfile(fname):
                    os.remove(fname)
                content = xlsfile.read()
                fp = open(fname, 'wb')
                fp.write(content)
                fp.close()

                #格式化xls文件中数据,将其存到数据库中
                book = open_workbook(fname)
                sheet = book.sheet_by_index(0)

                for row_index in range(sheet.nrows):
                    record = sheet.row_values(row_index, 0)
                    try:
                        student = Student.objects.get(
                            user__username=str(record[1]).rstrip(".0"))
                        grade = Grade(term=record[0],
                                      student=student,
                                      score=record[2])
                        grade.save()
                    except Student.DoesNotExist, e:
                        traceback.print_stack()
                        traceback.print_exc()
                        print e
                successinfo = "上传"
                success = True
                return render_to_response(
                    'grade/import.html', {
                        "title": '导入成绩单',
                        'form': form,
                        'successinfo': successinfo,
                        'success': success,
                        'username': username
                    },
                    context_instance=RequestContext(request))
            except Exception, e:
                traceback.print_stack()
                traceback.print_exc()
                print e
Beispiel #4
0
def importgrades(request):
    username = request.user.username
    if request.POST:
        form = ImportForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                xlsfile = request.FILES.get('grades', '')
                filename = xlsfile.name
                #文件存储路径创建
                fname = os.path.normpath(os.path.join(settings.MEDIA_ROOT, 'uploads/grades/%s' %strftime('%Y/%m/%d', localtime()), filename))
                if os.path.exists(fname):
                    os.remove(fname)
                dirs = os.path.dirname(fname)
                if not os.path.exists(dirs):
                    os.makedirs(dirs)
                #Writing into file
                if os.path.isfile(fname):
                    os.remove(fname)
                content = xlsfile.read()
                fp = open(fname, 'wb')
                fp.write(content)
                fp.close()
                #格式化xls文件中数据, 将其存在到数据库中
                book = open_workbook(fname)
                sheet = book.sheet_by_index(0)

                for row_index in range(sheet.nrows):
                    record = sheet.row_values(row_index, 0)
                    try:
                        student = Student.objects.get(user__username=str(record[1]).rstrip(".0"))
                        grade = Grade(term=record[0], student=student, socre=record[2])
                        grade.save()
                    except Student.DoseNotExist, e:
                        traceback.print_stack()
                        traceback.print_exc()
                        print e
                successinfo = u'上传'
                success = True
                return render_to_response('grade/import.html', {
                    'title': u'导入成绩',
                    'form': form,
                    'successinfo': successinfo,
                    'success': success,
                    'username': username
                }, context_instance=RequestContext(request))
            except Exception, e:
                traceback.print_stack()
                traceback.print_exc()
                print e
Beispiel #5
0
def import_song():
    form = ImportForm()
    if form.validate_on_submit():
        song_json = json.loads(request.files[form.json.name].read())
        name = song_json.get('name')
        content = song_json.get('content')
        song = SongModel(name=name,content=content,added_by=users.get_current_user())
        try:
            song.put()
            song_id = song.key.id()
            flash(u'Song %s successfully saved.' % song_id, 'success')
            return redirect(url_for('list_songs'))
        except CapabilityDisabledError:
            flash(u'App Engine Datastore is currently in read-only mode.', 'info')
            return redirect(url_for('list_songs'))
        return redirect(url_for('list_songs'))
Beispiel #6
0
def import_subscription(request):
    """
    Forms-based interface for OPML import
    """
    import_failed = False
    if request.method == 'POST':
        form = ImportForm(request.POST, request.FILES)
        if form.is_valid():
            uploaded_file = request.FILES['opml_file']
            try:
                feedprocessor.import_opml(uploaded_file.read(), request.user)
                return HttpResponseRedirect(reverse('reader:index'))
            except:
                import_failed = True
    else:
        form = ImportForm()
    return render(request, 'reader/import.html', {'form':form, 'import_failed':import_failed})
def vendor(import_code):
    # Error handling on bad url or b64
    try:
        if import_code.startswith("https://pastebin.com/"):
            build = pobapi.from_url(import_code)
        else:
            build = pobapi.from_import_code(import_code)
    except ValueError:
        form = ImportForm()
        form["import_code"].errors = ["Not a valid pastebin.com URL or import code."]
        return render_template("index.html", form=form)

    store = parse(build, quest_data, skill_data)
    tables = generate_table(store)

    return render_template("vendor.html", tables=tables)
Beispiel #8
0
def import_screen(request):
    logger.info("__ input_forms import_form __")
    if request.method == "POST":
        json_file = request.FILES['file']
        json_string = json_file.read()
        json_data = json.loads(json_string)

        aframe_utils.import_screen(json_data)

        if 'screen' in json_data and 'id' in json_data['screen']:
            screen_id = json_data['screen']['id']
            return HttpResponseRedirect("/screens/{}".format(screen_id))

        return HttpResponseRedirect("/screens")
    else:
        form = ImportForm()
        context = {'form': form}
        return render(request, 'screens/import.html', context)
Beispiel #9
0
def list_songs():
    """List all songs"""
    import_form = ImportForm()
    songs_unfiltered = SongModel.query()
    songs = [song for song in songs_unfiltered if song.added_by == users.get_current_user()]
    
    form = SongForm()
    if form.validate_on_submit():
        song = SongModel(
            name=form.name.data,
            content=form.content.data,
            added_by=users.get_current_user()
        )
        try:
            song.put()
            song_id = song.key.id()
            flash(u'Song %s successfully saved.' % song_id, 'success')
            return redirect(url_for('list_songs'))
        except CapabilityDisabledError:
            flash(u'App Engine Datastore is currently in read-only mode.', 'info')
            return redirect(url_for('list_songs'))
    return render_template('list_songs.html', songs=songs, form=form, import_form=import_form)
Beispiel #10
0
def import_v(request):

    fileform = ImportForm()
    
    ## get the previous uploaded file
    ## p=file, previous=dict with some metadata
    p, previous = get_last(request.display_user.id)
    
    if not request.method == 'POST':
        return locals()
    
    # whether or not we just display the cotents, or actually commit the
    # changes depending on which submit button was clicked
    preview = request.POST.get('preview_p') or\
              request.POST.get('preview_u') or\
              request.POST.get('preview_f')
    
    if request.POST.get('import_f') or request.POST.get('preview_f'):
        #the file form was used
        f = request.FILES.get('file')
        url = None
        force_tsv = False
        
    elif request.POST.get('import_u') or request.POST.get('preview_u'):
        # the PHP backup thing was used, may throw errors
        url = request.POST.get('url')
        ba = PHPBackup(url)
        f = None
        force_tsv = True
        
    else:
        url = None
        f = None
        force_tsv = False
    
    locs = {}
    try:
        if f:
            save_upload(f, request.display_user)
        elif url:
            f = ba.get_file()
            save_php(f, request.display_user)
        
        #now it's go time   
        locs = do_import(preview, request.display_user, force_tsv)
        
    except BaseImport.InvalidCSVError:
        Error = "Not a valid CSV file"
        
    except BaseImport.NoFileError:
        Error = "Could not find File"
        
    except InvalidToken:
        Error = "Invalid Token"
        
    except InvalidURL:
        Error = "Invalid URL"
    
    else:
        # the import finished and there are no errors
        if not preview:
            from backup.models import edit_logbook
            edit_logbook.send(sender=request.display_user)
         
    locs2 = locals()
    locs2.update(locs)
    return locs2
Beispiel #11
0
def import_pupil(request, filter_id):
    '''
        Импорт учеников.
    '''
    render = {}
    if request.user.type == 'EduAdmin':
        if request.user.school.id != int(filter_id):
            raise Http404
    render['school'] = school = get_object_or_404(School, id=filter_id)

    if request.method == 'GET':
        render['form'] = form = ImportForm()
    else:
        render['form'] = form = ImportForm(request.POST, request.FILES)
        if form.is_valid():
            render['errors'] = errors = []
            pupils = []
            rows = csv.reader(form.cleaned_data['file'], delimiter=';')
            i = 0
            try:
                for row in rows:
                    i += 1
                    if len(row) < 12:
                        errors.append({
                            'line': i,
                            'column': 0,
                            'error': u'неверное количество столбцов'
                        })
                        continue
                    try:
                        row = ";".join(row)
                        row = row.decode('cp1251')
                    except UnicodeError:
                        errors.append({
                            'line':
                            i,
                            'column':
                            0,
                            'error':
                            u'некорректное значение (невозможно определить кодировку)'
                        })
                        continue
                    row = row.split(';')
                    if len(row[0]) < 2 or len(row[1]) < 2 or len(row[2]) < 2:
                        errors.append({
                            'line': i,
                            'column': 0,
                            'error': u'сликшом короткое ФИО'
                        })
                        continue
                    if row[7]:
                        try:
                            validate_email(row[7])
                        except:
                            errors.append({
                                'line': i,
                                'column': 8,
                                'error': u'email указан неверно'
                            })
                            continue
                    pupil = Pupil(
                        school=school,
                        last_name=row[0],
                        first_name=row[1],
                        middle_name=row[2],
                        email=row[7],
                        parent_phone_1=row[5],
                        parent_phone_2=row[6],
                        order=row[8],
                        health_group=row[9],
                        health_note=row[10],
                    )
                    if row[4]:
                        if not get_grade(row[4]):
                            errors.append({
                                'line':
                                i,
                                'column':
                                4,
                                'error':
                                u'класс "%s" не найден' % row[4]
                            })
                            continue
                        try:
                            pupil.grade = Grade.objects.get(school=school,
                                                            **get_grade(
                                                                row[4]))
                        except Grade.DoesNotExist:
                            errors.append({
                                'line':
                                i,
                                'column':
                                4,
                                'error':
                                u'класс "%s" не найден' % row[4]
                            })
                            continue
                    else:
                        errors.append({
                            'line': i,
                            'column': 4,
                            'error': u'неуказан класс'
                        })
                    if row[3].lower() in [u'м', u'ж', '']:
                        pupil.sex = '1'
                        if row[3].lower == u'ж': pupil.sex = '2'
                    else:
                        errors.append({
                            'line': i,
                            'column': 3,
                            'error': u'существо неизвестного пола'
                        })
                        continue
                    row[8] = row[8].lower()
                    if row[8] in [u'да', u'нет', '']:
                        pupil.special = False
                        if row[8] == u'да': row[8] = True
                    else:
                        errors.append({
                            'line':
                            i,
                            'column':
                            8,
                            'error':
                            u'укажите учитывать ли как специальную группу'
                        })
                        continue
                    pupils.append(pupil)
            except (csv.Error):
                pass

            if len(errors) == 0:
                for pupil in pupils:
                    pupil.save()
                messages.success(request, u'Ученики импортированы')
                return HttpResponseRedirect('..')
    return render_to_response('~userextended/pupilImport.html',
                              render,
                              context_instance=RequestContext(request))
Beispiel #12
0
def import_teacher(request, filter_id):
    '''
        Импорт учителей.
    '''
    render = {}
    if request.user.type == 'EduAdmin':
        if request.user.school.id != int(filter_id):
            raise Http404
    render['school'] = school = get_object_or_404(School, id=filter_id)

    if request.method == 'GET':
        render['form'] = form = ImportForm()
    else:
        render['form'] = form = ImportForm(request.POST, request.FILES)
        if form.is_valid():

            curatorship_grades_ids = [{
                'number': teacher.grade.number,
                'long_name': teacher.grade.long_name
            } for teacher in Teacher.objects.filter(school=school)
                                      if teacher.grade]

            render['errors'] = errors = []
            teachers = []
            rows = csv.reader(form.cleaned_data['file'], delimiter=';')
            i = 0
            try:
                for row in rows:
                    i += 1
                    if len(row) < 7:
                        errors.append({
                            'line': i,
                            'column': 0,
                            'error': u'неверное количество столбцов'
                        })
                        continue
                    try:
                        row = ";".join(row)
                        row = row.decode('cp1251')
                    except UnicodeError:
                        errors.append({
                            'line':
                            i,
                            'column':
                            0,
                            'error':
                            u'некорректное значение (невозможно определить кодировку)'
                        })
                        continue
                    row = row.split(';')
                    if len(row[0]) < 2 or len(row[1]) < 2 or len(row[2]) < 2:
                        errors.append({
                            'line': i,
                            'column': 0,
                            'error': u'сликшом короткое ФИО'
                        })
                        continue
                    try:
                        validate_email(row[3])
                    except ValidationError:
                        errors.append({
                            'line': i,
                            'column': 4,
                            'error': u'email указан неверно'
                        })
                        continue
                    teacher = Teacher(school=school,
                                      last_name=row[0],
                                      first_name=row[1],
                                      middle_name=row[2],
                                      email=row[3])
                    teacher._subjects = []
                    t = [j.strip() for j in row[4].split(',')]
                    for sbj in t:
                        try:
                            teacher._subjects.append(
                                Subject.objects.get(name=sbj, school=school))
                        except Subject.DoesNotExist:
                            errors.append({
                                'line':
                                i,
                                'column':
                                5,
                                'error':
                                u'предмет "%s" не найден' % sbj
                            })
                    teacher._grades = []
                    t = [j.strip() for j in row[5].split(',')]
                    for grade in t:
                        if not get_grade(grade):
                            errors.append({
                                'line':
                                i,
                                'column':
                                5,
                                'error':
                                u'класс "%s" не найден' % grade
                            })
                            continue
                        try:
                            teacher._grades.append(
                                Grade.objects.get(school=school,
                                                  **get_grade(grade)))
                        except Grade.DoesNotExist:
                            errors.append({
                                'line':
                                i,
                                'column':
                                5,
                                'error':
                                u'класс "%s" не найден' % grade
                            })
                    if row[6]:
                        if not get_grade(row[6]):
                            errors.append({
                                'line':
                                i,
                                'column':
                                6,
                                'error':
                                u'класс "%s" не найден' % row[6]
                            })
                            continue
                        if get_grade(row[6]) in curatorship_grades_ids:
                            errors.append({
                                'line':
                                i,
                                'column':
                                6,
                                'error':
                                u'Классное руководство для "%s" \
                            уже присвоено другому учителю' % row[6]
                            })
                            continue
                        try:
                            teacher.grade = Grade.objects.get(school=school,
                                                              **get_grade(
                                                                  row[6]))
                        except Grade.DoesNotExist:
                            errors.append({
                                'line':
                                i,
                                'column':
                                6,
                                'error':
                                u'класс "%s" не найден' % row[6]
                            })
                            continue
                    teachers.append(teacher)
                    curatorship_grades_ids.append(get_grade(row[6]))

            except (csv.Error):
                pass

            if len(errors) == 0:
                for teacher in teachers:
                    teacher.save()
                    [teacher.subjects.add(sbj) for sbj in teacher._subjects]
                    [teacher.grades.add(sbj) for sbj in teacher._grades]
                    teacher.save()
                messages.success(request, u'Преподаватели импортированы')
                return HttpResponseRedirect('..')
    return render_to_response('~userextended/teacherImport.html',
                              render,
                              context_instance=RequestContext(request))
Beispiel #13
0
def import_grade(request, filter_id):
    '''
        Импорт классов.
    '''
    render = {}
    if request.user.type == 'EduAdmin':
        if request.user.school.id != int(filter_id):
            raise Http404
    render['school'] = school = get_object_or_404(School, id=filter_id)

    if request.method == 'GET':
        render['form'] = form = ImportForm()
    else:
        render['form'] = form = ImportForm(request.POST, request.FILES)
        if form.is_valid():
            render['errors'] = errors = []
            grades = []
            rows = csv.reader(form.cleaned_data['file'], delimiter=';')
            i = 0
            try:
                for row in rows:
                    i += 1
                    if len(row) < 3:
                        errors.append({
                            'line':
                            i,
                            'column':
                            0,
                            'error':
                            u'недостаточное количество столбцов'
                        })
                        continue
                    try:
                        int(row[0])
                    except ValueError:
                        errors.append({
                            'line': i,
                            'column': 1,
                            'error': u'это не число'
                        })
                        continue
                    try:
                        row[1], row[2] = row[1].decode(
                            'cp1251'), row[2].decode('cp1251')
                    except UnicodeError:
                        errors.append({
                            'line':
                            i,
                            'column':
                            0,
                            'error':
                            u'некорректное значение (невозможно определить кодировку)'
                        })
                        continue
                    grades.append(
                        Grade(number=row[0],
                              long_name=row[1],
                              small_name=row[2],
                              school=school))
            except csv.Error:
                pass
            if len(errors) == 0:
                for grade in grades:
                    grade.save()
                messages.success(request, u'Классы импортированы')
                return HttpResponseRedirect('..')
    return render_to_response('~userextended/gradeImport.html',
                              render,
                              context_instance=RequestContext(request))