def setUp(self): """ Initialises test by adding dummy log entries """ from invenio_records.api import create_record from invenio_records.models import Record self.__transaction = db.session.begin_nested() for i in range(10): rec = Record(id=i + 1) db.session.add(rec) create_record({'recid': i + 1}) from inspire.modules.citations.tasks import update_citations_log data = u'[[1, 2, 1, "added", "2013-04-25 04:20:30"],[2, 3, 1, "added", "2013-04-25 04:20:30"],[3, 5, 1, "added", "2013-04-25 04:20:30"],[4, 4, 2, "added", "2013-04-25 04:20:30"],[5, 5, 2, "added", "2013-04-25 04:20:30"],[6, 6, 2, "added", "2013-04-25 04:20:30"],[7, 10, 4, "added", "2013-04-25 04:20:30"],[8, 5, 1, "removed", "2013-04-25 04:20:30"],[9, 5, 4, "added", "2013-04-25 04:20:30"],[10, 6, 4, "added", "2013-04-25 04:20:30"],[11, 3, 4, "added", "2013-04-25 04:20:31"],[12, 8, 5, "added", "2013-04-25 04:20:31"],[13, 10, 4, "removed", "2013-04-25 04:20:31"],[14, 7, 6, "added", "2013-04-25 04:20:31"],[15, 9, 6, "added", "2013-04-25 04:20:31"],[16, 10, 6, "added", "2013-04-25 04:20:31"],[17, 1, 7, "added", "2013-04-25 04:20:31"],[18, 8, 7, "added", "2013-04-25 04:20:31"],[19, 10, 7, "added", "2013-04-25 04:20:31"],[20, 3, 8, "added", "2013-04-25 04:20:31"],[21, 10, 9, "added", "2013-04-25 04:20:31"],[22, 3, 9, "added", "2013-04-25 04:20:31"],[23, 3, 8, "removed", "2013-04-25 04:20:31"],[24, 1, 10, "added", "2013-04-25 04:20:31"],[25, 2, 10, "added", "2013-04-25 04:20:31"],[26, 3, 10, "added", "2013-04-25 04:20:31"]]' # Mocks two responses. The first one contains the dummy data and the second an empty list # to force update_citations_log() to terminate. httpretty.register_uri( httpretty.GET, cfg.get("CITATIONS_FETCH_LEGACY_URL"), responses=[ httpretty.Response(body=data, status=200), httpretty.Response(body='[]', status=200), ] ) Citation.query.delete() Citation_Log.query.delete() update_citations_log()
def create(obj, dummy_eng): #FIXME change share tmp directory d = Deposition(obj) sip = d.get_latest_sip(sealed=True) sip.seal() #FIXME ??? create_record(data=sip.metadata) d.update()
def create(obj, dummy_eng): # FIXME change share tmp directory d = Deposition(obj) sip = d.get_latest_sip(sealed=True) sip.seal() # FIXME ??? create_record(data=sip.metadata) d.update()
def _store_record(record): """Update existing record via `control_number` or create new.""" if "control_number" in record: existing_record = get_record(record['control_number']) if existing_record is not None: patch = jsonpatch.JsonPatch.from_diff(existing_record, record) updated_record = existing_record.patch(patch=patch) updated_record.commit() else: # New record with some hardcoded recid/control_number create_record(data=record) else: create_record(data=record)
def setUp(self): from invenio_records.api import create_record from invenio_records.models import Record self.marcxml_file = pkg_resources.resource_stream('tests', os.path.join( 'fixtures', 'test_citation_counts.xml') ) self.converted_record = convert_marcxml(self.marcxml_file).next() self._transaction = db.session.begin_nested() self.cited_recids = [r['recid'] for r in self.converted_record['references'] if r.get('recid')] self.new_recid = self.converted_record['control_number'] self.expected_citation_counts_after_insert = Counter() self.citation_counts_after_insert = Counter() for cited_recid in self.cited_recids: references_to_cited_recid = [r['recid'] for r in Query('refersto:' + str(cited_recid)).search().records() if r.get('recid')] queried_records = Query('control_number:' + str(cited_recid)).search().records() cited_record = queried_records[0] if queried_records else None if cited_record: if int(self.new_recid) in references_to_cited_recid: self.expected_citation_counts_after_insert[cited_recid] = cited_record.get('citation_count', 0) else: self.expected_citation_counts_after_insert[cited_recid] = \ cited_record.get('citation_count', 0) + 1 self.record = Record(id=self.new_recid) db.session.add(self.record) create_record(self.converted_record) # we need to make sure the new record has been already indexed timeout = 15 # [seconds] timeout_start = time.time() while time.time() < timeout_start + timeout: if len(Query('control_number:' + self.new_recid).search()) > 0: break else: time.sleep(1) # wait a few seconds to make sure that the field citation_count of cited records have been updated time.sleep(6)
def create_record(obj, eng): """Create record with Record API.""" from invenio_records.api import create_record create_record(obj.data)