def acceptInvitation(self, request, context, params, request_entity, role, **kwargs): """Creates the page process an invitation into a role. """ if role == 'org_admin': agreement = 'admin_agreement' else: agreement = 'mentor_agreement' dynafields = [{ 'name': 'link_id', 'base': forms.CharField, 'widget': widgets.ReadOnlyInput(), 'required': False, }, { 'name': agreement, 'base': forms.fields.Field, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }] dynaproperties = params_helper.getDynaFields(dynafields) form = dynaform.extendDynaForm(dynaform=params['create_form'], dynaproperties=dynaproperties) if request.method == 'POST': return self.acceptInvitationPost(request, context, params, form, role, **kwargs) else: return self.acceptInvitationGet(request, context, params, form, role, **kwargs)
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkIsMyActiveRole', club_admin_logic.logic)] rights['delete'] = ['checkIsDeveloper'] rights['invite'] = [('checkHasRoleForScope', club_admin_logic.logic)] rights['accept_invite'] = [('checkIsMyRequestWithStatus', [['group_accepted']])] rights['process_request'] = [('checkCanProcessRequest', [[club_admin_logic.logic]])] rights['manage'] = [('checkIsAllowedToManageRole', [club_admin_logic.logic, club_admin_logic.logic])] new_params = {} new_params['logic'] = soc.logic.models.club_admin.logic new_params['group_logic'] = club_logic.logic new_params['group_view'] = club_view.view new_params['rights'] = rights new_params['scope_view'] = club_view new_params['name'] = "Club Admin" new_params['sidebar_grouping'] = 'Clubs' new_params['extra_dynaexclude'] = ['agreed_to_tos'] new_params['allow_invites'] = True new_params['show_in_roles_overview'] = False new_params['public_field_keys'] = ["name", "link_id", "scope_path"] new_params['public_field_names'] = [ "Admin Name", "Admin ID", "Club ID" ] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # register the role with the group_view self._params['group_view'].registerRole(self._logic.role_name, self) # create and store the special form for invited users updated_fields = { 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), required=False) } invited_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=updated_fields) self._params['invited_create_form'] = invited_create_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ new_params = {} new_params['extra_dynaexclude'] = ['founder', 'home', 'tos', 'member_template', 'status'] new_params['edit_extra_dynaproperties'] = { 'founded_by': forms.CharField(widget=widgets.ReadOnlyInput(), required=False), } #set the extra_django_patterns and include the one from params patterns = params.get('extra_django_patterns', []) patterns += [ (r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_requests', 'List of requests for %(name)s'), (r'^%(url_name)s/(?P<access_type>list_roles)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_roles', 'List of roles for %(name)s')] new_params['extra_django_patterns'] = patterns # TODO(tlarsen): Add support for Django style template lookup new_params['public_template'] = 'soc/group/public.html' new_params['list_row'] = 'soc/group/list/row.html' new_params['list_heading'] = 'soc/group/list/heading.html' new_params['create_extra_dynaproperties'] = { 'email': forms.fields.EmailField(required=True), 'clean_phone': cleaning.clean_phone_number('phone'), 'clean_contact_street': cleaning.clean_ascii_only('contact_street'), 'clean_contact_city': cleaning.clean_ascii_only('contact_city'), 'clean_contact_state': cleaning.clean_ascii_only('contact_state'), 'clean_contact_postalcode': cleaning.clean_ascii_only( 'contact_postalcode'), 'clean_shipping_street': cleaning.clean_ascii_only('shipping_street'), 'clean_shipping_city': cleaning.clean_ascii_only('shipping_city'), 'clean_shipping_state': cleaning.clean_ascii_only('shipping_state'), 'clean_shipping_postalcode': cleaning.clean_ascii_only( 'shipping_postalcode'), } new_params['role_views'] = {} new_params['public_field_keys'] = ["name", "link_id", "short_name"] new_params['public_field_names'] = ["Name", "Link ID", "Short name"] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.GSoCChecker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkCanStudentPropose', ['scope_path', False]), ('checkRoleAndStatusForStudentProposal', [['proposer'], ['active'], ['new', 'pending', 'invalid']])] rights['delete'] = ['checkIsDeveloper'] rights['private'] = [ ('checkRoleAndStatusForStudentProposal', [['proposer', 'org_admin', 'mentor', 'host'], ['active', 'inactive'], ['new', 'pending', 'accepted', 'rejected', 'invalid']])] rights['show'] = ['checkIsStudentProposalPubliclyVisible'] rights['comment'] = [ ('checkRoleAndStatusForStudentProposal', [['org_admin', 'mentor', 'host'], ['active', 'inactive'], ['new', 'pending', 'accepted', 'rejected', 'invalid']])] rights['list'] = ['checkIsDeveloper'] rights['list_orgs'] = [ ('checkIsStudent', ['scope_path', ['active']]), ('checkCanStudentPropose', ['scope_path', False])] rights['list_self'] = [ ('checkIsStudent', ['scope_path', ['active', 'inactive']])] rights['apply'] = [ ('checkIsStudent', ['scope_path', ['active']]), ('checkCanStudentPropose', ['scope_path', True])] rights['review'] = [ ('checkIsBeforeEvent', ['accepted_students_announced_deadline', None, program_logic.logic]), ('checkRoleAndStatusForStudentProposal', [['org_admin', 'mentor', 'host'], ['active'], ['new', 'pending', 'accepted', 'invalid']])] new_params = {} new_params['logic'] = student_proposal_logic.logic new_params['rights'] = rights new_params['name'] = "Student Proposal" new_params['url_name'] = "gsoc/student_proposal" new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['sidebar_grouping'] = 'Students' new_params['scope_view'] = student_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['no_create_with_key_fields'] = True patterns = [ (r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.apply', 'Create a new %(name)s'), (r'^%(url_name)s/(?P<access_type>list_self)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.list_self', 'List my %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>list_orgs)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.list_orgs', 'List my %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>review)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.review', 'Review %(name)s'), (r'^%(url_name)s/(?P<access_type>public)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.public', 'Public view for %(name)s'), (r'^%(url_name)s/(?P<access_type>private)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.private', 'Private view of %(name)s'), (r'^%(url_name)s/(?P<access_type>comment)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.comment', 'Comment view of %(name)s'), ] new_params['extra_django_patterns'] = patterns new_params['extra_dynaexclude'] = ['org', 'program', 'score', 'status', 'mentor', 'link_id', 'possible_mentors'] new_params['create_extra_dynaproperties'] = { 'content': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})), 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'organization': forms.CharField(label='Organization Link ID', required=True), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_content': cleaning.clean_html_content('content'), 'clean_organization': cleaning.clean_link_id('organization'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean': cleaning.validate_student_proposal('organization', 'scope_path', student_logic, org_logic), } new_params['edit_extra_dynaproperties'] = { 'organization': forms.CharField(label='Organization Link ID', widget=widgets.ReadOnlyInput), 'link_id': forms.CharField(widget=forms.HiddenInput) } new_params['comment_template'] = 'soc/student_proposal/comment.html' new_params['edit_template'] = 'soc/student_proposal/edit.html' new_params['private_template'] = 'soc/student_proposal/private.html' new_params['review_template'] = 'soc/student_proposal/review.html' new_params['public_template'] = 'soc/student_proposal/public.html' new_params['review_after_deadline_template'] = \ 'soc/student_proposal/review_after_deadline.html' new_params['public_field_extra'] = lambda entity: { "student": entity.scope.name(), "organization_name": entity.org.name, } new_params['public_field_keys'] = [ "title", "student", "organization_name", "last_modified_on", ] new_params['public_field_names'] = [ "Title", "Student", "Organization Name", "Last Modified On", ] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # create the special form for students dynafields = [ {'name': 'organization', 'base': forms.CharField, 'label': 'Organization Link ID', 'widget': widgets.ReadOnlyInput(), 'required': False, }, ] dynaproperties = params_helper.getDynaFields(dynafields) student_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=dynaproperties) self._params['student_create_form'] = student_create_form # create the special form for public review base_fields = [ {'name': 'comment', 'base': forms.CharField, 'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}), 'label': 'Comment', 'required': False, 'example_text': 'Caution, you will not be able to edit your comment!', }, ] dynafields = [field.copy() for field in base_fields] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') public_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['public_review_form'] = public_review_form # create the special form for mentors when the scoring is locked # this fields is used by the on-page JS base_fields.append( {'name': 'public', 'base': forms.BooleanField, 'label': 'Review visible to Student', 'initial': False, 'required': False, 'help_text': 'By ticking this box the score will not be assigned, ' 'and the review will be visible to the student.', }) dynafields = [field.copy() for field in base_fields] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') locked_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['locked_review_form'] = locked_review_form # create the form for mentors when the scoring is unlocked base_fields.append( {'name': 'score', 'base': forms.ChoiceField, 'label': 'Score', 'initial': 0, 'required': False, 'passthrough': ['initial', 'required', 'choices'], 'choices': [(-4,'-4'), (-3,'-3'), (-2,'-2'), (-1,'-1'), (0,'No score'), (1,'1'), (2,'2'), (3,'3'), (4,'4')] }) dynafields = [field.copy() for field in base_fields] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') mentor_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['mentor_review_form'] = mentor_review_form self._show_review_not_appeared_msg = False
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = ['checkIsDeveloper'] rights['delete'] = ['checkIsDeveloper'] rights['show'] = ['allow'] rights['list'] = ['checkIsDeveloper'] rights['list_developers'] = ['checkIsDeveloper'] new_params = {} new_params['logic'] = soc.logic.models.user.logic new_params['rights'] = rights new_params['name'] = "User" new_params['edit_template'] = 'soc/user/edit.html' new_params['pickable'] = True new_params['cache_pick'] = True new_params['sidebar_heading'] = 'Users' new_params['extra_dynaexclude'] = ['former_accounts', 'agreed_to_tos', 'agreed_to_tos_on', 'status'] new_params['create_extra_dynaproperties'] = { 'clean_link_id': cleaning.clean_user_not_exist('link_id'), 'clean_account': cleaning.clean_user_account_not_in_use('account')} # recreate the choices for the edit form status_choices = [] for choice in user_logic.getModel().status.choices: status_choices.append((choice, choice)) new_params['edit_extra_dynaproperties'] = { 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), required=True), 'clean_link_id': cleaning.clean_link_id('link_id'), 'agreed_to_tos_on': forms.DateTimeField( widget=widgets.ReadOnlyInput(attrs={'disabled':'true'}), required=False), 'status': forms.ChoiceField(choices=status_choices), 'clean_account': cleaning.clean_user_account('account'), 'clean': cleaning.validate_user_edit('link_id', 'account'), } patterns = [] patterns += [(r'^%(url_name)s/(?P<access_type>list_developers)$', 'soc.views.models.%(module_name)s.list_developers', "List Developers")] new_params['extra_django_patterns'] = patterns new_params['sidebar_developer'] = [('/%s/list_developers', 'List Developers', 'list_developers')] new_params['public_field_prefetch'] = ['account'] new_params['public_field_extra'] = lambda entity: { "email": entity.account.email(), } new_params['public_field_keys'] = ['email', 'name', 'link_id'] new_params['public_field_names'] = ['Email', 'Public name', 'Link ID'] params = dicts.merge(params, new_params) super(View, self).__init__(params=params)
def __init__(self, params=None): """Defines the fields and methods required for the program View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = ghop_access.GHOPChecker(params) rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic.logic])] rights['edit'] = [('checkIsHostForProgram', [ghop_program_logic.logic]) ] rights['delete'] = ['checkIsDeveloper'] rights['accepted_orgs'] = [ ('checkIsAfterEvent', ['student_signup_start', '__all__', ghop_program_logic.logic]) ] rights['task_difficulty'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] rights['task_type'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] rights['difficulty_tag_edit'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] rights['type_tag_edit'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] new_params = {} new_params['logic'] = soc.modules.ghop.logic.models.program.logic new_params['rights'] = rights new_params['name'] = "GHOP Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'ghop_program' new_params['module_package'] = 'soc.modules.ghop.views.models' new_params['url_name'] = 'ghop/program' new_params['extra_dynaexclude'] = ['task_difficulties', 'task_types'] patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>assign_task_quotas)/%(key_fields)s$', '%(module_package)s.%(module_name)s.assign_task_quotas', 'Assign task quota limits'), (r'^%(url_name)s/(?P<access_type>task_difficulty)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_difficulty_edit', 'Edit Task Difficulty Tags'), (r'^%(url_name)s/(?P<access_type>task_type)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_edit', 'Edit Task Type Tags'), (r'^%(url_name)s/(?P<access_type>difficulty_tag_edit)$', '%(module_package)s.%(module_name)s.difficulty_tag_edit', 'Edit a Difficulty Tag'), (r'^%(url_name)s/(?P<access_type>type_tag_edit)$', '%(module_package)s.%(module_name)s.task_type_tag_edit', 'Edit a Task Type Tag'), ] new_params['public_field_keys'] = ["name", "scope_path"] new_params['public_field_names'] = ["Program Name", "Program Owner"] new_params['extra_django_patterns'] = patterns params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params) dynafields = [ { 'name': 'overview_task_difficulties', 'base': forms.CharField, 'label': 'Task Difficulty Levels', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the difficulty levels that ' 'can be assigned to a task. Edit them ' 'from the Program menu on sidebar.'), }, { 'name': 'overview_task_types', 'base': forms.CharField, 'label': 'Task Type Tags', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the types a task can be in. ' 'Edit them from the Program menu on sidebar.'), }, ] dynaproperties = params_helper.getDynaFields(dynafields) edit_form = dynaform.extendDynaForm(dynaform=self._params['edit_form'], dynaproperties=dynaproperties) self._params['edit_form'] = edit_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: original_params: a dict with params for this View """ from soc.views.models import program as program_view rights = access.Checker(params) rights['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = [( 'checkHasRoleForKeyFieldsAsScope', org_admin_logic.logic, ), ('checkGroupIsActiveForLinkId', org_logic.logic)] rights['delete'] = ['checkIsDeveloper'] rights['home'] = ['allow'] rights['public_list'] = ['allow'] rights['apply_mentor'] = ['checkIsUser'] rights['list_requests'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic.logic)] rights['list_roles'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic.logic)] rights['applicant'] = [('checkIsApplicationAccepted', org_app_logic.logic)] new_params = {} new_params['logic'] = soc.logic.models.organization.logic new_params['rights'] = rights new_params['scope_view'] = program_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['name'] = "Organization" new_params['url_name'] = "org" new_params['document_prefix'] = "org" new_params['sidebar_grouping'] = 'Organizations' new_params['public_template'] = 'soc/organization/public.html' new_params['list_row'] = 'soc/organization/list/row.html' new_params['list_heading'] = 'soc/organization/list/heading.html' new_params['home_template'] = 'soc/organization/home.html' new_params['application_logic'] = org_app_logic new_params['sans_link_id_public_list'] = True patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>apply_mentor)/%(scope)s$', '%(module_package)s.%(module_name)s.apply_mentor', "List of all %(name_plural)s you can apply to"), (r'^%(url_name)s/(?P<access_type>list_proposals)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_proposals', "List of all Student Proposals for this %(name)s"), (r'^%(url_name)s/(?P<access_type>applicant)/%(key_fields)s$', '%(module_package)s.%(module_name)s.applicant', "%(name)s Creation via Accepted Application"), ] new_params['extra_django_patterns'] = patterns new_params['create_dynafields'] = [ { 'name': 'link_id', 'base': forms.fields.CharField, 'label': 'Organization Link ID', }, ] new_params['create_extra_dynaproperties'] = { 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'description': forms.fields.CharField(widget=helper.widgets.FullTinyMCE( attrs={ 'rows': 25, 'cols': 100 })), 'contrib_template': forms.fields.CharField(widget=helper.widgets.FullTinyMCE( attrs={ 'rows': 25, 'cols': 100 })), 'clean_description': cleaning.clean_html_content('description'), 'clean_contrib_template': cleaning.clean_html_content('contrib_template'), 'clean_ideas': cleaning.clean_url('ideas'), 'clean': cleaning.validate_new_group('link_id', 'scope_path', soc.logic.models.organization, org_app_logic) } new_params['edit_extra_dynaproperties'] = { 'clean': cleaning.clean_refs(new_params, ['home_link_id']) } new_params['mentor_role_name'] = 'mentor' new_params['public_field_extra'] = lambda entity: { 'ideas': lists.urlize(entity.ideas), } params = dicts.merge(params, new_params) super(View, self).__init__(params=params) self._params['public_field_keys'] = self._params[ 'select_field_keys'] = ["name", "link_id", "short_name", "ideas"] self._params['public_field_names'] = self._params[ 'select_field_names'] = [ "Name", "Link ID", "Short Name", "Ideas Page" ] self._params['select_row_action'] = { "type": "redirect_custom", "parameters": dict(new_window=True), } self._params['select_row_extra'] = lambda entity: { "link": redirects.getRequestRedirectForRole(entity, params[ 'mentor_url_name']) } # create and store the special form for applicants updated_fields = { 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), required=False), 'clean_link_id': cleaning.clean_link_id('link_id') } applicant_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=updated_fields) self._params['applicant_create_form'] = applicant_create_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['any_access'] = ['allow'] rights['show'] = [('checkIsSurveyWritable', survey_logic)] rights['create'] = ['checkIsUser'] rights['edit'] = [('checkIsSurveyWritable', survey_logic)] rights['delete'] = ['checkIsDeveloper' ] # TODO: fix deletion of Surveys rights['list'] = ['checkDocumentList'] rights['pick'] = ['checkDocumentPick'] rights['record'] = [('checkHasAny', [[ ('checkIsSurveyReadable', [survey_logic]), ('checkIsMySurveyRecord', [survey_logic, 'id']) ]])] rights['results'] = ['checkIsUser'] rights['take'] = [('checkIsSurveyTakeable', survey_logic)] new_params = {} new_params['logic'] = survey_logic new_params['rights'] = rights new_params['name'] = 'Survey' new_params['sidebar_grouping'] = "Surveys" new_params['extra_django_patterns'] = [ (r'^%(url_name)s/(?P<access_type>take)/%(key_fields)s$', '%(module_package)s.%(module_name)s.take', 'Take %(name)s'), (r'^%(url_name)s/(?P<access_type>json)/%(scope)s$', '%(module_package)s.%(module_name)s.json', 'Export %(name)s as JSON'), (r'^%(url_name)s/(?P<access_type>record)/%(key_fields)s$', '%(module_package)s.%(module_name)s.record', 'View survey record for %(name)s'), (r'^%(url_name)s/(?P<access_type>results)/%(key_fields)s$', '%(module_package)s.%(module_name)s.results', 'View survey results for %(name)s'), (r'^%(url_name)s/(?P<access_type>show)/user/(?P<link_id>)\w+$', '%(module_package)s.%(module_name)s.results', 'View survey results for user'), ] new_params['export_content_type'] = 'text/text' new_params['export_extension'] = '.csv' new_params['export_function'] = surveys.toCSV(self) new_params['delete_redirect'] = '/' new_params['edit_template'] = 'soc/survey/edit.html' new_params['create_template'] = 'soc/survey/edit.html' new_params['public_template'] = 'soc/survey/public.html' new_params['record_template'] = 'soc/survey/view_record.html' new_params['take_template'] = 'soc/survey/take.html' new_params['no_create_raw'] = True new_params['no_create_with_scope'] = True new_params['no_create_with_key_fields'] = True new_params['no_list_raw'] = True new_params['sans_link_id_create'] = True new_params['sans_link_id_list'] = True new_params['create_dynafields'] = [ { 'name': 'link_id', 'base': forms.fields.CharField, 'label': 'Survey Link ID', }, ] new_params['create_extra_dynaproperties'] = { 'content': forms.fields.CharField(required=False, label='Description', widget=widgets.FullTinyMCE(attrs={ 'rows': 25, 'cols': 100 })), 'survey_html': forms.fields.CharField(widget=forms.HiddenInput, required=False), 'scope_path': forms.fields.CharField(widget=forms.HiddenInput, required=True), 'prefix': forms.fields.CharField(widget=widgets.ReadOnlyInput(), required=True), 'clean_content': cleaning.clean_html_content('content'), 'clean_link_id': cleaning.clean_link_id('link_id'), 'clean_scope_path': cleaning.clean_scope_path('scope_path'), 'clean': cleaning.validate_document_acl(self, True), } new_params['extra_dynaexclude'] = [ 'author', 'created', 'home_for', 'modified_by', 'modified', 'take_survey', 'survey_content' ] new_params['edit_extra_dynaproperties'] = { 'doc_key_name': forms.fields.CharField(widget=forms.HiddenInput), 'created_by': forms.fields.CharField(widget=widgets.ReadOnlyInput(), required=False), 'last_modified_by': forms.fields.CharField(widget=widgets.ReadOnlyInput(), required=False), 'clean': cleaning.validate_document_acl(self), } new_params['survey_take_form'] = surveys.SurveyTakeForm new_params['survey_record_form'] = surveys.SurveyRecordForm new_params['public_field_prefetch'] = ['author'] new_params['public_field_extra'] = lambda entity: { "path": entity.scope_path + '/' + entity.link_id, "created_by": entity.author.link_id, } new_params['public_field_keys'] = [ "path", "title", "link_id", "is_featured", "created_by", "created", "modified" ] new_params['public_field_names'] = [ "Path", "Title", "Link ID", "Featured", "Created By", "Created On", "Modified", ] new_params['records_field_keys'] = ['taken_by', 'modified'] new_params['records_field_names'] = [ 'Taken By', 'Taken On', ] new_params['records_field_prefetch'] = ['user'] new_params['records_field_extra'] = lambda entity: { 'taken_by': '%s (%s)' % (entity.user.name, entity.user.link_id), } new_params['take_params'] = {'s': '0'} new_params['successful_take_message'] = ugettext( 'Survey record submitted.') params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkHasRoleForLinkId', club_admin_logic.logic), ('checkGroupIsActiveForLinkId', club_logic.logic)] rights['delete'] = ['checkIsDeveloper'] rights['home'] = ['allow'] rights['list'] = ['checkIsDeveloper'] rights['apply_member'] = [ 'checkIsUser', ('checkGroupIsActiveForScopeAndLinkId', club_logic.logic) ] rights['list_requests'] = [('checkHasRoleForLinkId', club_admin_logic.logic)] rights['list_roles'] = [('checkHasRoleForLinkId', club_admin_logic.logic)] new_params = {} new_params['logic'] = soc.logic.models.club.logic new_params['rights'] = rights new_params['name'] = "Club" new_params['url_name'] = "club" new_params['document_prefix'] = "club" new_params['sidebar_grouping'] = 'Clubs' new_params['public_template'] = 'soc/group/public.html' patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>apply_member)$', 'soc.views.models.%(module_name)s.apply_member', "List of all %(name_plural)s you can apply to"), ] new_params['extra_django_patterns'] = patterns new_params['sidebar_additional'] = [ ('/' + new_params['url_name'] + '/apply_member', 'Join a Club', 'apply_member'), ] new_params['create_dynafields'] = [ { 'name': 'link_id', 'base': forms.fields.CharField, 'label': 'Club Link ID', }, ] new_params['create_extra_dynaproperties'] = { 'clean': cleaning.validate_new_group('link_id', 'scope_path', club_logic, None) } # get rid of the clean method new_params['edit_extra_dynaproperties'] = { 'clean': (lambda x: x.cleaned_data) } new_params['public_field_keys'] = ["name", "link_id", "short_name"] new_params['public_field_names'] = ["Name", "Link ID", "Short name"] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # create and store the special form for applicants updated_fields = { 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), required=False), 'clean_link_id': cleaning.clean_link_id('link_id') } applicant_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=updated_fields) self._params['applicant_create_form'] = applicant_create_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = [('checkHasRoleForScope', host_logic.logic)] rights['edit'] = [('checkIsMyActiveRole', host_logic.logic)] rights['invite'] = [('checkHasRoleForScope', host_logic.logic)] rights['list'] = ['checkIsDeveloper'] rights['accept_invite'] = [('checkIsMyRequestWithStatus', [['group_accepted']])] rights['process_request'] = [('checkCanProcessRequest', [[host_logic.logic]])] rights['manage'] = [('checkIsAllowedToManageRole', [host_logic.logic, host_logic.logic])] new_params = {} new_params['rights'] = rights new_params['logic'] = soc.logic.models.host.logic new_params['group_logic'] = sponsor_logic.logic new_params['group_view'] = soc.views.models.sponsor.view new_params['scope_view'] = sponsor_view new_params['name'] = "Program Administrator" new_params['module_name'] = "host" new_params['sidebar_grouping'] = 'Programs' new_params['extra_dynaexclude'] = ['agreed_to_tos'] new_params['create_extra_dynaproperties'] = { 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'clean_link_id': cleaning.clean_existing_user('link_id'), 'clean_home_page': cleaning.clean_url('home_page'), 'clean_blog': cleaning.clean_url('blog'), 'clean_photo_url': cleaning.clean_url('photo_url') } new_params['allow_invites'] = True new_params['show_in_roles_overview'] = True new_params['public_field_keys'] = ["name", "link_id", "scope_path"] new_params['public_field_names'] = [ "Name", "Administrator ID", "Program Owner" ] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # register the role with the group_view self._params['group_view'].registerRole(self._logic.role_name, self) # create and store the special form for invited users updated_fields = { 'link_id': forms.CharField(widget=widgets.ReadOnlyInput(), required=False) } invited_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=updated_fields) self._params['invited_create_form'] = invited_create_form
def __init__(self, params=None): """Defines the fields and methods required for the program View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = gci_access.GCIChecker(params) rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic])] rights['edit'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['delete'] = ['checkIsDeveloper'] rights['assign_task_quotas'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['accepted_orgs'] = [('checkIsAfterEvent', [ 'accepted_organization_announced_deadline', '__all__', gci_program_logic.logic ])] rights['list_participants'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['task_difficulty'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['task_type'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['type_tag_edit'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['list_self'] = [ ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]), 'checkIsUser' ] rights['list_tasks'] = [ ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]) ] rights['show_ranking'] = ['allow'] rights['request_tasks'] = [ ('checkHasRoleForKeyFieldsAsScope', [gci_student_logic.logic]), ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]), ('checkIsBeforeEvent', ['task_claim_deadline', '__all__', gci_program_logic.logic]) ] new_params = {} new_params['logic'] = soc.modules.gci.logic.models.program.logic new_params['rights'] = rights new_params['name'] = "GCI Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'gci_program' new_params['module_package'] = 'soc.modules.gci.views.models' new_params['url_prefix'] = 'gci' new_params['url_name'] = 'gci/program' new_params['extra_dynaexclude'] = [ 'task_difficulties', 'task_types', 'ranking_schema' ] patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>assign_task_quotas)/%(key_fields)s$', '%(module_package)s.%(module_name)s.assign_task_quotas', 'Assign task quota limits'), (r'^%(url_name)s/(?P<access_type>task_difficulty)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_difficulty_edit', 'Edit Task Difficulty Tags'), (r'^%(url_name)s/(?P<access_type>task_type)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_edit', 'Edit Task Type Tags'), (r'^%(url_name)s/(?P<access_type>type_tag_edit)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_tag_edit', 'Edit a Task Type Tag'), (r'^%(url_name)s/(?P<access_type>list_self)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_my_tasks', 'List of my starred tasks'), (r'^%(url_name)s/(?P<access_type>list_tasks)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_tasks', 'List of all Tasks in'), (r'^%(url_name)s/(?P<access_type>show_ranking)/%(key_fields)s$', '%(module_package)s.%(module_name)s.show_ranking', 'Show ranking'), (r'^%(url_name)s/(?P<access_type>request_tasks)/%(key_fields)s$', '%(module_package)s.%(module_name)s.request_tasks', 'Request more tasks'), ] new_params['public_field_keys'] = ["name", "scope_path"] new_params['public_field_names'] = ["Program Name", "Program Owner"] new_params['extra_django_patterns'] = patterns new_params['org_app_logic'] = org_app_logic # used to list the participants in this program new_params['participants_logic'] = [ (gci_org_admin_logic.logic, 'program'), (gci_mentor_logic.logic, 'program'), (gci_student_logic.logic, 'scope') ] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params) dynafields = [ { 'name': 'overview_task_difficulties', 'base': forms.CharField, 'label': 'Task Difficulty Levels', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the difficulty levels that ' 'can be assigned to a task. Edit them ' 'from the Program menu on sidebar.'), }, { 'name': 'overview_task_types', 'base': forms.CharField, 'label': 'Task Type Tags', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the types a task can be in. ' 'Edit them from the Program menu on sidebar.'), }, ] dynaproperties = params_helper.getDynaFields(dynafields) edit_form = dynaform.extendDynaForm(dynaform=self._params['edit_form'], dynaproperties=dynaproperties) self._params['edit_form'] = edit_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['any_access'] = ['allow'] rights['show'] = ['checkIsDocumentReadable'] rights['create'] = ['checkIsDocumentCreatable'] rights['edit'] = ['checkIsDocumentWritable'] rights['delete'] = ['checkIsDocumentWritable'] rights['list'] = ['checkDocumentList'] rights['pick'] = ['checkDocumentPick'] new_params = {} new_params['logic'] = document_logic new_params['rights'] = rights new_params['name'] = "Document" new_params['pickable'] = True new_params['export_content_type'] = 'text/text' new_params['export_extension'] = '.html' new_params['export_function'] = lambda x: (x.content, x.link_id) new_params['delete_redirect'] = '/' new_params['no_create_raw'] = True new_params['no_create_with_scope'] = True new_params['no_create_with_key_fields'] = True new_params['no_list_raw'] = True new_params['sans_link_id_create'] = True new_params['sans_link_id_list'] = True new_params['create_dynafields'] = [ { 'name': 'link_id', 'base': forms.fields.CharField, 'label': 'Document Link ID', }, ] new_params['create_extra_dynaproperties'] = { 'content': forms.fields.CharField(widget=widgets.FullTinyMCE(attrs={ 'rows': 25, 'cols': 100 })), 'scope_path': forms.fields.CharField(widget=forms.HiddenInput, required=True), 'prefix': forms.fields.CharField(widget=widgets.ReadOnlyInput(), required=True), 'clean_content': cleaning.clean_html_content('content'), 'clean_link_id': cleaning.clean_link_id('link_id'), 'clean_scope_path': cleaning.clean_scope_path('scope_path'), 'clean': cleaning.validate_document_acl(self, True), } new_params['extra_dynaexclude'] = [ 'author', 'created', 'home_for', 'modified_by', 'modified' ] new_params['edit_extra_dynaproperties'] = { 'doc_key_name': forms.fields.CharField(widget=forms.HiddenInput), 'created_by': forms.fields.CharField(widget=widgets.ReadOnlyInput(), required=False), 'last_modified_by': forms.fields.CharField(widget=widgets.ReadOnlyInput(), required=False), 'clean': cleaning.validate_document_acl(self), } new_params['public_field_prefetch'] = ['author'] new_params['public_field_extra'] = lambda entity: { 'path': entity.scope_path + '/' + entity.link_id, 'author_id': entity.author.link_id, } new_params['public_field_keys'] = [ "path", "title", "link_id", "is_featured", "author_id", "created", "modified" ] new_params['public_field_names'] = [ "Path", "Title", "Link ID", "Featured", "Created By", "Created On", "Modified" ] params = dicts.merge(params, new_params) super(View, self).__init__(params=params)
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['unspecified'] = ['deny'] rights['any_access'] = ['allow'] rights['create_profile'] = ['checkIsUnusedAccount'] rights['edit_profile'] = ['checkHasUserEntity'] rights['roles'] = ['checkIsUser'] rights['requests'] = ['checkIsUser'] rights['signIn'] = ['checkNotLoggedIn'] rights['notification'] = ['checkIsUser'] new_params = {} new_params['rights'] = rights new_params['logic'] = user_logic new_params['name'] = "User" new_params['module_name'] = "user_self" new_params['url_name'] = "user" new_params['create_template'] = 'soc/user/edit_profile.html' new_params['edit_template'] = 'soc/user/edit_profile.html' new_params['save_message'] = [ugettext('Profile saved.')] new_params['edit_redirect'] = '/%(url_name)s/edit_profile' # set the specific fields for the users profile page new_params['extra_dynaexclude'] = [ 'former_accounts', 'account', 'is_developer', 'status', 'agreed_to_tos_on' ] new_params['create_extra_dynaproperties'] = { 'clean_agreed_to_tos': cleaning.clean_agrees_to_tos('agreed_to_tos'), 'clean_link_id': cleaning.clean_user_not_exist('link_id'), } new_params['edit_extra_dynaproperties'] = { 'clean_link_id': cleaning.clean_user_is_current('link_id', False), 'agreed_to_tos_on': forms.DateTimeField( widget=widgets.ReadOnlyInput(attrs={'disabled': 'true'}), required=False), } new_params['sidebar_heading'] = 'User (self)' new_params['sidebar'] = [ (users.create_login_url("/"), 'Sign In', 'signIn'), ('/' + new_params['url_name'] + '/create_profile', 'Create Profile', 'create_profile'), ('/' + new_params['url_name'] + '/edit_profile', 'Edit Profile', 'edit_profile'), ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'), ('/' + new_params['url_name'] + '/requests', 'Requests', 'requests'), ] patterns = [] page_name = ugettext("Create your profile") patterns += [(r'^%(url_name)s/(?P<access_type>create_profile)$', 'soc.views.models.%(module_name)s.create', page_name)] page_name = ugettext("Edit your profile") patterns += [(r'^%(url_name)s/(?P<access_type>edit_profile)$', 'soc.views.models.%(module_name)s.edit', page_name)] page_name = ugettext("List of your roles") patterns += [(r'^%(url_name)s/(?P<access_type>roles)$', 'soc.views.models.user_self.roles', page_name)] page_name = ugettext("List of your requests") patterns += [(r'^%(url_name)s/(?P<access_type>requests)$', 'soc.views.models.request.list_self', page_name)] new_params['django_patterns_defaults'] = patterns params = dicts.merge(params, new_params) super(View, self).__init__(params=params)
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkIsMyActiveRole', soc.logic.models.mentor.logic)] rights['delete'] = ['checkIsDeveloper'] rights['invite'] = [('checkHasRoleForScope', soc.logic.models.org_admin.logic)] rights['accept_invite'] = [ ('checkIsMyRequestWithStatus', [['group_accepted']]), ('checkIsNotStudentForProgramOfOrgInRequest',[org_logic.logic, student_logic.logic])] rights['request'] = [ ('checkIsNotStudentForProgramOfOrg', [org_logic.logic, student_logic.logic]), ('checkCanMakeRequestToGroup', org_logic.logic)] rights['process_request'] = [ ('checkCanProcessRequest', [[soc.logic.models.org_admin.logic]])] rights['manage'] = [ ('checkIsAllowedToManageRole', [soc.logic.models.mentor.logic, soc.logic.models.org_admin.logic])] new_params = {} new_params['logic'] = soc.logic.models.mentor.logic new_params['group_logic'] = org_logic.logic new_params['group_view'] = org_view.view new_params['rights'] = rights new_params['pickable'] = True new_params['cache_pick_order'] = ['link_id', 'name'] new_params['scope_view'] = org_view new_params['name'] = "Mentor" new_params['module_name'] = "mentor" new_params['sidebar_grouping'] = 'Organizations' new_params['extra_dynaexclude'] = ['agreed_to_tos', 'program'] new_params['create_dynafields'] = [ {'name': 'scope_path', 'base': forms.fields.CharField, 'widget': forms.HiddenInput, 'required': True, }, {'name': 'mentor_agreement', 'base': forms.fields.CharField, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, {'name': 'agreed_to_mentor_agreement', 'base': forms.fields.BooleanField, 'initial': False, 'required':True, 'label': ugettext('I agree to the Mentor Agreement'), 'group': ugettext("5. Terms of Service"), }, ] new_params['allow_requests_and_invites'] = True # only if subclassed, so params is not empty new_params['show_in_roles_overview'] = bool(params) new_params['public_field_keys'] = ["name", "link_id", "scope_path"] new_params['public_field_names'] = ["Name", "Mentor ID", "Organization ID"] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) params = self.getParams() # register the role with the group_view params['group_view'].registerRole(self._logic.role_name, self) # create and store the special form for invited users dynafields = [ {'name': 'link_id', 'base': forms.CharField, 'widget': widgets.ReadOnlyInput(), 'required': False, }, {'name': 'mentor_agreement', 'base': forms.fields.Field, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, ] dynaproperties = params_helper.getDynaFields(dynafields) invited_create_form = dynaform.extendDynaForm( dynaform=params['create_form'], dynaproperties=dynaproperties) params['invited_create_form'] = invited_create_form # add the contact field to the admin list params['admin_field_keys'].append('can_we_contact_you') params['admin_field_names'].append('Allowed to Contact?') params['admin_field_hidden'].append('can_we_contact_you')