29 from soc.logic import dicts |
29 from soc.logic import dicts |
30 from soc.logic.models import organization as org_logic |
30 from soc.logic.models import organization as org_logic |
31 from soc.logic.models import org_admin as org_admin_logic |
31 from soc.logic.models import org_admin as org_admin_logic |
32 from soc.logic.models import org_app as org_app_logic |
32 from soc.logic.models import org_app as org_app_logic |
33 from soc.views.helper import access |
33 from soc.views.helper import access |
|
34 from soc.views.helper import decorators |
34 from soc.views.helper import dynaform |
35 from soc.views.helper import dynaform |
|
36 from soc.views.helper import lists |
35 from soc.views.helper import redirects |
37 from soc.views.helper import redirects |
36 from soc.views.helper import widgets |
38 from soc.views.helper import widgets |
37 from soc.views.models import group |
39 from soc.views.models import group |
38 from soc.views.models import program as program_view |
40 from soc.views.models import program as program_view |
39 |
41 |
40 import soc.models.organization |
42 import soc.models.organization |
41 import soc.logic.models.organization |
43 import soc.logic.models.organization |
42 |
44 |
43 |
|
44 class View(group.View): |
45 class View(group.View): |
45 """View methods for the Organization model. |
46 """View methods for the Organization model. |
46 """ |
47 """ |
47 |
48 |
48 def __init__(self, params=None): |
49 def __init__(self, params=None): |
52 Params: |
53 Params: |
53 original_params: a dict with params for this View |
54 original_params: a dict with params for this View |
54 """ |
55 """ |
55 |
56 |
56 rights = access.Checker(params) |
57 rights = access.Checker(params) |
|
58 rights['any_access'] = ['allow'] |
|
59 rights['show'] = ['allow'] |
57 rights['create'] = ['checkIsDeveloper'] |
60 rights['create'] = ['checkIsDeveloper'] |
58 rights['edit'] = [('checkHasActiveRoleForScope', |
61 rights['edit'] = [('checkHasActiveRoleForScope', |
59 [org_admin_logic.logic, 'link_id']), |
62 [org_admin_logic.logic, 'link_id']), |
60 ('checkIsActive', [org_logic.logic, None])] |
63 ('checkIsActive', [org_logic.logic, None])] |
61 rights['delete'] = ['checkIsDeveloper'] |
64 rights['delete'] = ['checkIsDeveloper'] |
62 rights['home'] = ['allow'] |
65 rights['home'] = ['allow'] |
63 rights['list'] = ['checkIsDeveloper'] |
66 rights['public_list'] = ['allow'] |
64 rights['list_requests'] = [('checkHasActiveRoleForScope', |
67 rights['list_requests'] = [('checkHasActiveRoleForScope', |
65 [org_admin_logic.logic, 'link_id'])] |
68 [org_admin_logic.logic, 'link_id'])] |
66 rights['list_roles'] = [('checkHasActiveRoleForScope', |
69 rights['list_roles'] = [('checkHasActiveRoleForScope', |
67 [org_admin_logic.logic, 'link_id'])] |
70 [org_admin_logic.logic, 'link_id'])] |
68 rights['applicant'] = [('checkIsApplicationAccepted', |
71 rights['applicant'] = [('checkIsApplicationAccepted', |
69 org_app_logic.logic)] |
72 org_app_logic.logic)] |
70 |
73 |
71 new_params = {} |
74 new_params = {} |
72 new_params['logic'] = soc.logic.models.organization.logic |
75 new_params['logic'] = soc.logic.models.organization.logic |
|
76 new_params['rights'] = rights |
73 |
77 |
74 new_params['scope_view'] = program_view |
78 new_params['scope_view'] = program_view |
75 new_params['scope_redirect'] = redirects.getCreateRedirect |
79 new_params['scope_redirect'] = redirects.getCreateRedirect |
76 |
80 |
77 new_params['name'] = "Organization" |
81 new_params['name'] = "Organization" |
83 new_params['list_row'] = 'soc/organization/list/row.html' |
87 new_params['list_row'] = 'soc/organization/list/row.html' |
84 new_params['list_heading'] = 'soc/organization/list/heading.html' |
88 new_params['list_heading'] = 'soc/organization/list/heading.html' |
85 |
89 |
86 new_params['application_logic'] = org_app_logic |
90 new_params['application_logic'] = org_app_logic |
87 new_params['group_applicant_url'] = True |
91 new_params['group_applicant_url'] = True |
|
92 new_params['sans_link_id_public_list'] = True |
88 |
93 |
89 new_params['create_extra_dynafields'] = { |
94 new_params['create_extra_dynafields'] = { |
90 'scope_path': forms.CharField(widget=forms.HiddenInput, |
95 'scope_path': forms.CharField(widget=forms.HiddenInput, |
91 required=True), |
96 required=True), |
92 'clean': cleaning.validate_new_group('link_id', 'scope_path', |
97 'clean': cleaning.validate_new_group('link_id', 'scope_path', |
93 soc.logic.models.organization, org_app_logic)} |
98 soc.logic.models.organization, org_app_logic) |
|
99 } |
94 |
100 |
95 # get rid of the clean method |
101 # get rid of the clean method |
96 new_params['edit_extra_dynafields'] = { |
102 new_params['edit_extra_dynafields'] = { |
97 'clean': (lambda x: x.cleaned_data)} |
103 'clean': (lambda x: x.cleaned_data)} |
98 |
104 |
102 |
108 |
103 # create and store the special form for applicants |
109 # create and store the special form for applicants |
104 updated_fields = { |
110 updated_fields = { |
105 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), |
111 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), |
106 required=False), |
112 required=False), |
107 'clean_link_id': cleaning.clean_link_id('link_id')} |
113 'clean_link_id': cleaning.clean_link_id('link_id') |
|
114 } |
108 |
115 |
109 applicant_create_form = dynaform.extendDynaForm( |
116 applicant_create_form = dynaform.extendDynaForm( |
110 dynaform = self._params['create_form'], |
117 dynaform = self._params['create_form'], |
111 dynafields = updated_fields) |
118 dynafields = updated_fields) |
112 |
119 |
113 params['applicant_create_form'] = applicant_create_form |
120 params['applicant_create_form'] = applicant_create_form |
114 |
121 |
|
122 @decorators.merge_params |
|
123 @decorators.check_access |
|
124 def listPublic(self, request, access_type, page_name=None, |
|
125 params=None, filter=None, **kwargs): |
|
126 """See base.View.list. |
|
127 """ |
|
128 |
|
129 new_params = {} |
|
130 new_params['list_action'] = (redirects.getPublicRedirect, params) |
|
131 # safe to merge them the wrong way around because of @merge_params |
|
132 params = dicts.merge(new_params, params) |
|
133 |
|
134 new_filter = {} |
|
135 new_filter['status'] = 'active' |
|
136 filter = dicts.merge(filter, new_filter) |
|
137 |
|
138 content = lists.getListContent(request, params, filter) |
|
139 contents = [content] |
|
140 |
|
141 return self._list(request, params, contents, page_name) |
115 |
142 |
116 def _getExtraMenuItems(self, role_description, params=None): |
143 def _getExtraMenuItems(self, role_description, params=None): |
117 """Used to create the specific Organization menu entries. |
144 """Used to create the specific Organization menu entries. |
118 |
145 |
119 For args see group.View._getExtraMenuItems(). |
146 For args see group.View._getExtraMenuItems(). |