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