Code Monkey home page Code Monkey logo

inspire-next's Introduction

INSPIRE-Next

About

INSPIRE is the leading information platform for High Energy Physics (HEP) literature. It provides users with high quality, curated metadata covering the entire corpus of HEP and the fulltext of all such articles that are Open Access.

This repository contains the source code of the next version of INSPIRE, which is currently under development, but already available at https://labs.inspirehep.net. It is based on version 3 of the Invenio Digital Library Framework.

A preliminary version of the documentation is available on Read the Docs.

inspire-next's People

Contributors

ammirate avatar chris-asl avatar david-caro avatar drjova avatar giokokos avatar glignos avatar harunurhan avatar ioannistsanaktsidis avatar jacquerie avatar jalavik avatar jmartinm avatar kaplun avatar kneczaj avatar lilykos avatar michamos avatar mihaibivol avatar mjedr avatar monaawi avatar nikpap avatar nooraangelva avatar oguzdemirbasci avatar panos512 avatar pazembrz avatar pedrogaudencio avatar puntonim avatar rikirenz avatar spirosdelviniotis avatar szymonlopaciuk avatar tomaszgy avatar turtle321 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

inspire-next's Issues

deposit: spinning submission due to validation error

With latest labs and master branch, we are seeing the submission getting stuck on render_form() task after submitting the form due to some "hidden"/unknown validation failure happening during save() - causing the form to be reloaded instead of showing a pretty confirmation screen.

First investigation stated the validated == False during submission.

Will need to be further investigated...

@inspirehep/labs-scrum

Tuning of elasticsearch

Elasticsearch configuration should reflect the INSPIRE data model, whatever that means. We should ensure this is compatible with the invenio-query-parser.

Use MathJax CDN

We should use the MathJax CDN to avoid moving around 40k static files.

Include on page:

<script src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.5.3/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

On document load:

MathJax.Hub.Config({
    tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
});
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);

Bootstrap theme issues

I noticed some minor display issues in our style guide: https://labs.inspirehep.net/style-guide

  • several panel contextual classes are mostly unreadable due to the white font color
  • label-success green color is different than btn-success green color.

It would be nice to fix these as it affects the whole site. E.g. I noticed this in the Holding Pen.

deposit: add orcid to metadata

In the end, it would be valuable to get the orcid of the submitter as part of the new record.

Add the ORCID of the user to 541.

RFC Authors' profiles look.

Hello!

Lately I've beeen working on moving the authors front-end to pu. I tried to keep the look with the current box order. Unfortunately it seems that that we don't have enough space to do that. Here is a screenshot from 1920x1080 monitor from demosite:

wronglook

The boxes that in my opinion look wrong:

  • Personal details - rows don't fit.
  • Publications - this box should be wider so that most of the rows don't break in half
  • Papers - I wanted to use Bootstrap table to make it more readable. One column has been cut-off
  • Publication-graph - This is the smallest problem, we can create smaller icons.

I don't want to discuss here any issues regarding compability with Invenio. This RFC aims to gather requirements for Inspire next author's page (and that's why it is here) and look for a solution for Inspire only. I need to know what will be needed by Inspire before I start writing the demosite version.
The solution implemented by me will work well for Invenio framework.

Proposal

Redesign. I know that it took a lot of time to develop current look, but we need to go forward.

@glouppe @jmartinm @kaplun

roadmap: preparing data model

Dear @fschwenn, @aw-bib, @ksachs, @tsgit (and whoever wants to take part), this ticket wants to aggregate in one place all the steps needed to complete the new INSPIRE data model.

subject field required problem

Making the subject field required with:

validators=[validators.Required()]

Creates a problem in the Multiselect field. If nothing in the field is selected, instead of showing the message "Saved with errors" like in the title or authors the page reloads with no message.

Port existing journal workflows to Holding Pen

The existing journal workflows need to be ported to use the new hepcrawl service based on scrapy. Scheduled and one-shot harvests can be made by triggering harvests via appropriate Celery tasks which integrates with the scrapyd service. The results are then pushed back to INSPIRE when crawling is completed (or in error state) and appropriate HEP ingestion workflows are launched (WIP in #730).

  • Unify harvesting workflow into one "article" workflow for all sources by modifying arxiv_harvest_math to be generic (unified to hep_ingestion).
  • Add support for easy source filtering in new interface for HEP ingestion workflows
  • Add pipeline to INSPIRE rabbitmq server in hepcrawl
  • Implement initial spiders in hepcrawl:
  • World Scientific
  • arXiv
  • Elsevier
  • APS
  • PoS
  • Implement remaining spiders in hepcrawl
  • IOP
  • Springer (under development by @fschwenn)
  • Hindawi
  • EDPSciences
    ++

Edit: Updated June 2016

Upgrade issue with collection tag

We have an issue with the upgrade script collections_2015_05_28_recjson_tag_value

I think the reason is simply that the tag is named differently on INSPIRE:

SELECT id,name,value FROM tag where value like '%980%';
+----+--------------------+--------+
| id | name               | value  |
+----+--------------------+--------+
| 51 | collection         | 980__a |
| 52 | collection deleted | 980__c |
+----+--------------------+--------+
2 rows in set (0.00 sec)

While the upgrade script checks for name == "collection identifier".

Is it safe to simply rename on INSPIRE to collection identifier?

@kaplun @jmartinm

EDIT: I noticed this when running inveniomanage upgrader check:

>>> Running pre-upgrade checks...
>>> ERROR: Pre-upgrade check for collections_2015_05_28_recjson_tag_value failed with the following errors:
 (-) Missing 'collection identifier' tag.
>>> ERROR: Upgrade check failed. Aborting.

output formats porting

Current INSPIRE formats (used in http://inspirehep.net) live in https://github.com/inspirehep/inspire/tree/master/bibformat/output_formats.

This task keeps track of the porting status:

  • HCA.bfo - Seems to be a hack for the reference correction form - http://inspirehep.net/record/1302452/export/hrf - this form will be reimplemented.
  • HCV.bfo - @ioannistsanaktsidis
  • HLXE.bfo To be ported @ioannistsanaktsidis
  • HLXH.bfo Harvmarc format (I think it comes from here) should be checked if it is still up to date and port.
  • HLXU.bfo To be ported @ioannistsanaktsidis
  • HRA.bfo - Reference correction workflow - Needs to be reimplemented
  • HRF.bfo - Reference correction workflow - Needs to be reimplemented
  • HRN.bfo - Reference correction workflow - Needs to be reimplemented
  • HRU.bfo - Reference correction workflow - Needs to be reimplemented
  • HTCV.bfo - CV format (text) - To be ported @ioannistsanaktsidis
  • HX.bfo - BibTex @ioannistsanaktsidis
  • HXA.bfo - Same as BibTex but including abstract - Not sure it is needed.
  • TLCV.bfo - LaTeX(CV) - To be ported @ioannistsanaktsidis
  • XD.bfo - Dublin Core - Uses XSLT at the moment - To be ported
  • XN.bfo - NLM format - Uses XSLT at the moment - To be ported
  • XSTI.bfo - OSTI format - To be ported

An example of how the new formats look like (using yml instead of bfo) can be seen here

Top sign-in does not work

Currently there are two sign-ins on INSPIRE. The one that appears when trying access a page that requires a login. And one modal from the "Sign in" button at the upper right corner.

However, the upper right sign-in modal does not work. See screenshot:

img

long classifier execution on certain papers

On some records (like oai:arXiv.org:1410.4632) bibclassification taskes a loooooong time. (~30-60 mins).

Why is that? Can we optimize?

/home/jlavik/envs/labs/src/invenio/invenio/legacy/bibclassify/engine.pyc in extract_single_keywords(skw_db, fulltext)
    212             or empty {}
    213     """
--> 214     return keyworder.get_single_keywords(skw_db, fulltext) or {}
    215 
    216 

/home/jlavik/envs/labs/src/invenio/invenio/legacy/bibclassify/keyword_analyzer.pyc in get_single_keywords(skw_db, fulltext)
     58     for single_keyword in skw_db.values():
     59         for regex in single_keyword.regex:
---> 60             for match in regex.finditer(fulltext):
     61                 # Modify the right index to put it on the last letter
     62                 # of the word.

Elasticsearch mapping for HEP records

Currently the Elasticsearch mapping is taken from Invenio; we are still missing a mechanism to allow for its override at the overlay level, but (I think) this will eventually be solved upstream.

In any case, here I'll note a few modifications that we are going to need:

  • DOIs should not be analyzed:
"doi": {
    "type": "object",
        "properties": {
            "doi": {
                "type": "string",
                "index": "not_analyzed"
            }
    }
}

(This of course is strongly tied to the data models developed in #265)

deposit: Checkboxes state is not loaded properly

State of checkboxes is saved properly on save. Loading a draft form loads the state correctly of you debug the server code, although a checkbox is still displayed as disabled in the form no matter what state is loaded from the draft.

dojson: wrong DOI mapping

In the DOI rule https://github.com/inspirehep/inspire-next/blob/master/inspire/dojson/hep/fields/bd01x09x.py#L55 we are adding as a doi key any value that comes in the field 024.

@hep.over('doi', '^024[1032478_][10_]')
@utils.for_each_value
@utils.filter_values
def doi(self, key, value):
    """Other Standard Identifier."""
    return {
        'doi': value.get('a')
    }

Problem is that 024 field is reused for other identifiers that are not DOIs.

To solve this we should only add in the doi key values that contain $$2DOI

@hep.over('doi', '^024[1032478_][10_]')
@utils.for_each_value
@utils.filter_values
def doi(self, key, value):
    """Other Standard Identifier."""
    if value.get("2").lower() == "doi":
        return {
            'doi': value.get('a')
        }

Then we will have to add in their appropriate keys the rest of the identifiers found in 024.

deposit: error on submit after import and click Cancel

If one imports and then clicks Cancel, on submission there is the error:

  File "/home/jmartinm/.virtualenvs/pu-inspire2/src/inspire/inspire/modules/deposit/workflows/literature.py", line 355, in process_sip_metadata
    metadata['abstract']['source'] = 'arXiv'
KeyError: 'abstract'

Two conflicting versions of moment.js in dependecies

This is the result of bower install:

Unable to find a suitable version for moment, please choose one:
    1) moment#2.7.0 which resolved to 2.7.0 and is required by inspire 
    2) moment#>=2.8.0 which resolved to 2.8.3 and is required by eonasdan-bootstrap-datetimepicker#3.1.3Prefix the choice with ! to persist it to bower.json

change CFG_SITE_NAME

Currently:

CFG_SITE_NAME = u"HEP"

Which means that in certain parts like emails sent to the user, the title is Account registration at HEP

The reason behind that site name is that Invenio required the CFG_SITE_NAME to be the same as the main collection so that an empty search would work.

We need to double check if this is still a problem and solve it so that we can change the name.

dojson improvements

The following dojson improvements are needed to reach a production status for INSPIRE.

  • Create a revert from the dojson to obtain a dictionary with marc keys. A sample dojson rule looks like:
@hep.over('isbn', '^020..')
@utils.for_each_value
@utils.filter_values
def isbn(self, key, value):
    """Other Standard Identifier."""
    return {
        'isbn': value.get('a'),
        'medium': value.get('b')
    }

We then need the opposite that we will write in the same file close to the original:

@unhep.over('020', 'isbn')
@utils.for_each_value
@utils.filter_values
def isbn(self, key, value):
    """Other Standard Identifier."""
    return {
        'a': value.get('isbn'),
        'b': value.get('medium')
    }

main-container css in page.html

Currently, the main-container class is added in page.html on every page except search.index. This causes some padding to appear before the content of for example the Holding Pen.

Is this legacy already or shall we only use it on the applicable pages?

.main-container {
        padding-top: 50px;
        padding-bottom: 50px;
}

The point is that I would not like to use it on the Holding Pen pages.

landing page: errors in JS console

In the landing page the console shows:

Uncaught ReferenceError: jQuery is not defined search_box.js:118
Uncaught ReferenceError: jQuery is not defined jquery.feeds.js:182

search_box.js needs requirejs adaptation

While working to fix #88 I have seen that the main INSPIRE page contains the file search_box.js which is not AMD compatible so the following line gives an error:

return $("#" + containerId + " a[href=" + href + "]").tab('show');

The module should be converted using:

  1. Define to declare the module
  2. Use require("bootstrap") to get $.fn.tab available

This should be tested using the variables ASSETS_DEBUG = False and REQUIREJS_RUN_IN_DEBUG = True

Note: there are other issues related to typeahead and facets JS not being requirejs compatible, I will create a separate issue in Invenio

settings.js from invenio gets ovewritten

I remember @jmartinm you did (maybe with Lars) the fix for overwriting mustache templates. Now static files from inspire overwite the ones from invenio with the same name. The problem occurs with settings.js used by require.js. It seems that the one from invenio gets overwritten by inspire's counterpart. This means that all the paths declared there are not available from inspire, and we may get problems with 404 errors when loading js files. I had this problem with bootstrap-datetimepicker and moment. A workaround is to duplicate paths in inspire's settings.js

Possible UI improvements on small screen resolutions

(CC: @kaplun @jalavik)

workflows: fix classifier tasks

Due to changes in classifier module on the Invenio side, the literature workflow gives error:

keyworder.py
In line 41 cfg["CLASSIFIER_VALID_SEPARATORSโ€]
KeyError: โ€˜CLASSIFIER_VALID_SEPARATORSโ€™

Using lambda to access the config might help.

This commit addresses some problems d1533c7 but still the error above has to be solved.

header not showing email

When there is no nickname (after ORCID login) the email of the user does not appear in the header.

Accessing the user through the User model shows empty value when doing User.email.

The user table contains the email address though.

deposit: no subject validation bug

In the subjects field that uses multiselect, if several fields are selected and then all of them de-selected, the following error comes up:

image

RFC exclusive fields for each kind of document

It doesn't make sense to work on thesis exclusive fields such as degree_type or defense_date when we got an article document type, for instance. I started cleaning them here fd12dce in the post processing but after discussing with @jalavik we should probably clean them even before the workflow starts. Suggestions:

  1. going kamikaze on the Invenio blueprint layers, providing some sort of configuration to the deposition draft to pre process before validation;
  2. provide a dynamic validator for every field which clears it and skips any other validation if the field doesn't make sense according to the selected document type.

What do you think @jmartinm @giokokos @kneczaj @GiorgosPa?

Undefined page property of DOI raises error

There are some DOIs that don't have the "page" property in their JSON schema, therefore the following error is raised when such a DOI is imported.

Uncaught TypeError: Cannot read property 'split' of undefined doi.js:49

For example:

The 10.1103/PhysRevD.90.036007 will raise the error but not the 10.1063/1.4894158.

Error accessing detailed record

2014-11-19 16:36:16,190 ERROR: Exception on /admin/holdingpen/details/804 [GET] [in /opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/flask/app.py:1423]
Traceback (most recent call last):
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/invenio/ext/legacy/init.py", line 124, in call
response = self.app.full_dispatch_request()
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/Flask_RESTful-0.2.12-py2.7.egg/flask_restful/init.py", line 258, in error_router
return original_handler(e)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/invenio/base/wrappers.py", line 125, in handle_user_exception
return super(Flask, self).handle_user_exception(e)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functionsrule.endpoint
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/Flask_Login-0.2.11-py2.7.egg/flask_login.py", line 758, in decorated_view
return func(_args, *_kwargs)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/Flask_Principal-0.4.0-py2.7.egg/flask_principal.py", line 199, in _decorated
rv = f(_args, *_kw)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/invenio/modules/workflows/views/holdingpen.py", line 132, in details
previous_object, next_object = get_previous_next_objects(objects, objectid)
File "/opt/Inspire-2.0.1.dev20141107094016/lib/python2.7/site-packages/invenio/modules/workflows/utils.py", line 421, in get_previous_next_objects
next_object_id = object_list[0]
IndexError: list index out of range

inspire.cfg: add schema to list fields

Add the following:

    schema:
        {'references': {'type': 'list', 'force': True}}

to the fields that should be lists to simplify handling them in inspire.cfg.

UndefinedError: 'score' is undefined

The following error is happening sometimes when accessing the Holding Pen table and also when accessing the submission form in qa branch.

* 2015-06-16 13:52:18 -> UndefinedError: 'score' is undefined (filters.py:657:do_round)

** User details
                                     agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
                                     email: inspirelabs-admins@cern.ch
                               family_name:
                               given_names:
                                     group: []
                                     guest: 0
                                        id: 1
                              login_method: Local
                                  nickname: admin
                                      note: 1
        precached_allowed_deposition_types: set(['literature'])
            precached_canseehiddenmarctags: True
precached_permitted_restricted_collections: []
                    precached_sendcomments: False
                        precached_useadmin: True
                       precached_usealerts: True
                      precached_useapprove: True
                      precached_usebaskets: True
                       precached_usegroups: True
                        precached_useloans: True
                     precached_usemessages: True
             precached_usepaperattribution: True
                   precached_usepaperclaim: True
                        precached_usestats: True
                   precached_usesuperadmin: True
                   precached_viewclaimlink: False
                 precached_viewsubmissions: False
                                   referer: <https://qa.inspirehep.net/>
                               remote_host:
                                 remote_ip: 188.184.151.228
                                   session: None
                                  settings: {'login_method': 'Local'}
                                       uid: 1
                                       uri: </submit/literature/14208>

** Traceback details

Traceback (most recent call last):
  File "/opt/inspire/src/invenio/invenio/ext/legacy/__init__.py", line 119, in __call__
    response = self.app.full_dispatch_request()
  File "/opt/inspire/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/inspire/lib/python2.7/site-packages/flask_restful/__init__.py", line 265, in error_router
    return original_handler(e)
  File "/opt/inspire/src/invenio/invenio/base/wrappers.py", line 133, in handle_user_exception
    return super(Flask, self).handle_user_exception(e)
  File "/opt/inspire/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/inspire/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/inspire/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/inspire/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/opt/inspire/src/invenio/invenio/modules/deposit/views/deposit.py", line 75, in inner
    return f(*args, **kwargs)
  File "/opt/inspire/lib/python2.7/site-packages/flask_principal.py", line 199, in _decorated
    rv = f(*args, **kw)
  File "/opt/inspire/src/invenio/invenio/modules/deposit/views/deposit.py", line 313, in run
    return deposition.run_workflow()
  File "/opt/inspire/src/invenio/invenio/modules/deposit/models.py", line 1161, in run_workflow
    self.engine = self.type.run_workflow(self)
  File "/opt/inspire/src/invenio/invenio/modules/deposit/models.py", line 480, in run_workflow
    module_name="webdeposit"
  File "/opt/inspire/src/invenio/invenio/modules/workflows/models.py", line 629, in start_workflow
    return start_func(workflow_name, data=[self], **kwargs)
  File "/opt/inspire/src/invenio/invenio/modules/workflows/api.py", line 99, in start
    return run_worker(workflow_name, data, **kwargs)
  File "/opt/inspire/src/invenio/invenio/modules/workflows/worker_engine.py", line 45, in run_worker
    run_workflow(wfe=engine, data=objects, **kwargs)
  File "/opt/inspire/src/invenio/invenio/modules/workflows/client.py", line 75, in run_workflow
    workflow_halted.send(current_obj)
  File "/opt/inspire/lib/python2.7/site-packages/blinker/base.py", line 267, in send
    for receiver in self.receivers_for(sender)]
  File "/opt/inspire/src/inspire/inspire/modules/workflows/receivers.py", line 39, in precache_holdingpen_row
    get_formatted_holdingpen_object(sender)
  File "/opt/inspire/src/invenio/invenio/modules/workflows/utils.py", line 278, in get_formatted_holdingpen_object
    results = generate_formatted_holdingpen_object(bwo)
  File "/opt/inspire/src/invenio/invenio/modules/workflows/utils.py", line 312, in generate_formatted_holdingpen_object
    "additional": workflow_definition.get_additional(bwo),
  File "/opt/inspire/src/inspire/inspire/modules/deposit/workflows/literature.py", line 245, in get_additional
    overall_score=core_guessing.get("overall_score"))
  File "/opt/inspire/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
    context, ctx.app)
  File "/opt/inspire/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/opt/inspire/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "/opt/inspire/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/inspire/src/inspire/inspire/modules/workflows/views/../templates/workflows/styles/harvesting_record_additional.html", line 35, in top-level template code
    {{decision}} ({{ score|round(2) }})
  File "/opt/inspire/lib/python2.7/site-packages/jinja2/filters.py", line 657, in do_round
    return round(value, precision)
UndefinedError: 'score' is undefined

** Stack frame details

Frame do_round in /opt/inspire/lib/python2.7/site-packages/jinja2/filters.py at line 657
-------------------------------------------------------------------------------
       654     if not method in ('common', 'ceil', 'floor'):
       655         raise FilterArgumentError('method must be common, ceil or floor')
       656     if method == 'common':
---->  657         return round(value, precision)
       658     func = getattr(math, method)
       659     return func(value * (10 ** precision)) / (10 ** precision)
       660
-------------------------------------------------------------------------------
                      method =  "'common'"
                       value =  'Undefined'
                   precision =  '2'

Frame top-level template code in /opt/inspire/src/inspire/inspire/modules/workflows/views/../templates/workflows/styles/harvesting_record_additional.html at line 35
              alternate_urls =  "{u'en': u'http://qa.inspirehep.net/submit/literature/14208?ln=en'}"
                      object =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]
            easy_search_form =  '<invenio.modules.search.forms.EasySearchForm object at 0x7fd146b86ed0>'
                current_menu =  '<flask_menu.MenuEntryMixin object at 0x7fd17d289e90>'
            searchbar_enable =  'True'
                      lipsum =  '<function generate_lorem_ipsum at 0x7fd17643d050>'
                    ngettext =  '<function ngettext at 0x7fd176f83d70>'
                  get_record =  "<bound method StorageEngine.get_record of <class 'invenio.modules.records.api.Record'>>"
                     session =  "<Session {'websearch-last-query': '/search?cc=HEP', 'inspire-last-search-params': MultiDict([('cc', u'HEP')]), 'csrf_token': 'aae5894c8f2b4c08a9dbde3d6b084cbe0773b314', 'user_id': 1L, u'oauth_token_orcid_next_url': u'https://qa.inspirehep.net', 'author_new_referrer': None, 'identity.id': 1L, '_fresh': True, '_uid': 1L, 'inspire-current-collection': u'HEP', 'uid': 1L, '_id': '76362c3f7c76c65e8bc8f2164b688b9c', 'identity.auth_type': None, 'websearch-last-query-hits': intbitset([]), '_permanent':  [...]
                   top_words =  'None'
        get_flashed_messages =  '<function get_flashed_messages at 0x7fd17666e410>'
                    keywords =  'None'
                        core =  'None'
               canonical_url =  "u'http://qa.inspirehep.net/submit/literature/14208'"
                           _ =  '<function _gettext_alias at 0x7fd176ca6140>'
                     url_for =  '<function invenio_url_for at 0x7fd1468917d0>'
                           g =  "<flask.g of 'invenio.base'>"
                      macros =  "<TemplateModule 'workflows/macros.html'>"
                 breadcrumbs =  '[<flask_menu.MenuEntryMixin object at 0x7fd146201a90>, <flask_menu.MenuEntryMixin object at 0x7fd146245110>]'
                    decision =  'Undefined'
                     request =  "<LegacyRequest 'https://qa.inspirehep.net/submit/literature/14208' [GET]>"
                  core_words =  'Undefined'
                     gettext =  '<function gettext at 0x7fd176f83cf8>'
               overall_score =  'None'
                  get_bundle =  '<function get_bundle at 0x7fd1746e5668>'
                       range =  "<type 'xrange'>"
                       score =  'Undefined'
                        dict =  '<function <lambda> at 0x7fd1764b2578>'
                current_user =  "UserInfo([{'referer': 'https://qa.inspirehep.net/', 'remote_host': '', 'uri': '/submit/literature/14208', 'agent': u'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36', 'remote_ip': '188.184.151.228'}, <CallbackDict {'uid': 1L, 'given_names': '', 'agent': u'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36', 'referer': 'https://qa.inspirehep.net/youracc [...]
                  collection =  'Collection <id: 1, name: HEP, dbquery: SELECT collection.id AS collection_id, collection.name AS collection_name, collection.dbquery AS collection_dbquery \nFROM collection, nbrecs: 0>'
             is_language_rtl =  '<function is_language_rtl at 0x7fd178371410>'
                      cycler =  "<class 'jinja2.utils.Cycler'>"
                      joiner =  "<class 'jinja2.utils.Joiner'>"
                      config =  '<Config {\'ARXIV_API_URL\': u\'http://export.arxiv.org/oai2\', \'CFG_BIBINDEX_MIN_WORD_LENGTH\': 0, \'CFG_WEBAUTHORPROFILE_CFG_HEPNAMES_EMAIL\': u\'[email protected]\', \'INSPIRE_URL_REGEX\': u\'^(?:http(?:s)?:\\\\/\\\\/)?(?:www\\\\.)?(?:[\\\\w-]*)\\\\.\\\\w{2,}$\', \'WORKFLOWS_HOLDING_PEN_CACHE_TIMEOUT\': 2629743, \'CFG_WEBTAG_DEFAULT_USER_SETTINGS\': {u\'display_tags_public\': True, u\'display_tags_group\': True, u\'display_tags\': True}, \'CFG_SITE_EMERGENCY_EMAIL_ADDRESSES\': {}, \'CFG [...]
               filtered_core =  'Undefined'

Frame handle_exception in /opt/inspire/lib/python2.7/site-packages/jinja2/environment.py at line 742
-------------------------------------------------------------------------------
       739         if self.exception_handler is not None:
       740             self.exception_handler(traceback)
       741         exc_type, exc_value, tb = traceback.standard_exc_info
---->  742         reraise(exc_type, exc_value, tb)
       743
       744     def join_path(self, template, parent):
       745         """Join a template with the parent.  By default all the lookups are
-------------------------------------------------------------------------------
                 source_hint =  'None'
                    rendered =  'True'
                        self =  '<flask.templating.Environment object at 0x7fd176f81e90>'
                   traceback =  '<jinja2.debug.ProcessedTraceback object at 0x7fd146d59b10>'
                    exc_type =  "<class 'jinja2.exceptions.UndefinedError'>"
                    exc_info =  '(<class \'jinja2.exceptions.UndefinedError\'>, UndefinedError("\'score\' is undefined",), <traceback object at 0x7fd146b5db48>)'
                          tb =  '<traceback object at 0x7fd146d503f8>'
                   exc_value =  'UndefinedError("\'score\' is undefined",)'

Frame render in /opt/inspire/lib/python2.7/site-packages/jinja2/environment.py at line 969
                    exc_info =  '(<class \'jinja2.exceptions.UndefinedError\'>, UndefinedError("\'score\' is undefined",), <traceback object at 0x7fd146b5db48>)'
                        self =  "<Template 'workflows/styles/harvesting_record_additional.html'>"
                        args =  '({\'core\': None, \'object\': <BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been complete [...]
                        vars =  '{\'core\': None, \'searchbar_enable\': True, \'easy_search_form\': <invenio.modules.search.forms.EasySearchForm object at 0x7fd146b86ed0>, \'alternate_urls\': {u\'en\': u\'http://qa.inspirehep.net/submit/literature/14208?ln=en\'}, \'object\': <BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-021 [...]
                      kwargs =  '{}'

Frame _render in /opt/inspire/lib/python2.7/site-packages/flask/templating.py at line 110
                         app =  "<Flask 'invenio.base'>"
                    template =  "<Template 'workflows/styles/harvesting_record_additional.html'>"
                     context =  '{\'core\': None, \'object\': <BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed [...]

Frame render_template in /opt/inspire/lib/python2.7/site-packages/flask/templating.py at line 128
                         ctx =  '<flask.ctx.AppContext object at 0x7fd146890390>'
        template_name_or_list =  "'workflows/styles/harvesting_record_additional.html'"
                     context =  '{\'core\': None, \'object\': <BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed [...]

Frame get_additional in /opt/inspire/src/inspire/inspire/modules/deposit/workflows/literature.py at line 245
-------------------------------------------------------------------------------
       242                                keywords=keywords,
       243                                top_words=core_guessing.get("top_words"),
       244                                core=core_guessing.get("core"),
---->  245                                overall_score=core_guessing.get("overall_score"))
       246
       247     @staticmethod
       248     def formatter(bwo, **kwargs):
-------------------------------------------------------------------------------
                     results =  '{}'
               core_guessing =  '{}'
                      kwargs =  '{}'
                    keywords =  'None'
        get_classification_from_task_results =  '<function get_classification_from_task_results at 0x7fd146adced8>'
                         bwo =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]

Frame generate_formatted_holdingpen_object in /opt/inspire/src/invenio/invenio/modules/workflows/utils.py at line 312
-------------------------------------------------------------------------------
       309         "description": workflow_definition.get_description(bwo),
       310         "title": workflow_definition.get_title(bwo),
       311         "date": bwo.modified.strftime(date_format),
---->  312         "additional": workflow_definition.get_additional(bwo),
       313         "action": mini_action
       314     }
       315     return results
-------------------------------------------------------------------------------
                 date_format =  "'%Y-%m-%d %H:%M:%S.%f'"
                 mini_action =  "''"
              workflows_name =  "u'literature'"
                WorkflowBase =  "<class 'invenio.modules.workflows.definitions.WorkflowBase'>"
                 action_name =  "''"
         workflow_definition =  "<class 'inspire.modules.deposit.workflows.literature.literature'>"
                      action =  'None'
                         bwo =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]

Frame get_formatted_holdingpen_object in /opt/inspire/src/invenio/invenio/modules/workflows/utils.py at line 278
-------------------------------------------------------------------------------
       275         results = msgpack.loads(cache.get("workflows_holdingpen_{0}".format(bwo.id)))
       276         if results["date"] == bwo.modified.strftime(date_format):
       277             return results
---->  278     results = generate_formatted_holdingpen_object(bwo)
       279     if results:
       280         cache.set("workflows_holdingpen_{0}".format(bwo.id),
       281                   msgpack.dumps(results),
-------------------------------------------------------------------------------
                 date_format =  "'%Y-%m-%d %H:%M:%S.%f'"
                     results =  'None'
                         bwo =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]

Frame precache_holdingpen_row in /opt/inspire/src/inspire/inspire/modules/workflows/receivers.py at line 39
-------------------------------------------------------------------------------
        36     """Precache a Holding Pen row."""
        37     from invenio.modules.workflows.utils import get_formatted_holdingpen_object
        38     # Call it to cache it
---->   39     get_formatted_holdingpen_object(sender)
        40
        41
        42 workflow_halted.connect(precache_holdingpen_row)
-------------------------------------------------------------------------------
                      kwargs =  '{}'
                      sender =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]
        get_formatted_holdingpen_object =  '<function get_formatted_holdingpen_object at 0x7fd17c2fa050>'

Frame send in /opt/inspire/lib/python2.7/site-packages/blinker/base.py at line 267
-------------------------------------------------------------------------------
       264             return []
       265         else:
       266             return [(receiver, receiver(sender, **kwargs))
---->  267                     for receiver in self.receivers_for(sender)]
       268
       269     def has_receivers_for(self, sender):
       270         """True if there is probably a receiver for *sender*.
-------------------------------------------------------------------------------
                        self =  "<blinker.base.NamedSignal object at 0x7fd1784c98d0; 'workflow_halted'>"
                      kwargs =  '{}'
                      sender =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]
                    receiver =  '<function precache_holdingpen_row at 0x7fd1784cab90>'

Frame run_workflow in /opt/inspire/src/invenio/invenio/modules/workflows/client.py at line 75
-------------------------------------------------------------------------------
        72                        wfe.get_current_taskname() or "Unknown",
        73                        workflowhalt_triggered.message)
        74             wfe.log.warning(message)
---->   75             workflow_halted.send(current_obj)
        76             if stop_on_halt:
        77                 break
        78         except Exception as exception_triggered:
-------------------------------------------------------------------------------
                 current_obj =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]
        workflowhalt_triggered =  'WorkflowHalt()'
               stop_on_error =  'True'
                         wfe =  '<BibWorkflow_engine(literature)>'
                 initial_run =  'False'
                      kwargs =  "{'module_name': 'webdeposit', 'id_user': 1L}"
                     message =  'u"Workflow \'literature\' halted at task render_form with message: Wait for form submission."'
                        data =  '[<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id:  [...]
                stop_on_halt =  'False'

Frame run_worker in /opt/inspire/src/invenio/invenio/modules/workflows/worker_engine.py at line 45
-------------------------------------------------------------------------------
        42     engine = BibWorkflowEngine(wname, **kwargs)
        43     engine.save()
        44     objects = get_workflow_object_instances(data, engine)
---->   45     run_workflow(wfe=engine, data=objects, **kwargs)
        46     return engine
        47
        48
-------------------------------------------------------------------------------
                      engine =  '<BibWorkflow_engine(literature)>'
                       wname =  "'literature'"
                     objects =  '[<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id:  [...]
                        data =  '[<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id:  [...]
                      kwargs =  "{'module_name': 'webdeposit', 'id_user': 1L}"

Frame start in /opt/inspire/src/invenio/invenio/modules/workflows/api.py at line 99
-------------------------------------------------------------------------------
        96     if not isinstance(data, list):
        97         data = [data]
        98
---->   99     return run_worker(workflow_name, data, **kwargs)
       100
       101
       102 def start_delayed(workflow_name, data, **kwargs):
-------------------------------------------------------------------------------
                  run_worker =  '<function run_worker at 0x7fd14677fed8>'
                        data =  '[<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id:  [...]
               workflow_name =  "'literature'"
                      kwargs =  "{'module_name': 'webdeposit', 'id_user': 1L}"

Frame start_workflow in /opt/inspire/src/invenio/invenio/modules/workflows/models.py at line 629
-------------------------------------------------------------------------------
       626         else:
       627             from .api import start as start_func
       628         self.save()
---->  629         return start_func(workflow_name, data=[self], **kwargs)
       630
       631     def continue_workflow(self, start_point="continue_next",
       632                           delayed=False, **kwargs):
-------------------------------------------------------------------------------
                        self =  '<BibWorkflowObject(id = 14208, data = {\'files\': [], \'title\': \'\', \'type\': \'literature\', \'drafts\': {\'default\': {\'values\': {}, \'validate\': False, \'flags\': {}, \'completed\': False}}, \'sips\': []}, id_workflow = 1ee9a28c-141e-11e5-9dd8-02163e00cb72, version = 4, id_parent = None, created = 2015-06-16 13:52:10, extra_data = {\'latest_object\': -1, \'_task_history\': [{\'doc\': u"Render a form if the draft associated with it has not yet been completed.\\n\\n    :param draft_id: T [...]
               workflow_name =  "'literature'"
                  start_func =  '<function start at 0x7fd17e2b15f0>'
                     delayed =  'False'
                      kwargs =  "{'module_name': 'webdeposit', 'id_user': 1L}"

Frame run_workflow in /opt/inspire/src/invenio/invenio/modules/deposit/models.py at line 480
-------------------------------------------------------------------------------
       477             return deposition.workflow_object.start_workflow(
       478                 workflow_name=cls.get_identifier(),
       479                 id_user=deposition.workflow_object.id_user,
---->  480                 module_name="webdeposit"
       481             )
       482         else:
       483             return deposition.workflow_object.continue_workflow(
-------------------------------------------------------------------------------
                  deposition =  '<invenio.modules.deposit.models.Deposition object at 0x7fd146a0c590>'
                         cls =  "<class 'inspire.modules.deposit.workflows.literature.literature'>"

Frame run_workflow in /opt/inspire/src/invenio/invenio/modules/deposit/models.py at line 1161
-------------------------------------------------------------------------------
      1158                     else self.type.render_final(self)
      1159
      1160         self.update()
----> 1161         self.engine = self.type.run_workflow(self)
      1162         self.reload()
      1163         status = self.engine.status
      1164
-------------------------------------------------------------------------------
                    headless =  'False'
                        self =  '<invenio.modules.deposit.models.Deposition object at 0x7fd146a0c590>'

Frame run in /opt/inspire/src/invenio/invenio/modules/deposit/views/deposit.py at line 313
-------------------------------------------------------------------------------
       310     """Run the workflow and show the current output of the workflow."""
       311     deposition = Deposition.get(uuid, current_user, type=deposition_type)
       312
---->  313     return deposition.run_workflow()
       314
       315
       316 @blueprint.route('/<depositions:deposition_type>/<int:uuid>/edit/',
-------------------------------------------------------------------------------
             deposition_type =  "u'literature'"
                  deposition =  '<invenio.modules.deposit.models.Deposition object at 0x7fd146a0c590>'
                        uuid =  '14208'

Frame _decorated in /opt/inspire/lib/python2.7/site-packages/flask_principal.py at line 199
-------------------------------------------------------------------------------
       196         @wraps(f)
       197         def _decorated(*args, **kw):
       198             with self:
---->  199                 rv = f(*args, **kw)
       200             return rv
       201         return _decorated
       202
-------------------------------------------------------------------------------
                        self =  '<flask_principal.IdentityContext object at 0x7fd17d7ef2d0>'
                        args =  '()'
                          kw =  "{'deposition_type': u'literature', 'uuid': 14208}"
                           f =  '<function run at 0x7fd17d7eea28>'

Frame inner in /opt/inspire/src/invenio/invenio/modules/deposit/views/deposit.py at line 100
-------------------------------------------------------------------------------
        97                 flash(_("Not allowed."), 'danger')
        98                 return redirect(url_for(endpoint))
        99             except (UploadError,):
---->  100                 abort(400)
       101         return inner
       102     return decorator
       103
-------------------------------------------------------------------------------
                        args =  '()'
                    endpoint =  "'.index'"
                           f =  '<function run at 0x7fd17d7eeaa0>'
                      kwargs =  "{'deposition_type': u'literature', 'uuid': 14208}"

Frame decorated_view in /opt/inspire/lib/python2.7/site-packages/flask_login.py at line 758
-------------------------------------------------------------------------------
       755             return func(*args, **kwargs)
       756         elif not current_user.is_authenticated():
       757             return current_app.login_manager.unauthorized()
---->  758         return func(*args, **kwargs)
       759     return decorated_view
       760
       761
-------------------------------------------------------------------------------
                        args =  '()'
                        func =  '<function run at 0x7fd17d7eeb18>'
                      kwargs =  "{'deposition_type': u'literature', 'uuid': 14208}"

Frame dispatch_request in /opt/inspire/lib/python2.7/site-packages/flask/app.py at line 1461
-------------------------------------------------------------------------------
      1458            and req.method == 'OPTIONS':
      1459             return self.make_default_options_response()
      1460         # otherwise dispatch to the handler for that endpoint
----> 1461         return self.view_functions[rule.endpoint](**req.view_args)
      1462
      1463     def full_dispatch_request(self):
      1464         """Dispatches the request and on top of that performs request
-------------------------------------------------------------------------------
                        self =  "<Flask 'invenio.base'>"
                         req =  "<LegacyRequest 'https://qa.inspirehep.net/submit/literature/14208' [GET]>"
                        rule =  "<Rule '/submit/<deposition_type>/<uuid>' (HEAD, POST, OPTIONS, GET) -> webdeposit.run>"

Frame full_dispatch_request in /opt/inspire/lib/python2.7/site-packages/flask/app.py at line 1477
-------------------------------------------------------------------------------
      1474             if rv is None:
      1475                 rv = self.dispatch_request()
      1476         except Exception as e:
----> 1477             rv = self.handle_user_exception(e)
      1478         response = self.make_response(rv)
      1479         response = self.process_response(response)
      1480         request_finished.send(self, response=response)
-------------------------------------------------------------------------------
                          rv =  'None'
                           e =  'UndefinedError("\'score\' is undefined",)'
                        self =  "<Flask 'invenio.base'>"

Frame handle_user_exception in /opt/inspire/lib/python2.7/site-packages/flask/app.py at line 1381
-------------------------------------------------------------------------------
      1378             if isinstance(e, typecheck):
      1379                 return handler(e)
      1380
----> 1381         reraise(exc_type, exc_value, tb)
      1382
      1383     def handle_exception(self, e):
      1384         """Default exception handling that kicks in when an exception
-------------------------------------------------------------------------------
                           e =  'UndefinedError("\'score\' is undefined",)'
                    handlers =  'None'
                        self =  "<Flask 'invenio.base'>"
                   exc_value =  'UndefinedError("\'score\' is undefined",)'
          blueprint_handlers =  '()'
                app_handlers =  '()'
                          tb =  '<traceback object at 0x7fd146d50638>'
                    exc_type =  "<class 'jinja2.exceptions.UndefinedError'>"

Frame handle_user_exception in /opt/inspire/src/invenio/invenio/base/wrappers.py at line 133
-------------------------------------------------------------------------------
       130         Hook a before handle to it.
       131         """
       132         before_handle_user_exception.send(e)
---->  133         return super(Flask, self).handle_user_exception(e)
       134
       135
       136 def lazy_import(name):
-------------------------------------------------------------------------------
                        self =  "<Flask 'invenio.base'>"
                           e =  'UndefinedError("\'score\' is undefined",)'

Frame error_router in /opt/inspire/lib/python2.7/site-packages/flask_restful/__init__.py at line 265
-------------------------------------------------------------------------------
       262                 return self.handle_error(e)
       263             except Exception:
       264                 pass  # Fall through to original handler
---->  265         return original_handler(e)
       266
       267     def handle_error(self, e):
       268         """Error handler for the API transforms a raised exception into a Flask
-------------------------------------------------------------------------------
            original_handler =  "<bound method Flask.handle_user_exception of <Flask 'invenio.base'>>"
                        self =  '<flask_restful.Api object at 0x7fd17c0ab190>'
                           e =  'UndefinedError("\'score\' is undefined",)'

Frame full_dispatch_request in /opt/inspire/lib/python2.7/site-packages/flask/app.py at line 1477
-------------------------------------------------------------------------------
      1474             if rv is None:
      1475                 rv = self.dispatch_request()
      1476         except Exception as e:
----> 1477             rv = self.handle_user_exception(e)
      1478         response = self.make_response(rv)
      1479         response = self.process_response(response)
      1480         request_finished.send(self, response=response)
-------------------------------------------------------------------------------
                          rv =  'None'
                           e =  'UndefinedError("\'score\' is undefined",)'
                        self =  "<Flask 'invenio.base'>"

Frame __call__ in /opt/inspire/src/invenio/invenio/ext/legacy/__init__.py at line 122
-------------------------------------------------------------------------------
       119                     response = self.app.full_dispatch_request()
       120                 except Exception as e:
       121                     from invenio.ext.logging import register_exception
---->  122                     register_exception(req=request, alert_admin=True)
       123                     response = self.app.handle_exception(e)
       124
       125                 return response(environ, start_response)
-------------------------------------------------------------------------------
              start_response =  '<built-in method start_response of mod_wsgi.Adapter object at 0x7fd17d0be120>'
                     environ =  "{'wsgi.version': (1, 0), 'mod_wsgi.listener_port': '443', 'HTTP_COOKIE': '_pk_id.11.386a=122e12ee9a8c3737.1434369296.3.1434455484.1434453857.; _pk_ses.11.386a=*; session=2a54565a4352412689f4dae4b61a7243.CGGfag.DFW-jMeRJS75siVcgAAYqUzcubM; sessionstub=HTTPS', 'mod_wsgi.listener_host': '', 'CONTEXT_DOCUMENT_ROOT': '/opt/inspire/var/invenio.base-instance/static', 'SERVER_SOFTWARE': 'Apache', 'SCRIPT_NAME': '', 'mod_wsgi.enable_sendfile': '0', 'mod_wsgi.handler_script': '', 'SERVER_SIGNATURE': '',  [...]
                        self =  '<invenio.ext.legacy.LegacyAppMiddleware object at 0x7fd178186bd0>'
          register_exception =  '<function register_exception at 0x7fd17b7d9320>'
                           e =  'UndefinedError("\'score\' is undefined",)'

Seems like template harvesting_record_additional.html expects score to be in the context but it is not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.