Revision 570015d2 snf-astakos-app/astakos/im/functions.py
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
78 | 78 |
application_deny_notify, |
79 | 79 |
project_termination_notify, project_suspension_notify) |
80 | 80 |
from astakos.im.endpoints.qh import ( |
81 |
register_quotas, qh_get_quota) |
|
81 |
register_quotas, qh_get_quota, qh_add_quota)
|
|
82 | 82 |
|
83 | 83 |
import astakos.im.messages as astakos_messages |
84 | 84 |
|
... | ... | |
526 | 526 |
raise PermissionDenied(m) |
527 | 527 |
|
528 | 528 |
membership.accept() |
529 |
qh_sync([membership]) |
|
529 | 530 |
logger.info("User %s has been accepted in %s." % |
530 | 531 |
(membership.person.log_display, project)) |
531 | 532 |
|
... | ... | |
585 | 586 |
raise PermissionDenied(m) |
586 | 587 |
|
587 | 588 |
membership.remove() |
589 |
qh_sync([membership]) |
|
588 | 590 |
logger.info("User %s has been removed from %s." % |
589 | 591 |
(membership.person.log_display, project)) |
590 | 592 |
|
... | ... | |
602 | 604 |
raise PermissionDenied(m) |
603 | 605 |
|
604 | 606 |
membership.accept() |
607 |
qh_sync([membership]) |
|
605 | 608 |
logger.info("User %s has been enrolled in %s." % |
606 | 609 |
(membership.person.log_display, project)) |
610 |
|
|
607 | 611 |
membership_enroll_notify(project, membership.person) |
608 | 612 |
|
609 | 613 |
return membership |
... | ... | |
638 | 642 |
leave_policy = project.application.member_leave_policy |
639 | 643 |
if leave_policy == AUTO_ACCEPT_POLICY: |
640 | 644 |
membership.remove() |
645 |
qh_sync([membership]) |
|
641 | 646 |
logger.info("User %s has left %s." % |
642 | 647 |
(membership.person.log_display, project)) |
643 | 648 |
auto_accepted = True |
... | ... | |
674 | 679 |
if (join_policy == AUTO_ACCEPT_POLICY and |
675 | 680 |
not project.violates_members_limit(adding=1)): |
676 | 681 |
membership.accept() |
682 |
qh_sync([membership]) |
|
677 | 683 |
logger.info("User %s joined %s." % |
678 | 684 |
(membership.person.log_display, project)) |
679 | 685 |
auto_accepted = True |
... | ... | |
783 | 789 |
application.id, application.state_display())) |
784 | 790 |
raise PermissionDenied(m) |
785 | 791 |
|
786 |
application.approve() |
|
792 |
project = application.approve() |
|
793 |
qh_sync_projects([project]) |
|
787 | 794 |
logger.info("%s has been approved." % (application.log_display)) |
788 | 795 |
application_approve_notify(application) |
789 | 796 |
|
... | ... | |
801 | 808 |
checkAlive(project) |
802 | 809 |
|
803 | 810 |
project.terminate() |
811 |
qh_sync_projects([project]) |
|
804 | 812 |
logger.info("%s has been terminated." % (project)) |
813 |
|
|
805 | 814 |
project_termination_notify(project) |
806 | 815 |
|
807 | 816 |
def suspend(project_id): |
... | ... | |
809 | 818 |
checkAlive(project) |
810 | 819 |
|
811 | 820 |
project.suspend() |
821 |
qh_sync_projects([project]) |
|
812 | 822 |
logger.info("%s has been suspended." % (project)) |
823 |
|
|
813 | 824 |
project_suspension_notify(project) |
814 | 825 |
|
815 | 826 |
def resume(project_id): |
... | ... | |
820 | 831 |
raise PermissionDenied(m) |
821 | 832 |
|
822 | 833 |
project.resume() |
834 |
qh_sync_projects([project]) |
|
823 | 835 |
logger.info("%s has been unsuspended." % (project)) |
824 | 836 |
|
825 | 837 |
def get_by_chain_or_404(chain_id): |
... | ... | |
900 | 912 |
return reached, limit |
901 | 913 |
|
902 | 914 |
return False, limit |
915 |
|
|
916 |
|
|
917 |
def qh_sync_projects(projects): |
|
918 |
memberships = [] |
|
919 |
append = memberships.append |
|
920 |
for project in projects: |
|
921 |
ms = project.projectmembership_set.all().select_for_update() |
|
922 |
memberships += list(ms) |
|
923 |
|
|
924 |
qh_sync(memberships) |
|
925 |
|
|
926 |
|
|
927 |
def qh_sync(memberships): |
|
928 |
sub_quota, add_quota = [], [] |
|
929 |
for membership in memberships: |
|
930 |
pending_application = membership.get_pending_application() |
|
931 |
membership.get_diff_quotas(sub_quota, add_quota, pending_application) |
|
932 |
if membership.state == membership.REMOVED: |
|
933 |
membership.delete() |
|
934 |
else: |
|
935 |
membership.application = pending_application |
|
936 |
membership.save() |
|
937 |
qh_add_quota(sub_quota, add_quota) |
Also available in: Unified diff