def add_by_paste(request, code_base_id): current_page = 'code' page_title = u'代码分享' try: base = Base.objects.get(id=code_base_id, author=request.user) except Base.DoesNotExist: raise Http404() # 如果已经发布过,则是修改代码 if base.display == True: page_title = '修改代码' button = '修改代码完毕,马上保存' else: page_title = '代码分享第2步:粘贴/上传代码' button = '添加代码完毕,马上发布' # 判断是否是作者本人进入该页面 if request.user <> base.author: raise Http404() # 处理GET请求 if request.method == 'GET': form = PasteForm() file_form = FileForm() codes = Code.objects.filter(base=base) zips = Zip.objects.filter(base=base) return render('code_add_by.html', locals(), context_instance=RequestContext(request)) # 处理POST请求 else: languag_id = request.POST.get('language', 1) content = request.POST.get('content', '') # 处理分类 try: language = Language.objects.get(id=languag_id) except Category.DoesNotExist: messages.error(request, "你选择的语言不存在") return HttpResponseRedirect('/code/add/%d/' % base.id) # 检查代码长度 if 0 < len(content) <= 20: messages.error(request, "代码长度不够20字符") return HttpResponseRedirect('/code/add/%d/' % base.id) try: new_code = Code(base=base, language=language, content=content, name='代码片段') new_code.save() except Exception, e: messages.error(request, "保存数据时出现错误") return HttpResponseRedirect('/code/add/%d/' % base.id)
def add_by_file(request, base_id): try: base = Base.objects.get(id=base_id, author=request.user) except Base.DoesNotExist: raise Http404() if request.method == 'GET': return HttpResponseRedirect('/code/add/%d/' % base.id) elif 'file_upload' in request.FILES: file = request.FILES['file_upload'] else: messages.warning(request, '请选择文件') return HttpResponseRedirect('/code/add/%d/' % base.id) #检查文件大小 file_size = 0 for chunk in file.chunks(): file_size += len(chunk) if file_size >= 1024 * 1024 * 5: messages.error(request, '文件大小超过限制') return HttpResponseRedirect('/code/add/%d/' % base.id) # 处理.py 文件 lans = Language.objects.filter(~Q(suffix='')) code_file_list = [lan.suffix for lan in lans] zip_file_list = ['tar', 'zip', 'rar', 'gz'] file_suffix = file.name.split('.')[-1] if file_suffix in code_file_list: try: language = Language.objects.get(suffix=file.name.split('.')[-1]) except Language.DoesNotExist: messages.error(request, '不支持你上传的文件') return HttpResponseRedirect('/code/add/%d/' % base.id) file.open() content = file.read() if len(content) < 20: messages.error(request, "代码长度少于20字符") return HttpResponseRedirect('/code/add/%d/' % base.id) code = Code(base=base, content=content, language=language, name=file.name) try: code.save() except Exception, e: messages.error(request, '保存代码时,服务器出现错误:' + str(e.message)) else: messages.success(request, '上传python文件成功!') return HttpResponseRedirect('/code/add/%d/' % base.id)