Revision da4ac460 snf-astakos-app/astakos/im/functions.py
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
419 | 419 |
accept_membership_project_checks(project, request_user) |
420 | 420 |
|
421 | 421 |
|
422 |
def accept_membership(memb_id, request_user=None): |
|
422 |
def accept_membership(memb_id, request_user=None, reason=None):
|
|
423 | 423 |
project = get_project_of_membership_for_update(memb_id) |
424 | 424 |
membership = get_membership_by_id(memb_id) |
425 | 425 |
accept_membership_checks(membership, request_user) |
426 | 426 |
user = membership.person |
427 |
membership.perform_action("accept") |
|
427 |
membership.perform_action("accept", actor=request_user, reason=reason)
|
|
428 | 428 |
qh_sync_user(user) |
429 | 429 |
logger.info("User %s has been accepted in %s." % |
430 | 430 |
(user.log_display, project)) |
... | ... | |
443 | 443 |
checkAlive(project) |
444 | 444 |
|
445 | 445 |
|
446 |
def reject_membership(memb_id, request_user=None): |
|
446 |
def reject_membership(memb_id, request_user=None, reason=None):
|
|
447 | 447 |
project = get_project_of_membership_for_update(memb_id) |
448 | 448 |
membership = get_membership_by_id(memb_id) |
449 | 449 |
reject_membership_checks(membership, request_user) |
450 | 450 |
user = membership.person |
451 |
membership.perform_action("reject") |
|
451 |
membership.perform_action("reject", actor=request_user, reason=reason)
|
|
452 | 452 |
logger.info("Request of user %s for %s has been rejected." % |
453 | 453 |
(user.log_display, project)) |
454 | 454 |
|
... | ... | |
466 | 466 |
checkAlive(project) |
467 | 467 |
|
468 | 468 |
|
469 |
def cancel_membership(memb_id, request_user): |
|
469 |
def cancel_membership(memb_id, request_user, reason=None):
|
|
470 | 470 |
project = get_project_of_membership_for_update(memb_id) |
471 | 471 |
membership = get_membership_by_id(memb_id) |
472 | 472 |
cancel_membership_checks(membership, request_user) |
473 |
membership.perform_action("cancel") |
|
473 |
membership.perform_action("cancel", actor=request_user, reason=reason)
|
|
474 | 474 |
logger.info("Request of user %s for %s has been cancelled." % |
475 | 475 |
(membership.person.log_display, project)) |
476 | 476 |
|
... | ... | |
490 | 490 |
raise ProjectConflict(m) |
491 | 491 |
|
492 | 492 |
|
493 |
def remove_membership(memb_id, request_user=None): |
|
493 |
def remove_membership(memb_id, request_user=None, reason=None):
|
|
494 | 494 |
project = get_project_of_membership_for_update(memb_id) |
495 | 495 |
membership = get_membership_by_id(memb_id) |
496 | 496 |
remove_membership_checks(membership, request_user) |
497 | 497 |
user = membership.person |
498 |
membership.perform_action("remove") |
|
498 |
membership.perform_action("remove", actor=request_user, reason=reason)
|
|
499 | 499 |
qh_sync_user(user) |
500 | 500 |
logger.info("User %s has been removed from %s." % |
501 | 501 |
(user.log_display, project)) |
... | ... | |
504 | 504 |
return membership |
505 | 505 |
|
506 | 506 |
|
507 |
def enroll_member(project_id, user, request_user=None): |
|
507 |
def enroll_member(project_id, user, request_user=None, reason=None):
|
|
508 | 508 |
project = get_project_for_update(project_id) |
509 | 509 |
try: |
510 | 510 |
project = get_project_for_update(project_id) |
... | ... | |
517 | 517 |
if not membership.check_action("enroll"): |
518 | 518 |
m = _(astakos_messages.MEMBERSHIP_ACCEPTED) |
519 | 519 |
raise ProjectConflict(m) |
520 |
membership.perform_action("join") |
|
520 |
membership.perform_action("join", actor=request_user, reason=reason)
|
|
521 | 521 |
except ProjectNotFound: |
522 |
membership = new_membership(project, user) |
|
522 |
membership = new_membership(project, user, actor=request_user)
|
|
523 | 523 |
|
524 |
membership.perform_action("accept") |
|
524 |
membership.perform_action("accept", actor=request_user, reason=reason)
|
|
525 | 525 |
qh_sync_user(user) |
526 | 526 |
logger.info("User %s has been enrolled in %s." % |
527 | 527 |
(membership.person.log_display, project)) |
... | ... | |
556 | 556 |
return True |
557 | 557 |
|
558 | 558 |
|
559 |
def leave_project(memb_id, request_user): |
|
559 |
def leave_project(memb_id, request_user, reason=None):
|
|
560 | 560 |
project = get_project_of_membership_for_update(memb_id) |
561 | 561 |
membership = get_membership_by_id(memb_id) |
562 | 562 |
leave_project_checks(membership, request_user) |
... | ... | |
564 | 564 |
auto_accepted = False |
565 | 565 |
leave_policy = project.application.member_leave_policy |
566 | 566 |
if leave_policy == AUTO_ACCEPT_POLICY: |
567 |
membership.perform_action("remove") |
|
567 |
membership.perform_action("remove", actor=request_user, reason=reason)
|
|
568 | 568 |
qh_sync_user(request_user) |
569 | 569 |
logger.info("User %s has left %s." % |
570 | 570 |
(request_user.log_display, project)) |
571 | 571 |
auto_accepted = True |
572 | 572 |
else: |
573 |
membership.perform_action("leave_request") |
|
573 |
membership.perform_action("leave_request", actor=request_user, |
|
574 |
reason=reason) |
|
574 | 575 |
logger.info("User %s requested to leave %s." % |
575 | 576 |
(request_user.log_display, project)) |
576 | 577 |
membership_leave_request_notify(project, membership.person) |
... | ... | |
598 | 599 |
return m.check_action("join") |
599 | 600 |
|
600 | 601 |
|
601 |
def new_membership(project, user): |
|
602 |
def new_membership(project, user, actor=None, reason=None):
|
|
602 | 603 |
m = ProjectMembership.objects.create(project=project, person=user) |
603 |
m._log_create(None, ProjectMembership.REQUESTED) |
|
604 |
m._log_create(None, ProjectMembership.REQUESTED, actor=actor, |
|
605 |
reason=reason) |
|
604 | 606 |
return m |
605 | 607 |
|
606 | 608 |
|
607 |
def join_project(project_id, request_user): |
|
609 |
def join_project(project_id, request_user, reason=None):
|
|
608 | 610 |
project = get_project_for_update(project_id) |
609 | 611 |
join_project_checks(project) |
610 | 612 |
|
... | ... | |
613 | 615 |
if not membership.check_action("join"): |
614 | 616 |
msg = _(astakos_messages.MEMBERSHIP_ASSOCIATED) |
615 | 617 |
raise ProjectConflict(msg) |
616 |
membership.perform_action("join") |
|
618 |
membership.perform_action("join", actor=request_user, reason=reason)
|
|
617 | 619 |
except ProjectNotFound: |
618 |
membership = new_membership(project, request_user) |
|
620 |
membership = new_membership(project, request_user, actor=request_user, |
|
621 |
reason=reason) |
|
619 | 622 |
|
620 | 623 |
join_policy = project.application.member_join_policy |
621 | 624 |
if (join_policy == AUTO_ACCEPT_POLICY and ( |
622 | 625 |
not project.violates_members_limit(adding=1))): |
623 |
membership.perform_action("accept") |
|
626 |
membership.perform_action("accept", actor=request_user, reason=reason)
|
|
624 | 627 |
qh_sync_user(request_user) |
625 | 628 |
logger.info("User %s joined %s." % |
626 | 629 |
(request_user.log_display, project)) |
Also available in: Unified diff