Revision 14f7f6a5 snf-astakos-app/astakos/im/functions.py
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
503 | 503 |
project_id = get_project_id_of_application_id(project_application_id) |
504 | 504 |
return do_accept_membership(project_id, user, request_user) |
505 | 505 |
|
506 |
def do_accept_membership_checks(project, membership, request_user):
|
|
506 |
def do_accept_membership_checks(project, request_user): |
|
507 | 507 |
checkAllowed(project, request_user) |
508 | 508 |
checkAlive(project) |
509 | 509 |
|
... | ... | |
514 | 514 |
if project.violates_members_limit(adding=1): |
515 | 515 |
raise PermissionDenied(_(astakos_messages.MEMBER_NUMBER_LIMIT_REACHED)) |
516 | 516 |
|
517 |
if membership != ProjectMembership.REQUESTED: |
|
518 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
|
519 |
raise PermissionDenied(m) |
|
520 |
|
|
521 | 517 |
def do_accept_membership(project_id, user, request_user=None): |
522 | 518 |
project = get_project_for_update(project_id) |
519 |
do_accept_membership_checks(project, request_user) |
|
520 |
|
|
523 | 521 |
membership = get_membership_for_update(project, user) |
524 |
do_accept_membership_checks(project, membership, request_user) |
|
522 |
if not membership.can_accept(): |
|
523 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
|
524 |
raise PermissionDenied(m) |
|
525 | 525 |
|
526 | 526 |
membership.accept() |
527 | 527 |
sync_projects() |
... | ... | |
539 | 539 |
project_id = get_project_id_of_application_id(project_application_id) |
540 | 540 |
return do_reject_membership(project_id, user, request_user) |
541 | 541 |
|
542 |
def do_reject_membership_checks(project, membership, request_user):
|
|
542 |
def do_reject_membership_checks(project, request_user): |
|
543 | 543 |
checkAllowed(project, request_user) |
544 | 544 |
checkAlive(project) |
545 | 545 |
|
546 |
if membership != ProjectMembership.REQUESTED: |
|
547 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
|
548 |
raise PermissionDenied(m) |
|
549 |
|
|
550 | 546 |
def do_reject_membership(project_id, user, request_user=None): |
551 | 547 |
project = get_project_for_update(project_id) |
548 |
do_reject_membership_checks(project, request_user) |
|
552 | 549 |
membership = get_membership_for_update(project, user) |
553 |
do_reject_membership_checks(project, membership, request_user) |
|
550 |
if not membership.can_reject(): |
|
551 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
|
552 |
raise PermissionDenied(m) |
|
554 | 553 |
|
555 | 554 |
membership.reject() |
556 | 555 |
|
... | ... | |
567 | 566 |
project_id = get_project_id_of_application_id(project_application_id) |
568 | 567 |
return do_remove_membership(project_id, user, request_user) |
569 | 568 |
|
570 |
def do_remove_membership_checks(project, membership, request_user=None):
|
|
569 |
def do_remove_membership_checks(project, request_user=None): |
|
571 | 570 |
checkAllowed(project, request_user) |
572 | 571 |
checkAlive(project) |
573 | 572 |
|
... | ... | |
575 | 574 |
if leave_policy == CLOSED_POLICY: |
576 | 575 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
577 | 576 |
|
578 |
if membership.state not in ProjectMembership.ACCEPTED_STATES: |
|
579 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
|
580 |
raise PermissionDenied(m) |
|
581 |
|
|
582 | 577 |
def do_remove_membership(project_id, user, request_user=None): |
583 | 578 |
project = get_project_for_update(project_id) |
579 |
do_remove_membership_checks(project, request_user) |
|
584 | 580 |
membership = get_membership_for_update(project, user) |
585 |
do_remove_membership_checks(project, membership, request_user) |
|
581 |
if not membership.can_remove(): |
|
582 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
|
583 |
raise PermissionDenied(m) |
|
586 | 584 |
|
587 | 585 |
membership.remove() |
588 | 586 |
sync_projects() |
... | ... | |
597 | 595 |
|
598 | 596 |
def do_enroll_member(project_id, user, request_user=None): |
599 | 597 |
project = get_project_for_update(project_id) |
598 |
do_accept_membership_checks(project, request_user) |
|
600 | 599 |
membership = create_membership(project_id, user) |
601 |
do_accept_membership_checks(project, membership, request_user) |
|
600 |
|
|
601 |
if not membership.can_accept(): |
|
602 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
|
603 |
raise PermissionDenied(m) |
|
602 | 604 |
|
603 | 605 |
membership.accept() |
604 | 606 |
sync_projects() |
... | ... | |
615 | 617 |
project_id = get_project_id_of_application_id(project_application_id) |
616 | 618 |
return do_leave_project(project_id, user_id) |
617 | 619 |
|
618 |
def do_leave_project_checks(project, membership):
|
|
620 |
def do_leave_project_checks(project): |
|
619 | 621 |
checkAlive(project) |
620 | 622 |
|
621 | 623 |
leave_policy = project.application.member_leave_policy |
622 | 624 |
if leave_policy == CLOSED_POLICY: |
623 | 625 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
624 | 626 |
|
625 |
if membership.state not in ProjectMembership.ACCEPTED_STATES: |
|
626 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
|
627 |
raise PermissionDenied(m) |
|
628 |
|
|
629 | 627 |
def do_leave_project(project_id, user_id): |
630 | 628 |
project = get_project_for_update(project_id) |
629 |
do_leave_project_checks(project) |
|
631 | 630 |
membership = get_membership_for_update(project, user_id) |
632 |
do_leave_project_checks(project, membership) |
|
631 |
if not membership.can_leave(): |
|
632 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
|
633 |
raise PermissionDenied(m) |
|
633 | 634 |
|
634 | 635 |
leave_policy = project.application.member_leave_policy |
635 | 636 |
if leave_policy == AUTO_ACCEPT_POLICY: |
... | ... | |
658 | 659 |
|
659 | 660 |
def do_join_project(project_id, user_id): |
660 | 661 |
project = get_project_for_update(project_id) |
661 |
membership = create_membership(project, user_id) |
|
662 | 662 |
do_join_project_checks(project) |
663 |
membership = create_membership(project, user_id) |
|
663 | 664 |
|
664 | 665 |
join_policy = project.application.member_join_policy |
665 | 666 |
if (join_policy == AUTO_ACCEPT_POLICY and |
Also available in: Unified diff