Revision d4fc6292 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, request_user): |
|
506 |
def do_accept_membership_checks(project, membership, 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 |
|
|
517 | 521 |
def do_accept_membership(project_id, user, request_user=None): |
518 | 522 |
project = get_project_for_update(project_id) |
519 |
do_accept_membership_checks(project, request_user) |
|
520 |
|
|
521 | 523 |
membership = get_membership_for_update(project, user) |
524 |
do_accept_membership_checks(project, membership, request_user) |
|
525 |
|
|
522 | 526 |
membership.accept() |
523 | 527 |
sync_projects() |
524 | 528 |
|
... | ... | |
535 | 539 |
project_id = get_project_id_of_application_id(project_application_id) |
536 | 540 |
return do_reject_membership(project_id, user, request_user) |
537 | 541 |
|
538 |
def do_reject_membership_checks(project, request_user): |
|
542 |
def do_reject_membership_checks(project, membership, request_user):
|
|
539 | 543 |
checkAllowed(project, request_user) |
540 | 544 |
checkAlive(project) |
541 | 545 |
|
546 |
if membership != ProjectMembership.REQUESTED: |
|
547 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
|
548 |
raise PermissionDenied(m) |
|
549 |
|
|
542 | 550 |
def do_reject_membership(project_id, user, request_user=None): |
543 | 551 |
project = get_project_for_update(project_id) |
544 |
do_reject_membership_checks(project, request_user) |
|
545 |
|
|
546 | 552 |
membership = get_membership_for_update(project, user) |
553 |
do_reject_membership_checks(project, membership, request_user) |
|
554 |
|
|
547 | 555 |
membership.reject() |
548 | 556 |
|
549 | 557 |
membership_change_notify(project, membership.person, 'rejected') |
... | ... | |
567 | 575 |
if leave_policy == CLOSED_POLICY: |
568 | 576 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
569 | 577 |
|
578 |
if membership.state not in ProjectMembership.ACCEPTED_STATES: |
|
579 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
|
580 |
raise PermissionDenied(m) |
|
581 |
|
|
570 | 582 |
def do_remove_membership(project_id, user, request_user=None): |
571 | 583 |
project = get_project_for_update(project_id) |
572 |
do_remove_membership_checks(project, request_user) |
|
573 |
|
|
574 | 584 |
membership = get_membership_for_update(project, user) |
585 |
do_remove_membership_checks(project, membership, request_user) |
|
586 |
|
|
575 | 587 |
membership.remove() |
576 | 588 |
sync_projects() |
577 | 589 |
|
... | ... | |
585 | 597 |
|
586 | 598 |
def do_enroll_member(project_id, user, request_user=None): |
587 | 599 |
project = get_project_for_update(project_id) |
588 |
do_accept_membership_checks(project, request_user) |
|
589 |
|
|
590 | 600 |
membership = create_membership(project_id, user) |
601 |
do_accept_membership_checks(project, membership, request_user) |
|
602 |
|
|
591 | 603 |
membership.accept() |
592 | 604 |
sync_projects() |
593 | 605 |
|
... | ... | |
603 | 615 |
project_id = get_project_id_of_application_id(project_application_id) |
604 | 616 |
return do_leave_project(project_id, user_id) |
605 | 617 |
|
606 |
def do_leave_project_checks(project): |
|
618 |
def do_leave_project_checks(project, membership):
|
|
607 | 619 |
checkAlive(project) |
608 | 620 |
|
609 | 621 |
leave_policy = project.application.member_leave_policy |
610 | 622 |
if leave_policy == CLOSED_POLICY: |
611 | 623 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
612 | 624 |
|
625 |
if membership.state not in ProjectMembership.ACCEPTED_STATES: |
|
626 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
|
627 |
raise PermissionDenied(m) |
|
628 |
|
|
613 | 629 |
def do_leave_project(project_id, user_id): |
614 | 630 |
project = get_project_for_update(project_id) |
615 |
do_leave_project_checks(project) |
|
616 |
|
|
617 | 631 |
membership = get_membership_for_update(project, user_id) |
632 |
do_leave_project_checks(project, membership) |
|
618 | 633 |
|
619 | 634 |
leave_policy = project.application.member_leave_policy |
620 | 635 |
if leave_policy == AUTO_ACCEPT_POLICY: |
... | ... | |
643 | 658 |
|
644 | 659 |
def do_join_project(project_id, user_id): |
645 | 660 |
project = get_project_for_update(project_id) |
646 |
do_join_project_checks(project) |
|
647 |
|
|
648 | 661 |
membership = create_membership(project, user_id) |
662 |
do_join_project_checks(project) |
|
649 | 663 |
|
650 | 664 |
join_policy = project.application.member_join_policy |
651 | 665 |
if (join_policy == AUTO_ACCEPT_POLICY and |
Also available in: Unified diff