Revision da9bcceb astakosclient/astakosclient/__init__.py
b/astakosclient/astakosclient/__init__.py | ||
---|---|---|
560 | 560 |
|
561 | 561 |
# ---------------------------------- |
562 | 562 |
# do a POST to ``API_COMMISSIONS`` |
563 |
def issue_commission(self, request): |
|
563 |
def _issue_commission(self, request):
|
|
564 | 564 |
"""Issue a commission |
565 | 565 |
|
566 | 566 |
Keyword arguments: |
... | ... | |
591 | 591 |
self.logger.error(msg) |
592 | 592 |
raise AstakosClientException(msg) |
593 | 593 |
|
594 |
def _mk_user_provision(self, holder, source, resource, quantity): |
|
595 |
holder = "user:" + holder |
|
596 |
source = "project:" + source |
|
597 |
return {"holder": holder, "source": source, |
|
598 |
"resource": resource, "quantity": quantity} |
|
599 |
|
|
600 |
def _mk_project_provision(self, holder, resource, quantity): |
|
601 |
holder = "project:" + holder |
|
602 |
return {"holder": holder, "source": None, |
|
603 |
"resource": resource, "quantity": quantity} |
|
604 |
|
|
605 |
def mk_provisions(self, holder, source, resource, quantity): |
|
606 |
return [self._mk_user_provision(holder, source, resource, quantity), |
|
607 |
self._mk_project_provision(source, resource, quantity)] |
|
608 |
|
|
609 |
def issue_commission_generic(self, user_provisions, project_provisions, |
|
610 |
name="", force=False, auto_accept=False): |
|
611 |
"""Issue commission (for multiple holder/source pairs) |
|
612 |
|
|
613 |
keyword arguments: |
|
614 |
user_provisions -- dict mapping user holdings |
|
615 |
(user, project, resource) to integer quantities |
|
616 |
project_provisions -- dict mapping project holdings |
|
617 |
(project, resource) to integer quantities |
|
618 |
name -- description of the commission (string) |
|
619 |
force -- force this commission (boolean) |
|
620 |
auto_accept -- auto accept this commission (boolean) |
|
621 |
|
|
622 |
In case of success return commission's id (int). |
|
623 |
Otherwise raise an AstakosClientException. |
|
624 |
|
|
625 |
""" |
|
626 |
request = {} |
|
627 |
request["force"] = force |
|
628 |
request["auto_accept"] = auto_accept |
|
629 |
request["name"] = name |
|
630 |
try: |
|
631 |
request["provisions"] = [] |
|
632 |
for (holder, source, resource), quantity in \ |
|
633 |
user_provisions.iteritems(): |
|
634 |
p = self._mk_user_provision(holder, source, resource, quantity) |
|
635 |
request["provisions"].append(p) |
|
636 |
for (holder, resource), quantity in project_provisions.iteritems(): |
|
637 |
p = self._mk_project_provision(holder, resource, quantity) |
|
638 |
request["provisions"].append(p) |
|
639 |
except Exception as err: |
|
640 |
self.logger.error(str(err)) |
|
641 |
raise BadValue(str(err)) |
|
642 |
|
|
643 |
return self._issue_commission(request) |
|
644 |
|
|
594 | 645 |
def issue_one_commission(self, holder, source, provisions, |
595 | 646 |
name="", force=False, auto_accept=False): |
596 | 647 |
"""Issue one commission (with specific holder and source) |
... | ... | |
605 | 656 |
|
606 | 657 |
In case of success return commission's id (int). |
607 | 658 |
Otherwise raise an AstakosClientException. |
608 |
(See also issue_commission) |
|
609 | 659 |
|
610 | 660 |
""" |
611 | 661 |
check_input("issue_one_commission", self.logger, |
... | ... | |
619 | 669 |
try: |
620 | 670 |
request["provisions"] = [] |
621 | 671 |
for resource, quantity in provisions.iteritems(): |
622 |
prov = {"holder": holder, "source": source, |
|
623 |
"resource": resource, "quantity": quantity} |
|
624 |
request["provisions"].append(prov) |
|
672 |
ps = self.mk_provisions(holder, source, resource, quantity) |
|
673 |
request["provisions"].extend(ps) |
|
625 | 674 |
except Exception as err: |
626 | 675 |
self.logger.error(str(err)) |
627 | 676 |
raise BadValue(str(err)) |
628 | 677 |
|
629 |
return self.issue_commission(request) |
|
678 |
return self._issue_commission(request)
|
|
630 | 679 |
|
631 | 680 |
# ---------------------------------- |
632 | 681 |
# do a GET to ``API_COMMISSIONS`` |
Also available in: Unified diff