def testCleanTagsList(self): """Tests if tags are cleaned and validated. """ field_name = 'tags' clean_data = cleaning.cleanTagsList(field_name) #Test valid tags. field_value = "python\ndjango\ntesting" data_to_clean = {field_name: field_value} self.form.cleaned_data = data_to_clean expected = field_value.split('\n') self.assertEqual(clean_data(self.form), expected) #Test if extra-whitespace in the tags string are removed. field_value = "python \n django\n testing" data_to_clean = {field_name: field_value} self.form.cleaned_data = data_to_clean temp = field_value.split('\n') expected = [tag.strip() for tag in temp] self.assertEqual(clean_data(self.form), expected) #Invalid tags. field_value = "python\n &%tag \n#^ase" data_to_clean = {field_name: field_value} self.form.cleaned_data = data_to_clean self.assertRaises(forms.ValidationError, clean_data, self.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.GSoCChecker(params) rights['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic), ('checkGroupIsActiveForLinkId', org_logic)] rights['delete'] = ['checkIsDeveloper'] rights['home'] = ['allow'] rights['public_list'] = ['allow'] rights['applicant'] = [('checkIsOrgAppAccepted', org_app_logic)] rights['apply_mentor'] = ['checkIsUser'] rights['list_requests'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_roles'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_proposals'] = [ ('checkHasAny', [[('checkHasRoleForKeyFieldsAsScope', [org_admin_logic, ['active', 'inactive']]), ('checkHasRoleForKeyFieldsAsScope', [mentor_logic, ['active', 'inactive']])]]) ] new_params = {} new_params['logic'] = org_logic new_params['rights'] = rights new_params['scope_view'] = program_view new_params['name'] = "GSoC Organization" new_params['module_name'] = "organization" new_params['sidebar_grouping'] = 'Organizations' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/org' new_params['document_prefix'] = 'gsoc_org' new_params['mentor_role_name'] = 'gsoc_mentor' new_params['mentor_url_name'] = 'gsoc/mentor' new_params['org_admin_role_name'] = 'gsoc_org_admin' patterns = [] patterns += [ (r'^org_tags/(?P<access_type>pick)$', '%(module_package)s.%(module_name)s.pick_suggested_tags', "Pick a list of suggested tags."), ] new_params['extra_django_patterns'] = patterns new_params['extra_dynaexclude'] = [ 'slots', 'slots_calculated', 'nr_applications', 'nr_mentors' ] new_params['create_extra_dynaproperties'] = { 'tags': widgets.ReferenceField( required=False, reference_url='org_tags', label=ugettext('Tags'), help_text=ugettext("A list of comma seperated tags"), example_text="e.g. python, django, appengine", filter=['scope_path'], group="1. Public Info"), 'clean_tags': gsoc_cleaning.cleanTagsList('tags', gsoc_cleaning.COMMA_SEPARATOR), 'contrib_template': forms.fields.CharField(widget=helper.widgets.FullTinyMCE( attrs={ 'rows': 25, 'cols': 100 })), 'clean_contrib_template': cleaning.clean_html_content('contrib_template'), 'clean_facebook': cleaning.clean_url('facebook'), 'clean_twitter': cleaning.clean_url('twitter'), 'clean_blog': cleaning.clean_url('blog'), } new_params['org_app_logic'] = org_app_logic params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params) self._params['public_field_keys'].append('tags') self._params['public_field_names'].append("Tags") self._params['public_field_extra'] = lambda entity: { 'ideas': lists.urlize(entity.ideas, 'Click Here'), 'tags': entity.tags_string(entity.org_tag), } self._params['select_field_extra'] = self._params['public_field_extra']
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['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic), ('checkGroupIsActiveForLinkId', org_logic)] rights['delete'] = ['checkIsDeveloper'] rights['home'] = ['allow'] rights['public_list'] = ['allow'] rights['applicant'] = [('checkIsOrgAppAccepted', org_app_logic)] rights['apply_mentor'] = ['checkIsUser'] rights['list_requests'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_roles'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_proposals'] = [('checkHasAny', [ [('checkHasRoleForKeyFieldsAsScope', [org_admin_logic, ['active', 'inactive']]), ('checkHasRoleForKeyFieldsAsScope', [mentor_logic, ['active', 'inactive']])] ])] new_params = {} new_params['logic'] = org_logic new_params['rights'] = rights new_params['scope_view'] = program_view new_params['name'] = "GSoC Organization" new_params['module_name'] = "organization" new_params['sidebar_grouping'] = 'Organizations' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/org' new_params['document_prefix'] = 'gsoc_org' new_params['mentor_role_name'] = 'gsoc_mentor' new_params['mentor_url_name'] = 'gsoc/mentor' new_params['org_admin_role_name'] = 'gsoc_org_admin' patterns = [] patterns += [ (r'^org_tags/(?P<access_type>pick)$', '%(module_package)s.%(module_name)s.pick_suggested_tags', "Pick a list of suggested tags."), ] new_params['extra_django_patterns'] = patterns new_params['extra_dynaexclude'] = ['slots', 'slots_calculated', 'nr_applications', 'nr_mentors'] new_params['create_extra_dynaproperties'] = { 'tags': widgets.ReferenceField( required=False, reference_url='org_tags', label=ugettext('Tags'), help_text=ugettext("A list of comma seperated tags"), example_text="e.g. python, django, appengine", filter=['scope_path'], group="1. Public Info"), 'clean_tags': gsoc_cleaning.cleanTagsList( 'tags', gsoc_cleaning.COMMA_SEPARATOR), 'contrib_template': forms.fields.CharField( widget=helper.widgets.FullTinyMCE( attrs={'rows': 25, 'cols': 100})), 'clean_contrib_template': cleaning.clean_html_content( 'contrib_template'), 'clean_facebook': cleaning.clean_url('facebook'), 'clean_twitter': cleaning.clean_url('twitter'), 'clean_blog': cleaning.clean_url('blog'), } new_params['org_app_logic'] = org_app_logic params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params) self._params['public_field_keys'].append('tags') self._params['public_field_names'].append("Tags") self._params['public_field_extra'] = lambda entity: { 'ideas': lists.urlize(entity.ideas, 'Click Here'), 'tags': entity.tags_string(entity.org_tag), } self._params['select_field_extra'] = self._params['public_field_extra']
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['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic])] rights['edit'] = [('checkIsHostForProgram', [program_logic])] rights['delete'] = ['checkIsDeveloper'] rights['assign_slots'] = [('checkIsHostForProgram', [program_logic])] rights['slots'] = [('checkIsHostForProgram', [program_logic])] rights['show_duplicates'] = [('checkIsHostForProgram', [program_logic]) ] rights['assigned_proposals'] = [('checkIsHostForProgram', [program_logic])] rights['accepted_orgs'] = [('checkIsAfterEvent', [ 'accepted_organization_announced_deadline', '__all__', program_logic ])] rights['list_projects'] = [('checkIsAfterEvent', [ 'accepted_students_announced_deadline', '__all__', program_logic ])] new_params = {} new_params['logic'] = program_logic new_params['rights'] = rights new_params['name'] = "GSoC Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'gsoc_program' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/program' new_params['extra_dynaexclude'] = ['slots_allocation'] new_params['create_dynafields'] = [ { 'name': 'org_tags', 'base': forms.fields.Field, 'widget': forms.widgets.Textarea, 'label': 'Predefined organization tags', 'required': False, 'group': ugettext('Manage organization tags'), 'help_text': ugettext( 'Enter predefined tags to be used by ' 'organization admins to tag their organizations. Each line ' 'should contain only one tag') }, ] new_params['create_extra_dynaproperties'] = { 'clean_org_tags': cleaning.cleanTagsList('org_tags') } params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(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['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic])] rights['edit'] = [('checkIsHostForProgram', [program_logic])] rights['delete'] = ['checkIsDeveloper'] rights['assign_slots'] = [('checkIsHostForProgram', [program_logic])] rights['slots'] = [('checkIsHostForProgram', [program_logic])] rights['show_duplicates'] = [('checkIsHostForProgram', [program_logic])] rights['assigned_proposals'] = [('checkIsHostForProgram', [program_logic])] rights['accepted_orgs'] = [('checkIsAfterEvent', ['accepted_organization_announced_deadline', '__all__', program_logic])] rights['list_participants'] = [('checkIsHostForProgram', [program_logic])] rights['list_projects'] = [('checkIsAfterEvent', ['accepted_students_announced_deadline', '__all__', program_logic])] new_params = {} new_params['logic'] = program_logic new_params['rights'] = rights new_params['name'] = "GSoC Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'gsoc_program' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_prefix'] = 'gsoc' new_params['url_name'] = 'gsoc/program' new_params['extra_dynaexclude'] = ['slots_allocation'] new_params['create_dynafields'] = [ {'name': 'org_tags', 'base': forms.fields.Field, 'widget': forms.widgets.Textarea, 'label': 'Predefined organization tags', 'required': False, 'group': ugettext('Manage organization tags'), 'help_text': ugettext('Enter predefined tags to be used by ' 'organization admins to tag their organizations. Each line ' 'should contain only one tag')}, ] new_params['create_extra_dynaproperties'] = { 'clean_org_tags': gsoc_cleaning.cleanTagsList('org_tags'), 'clean_facebook': cleaning.clean_url('facebook'), 'clean_twitter': cleaning.clean_url('twitter'), 'clean_blogger': cleaning.clean_url('blogger'), 'clean_email': cleaning.clean_empty_field('email'), 'clean_irc': cleaning.clean_empty_field('irc'), } new_params['org_app_logic'] = org_app_logic # used to list the participants in this program new_params['participants_logic'] = [ (org_admin_logic, 'program'), (mentor_logic, 'program'), (student_logic, 'scope')] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params)