38 from django.utils.translation import ugettext |
38 from django.utils.translation import ugettext |
39 |
39 |
40 from soc.logic import accounts |
40 from soc.logic import accounts |
41 from soc.logic import dicts |
41 from soc.logic import dicts |
42 from soc.logic.models.club_admin import logic as club_admin_logic |
42 from soc.logic.models.club_admin import logic as club_admin_logic |
|
43 from soc.logic.models.document import logic as document_logic |
43 from soc.logic.models.host import logic as host_logic |
44 from soc.logic.models.host import logic as host_logic |
44 from soc.logic.models.notification import logic as notification_logic |
45 from soc.logic.models.notification import logic as notification_logic |
45 from soc.logic.models.request import logic as request_logic |
46 from soc.logic.models.request import logic as request_logic |
46 from soc.logic.models.role import logic as role_logic |
47 from soc.logic.models.role import logic as role_logic |
47 from soc.logic.models.site import logic as site_logic |
48 from soc.logic.models.site import logic as site_logic |
439 fields = {'link_id': django_args['link_id']} |
440 fields = {'link_id': django_args['link_id']} |
440 |
441 |
441 if django_args.get('scope_path'): |
442 if django_args.get('scope_path'): |
442 fields['scope_path'] = django_args['scope_path'] |
443 fields['scope_path'] = django_args['scope_path'] |
443 |
444 |
444 group_entity = group_logic.logic.getFromFieldsOr404(**fields) |
445 group_entity = group_logic.logic.getFromKeyFieldsOr404(fields) |
445 |
446 |
446 if group_entity.status == 'active': |
447 if group_entity.status == 'active': |
447 return |
448 return |
448 |
449 |
449 # TODO tell the user that this group is not active |
450 # TODO tell the user that this group is not active |
487 |
488 |
488 fields = {'link_id': django_args['link_id'], |
489 fields = {'link_id': django_args['link_id'], |
489 'scope_path': django_args['scope_path'], |
490 'scope_path': django_args['scope_path'], |
490 'role': role_name} |
491 'role': role_name} |
491 |
492 |
492 request_entity = request_logic.getFromFieldsOr404(**fields) |
493 request_entity = request_logic.getFromKeyFieldsOr404(fields) |
493 |
494 |
494 if request_entity.status != 'group_accepted': |
495 if request_entity.status != 'group_accepted': |
495 # TODO tell the user that this request has not been accepted yet |
496 # TODO tell the user that this request has not been accepted yet |
496 self.deny(django_args) |
497 self.deny(django_args) |
497 |
498 |
509 |
510 |
510 fields = {'link_id': django_args['link_id'], |
511 fields = {'link_id': django_args['link_id'], |
511 'scope_path': django_args['scope_path'], |
512 'scope_path': django_args['scope_path'], |
512 'role': role_name} |
513 'role': role_name} |
513 |
514 |
514 request_entity = request_logic.getFromFieldsOr404(**fields) |
515 request_entity = request_logic.getFromKeyFieldsOr404(fields) |
515 |
516 |
516 if request_entity.status in ['completed', 'denied']: |
517 if request_entity.status in ['completed', 'denied']: |
517 # TODO tell the user that this request has been processed |
518 # TODO tell the user that this request has been processed |
518 self.deny(django_args) |
519 self.deny(django_args) |
519 |
520 |
596 @allowDeveloper |
597 @allowDeveloper |
597 def checkIsHostForProgram(self, django_args): |
598 def checkIsHostForProgram(self, django_args): |
598 """Checks if the user is a host for the specified program. |
599 """Checks if the user is a host for the specified program. |
599 """ |
600 """ |
600 |
601 |
601 key_fields = program_logic.getKeyFieldsFromDict(django_args) |
602 key_fields = program_logic.getKeyFieldsFromFields(django_args) |
602 program = program_logic.getFromFields(**key_fields) |
603 program = program_logic.getFromKeyFields(key_fields) |
603 |
604 |
604 if not program or program.status == 'invalid': |
605 if not program or program.status == 'invalid': |
605 self.deny(django_args) |
606 self.deny(django_args) |
606 |
607 |
607 new_args = {'scope_path': program.scope_path } |
608 new_args = {'scope_path': program.scope_path } |
802 |
803 |
803 fields = {'link_id': django_args['link_id'], |
804 fields = {'link_id': django_args['link_id'], |
804 'scope_path': django_args['scope_path'], |
805 'scope_path': django_args['scope_path'], |
805 } |
806 } |
806 |
807 |
807 role_entity = role_logic.logic.getFromFieldsOr404(**fields) |
808 role_entity = role_logic.logic.getFromKeyFieldsOr404(fields) |
808 |
809 |
809 if role_entity.status != 'active': |
810 if role_entity.status != 'active': |
810 # role is not active |
811 # role is not active |
811 self.deny(django_args) |
812 self.deny(django_args) |
812 |
813 |
840 # apparently it's not the user's role so check if managing this role is allowed |
841 # apparently it's not the user's role so check if managing this role is allowed |
841 fields = {'link_id': django_args['link_id'], |
842 fields = {'link_id': django_args['link_id'], |
842 'scope_path': django_args['scope_path'], |
843 'scope_path': django_args['scope_path'], |
843 } |
844 } |
844 |
845 |
845 role_entity = role_logic.logic.getFromFieldsOr404(**fields) |
846 role_entity = role_logic.logic.getFromKeyFieldsOr404(fields) |
846 |
847 |
847 if role_entity.status != 'active': |
848 if role_entity.status != 'active': |
848 # cannot manage this entity |
849 # cannot manage this entity |
849 self.deny(django_args) |
850 self.deny(django_args) |
850 |
851 |
878 return |
879 return |
879 |
880 |
880 #TODO(SRabbelier) inform user that return_url and field are required |
881 #TODO(SRabbelier) inform user that return_url and field are required |
881 self.deny(django_args) |
882 self.deny(django_args) |
882 |
883 |
|
884 @denySidebar |
|
885 @allowDeveloper |
883 def checkIsDocumentPublic(self, django_args): |
886 def checkIsDocumentPublic(self, django_args): |
884 """Checks whether a document is public. |
887 """Checks whether a document is public. |
885 |
888 |
886 Args: |
889 Args: |
887 django_args: a dictionary with django's arguments |
890 django_args: a dictionary with django's arguments |
888 """ |
891 """ |
889 |
892 |
890 # TODO(srabbelier): A proper check needs to be done to see if the document |
893 key_fields = document_logic.getKeyFieldsFromFields(django_args) |
891 # is public or not, probably involving analysing it's scope or such. |
894 document_logic.getFromKeyFields(key_fields) |
892 self.allow(django_args) |
|
893 |
895 |
894 @allowIfCheckPasses('checkIsHostForProgram') |
896 @allowIfCheckPasses('checkIsHostForProgram') |
895 def checkIsProgramVisible(self, django_args): |
897 def checkIsProgramVisible(self, django_args): |
896 """Checks whether a program is visible. |
898 """Checks whether a program is visible. |
897 """ |
899 """ |
898 |
900 |
899 if 'entity' in django_args: |
901 if 'entity' in django_args: |
900 program = django_args['entity'] |
902 program = django_args['entity'] |
901 else: |
903 else: |
902 key_fields = program_logic.getKeyFieldsFromDict(django_args) |
904 key_fields = program_logic.getKeyFieldsFromFields(django_args) |
903 program = program_logic.getFromFields(**key_fields) |
905 program = program_logic.getFromKeyFields(key_fields) |
904 |
906 |
905 if not program: |
907 if not program: |
906 self.deny(django_args) |
908 self.deny(django_args) |
907 |
909 |
908 if program.status == 'visible': |
910 if program.status == 'visible': |