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
|