Beispiel #1
0
    def transaction(self):
        """Proxy to :class:`gcloud.datastore.transaction.Transaction`.

        Passes our ``dataset_id``.
        """
        return Transaction(dataset_id=self.dataset_id,
                           connection=self.connection)
Beispiel #2
0
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
Beispiel #3
0
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])
Beispiel #4
0
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])
Beispiel #5
0
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])
Beispiel #6
0
    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)
Beispiel #7
0
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
Beispiel #9
0
 def transaction(self, *args, **kwargs):
   from gcloud.datastore.transaction import Transaction
   kwargs['dataset'] = self
   return Transaction(*args, **kwargs)
Beispiel #10
0
 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
Beispiel #11
0
 def transaction(self):
     """Proxy to :class:`gcloud.datastore.transaction.Transaction`."""
     return Transaction(self)