Revision ff67242a snf-astakos-app/astakos/im/functions.py
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
46 | 46 |
from django.contrib.auth.models import AnonymousUser |
47 | 47 |
from django.core.exceptions import PermissionDenied |
48 | 48 |
from django.db import IntegrityError |
49 |
from django.http import Http404 |
|
49 | 50 |
|
50 | 51 |
from urllib import quote |
51 | 52 |
from urlparse import urljoin |
... | ... | |
494 | 495 |
raise PermissionDenied( |
495 | 496 |
_(astakos_messages.NOT_ALIVE_PROJECT) % project.__dict__) |
496 | 497 |
|
497 |
def accept_membership(project_application_id, user, request_user=None): |
|
498 |
""" |
|
499 |
Raises: |
|
500 |
django.core.exceptions.PermissionDenied |
|
501 |
IOError |
|
502 |
""" |
|
503 |
project_id = get_project_id_of_application_id(project_application_id) |
|
504 |
return do_accept_membership(project_id, user, request_user) |
|
505 |
|
|
506 |
def do_accept_membership_checks(project, request_user): |
|
498 |
def accept_membership_checks(project, request_user): |
|
507 | 499 |
checkAllowed(project, request_user) |
508 | 500 |
checkAlive(project) |
509 | 501 |
|
... | ... | |
514 | 506 |
if project.violates_members_limit(adding=1): |
515 | 507 |
raise PermissionDenied(_(astakos_messages.MEMBER_NUMBER_LIMIT_REACHED)) |
516 | 508 |
|
517 |
def do_accept_membership(project_id, user, request_user=None):
|
|
509 |
def accept_membership(project_id, user, request_user=None): |
|
518 | 510 |
project = get_project_for_update(project_id) |
519 |
do_accept_membership_checks(project, request_user)
|
|
511 |
accept_membership_checks(project, request_user) |
|
520 | 512 |
|
521 | 513 |
membership = get_membership_for_update(project, user) |
522 | 514 |
if not membership.can_accept(): |
... | ... | |
530 | 522 |
|
531 | 523 |
return membership |
532 | 524 |
|
533 |
def reject_membership(project_application_id, user, request_user=None): |
|
534 |
""" |
|
535 |
Raises: |
|
536 |
django.core.exceptions.PermissionDenied |
|
537 |
IOError |
|
538 |
""" |
|
539 |
project_id = get_project_id_of_application_id(project_application_id) |
|
540 |
return do_reject_membership(project_id, user, request_user) |
|
541 |
|
|
542 |
def do_reject_membership_checks(project, request_user): |
|
525 |
def reject_membership_checks(project, request_user): |
|
543 | 526 |
checkAllowed(project, request_user) |
544 | 527 |
checkAlive(project) |
545 | 528 |
|
546 |
def do_reject_membership(project_id, user, request_user=None):
|
|
529 |
def reject_membership(project_id, user, request_user=None): |
|
547 | 530 |
project = get_project_for_update(project_id) |
548 |
do_reject_membership_checks(project, request_user)
|
|
531 |
reject_membership_checks(project, request_user) |
|
549 | 532 |
membership = get_membership_for_update(project, user) |
550 | 533 |
if not membership.can_reject(): |
551 | 534 |
m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) |
... | ... | |
557 | 540 |
|
558 | 541 |
return membership |
559 | 542 |
|
560 |
def remove_membership(project_application_id, user, request_user=None): |
|
561 |
""" |
|
562 |
Raises: |
|
563 |
django.core.exceptions.PermissionDenied |
|
564 |
IOError |
|
565 |
""" |
|
566 |
project_id = get_project_id_of_application_id(project_application_id) |
|
567 |
return do_remove_membership(project_id, user, request_user) |
|
568 |
|
|
569 |
def do_remove_membership_checks(project, request_user=None): |
|
543 |
def remove_membership_checks(project, request_user=None): |
|
570 | 544 |
checkAllowed(project, request_user) |
571 | 545 |
checkAlive(project) |
572 | 546 |
|
... | ... | |
574 | 548 |
if leave_policy == CLOSED_POLICY: |
575 | 549 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
576 | 550 |
|
577 |
def do_remove_membership(project_id, user, request_user=None):
|
|
551 |
def remove_membership(project_id, user, request_user=None): |
|
578 | 552 |
project = get_project_for_update(project_id) |
579 |
do_remove_membership_checks(project, request_user)
|
|
553 |
remove_membership_checks(project, request_user) |
|
580 | 554 |
membership = get_membership_for_update(project, user) |
581 | 555 |
if not membership.can_remove(): |
582 | 556 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
... | ... | |
589 | 563 |
|
590 | 564 |
return membership |
591 | 565 |
|
592 |
def enroll_member(project_application_id, user, request_user=None): |
|
593 |
project_id = get_project_id_of_application_id(project_application_id) |
|
594 |
return do_enroll_member(project_id, user, request_user) |
|
595 |
|
|
596 |
def do_enroll_member(project_id, user, request_user=None): |
|
566 |
def enroll_member(project_id, user, request_user=None): |
|
597 | 567 |
project = get_project_for_update(project_id) |
598 |
do_accept_membership_checks(project, request_user)
|
|
568 |
accept_membership_checks(project, request_user) |
|
599 | 569 |
membership = create_membership(project_id, user) |
600 | 570 |
|
601 | 571 |
if not membership.can_accept(): |
... | ... | |
608 | 578 |
# TODO send proper notification |
609 | 579 |
return membership |
610 | 580 |
|
611 |
def leave_project(project_application_id, user_id): |
|
612 |
""" |
|
613 |
Raises: |
|
614 |
django.core.exceptions.PermissionDenied |
|
615 |
IOError |
|
616 |
""" |
|
617 |
project_id = get_project_id_of_application_id(project_application_id) |
|
618 |
return do_leave_project(project_id, user_id) |
|
619 |
|
|
620 |
def do_leave_project_checks(project): |
|
581 |
def leave_project_checks(project): |
|
621 | 582 |
checkAlive(project) |
622 | 583 |
|
623 | 584 |
leave_policy = project.application.member_leave_policy |
624 | 585 |
if leave_policy == CLOSED_POLICY: |
625 | 586 |
raise PermissionDenied(_(astakos_messages.MEMBER_LEAVE_POLICY_CLOSED)) |
626 | 587 |
|
627 |
def do_leave_project(project_id, user_id):
|
|
588 |
def leave_project(project_id, user_id): |
|
628 | 589 |
project = get_project_for_update(project_id) |
629 |
do_leave_project_checks(project)
|
|
590 |
leave_project_checks(project) |
|
630 | 591 |
membership = get_membership_for_update(project, user_id) |
631 | 592 |
if not membership.can_leave(): |
632 | 593 |
m = _(astakos_messages.NOT_ACCEPTED_MEMBERSHIP) |
... | ... | |
641 | 602 |
membership.save() |
642 | 603 |
return membership |
643 | 604 |
|
644 |
def join_project(project_application_id, user_id): |
|
645 |
""" |
|
646 |
Raises: |
|
647 |
django.core.exceptions.PermissionDenied |
|
648 |
IOError |
|
649 |
""" |
|
650 |
project_id = get_project_id_of_application_id(project_application_id) |
|
651 |
return do_join_project(project_id, user_id) |
|
652 |
|
|
653 |
def do_join_project_checks(project): |
|
605 |
def join_project_checks(project): |
|
654 | 606 |
checkAlive(project) |
655 | 607 |
|
656 | 608 |
join_policy = project.application.member_join_policy |
657 | 609 |
if join_policy == CLOSED_POLICY: |
658 | 610 |
raise PermissionDenied(_(astakos_messages.MEMBER_JOIN_POLICY_CLOSED)) |
659 | 611 |
|
660 |
def do_join_project(project_id, user_id):
|
|
612 |
def join_project(project_id, user_id): |
|
661 | 613 |
project = get_project_for_update(project_id) |
662 |
do_join_project_checks(project)
|
|
614 |
join_project_checks(project) |
|
663 | 615 |
membership = create_membership(project, user_id) |
664 | 616 |
|
665 | 617 |
join_policy = project.application.member_join_policy |
... | ... | |
778 | 730 |
|
779 | 731 |
project.resume() |
780 | 732 |
sync_projects() |
733 |
|
|
734 |
def get_by_chain_or_404(chain_id): |
|
735 |
try: |
|
736 |
project = Project.objects.get(id=chain_id) |
|
737 |
application = project.application |
|
738 |
return project, application |
|
739 |
except: |
|
740 |
application = ProjectApplication.objects.latest_of_chain(chain_id) |
|
741 |
if application is None: |
|
742 |
raise Http404 |
|
743 |
else: |
|
744 |
return None, application |
Also available in: Unified diff