Revision 01bdbd17
b/snf-astakos-app/astakos/im/functions.py | ||
---|---|---|
693 | 693 |
application = get_application_for_update(application_id) |
694 | 694 |
checkAllowed(application, request_user) |
695 | 695 |
|
696 |
if application.state != ProjectApplication.PENDING: |
|
697 |
raise PermissionDenied() |
|
696 |
if not application.can_cancel(): |
|
697 |
m = _(astakos_messages.APPLICATION_CANNOT_CANCEL % ( |
|
698 |
application.id, application.state_display())) |
|
699 |
raise PermissionDenied(m) |
|
698 | 700 |
|
699 | 701 |
application.cancel() |
700 | 702 |
|
... | ... | |
702 | 704 |
application = get_application_for_update(application_id) |
703 | 705 |
checkAllowed(application, request_user) |
704 | 706 |
|
705 |
if application.state != ProjectApplication.DENIED: |
|
706 |
raise PermissionDenied() |
|
707 |
if not application.can_dismiss(): |
|
708 |
m = _(astakos_messages.APPLICATION_CANNOT_DISMISS % ( |
|
709 |
application.id, application.state_display())) |
|
710 |
raise PermissionDenied(m) |
|
707 | 711 |
|
708 | 712 |
application.dismiss() |
709 | 713 |
|
710 | 714 |
def deny_application(application_id): |
711 | 715 |
application = get_application_for_update(application_id) |
712 |
if application.state != ProjectApplication.PENDING: |
|
713 |
raise PermissionDenied() |
|
716 |
|
|
717 |
if not application.can_deny(): |
|
718 |
m = _(astakos_messages.APPLICATION_CANNOT_DENY % ( |
|
719 |
application.id, application.state_display())) |
|
720 |
raise PermissionDenied(m) |
|
714 | 721 |
|
715 | 722 |
application.deny() |
716 | 723 |
application_deny_notify(application) |
... | ... | |
725 | 732 |
except ProjectApplication.DoesNotExist: |
726 | 733 |
raise PermissionDenied() |
727 | 734 |
|
735 |
if not application.can_approve(): |
|
736 |
m = _(astakos_messages.APPLICATION_CANNOT_APPROVE % ( |
|
737 |
application.id, application.state_display())) |
|
738 |
raise PermissionDenied(m) |
|
739 |
|
|
728 | 740 |
application.approve() |
729 | 741 |
sync_projects() |
730 | 742 |
|
b/snf-astakos-app/astakos/im/messages.py | ||
---|---|---|
188 | 188 |
USER_LEFT_PROJECT = '%(realname)s has left the Project.' |
189 | 189 |
USER_JOIN_REQUEST_SUBMITED = 'Join request submitted.' |
190 | 190 |
|
191 |
APPLICATION_CANNOT_APPROVE = "Cannot approve application %s in state '%s'" |
|
192 |
APPLICATION_CANNOT_DENY = "Cannot deny application %s in state '%s'" |
|
193 |
APPLICATION_CANNOT_DISMISS = "Cannot dismiss application %s in state '%s'" |
|
194 |
APPLICATION_CANNOT_CANCEL = "Cannot cancel application %s in state '%s'" |
|
195 |
|
|
191 | 196 |
# Auth providers messages |
192 | 197 |
AUTH_PROVIDER_NOT_ACTIVE = "'%(provider)s' is disabled." |
193 | 198 |
AUTH_PROVIDER_NOT_ACTIVE_FOR_LOGIN = "Login using '%(provider)s' is disabled." |
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
1432 | 1432 |
except Project.DoesNotExist: |
1433 | 1433 |
return None |
1434 | 1434 |
|
1435 |
def can_cancel(self): |
|
1436 |
return self.state == self.PENDING |
|
1437 |
|
|
1435 | 1438 |
def cancel(self): |
1436 |
if self.state != self.PENDING:
|
|
1439 |
if not self.can_cancel():
|
|
1437 | 1440 |
m = _("cannot cancel: application '%s' in state '%s'") % ( |
1438 | 1441 |
self.id, self.state) |
1439 | 1442 |
raise AssertionError(m) |
... | ... | |
1441 | 1444 |
self.state = self.CANCELLED |
1442 | 1445 |
self.save() |
1443 | 1446 |
|
1447 |
def can_dismiss(self): |
|
1448 |
return self.state == self.DENIED |
|
1449 |
|
|
1444 | 1450 |
def dismiss(self): |
1445 |
if self.state != self.DENIED:
|
|
1451 |
if not self.can_dismiss():
|
|
1446 | 1452 |
m = _("cannot dismiss: application '%s' in state '%s'") % ( |
1447 | 1453 |
self.id, self.state) |
1448 | 1454 |
raise AssertionError(m) |
... | ... | |
1450 | 1456 |
self.state = self.DISMISSED |
1451 | 1457 |
self.save() |
1452 | 1458 |
|
1459 |
def can_deny(self): |
|
1460 |
return self.state == self.PENDING |
|
1461 |
|
|
1453 | 1462 |
def deny(self): |
1454 |
if self.state != self.PENDING:
|
|
1463 |
if not self.can_deny():
|
|
1455 | 1464 |
m = _("cannot deny: application '%s' in state '%s'") % ( |
1456 | 1465 |
self.id, self.state) |
1457 | 1466 |
raise AssertionError(m) |
... | ... | |
1460 | 1469 |
self.response_date = datetime.now() |
1461 | 1470 |
self.save() |
1462 | 1471 |
|
1472 |
def can_approve(self): |
|
1473 |
return self.state == self.PENDING |
|
1474 |
|
|
1463 | 1475 |
def approve(self, approval_user=None): |
1464 | 1476 |
""" |
1465 | 1477 |
If approval_user then during owner membership acceptance |
... | ... | |
1473 | 1485 |
raise AssertionError("NOPE") |
1474 | 1486 |
|
1475 | 1487 |
new_project_name = self.name |
1476 |
if self.state != self.PENDING:
|
|
1488 |
if not self.can_approve():
|
|
1477 | 1489 |
m = _("cannot approve: project '%s' in state '%s'") % ( |
1478 | 1490 |
new_project_name, self.state) |
1479 |
raise PermissionDenied(m) # invalid argument
|
|
1491 |
raise AssertionError(m) # invalid argument
|
|
1480 | 1492 |
|
1481 | 1493 |
now = datetime.now() |
1482 | 1494 |
project = self._get_project_for_update() |
Also available in: Unified diff