Exemplo n.º 1
0
  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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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']
Exemplo n.º 4
0
  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']
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
  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)