Revision e47fb17a snf-astakos-app/astakos/im/functions.py

b/snf-astakos-app/astakos/im/functions.py
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)

Also available in: Unified diff