def upload_file(request): dir = _get_config('UEDITOR_UPLOAD_DIR') url = _get_config('UEDITOR_UPLOAD_PREFIX') # 判断文件夹是否存 if not os.path.exists(dir): os.system("mkdir -p {}".format(dir)) # 写入数据 file = request.FILES.get("upfile") name = file.name suffix = os.path.splitext(name)[1] file_name = short_id.get_short_id() + suffix f = open(os.path.join(dir, file_name), 'wb') for chunk in file.chunks(): f.write(chunk) f.close() # 响应 results = { "name": file_name, "original": file_name, "size": "", "state": "SUCCESS", "type": "png", "url": url + file_name } return HttpResponse(json.dumps(results))
def get_auth_url(request): domain = request.scheme + "://" + request.META.get("HTTP_HOST") clientId = __get_config("GITHUB_CLIENT_ID") redirect_uri = domain + __get_config("GITHUB_CLIENT_CALLBACK") state = short_id.get_short_id() request.session['state'] = state return BASE_URL + "/login/oauth/authorize?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&state=" + state
def upload_scrawl(request): # 涂鸦 strs = request.POST.get("upfile") imgdata = base64.b64decode(strs) dir = _get_config('UEDITOR_UPLOAD_DIR') url = _get_config('UEDITOR_UPLOAD_PREFIX') # 判断文件夹是否存 if not os.path.exists(dir): os.system("mkdir -p {}".format(dir)) file_name = short_id.get_short_id() + ".png" file = open(os.path.join(dir, file_name), 'wb') file.write(imgdata) file.close() # 响应 results = { "name": file_name, "original": file_name, "size": "", "state": "SUCCESS", "type": "png", "url": url + file_name } return HttpResponse(json.dumps(results))
def upload_file(request): # 写入数据 file = request.FILES.get("upfile") name = file.name suffix = os.path.splitext(name)[1] target_name = short_id.get_short_id() + suffix rs = get_oss_bucket() bucket = rs["bucket"] cname = rs["cname"] bucket.put_object(target_name, file) # 响应 results = { "name": target_name, "original": target_name, "size": "", "state": "SUCCESS", "type": "png", "url": cname + "/" + target_name } return HttpResponse(json.dumps(results))
def project_detail(request, name): r = requests.get("https://api.github.com/repos/newpanjing/{}".format(name)) rs = None readme = None tags = None if r.status_code == 200: rs = r.json() # 读取 readme if rs["description"]: arry = analyse.extract_tags(rs["description"], topK=5) tags = ','.join(arry) r = requests.get("https://raw.githubusercontent.com/newpanjing/{}/master/README.md?_={}".format(name, random.uniform( 100, 999))) if r.status_code == 200: readme = markdown.markdown(r.text) sid = short_id.get_short_id() request.session['sid'] = sid comment = get_comment(3, name) return render(request, 'project_detail.html', { 'item': rs, 'readme': readme, 'name': name, 'tags': tags, "sid": sid, "comment": comment })
def save_model(self, request, obj, form, change): obj.user = request.user subject = get_subject(obj.content) # oss.put_object(obj.image.file.file) # 不超过200字 if len(subject) > 200: subject = subject[0:200] # 短id if not obj.sid: obj.sid = short_id.get_short_id() obj.subject = subject # 处理标签 tags = obj.tags # 自动生成 if tags is None or tags is "": r = analyse.extract_tags(subject, topK=5) tags = ",".join(r) obj.tags = tags # 如果没有封面就生成 if obj.image.name == '': total = Cover.objects.count() c = Cover.objects.all()[random.randint(0, total - 1)] url = draw.draw(text=obj.title, url=c.image.url, font_size=c.font_size, color=c.color, x=c.x, y=c.y) obj.image.name = url super(ArticleAdmin, self).save_model(request, obj, form, change) cache.delete(cache.CACHE_HOME_KEY)
def detail(request, id): query_set = {} # 如果是数字就是id,不是就是sid if id.isdigit(): query_set["id"] = id else: query_set["sid"] = id # 查询一条数据 article = None try: article = Article.objects.get(**query_set) except Article.DoesNotExist: raise Http404 # 修改点击量 article.hits += 1 article.save() sid = short_id.get_short_id() request.session['sid'] = sid # 查询评论 comment = get_comment(0, article.id) # 随机10片文章 recommends = get_recommend(10) return render(request, "detail.html", { 'id': id, 'article': article, 'sid': sid, 'comment': comment, 'recommends': recommends })
def get_auth_url(request): domain = "https://" + request.META.get("HTTP_HOST") # 防止CSRF攻击 state = short_id.get_short_id() client_id = __get_config('QQ_CLIENT_ID') redirect_uri = domain + __get_config('QQ_CLIENT_CALLBACK') request.session['state'] = state return BASE_URL + "?response_type=code&client_id={}&redirect_uri={}&state={}".format( client_id, redirect_uri, state)
def page(request, alias): page = Page.objects.values('title', 'content', 'id').get(alias=alias) sid = short_id.get_short_id() request.session['sid'] = sid comment = get_comment(2, page.get('id')) return render(request, 'page.html', { "page": page, "sid": sid, "comment": comment })
def _save(self, name, content): # 为保证django行为的一致性,保存文件时,应该返回相对于`media path`的相对路径。 # target_name = self._get_target_name(name) suffix = os.path.splitext(name)[1] target_name = short_id.get_short_id() + suffix content.open() content_str = b''.join(chunk for chunk in content.chunks()) self.bucket.put_object(target_name, content_str) content.close() return self.cname + "/" + target_name
def detail(request, id): query_set = {} # 如果是数字就是id,不是就是sid if id.isdigit(): query_set["id"] = id else: query_set["sid"] = id # 查询一条数据 article = None try: article = Article.objects.get(**query_set) except Article.DoesNotExist: raise Http404 # 修改点击量 article.hits += 1 article.save() # 如果是markdown,就用markdown渲染 article.content = markdown.markdown(article.content, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ], safe_mode=True, enable_attributes=False) sid = short_id.get_short_id() request.session['sid'] = sid # 查询评论 comment = get_comment(0, article.id) # 随机10片文章 recommends = get_recommend(10) return render( request, "detail.html", { 'id': id, 'article': article, 'sid': sid, 'comment': comment, 'recommends': recommends })
def page(request, alias): page = Page.objects.values('title', 'content', 'id').get(alias=alias) page['content'] = markdown.markdown(page.get('content'), extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ], safe_mode=True, enable_attributes=False) sid = short_id.get_short_id() request.session['sid'] = sid comment = get_comment(2, page.get('id')) return render(request, 'page.html', { "page": page, "sid": sid, "comment": comment })
def get_access_token(request, code): domain = request.scheme + "://" + request.META.get("HTTP_HOST") clientId = __get_config("GITHUB_CLIENT_ID") client_secret = __get_config("GITHUB_CLIENT_SECRET") redirect_uri = domain + __get_config("GITHUB_CLIENT_CALLBACK") state = short_id.get_short_id() json = _get( '/login/oauth/access_token', { "client_id": clientId, "client_secret": client_secret, "code": code, "redirect_uri": redirect_uri, "state": state }) return json
def post(self, request, *args, **kwargs): upload_image = request.FILES.get("editormd-image-file", None) media_root = settings.MEDIA_ROOT # image none check if not upload_image: return HttpResponse( json.dumps({ 'success': 0, 'message': "未获取到要上传的图片", 'url': "" })) # image format check file_name_list = upload_image.name.split('.') file_extension = file_name_list.pop(-1) file_name = '.'.join(file_name_list) if file_extension not in MDEDITOR_CONFIGS['upload_image_formats']: return HttpResponse( json.dumps({ 'success': 0, 'message': "上传图片格式错误,允许上传图片格式为:%s" % ','.join(MDEDITOR_CONFIGS['upload_image_formats']), 'url': "" })) suffix = os.path.splitext(upload_image._name)[1] target_name = short_id.get_short_id() + suffix rs = get_oss_bucket() rs.get('bucket').put_object(target_name, upload_image) url = rs.get('cname') + '/' + target_name return HttpResponse( json.dumps({ 'success': 1, 'message': "上传成功!", 'url': url }))
def draw(text='', url=None, x=0, y=0, font_size=24, color='#FFF'): font = ImageFont.truetype(os.path.abspath(os.path.dirname(__file__)) + "/pingfang.ttf", font_size) r = requests.get(url, verify=False) # r = requests.get('http://oss.88cto.com/4y6MS8Rs.png') stream = BytesIO() stream.write(r.content) img1 = Image.open(stream) d = ImageDraw.Draw(img1) d.text((x, y), text, color, font=font) io_obj = BytesIO() # img1.save('/Users/panjing/Downloads/{}.png'.format(name)) img1.save(io_obj, 'png') filename = short_id.get_short_id() + ".png" result = get_oss_bucket().get('bucket').put_object(filename, io_obj.getvalue()) print(result) return get_oss_bucket().get('cname') + "/" + filename
def save_model(self, request, obj, form, change): obj.user = request.user subject = get_subject(obj.content) # oss.put_object(obj.image.file.file) # 不超过200字 if len(subject) > 200: subject = subject[0:200] # 短id obj.sid = short_id.get_short_id() obj.subject = subject # 处理标签 tags = obj.tags # 自动生成 if tags is None or tags is "": r = analyse.extract_tags(subject, topK=5) tags = ",".join(r) obj.tags = tags super(ArticleAdmin, self).save_model(request, obj, form, change) cache.delete(cache.CACHE_HOME_KEY)
def upload_scrawl(request): # 涂鸦 strs = request.POST.get("upfile") imgdata = base64.b64decode(strs) rs = get_oss_bucket() bucket = rs["bucket"] cname = rs["cname"] target_name = short_id.get_short_id() + ".png" bucket.put_object(target_name, imgdata) # 响应 results = { "name": target_name, "original": target_name, "size": "", "state": "SUCCESS", "type": "png", "url": cname + "/" + target_name } return HttpResponse(json.dumps(results))