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