Revision e47fb17a snf-astakos-app/astakos/im/functions.py
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
444 | 444 |
project_id = get_project_id_of_application_id(project_application_id) |
445 | 445 |
return do_accept_membership(project_id, user, request_user) |
446 | 446 |
|
447 |
def do_accept_membership(project_id, user, request_user=None): |
|
448 |
project = get_project_for_update(project_id) |
|
449 |
|
|
447 |
def do_accept_membership_checks(project, request_user): |
|
450 | 448 |
if request_user and \ |
451 | 449 |
(not project.application.owner == request_user and \ |
452 | 450 |
not request_user.is_superuser): |
... | ... | |
462 | 460 |
if project.violates_members_limit(adding=1): |
463 | 461 |
raise PermissionDenied(_(astakos_messages.MEMBER_NUMBER_LIMIT_REACHED)) |
464 | 462 |
|
463 |
def do_accept_membership( |
|
464 |
project_id, user, request_user=None, bypass_checks=False): |
|
465 |
project = get_project_for_update(project_id) |
|
466 |
|
|
467 |
if not bypass_checks: |
|
468 |
do_accept_membership_checks(project, request_user) |
|
469 |
|
|
465 | 470 |
membership = get_membership_for_update(project, user) |
466 | 471 |
membership.accept() |
467 | 472 |
trigger_sync() |
... | ... | |
487 | 492 |
project_id = get_project_id_of_application_id(project_application_id) |
488 | 493 |
return do_reject_membership(project_id, user, request_user) |
489 | 494 |
|
490 |
def do_reject_membership(project_id, user, request_user=None): |
|
491 |
project = get_project_for_update(project_id) |
|
492 |
|
|
495 |
def do_reject_membership_checks(project, request_user): |
|
493 | 496 |
if request_user and \ |
494 | 497 |
(not project.application.owner == request_user and \ |
495 | 498 |
not request_user.is_superuser): |
496 | 499 |
raise PermissionDenied(_(astakos_messages.NOT_ALLOWED)) |
497 | 500 |
if not project.is_alive: |
498 |
raise PermissionDenied(_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
501 |
raise PermissionDenied( |
|
502 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
503 |
|
|
504 |
def do_reject_membership( |
|
505 |
project_id, user, request_user=None, bypass_checks=False): |
|
506 |
project = get_project_for_update(project_id) |
|
499 | 507 |
|
508 |
if not bypass_checks: |
|
509 |
do_reject_membership_checks(project, request_user) |
|
510 |
|
|
500 | 511 |
membership = get_membership_for_update(project, user) |
501 | 512 |
membership.reject() |
502 | 513 |
|
... | ... | |
521 | 532 |
project_id = get_project_id_of_application_id(project_application_id) |
522 | 533 |
return do_remove_membership(project_id, user, request_user) |
523 | 534 |
|
524 |
def do_remove_membership(project_id, user, request_user=None): |
|
525 |
project = get_project_for_update(project_id) |
|
526 |
|
|
535 |
def do_remove_membership_checks(project, membership): |
|
527 | 536 |
if request_user and \ |
528 | 537 |
(not project.application.owner == request_user and \ |
529 | 538 |
not request_user.is_superuser): |
530 | 539 |
raise PermissionDenied(_(astakos_messages.NOT_ALLOWED)) |
531 | 540 |
if not project.is_alive: |
532 |
raise PermissionDenied(_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
541 |
raise PermissionDenied( |
|
542 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
543 |
|
|
544 |
def do_remove_membership( |
|
545 |
project_id, user, request_user=None, bypass_checks=False): |
|
546 |
project = get_project_for_update(project_id) |
|
547 |
|
|
548 |
if not bypass_checks: |
|
549 |
do_remove_membership_checks(project, request_user) |
|
533 | 550 |
|
534 | 551 |
leave_policy = project.application.member_leave_policy |
535 | 552 |
if leave_policy == CLOSED_POLICY: |
... | ... | |
557 | 574 |
|
558 | 575 |
def do_enroll_member(project_id, user, request_user=None): |
559 | 576 |
membership = create_membership(project_id, user) |
560 |
return do_accept_membership(project_id, user, request_user) |
|
577 |
return do_accept_membership( |
|
578 |
project_id, user, request_user, bypass_checks=True) |
|
561 | 579 |
|
562 | 580 |
def leave_project(project_application_id, user_id): |
563 | 581 |
""" |
... | ... | |
568 | 586 |
project_id = get_project_id_of_application_id(project_application_id) |
569 | 587 |
return do_leave_project(project_id, user_id) |
570 | 588 |
|
571 |
def do_leave_project(project_id, user_id): |
|
572 |
project = get_project_for_update(project_id) |
|
573 |
|
|
589 |
def do_leave_project_checks(project): |
|
574 | 590 |
if not project.is_alive: |
575 | 591 |
m = _(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__ |
576 | 592 |
raise PermissionDenied(m) |
... | ... | |
579 | 595 |
if leave_policy == CLOSED_POLICY: |
580 | 596 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
581 | 597 |
|
598 |
def do_leave_project(project_id, user_id, bypass_checks=False): |
|
599 |
project = get_project_for_update(project_id) |
|
600 |
|
|
601 |
if not bypass_checks: |
|
602 |
do_leave_project_checks(projetc) |
|
603 |
|
|
582 | 604 |
membership = get_membership_for_update(project, user_id) |
583 | 605 |
if leave_policy == AUTO_ACCEPT_POLICY: |
584 | 606 |
membership.remove() |
... | ... | |
597 | 619 |
project_id = get_project_id_of_application_id(project_application_id) |
598 | 620 |
return do_join_project(project_id, user_id) |
599 | 621 |
|
600 |
def do_join_project(project_id, user_id): |
|
601 |
project = get_project_for_update(project_id) |
|
602 |
|
|
622 |
def do_join_project_checks(project): |
|
603 | 623 |
if not project.is_alive: |
604 | 624 |
m = _(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__ |
605 | 625 |
raise PermissionDenied(m) |
... | ... | |
608 | 628 |
if join_policy == CLOSED_POLICY: |
609 | 629 |
raise PermissionDenied(_(astakos_messages.MEMBER_JOIN_POLICY_CLOSED)) |
610 | 630 |
|
631 |
def do_join_project(project_id, user_id, bypass_checks=False): |
|
632 |
project = get_project_for_update(project_id) |
|
633 |
|
|
634 |
if not bypass_checks: |
|
635 |
do_join_project_checks(project) |
|
636 |
|
|
611 | 637 |
membership = create_membership(project, user_id) |
612 | 638 |
|
613 | 639 |
if (join_policy == AUTO_ACCEPT_POLICY and |
... | ... | |
617 | 643 |
return membership |
618 | 644 |
|
619 | 645 |
def submit_application( |
620 |
application, resource_policies, applicant, comments, precursor_application=None): |
|
646 |
application, resource_policies, applicant, comments, |
|
647 |
precursor_application=None): |
|
621 | 648 |
|
622 | 649 |
application.submit( |
623 | 650 |
resource_policies, applicant, comments, precursor_application) |
Also available in: Unified diff