def transaction(self): """Proxy to :class:`gcloud.datastore.transaction.Transaction`. Passes our ``dataset_id``. """ return Transaction(dataset_id=self.dataset_id, connection=self.connection)
def delete_report(employee_id, report_id, force): with Transaction(): report = _get_report(employee_id, report_id, False) if report is None: raise NoSuchReport() if report['status'] != 'pending' and not force: raise BadReportStatus(report['status']) count = _purge_report_items(report) datastore.delete([report.key]) return count
def create_report(employee_id, report_id, rows, description): with Transaction(): if _get_report(employee_id, report_id, False) is not None: raise DuplicateReport() report = _upsert_report(employee_id, report_id, rows) report['status'] = 'pending' if description is not None: report['description'] = description report['created'] = report['updated'] = datetime.datetime.utcnow() datastore.put([report])
def reject_report(employee_id, report_id, reason): with Transaction(): report = _get_report(employee_id, report_id, False) if report is None: raise NoSuchReport() if report['status'] != 'pending': raise BadReportStatus(report['status']) report['updated'] = datetime.datetime.utcnow() report['status'] = 'rejected' report['reason'] = reason datastore.put([report])
def approve_report(employee_id, report_id, check_number): with Transaction(): report = _get_report(employee_id, report_id, False) if report is None: raise NoSuchReport() if report['status'] != 'pending': raise BadReportStatus(report['status']) report['updated'] = datetime.datetime.utcnow() report['status'] = 'paid' report['check_number'] = check_number datastore.put([report])
def transaction(self, *args, **kwargs): """Create a transaction bound to this dataset. :param args: positional arguments, passed through to the Transaction :param kw: keyword arguments, passed through to the Transaction :rtype: :class:`gcloud.datastore.transaction.Transaction` :returns: a new Transaction instance, bound to this dataset. """ kwargs['dataset'] = self return Transaction(*args, **kwargs)
def update_report(employee_id, report_id, rows, description): with Transaction(): report = _get_report(employee_id, report_id, False) if report is None: raise NoSuchReport() if report['status'] != 'pending': raise BadReportStatus(report['status']) _upsert_report(employee_id, report_id, rows) if description is not None: report['description'] = description report['updated'] = datetime.datetime.utcnow() datastore.put([report])
def __init__(self, client, transaction_id='TRANSACTION'): from gcloud.datastore.transaction import Transaction self._client = client xact = self._transaction = Transaction(client) xact._id = transaction_id
def transaction(self, *args, **kwargs): from gcloud.datastore.transaction import Transaction kwargs['dataset'] = self return Transaction(*args, **kwargs)
def __init__(self, dataset_id, connection, transaction_id): from gcloud.datastore.transaction import Transaction xact = self._transaction = Transaction(dataset_id, connection) xact._id = transaction_id
def transaction(self): """Proxy to :class:`gcloud.datastore.transaction.Transaction`.""" return Transaction(self)