コード例 #1
0
    def create_new_pid(self, pid_value):
        """
        Creates a new row inside the ``Record`` table.

        If ``pid_value`` is not ``None`` will be use as ``id`` to create this
        new row.
        """
        if pid_value is not None:
            record = Record(id=int(pid_value))
        else:
            record = Record()
        try:
            db.session.add(record)
            db.session.commit()
        except SQLAlchemyError:
            db.session.rollback()
            raise ValueError("Duplicate value for %s" % (pid_value, ))
        return str(record.id)
コード例 #2
0
    def create_records(self, rng):
        """Place records with specific IDs to the database."""
        from invenio_records.api import Record as Rec
        from invenio_records.models import Record

        for i in rng:
            rec = Record(id=i)
            db.session.add(rec)
            rec = Rec.create({
                'recid': i,
                'collections': {'primary': 'HEP'},
                'title': 'Record ' + str(i)
            })
            rec.commit()

        db.session.flush()
コード例 #3
0
    def test_attach_tags_to_record_pass(self):
        """Successfully attach tags to a record."""
        from invenio_records.models import Record
        # first create a record
        test_record = Record(creation_date=datetime.now(),
                             modification_date=datetime.now())
        test_record_info = dict(name="test_record")
        test_record.additional_info = test_record_info
        db.session.add(test_record)
        db.session.commit()
        # attach tags to the record
        tag_data = dict(tags=["ROOT", "PHYSICS"])
        answer = self.post(
            'recordlisttagresource',
            user_id=self.user_a.id,
            data=tag_data,
            urlargs=dict(record_id=test_record.id),
        )
        # answer.json is a list of TagRepresentation objects
        ordered_created_tags = []
        for tag_representation in answer.json:
            ordered_tag_repr = OrderedDict(
                sorted(tag_representation.items(), key=lambda t: t[0]))
            ordered_created_tags.append(ordered_tag_repr)
        # now query DB
        get_answer = self.get(
            'recordlisttagresource',
            user_id=self.user_a.id,
            urlargs=dict(record_id=test_record.id),
        )
        ordered_retrieved_tags = []
        for retrieved_tag_repr in get_answer.json:
            ordered_retrieved_tag_repr = OrderedDict(
                sorted(retrieved_tag_repr.items(), key=lambda t: t[0]))
            ordered_retrieved_tags.append(ordered_retrieved_tag_repr)

        self.assertEqual(ordered_created_tags, ordered_retrieved_tags)
        self.delete('taglistresource', user_id=self.user_a.id, code=204)
        # delete the created record
        db.session.delete(test_record)
        db.session.commit()
コード例 #4
0
 def test_detach_tags_from_record_pass(self):
     """Successfully detach tag from record."""
     from invenio_records.models import Record
     # first create a record
     test_record = Record(creation_date=datetime.now(),
                          modification_date=datetime.now())
     db.session.add(test_record)
     db.session.commit()
     # create some tags
     tags_list = ["HighEnergyPhysics", "Higgs", "ROOT"]
     # attach the tags to the record
     tags_data = dict(tags=tags_list, )
     self.post(
         'recordlisttagresource',
         user_id=self.user_a.id,
         data=tags_data,
         urlargs=dict(record_id=test_record.id),
     )
     # detach tags from record and delete them
     self.delete('taglistresource', user_id=self.user_a.id, code=204)
     # delete record
     db.session.delete(test_record)
     db.session.commit()
コード例 #5
0
 def test_detach_tags_from_record_fails(self):
     """Fail to detach tag from record."""
     from invenio_records.models import Record
     # first create a record
     test_record = Record(creation_date=datetime.now(),
                          modification_date=datetime.now())
     db.session.add(test_record)
     db.session.commit()
     # create a tag
     data = dict(name='HighEnergyPhysics', )
     self.post(
         'taglistresource',
         user_id=self.user_a.id,
         data=data,
         code=201,
     )
     # try to detach tag that is not attached to record
     detach_answer = self.delete(
         'recordtagresource',
         urlargs=dict(record_id=test_record.id,
                      tag_name=data[data.keys()[0]]),
         user_id=self.user_a.id,
     )
     ordered_detach_answer = OrderedDict(
         sorted(detach_answer.json.items(), key=lambda t: t[0]))
     expected_result = dict(
         message=("Tag '{0} is not attached to record with id={1}".format(
             data[data.keys()[0]], test_record.id)),
         status=400)
     ordered_expected_result = OrderedDict(
         sorted(expected_result.items(), key=lambda t: t[0]))
     self.assertEqual(ordered_detach_answer, ordered_expected_result)
     # delete tag
     self.delete('taglistresource', user_id=self.user_a.id, code=204)
     # delete record
     db.session.delete(test_record)
     db.session.commit()