コード例 #1
0
ファイル: api.py プロジェクト: SamiHiltunen/invenio-documents
    def create(cls, data, schema=None, **kwargs):
        db.session.begin(subtransactions=True)
        try:
            data.setdefault('_id', str(uuid.uuid4()))
            data.setdefault('creation_date', datetime.now().isoformat())

            document = cls(data)

            from invenio.modules.jsonalchemy.registry import functions
            list(functions('documentext'))

            toposort_send(signals.before_document_insert, document)

            if schema is not None:
                validate(document, schema)

            model = DocumentMetadata(id=document['_id'], json=dict(document))
            db.session.add(model)
            db.session.commit()

            document.model = model

            toposort_send(signals.after_document_insert, document)
            return document
        except Exception:
            current_app.logger.exception("Problem creating a document.")
            db.session.rollback()
            raise
コード例 #2
0
ファイル: api.py プロジェクト: jalavik/invenio-records
    def commit(self):
        with db.session.begin_nested():
            list(functions('recordext'))

            toposort_send(before_record_update, self)

            if self.model is None:
                self.model = RecordMetadata.query.get(self['recid'])

            self.model.json = dict(self)

            db.session.merge(self.model)

        toposort_send(after_record_update, self)
        return self
コード例 #3
0
ファイル: api.py プロジェクト: jalavik/invenio-records
    def commit(self):
        with db.session.begin_nested():
            list(functions('recordext'))

            toposort_send(before_record_update, self)

            if self.model is None:
                self.model = RecordMetadata.query.get(self['recid'])

            self.model.json = dict(self)

            db.session.merge(self.model)

        toposort_send(after_record_update, self)
        return self
コード例 #4
0
ファイル: api.py プロジェクト: jalavik/invenio-records
    def create(cls, data, schema=None):
        with db.session.begin_nested():
            record = cls(unicodifier(data))

            list(functions('recordext'))

            toposort_send(before_record_insert, record)

            if schema is not None:
                validate(record, schema)

            metadata = dict(json=dict(record))
            if record.get('recid', None) is not None:
                metadata['id'] = record.get('recid')

            db.session.add(RecordMetadata(**metadata))

        toposort_send(after_record_insert, record)
        return record
コード例 #5
0
ファイル: api.py プロジェクト: SamiHiltunen/invenio-documents
    def commit(self):
        db.session.begin(subtransactions=True)
        try:
            toposort_send(signals.before_document_update, self)

            if self.model is None:
                self.model = DocumentMetadata.query.get(self['_id'])

            self.model.json = self.dumps()

            db.session.add(self.model)
            db.session.commit()

            toposort_send(signals.after_document_update, self)

            return self
        except Exception:
            db.session.rollback()
            raise
コード例 #6
0
ファイル: api.py プロジェクト: jalavik/invenio-records
    def create(cls, data, schema=None):
        with db.session.begin_nested():
            record = cls(unicodifier(data))

            list(functions('recordext'))

            toposort_send(before_record_insert, record)

            if schema is not None:
                validate(record, schema)

            metadata = dict(json=dict(record))
            if record.get('recid', None) is not None:
                metadata['id'] = record.get('recid')

            db.session.add(RecordMetadata(**metadata))

        toposort_send(after_record_insert, record)
        return record