コード例 #1
0
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))
コード例 #2
0
ファイル: github_oauth.py プロジェクト: 750104472/blog
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
コード例 #3
0
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))
コード例 #4
0
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))
コード例 #5
0
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
    })
コード例 #6
0
    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)
コード例 #7
0
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
    })
コード例 #8
0
ファイル: qq_oauth.py プロジェクト: 750104472/blog
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)
コード例 #9
0
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
    })
コード例 #10
0
    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
コード例 #11
0
ファイル: views.py プロジェクト: 750104472/blog
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
        })
コード例 #12
0
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
    })
コード例 #13
0
ファイル: github_oauth.py プロジェクト: 750104472/blog
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
コード例 #14
0
    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
            }))
コード例 #15
0
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
コード例 #16
0
ファイル: admin.py プロジェクト: w529338490/myblog
    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)
コード例 #17
0
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))