示例#1
0
文件: page.py 项目: retroam/menbib
def menbib_get_export(node_addon, *args, **kwargs):

    node = node_addon.owner
    user_settings = node_addon.user_settings
    client = get_node_addon_client(node_addon)
    client.from_settings(user_settings)
    client.refresh_access_token()

    library = parse_library(client)


    if node:

        keys = request.args.getlist('allKeys')
        format = request.args.get('format')

        if format not in menbib_settings.EXPORT_FORMATS:
            raise HTTPError(http.BAD_REQUEST), "Export format not recognized"

        if keys:
            export = _get_citation(library, keys, format)
            export = export.encode('utf-8')
            print export
        else:
            export = 'No Items specified'

        strIO = StringIO.StringIO()
        strIO.write(str(export))
        strIO.seek(0)

        return send_file(strIO, attachment_filename="menbib_export_"+format+".txt", as_attachment=True)

    else:
        raise HTTPError(http.BAD_REQUEST)
示例#2
0
文件: page.py 项目: retroam/menbib
def menbib_get_citation(node_addon, *args, **kwargs):

    node = node_addon.owner
    user_settings = node_addon.user_settings
    client = get_node_addon_client(node_addon)
    client.from_settings(user_settings)
    client.refresh_access_token()

    library = parse_library(client)

    if node:
        keys = request.json.get('allKeys')
        style = request.json.get('style')

        if style not in menbib_settings.CITATION_STYLES:
            raise HTTPError(http.BAD_REQUEST), "Export format not recognized"
        else:
            style = menbib_settings.CITATION_STYLES[style]

        if keys:
            citations = _get_citation(library, keys, style)
        else:
            citations = '<span>No Items specified</span>'



        citations = citations.replace(' .', '.<br>')

        return citations
    else:
        raise HTTPError(http.BAD_REQUEST)
示例#3
0
 def test_get_node_addon_client(self):
     client = get_node_addon_client(self.node_settings)
     assert_true(isinstance(client, Mendeley))
示例#4
0
文件: page.py 项目: retroam/menbib
def menbib_get_page_info(node_addon, auth, **kwargs):

    folder = request.args.get('folder')

    if node_addon.user_settings is None:
        flash('Authorize Mendeley add-on in Settings', 'warning')
        raise HTTPError(http.FORBIDDEN)
    node = node_addon.owner
    user_settings = node_addon.user_settings
    client = get_node_addon_client(node_addon)
    client.from_settings(user_settings)
    client.refresh_access_token()
    user_folders = client.folders()
    user_library = client.library()
    user_folders_id = []
    user_folders_name = []

    for idx in range(0, len(user_folders)):
        user_folders_id.append(user_folders[idx]['id'])
        user_folders_name.append(user_folders[idx]['name'])

    if folder is not None:
        idx = user_folders_name.index(folder)
        folder_documentId = client.folder_details(user_folders_id[idx])
        documentId = folder_documentId['document_ids']
    else:
        documentId = user_library['document_ids']

    doc_meta = []

    for idx in range(0, len(documentId)):
        meta = client.document_details(documentId[idx])
        author = []
        second_line = ''
        for idy in range(0,len(meta['authors'])):
            author.append({
            'family':meta['authors'][idy]['surname'],
            'given': meta['authors'][idy]['forename'],
            })
            second_line = second_line + meta['authors'][idy]['forename'] + ' ' \
                           + meta['authors'][idy]['surname'] + ', '
        second_line = second_line[:-2]
        second_line = second_line + ' (' + str(meta.get('year','0')) + ')'

        third_line = meta['published_in'] + ' ' \
                  + meta.get('volume', '') + ' '  \
                  + '(' + meta.get('issue', '') + ')' + ' p. ' + \
          meta.get('pages', '')

        doc_meta.append({
            "author": author,
            "id": meta['id'],
            "issued": {
            "date-parts": [
                [
                    meta.get('year','0'),
                    meta.get('month','0'),
                    meta.get('day','0'),
                ]
            ]
            },
            "title": meta.get('title',"").replace('.',''),
            "type": meta.get('type',"").lower(),
            "abstract": meta.get('abstract',""),
            "publisher": meta.get('published_in',""),
            "volume": meta.get('volume',""),
            "page": meta.get('pages',""),
            "url": meta.get('url'," "),
            "second_line": second_line,
            "third_line": third_line.replace('()', '').strip(' p. '),
             })

    data = _view_project(node, auth, primary=True)

    rv = _page_content(node, node_addon)
    rv.update({
        'addon_page_js': user_settings.config.include_js.get('page'),
        'addon_page_css': user_settings.config.include_css.get('page'),
        'items': doc_meta,
        'citation_styles': menbib_settings.CITATION_STYLES,
        'export_formats': menbib_settings.EXPORT_FORMATS,
        'folder_names': user_folders_name,
    })
    rv.update(user_settings.config.to_json())
    rv.update(data)

    return rv