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)
|