Revision 907f15db
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
436 | 436 |
except ProjectMembership.DoesNotExist: |
437 | 437 |
raise IOError(_(astakos_messages.NOT_MEMBERSHIP_REQUEST)) |
438 | 438 |
|
439 |
def checkAllowed(project, request_user): |
|
440 |
if request_user and \ |
|
441 |
(not project.application.owner == request_user and \ |
|
442 |
not request_user.is_superuser): |
|
443 |
raise PermissionDenied(_(astakos_messages.NOT_ALLOWED)) |
|
444 |
|
|
445 |
def checkAlive(project): |
|
446 |
if not project.is_alive: |
|
447 |
raise PermissionDenied( |
|
448 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
449 |
|
|
439 | 450 |
def accept_membership(project_application_id, user, request_user=None): |
440 | 451 |
""" |
441 | 452 |
Raises: |
... | ... | |
446 | 457 |
return do_accept_membership(project_id, user, request_user) |
447 | 458 |
|
448 | 459 |
def do_accept_membership_checks(project, request_user): |
449 |
if request_user and \ |
|
450 |
(not project.application.owner == request_user and \ |
|
451 |
not request_user.is_superuser): |
|
452 |
raise PermissionDenied(_(astakos_messages.NOT_ALLOWED)) |
|
453 |
if not project.is_alive: |
|
454 |
raise PermissionDenied( |
|
455 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
460 |
checkAllowed(project, request_user) |
|
461 |
checkAlive(project) |
|
456 | 462 |
|
457 | 463 |
join_policy = project.application.member_join_policy |
458 | 464 |
if join_policy == CLOSED_POLICY: |
... | ... | |
461 | 467 |
if project.violates_members_limit(adding=1): |
462 | 468 |
raise PermissionDenied(_(astakos_messages.MEMBER_NUMBER_LIMIT_REACHED)) |
463 | 469 |
|
464 |
def do_accept_membership( |
|
465 |
project_id, user, request_user=None, bypass_checks=False): |
|
470 |
def do_accept_membership(project_id, user, request_user=None): |
|
466 | 471 |
project = get_project_for_update(project_id) |
467 |
|
|
468 |
if not bypass_checks: |
|
469 |
do_accept_membership_checks(project, request_user) |
|
472 |
do_accept_membership_checks(project, request_user) |
|
470 | 473 |
|
471 | 474 |
membership = get_membership_for_update(project, user) |
472 | 475 |
membership.accept() |
... | ... | |
494 | 497 |
return do_reject_membership(project_id, user, request_user) |
495 | 498 |
|
496 | 499 |
def do_reject_membership_checks(project, request_user): |
497 |
if request_user and \ |
|
498 |
(not project.application.owner == request_user and \ |
|
499 |
not request_user.is_superuser): |
|
500 |
raise PermissionDenied(_(astakos_messages.NOT_ALLOWED)) |
|
501 |
if not project.is_alive: |
|
502 |
raise PermissionDenied( |
|
503 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
500 |
checkAllowed(project, request_user) |
|
501 |
checkAlive(project) |
|
504 | 502 |
|
505 |
def do_reject_membership( |
|
506 |
project_id, user, request_user=None, bypass_checks=False): |
|
503 |
def do_reject_membership(project_id, user, request_user=None): |
|
507 | 504 |
project = get_project_for_update(project_id) |
508 |
|
|
509 |
if not bypass_checks: |
|
510 |
do_reject_membership_checks(project, request_user) |
|
505 |
do_reject_membership_checks(project, request_user) |
|
511 | 506 |
|
512 | 507 |
membership = get_membership_for_update(project, user) |
513 | 508 |
membership.reject() |
... | ... | |
534 | 529 |
return do_remove_membership(project_id, user, request_user) |
535 | 530 |
|
536 | 531 |
def do_remove_membership_checks(project, membership, request_user=None): |
537 |
if request_user and \ |
|
538 |
(not project.application.owner == request_user and \ |
|
539 |
not request_user.is_superuser): |
|
540 |
raise PermissionDenied(_(astakos_messages.NOT_ALLOWED)) |
|
541 |
if not project.is_alive: |
|
542 |
raise PermissionDenied( |
|
543 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
|
544 |
|
|
545 |
def do_remove_membership( |
|
546 |
project_id, user, request_user=None, bypass_checks=False): |
|
547 |
project = get_project_for_update(project_id) |
|
548 |
|
|
549 |
if not bypass_checks: |
|
550 |
do_remove_membership_checks(project, request_user) |
|
532 |
checkAllowed(project, request_user) |
|
533 |
checkAlive(project) |
|
551 | 534 |
|
552 | 535 |
leave_policy = project.application.member_leave_policy |
553 | 536 |
if leave_policy == CLOSED_POLICY: |
554 | 537 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
555 | 538 |
|
539 |
def do_remove_membership(project_id, user, request_user=None): |
|
540 |
project = get_project_for_update(project_id) |
|
541 |
do_remove_membership_checks(project, request_user) |
|
542 |
|
|
556 | 543 |
membership = get_membership_for_update(project, user) |
557 | 544 |
membership.remove() |
558 | 545 |
trigger_sync() |
... | ... | |
574 | 561 |
return do_enroll_member(project_id, user, request_user) |
575 | 562 |
|
576 | 563 |
def do_enroll_member(project_id, user, request_user=None): |
564 |
project = get_project_for_update(project_id) |
|
565 |
do_accept_membership_checks(project, request_user) |
|
566 |
|
|
577 | 567 |
membership = create_membership(project_id, user) |
578 |
return do_accept_membership( |
|
579 |
project_id, user, request_user, bypass_checks=True) |
|
568 |
membership.accept() |
|
569 |
trigger_sync() |
|
570 |
|
|
571 |
# TODO send proper notification |
|
572 |
return membership |
|
580 | 573 |
|
581 | 574 |
def leave_project(project_application_id, user_id): |
582 | 575 |
""" |
... | ... | |
588 | 581 |
return do_leave_project(project_id, user_id) |
589 | 582 |
|
590 | 583 |
def do_leave_project_checks(project): |
591 |
if not project.is_alive: |
|
592 |
m = _(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__ |
|
593 |
raise PermissionDenied(m) |
|
584 |
checkAlive(project) |
|
594 | 585 |
|
595 | 586 |
leave_policy = project.application.member_leave_policy |
596 | 587 |
if leave_policy == CLOSED_POLICY: |
597 | 588 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
598 | 589 |
|
599 |
def do_leave_project(project_id, user_id, bypass_checks=False):
|
|
590 |
def do_leave_project(project_id, user_id): |
|
600 | 591 |
project = get_project_for_update(project_id) |
601 |
|
|
602 |
if not bypass_checks: |
|
603 |
do_leave_project_checks(project) |
|
592 |
do_leave_project_checks(project) |
|
604 | 593 |
|
605 | 594 |
membership = get_membership_for_update(project, user_id) |
606 | 595 |
|
... | ... | |
623 | 612 |
return do_join_project(project_id, user_id) |
624 | 613 |
|
625 | 614 |
def do_join_project_checks(project): |
626 |
if not project.is_alive: |
|
627 |
m = _(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__ |
|
628 |
raise PermissionDenied(m) |
|
615 |
checkAlive(project) |
|
629 | 616 |
|
630 | 617 |
join_policy = project.application.member_join_policy |
631 | 618 |
if join_policy == CLOSED_POLICY: |
632 | 619 |
raise PermissionDenied(_(astakos_messages.MEMBER_JOIN_POLICY_CLOSED)) |
633 | 620 |
|
634 |
def do_join_project(project_id, user_id, bypass_checks=False):
|
|
621 |
def do_join_project(project_id, user_id): |
|
635 | 622 |
project = get_project_for_update(project_id) |
636 |
|
|
637 |
if not bypass_checks: |
|
638 |
do_join_project_checks(project) |
|
623 |
do_join_project_checks(project) |
|
639 | 624 |
|
640 | 625 |
membership = create_membership(project, user_id) |
641 | 626 |
|
... | ... | |
715 | 700 |
|
716 | 701 |
def terminate(project_id): |
717 | 702 |
project = get_project_for_update(project_id) |
718 |
|
|
719 |
if not project.is_alive: |
|
720 |
m = _(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__ |
|
721 |
raise PermissionDenied(m) |
|
703 |
checkAlive(project) |
|
722 | 704 |
|
723 | 705 |
project.terminate() |
724 | 706 |
trigger_sync() |
Also available in: Unified diff