Ejemplo n.º 1
0
Archivo: plugin.py Proyecto: haphut/ytp
    def _modify_package_schema(self, schema):
        ignore_missing = toolkit.get_validator('ignore_missing')
        convert_to_extras = toolkit.get_converter('convert_to_extras')

        schema = add_translation_modify_schema(schema)
        schema = add_languages_modify(schema, self._localized_fields)

        for text_field in self._custom_text_fields:
            schema.update({text_field: [ignore_missing, unicode, convert_to_extras]})

        schema.update({'collection_type': [set_to_value(u'Public Service'), unicode, convert_to_extras]})
        schema.update({'extra_information': [ignore_missing, is_url, to_list_json, convert_to_extras]})
        schema.update({'municipalities': [ignore_missing, convert_to_tags_string('municipalities')]})
        schema.update({'target_groups': [target_groups_validator, convert_to_tags_string('target_groups')]})
        schema.update({'life_situations': [ignore_missing, convert_to_tags_string('life_situations')]})

        # Make the following fields mandatory
        schema.update({'decisions_and_documents_electronic': [unicode, convert_to_extras]})
        schema.update({'communicate_service_digitally': [unicode, convert_to_extras]})

        # Apply the service_charge_validator to the service charge field
        schema.update({'service_charge': [service_charge_validator, unicode, convert_to_extras]})
        schema.update({'pricing_information_url': [is_url, unicode, convert_to_extras]})
        schema.update({'service_price_description': [unicode, convert_to_extras]})

        # Service channels
        resources_schema = schema.get('resources')
        resources_schema.update({'url': [ignore_missing, unicode]})

        # Remove tags from the form's data model
        del schema['tag_string']

        return schema
Ejemplo n.º 2
0
    def _modify_package_schema(self, schema):
        ignore_missing = toolkit.get_validator('ignore_missing')
        convert_to_extras = toolkit.get_converter('convert_to_extras')

        schema = add_translation_modify_schema(schema)
        schema = add_languages_modify(schema, self._localized_fields)

        for text_field in self._custom_text_fields:
            schema.update(
                {text_field: [ignore_missing, unicode, convert_to_extras]})

        schema.update({
            'collection_type':
            [set_to_value(u'Public Service'), unicode, convert_to_extras]
        })
        schema.update({
            'extra_information':
            [ignore_missing, is_url, to_list_json, convert_to_extras]
        })
        schema.update({
            'municipalities':
            [ignore_missing,
             convert_to_tags_string('municipalities')]
        })
        schema.update({
            'target_groups':
            [target_groups_validator,
             convert_to_tags_string('target_groups')]
        })
        schema.update({
            'life_situations':
            [ignore_missing,
             convert_to_tags_string('life_situations')]
        })

        # Make the following fields mandatory
        schema.update({
            'decisions_and_documents_electronic': [unicode, convert_to_extras]
        })
        schema.update(
            {'communicate_service_digitally': [unicode, convert_to_extras]})

        # Apply the service_charge_validator to the service charge field
        schema.update({
            'service_charge':
            [service_charge_validator, unicode, convert_to_extras]
        })
        schema.update(
            {'pricing_information_url': [is_url, unicode, convert_to_extras]})
        schema.update(
            {'service_price_description': [unicode, convert_to_extras]})

        # Service channels
        resources_schema = schema.get('resources')
        resources_schema.update({'url': [ignore_missing, unicode]})

        # Remove tags from the form's data model
        del schema['tag_string']

        return schema
Ejemplo n.º 3
0
    def form_to_db_schema(self):
        schema = super(YtpOrganizationsPlugin, self).form_to_db_schema()
        ignore_missing = toolkit.get_validator('ignore_missing')
        convert_to_extras = toolkit.get_converter('convert_to_extras')

        # schema for homepages
        # schema.update({'homepages': [ignore_missing, convert_to_list, unicode, convert_to_extras]})
        schema.update(
            {'homepage': [ignore_missing, unicode, convert_to_extras]})

        schema.update({
            'public_adminstration_organization':
            [ignore_missing, unicode, convert_to_extras]
        })
        schema.update(
            {'producer_type': [ignore_missing, unicode, convert_to_extras]})

        # schema for extra org info
        # schema.update({'business_id': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'oid': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'alternative_name': [ignore_missing, unicode, convert_to_extras]})
        schema.update({
            'valid_from': [ignore_missing, date_validator, convert_to_extras]
        })
        schema.update({
            'valid_till': [ignore_missing, date_validator, convert_to_extras]
        })

        # schema for organisation address
        schema.update(
            {'street_address': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_pobox': [ignore_missing, unicode, convert_to_extras]})
        schema.update({
            'street_address_zip_code':
            [ignore_missing, unicode, convert_to_extras]
        })
        schema.update({
            'street_address_place_of_business':
            [ignore_missing, unicode, convert_to_extras]
        })
        # schema.update({'street_address_country': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_unofficial_name': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_building_id': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_getting_there': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_parking': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_public_transport': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_url_public_transport': [ignore_missing, unicode, convert_to_extras]})

        schema = add_translation_modify_schema(schema)
        schema = add_languages_modify(schema, self._localized_fields)

        return schema
Ejemplo n.º 4
0
    def _modify_package_schema(self, schema):
        ignore_missing = toolkit.get_validator('ignore_missing')
        convert_to_extras = toolkit.get_converter('convert_to_extras')
        not_empty = toolkit.get_validator('not_empty')
        schema = add_translation_modify_schema(schema)

        schema.update({'copyright_notice': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'collection_type': [not_empty, unicode, convert_to_extras]})
        schema.update({'extra_information': [ignore_missing, is_url, to_list_json, convert_to_extras]})
        schema.update({'valid_from': [ignore_missing, date_validator, convert_to_extras]})
        schema.update({'valid_till': [ignore_missing, date_validator, convert_to_extras]})
        schema.update({'content_type': [not_empty, convert_to_tags_string('content_type')]})

        schema.update({'original_language': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'translations': [ignore_missing, to_list_json, convert_to_extras]})

        schema.update({'owner': [set_empty_if_missing, unicode, convert_to_extras]})
        schema.update({'maintainer': [set_empty_if_missing, unicode]})
        schema.update({'maintainer_email': [set_empty_if_missing, unicode]})

        res_schema = schema.get('resources')
        res_schema.update({'temporal_coverage_from': [ignore_missing, simple_date_validate],
                           'temporal_coverage_to': [ignore_missing, simple_date_validate]})
        schema.update({'resources': res_schema})
        schema = add_languages_modify(schema, self._localized_fields)

        if not self.auto_author or c.userobj.sysadmin:
            schema.update({'author': [set_empty_if_missing, unicode]})
            schema.update({'author_email': [set_empty_if_missing, unicode]})
        else:
            schema.update({'author': [set_to_user_name, ignore_missing, unicode]})
            schema.update({'author_email': [set_to_user_email, ignore_missing, unicode]})

        # Override CKAN schema
        schema.update({'title': [not_empty, unicode]})
        schema.update({'notes': [not_empty, unicode]})
        schema.update({'license_id': [not_empty, not_value('notspecified'), unicode]})

        tag_string_convert = toolkit.get_validator('tag_string_convert')
        schema.update({'tag_string': [not_empty_or('tags'), tag_string_convert]})

        return schema
Ejemplo n.º 5
0
Archivo: plugin.py Proyecto: haphut/ytp
    def _modify_package_schema(self, schema):
        ignore_missing = toolkit.get_validator('ignore_missing')
        convert_to_extras = toolkit.get_converter('convert_to_extras')
        not_empty = toolkit.get_validator('not_empty')
        schema = add_translation_modify_schema(schema)

        schema.update({'copyright_notice': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'collection_type': [not_empty, unicode, convert_to_extras]})
        schema.update({'extra_information': [ignore_missing, is_url, to_list_json, convert_to_extras]})
        schema.update({'valid_from': [ignore_missing, date_validator, convert_to_extras]})
        schema.update({'valid_till': [ignore_missing, date_validator, convert_to_extras]})
        schema.update({'content_type': [not_empty, convert_to_tags_string('content_type')]})

        schema.update({'original_language': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'translations': [ignore_missing, to_list_json, convert_to_extras]})

        schema.update({'owner': [set_empty_if_missing, unicode, convert_to_extras]})
        schema.update({'maintainer': [set_empty_if_missing, unicode]})
        schema.update({'maintainer_email': [set_empty_if_missing, unicode]})

        res_schema = schema.get('resources')
        res_schema.update({'temporal_coverage_from': [ignore_missing, simple_date_validate],
                           'temporal_coverage_to': [ignore_missing, simple_date_validate]})
        schema.update({'resources': res_schema})
        schema = add_languages_modify(schema, self._localized_fields)

        if not self.auto_author or c.userobj.sysadmin:
            schema.update({'author': [set_empty_if_missing, unicode]})
            schema.update({'author_email': [set_empty_if_missing, unicode]})
        else:
            schema.update({'author': [set_to_user_name, ignore_missing, unicode]})
            schema.update({'author_email': [set_to_user_email, ignore_missing, unicode]})

        # Override CKAN schema
        schema.update({'title': [not_empty, unicode]})
        schema.update({'notes': [not_empty, unicode]})
        schema.update({'license_id': [not_empty, not_value('notspecified'), unicode]})

        tag_string_convert = toolkit.get_validator('tag_string_convert')
        schema.update({'tag_string': [not_empty_or('tags'), tag_string_convert]})

        return schema
Ejemplo n.º 6
0
Archivo: plugin.py Proyecto: haphut/ytp
    def form_to_db_schema(self):
        schema = super(YtpOrganizationsPlugin, self).form_to_db_schema()
        ignore_missing = toolkit.get_validator('ignore_missing')
        convert_to_extras = toolkit.get_converter('convert_to_extras')

        # schema for homepages
        # schema.update({'homepages': [ignore_missing, convert_to_list, unicode, convert_to_extras]})
        schema.update({'homepage': [ignore_missing, unicode, convert_to_extras]})

        schema.update({'public_adminstration_organization': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'producer_type': [ignore_missing, unicode, convert_to_extras]})

        # schema for extra org info
        # schema.update({'business_id': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'oid': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'alternative_name': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'valid_from': [ignore_missing, date_validator, convert_to_extras]})
        schema.update({'valid_till': [ignore_missing, date_validator, convert_to_extras]})

        # schema for organisation address
        schema.update({'street_address': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_pobox': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'street_address_zip_code': [ignore_missing, unicode, convert_to_extras]})
        schema.update({'street_address_place_of_business': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_country': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_unofficial_name': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_building_id': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_getting_there': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_parking': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_public_transport': [ignore_missing, unicode, convert_to_extras]})
        # schema.update({'street_address_url_public_transport': [ignore_missing, unicode, convert_to_extras]})

        schema = add_translation_modify_schema(schema)
        schema = add_languages_modify(schema, self._localized_fields)

        return schema
Ejemplo n.º 7
0
Archivo: logic.py Proyecto: haphut/ytp
def action_user_update(context, data_dict):
    ''' Modified from CKAN: user_update

    Update a user account.

    Normal users can only update their own user accounts. Sysadmins can update
    any user account.

    For further parameters see ``user_create()``.

    :param id: the name or id of the user to update
    :type id: string

    :returns: the updated user account
    :rtype: dictionary

    '''
    model = context['model']
    user = context['user']
    session = context['session']
    schema = context.get('schema') or logic.schema.default_update_user_schema()
    # Modify the schema by adding translation related keys
    add_translation_modify_schema(schema)

    upload = uploader.Upload('user')
    upload.update_data_dict(data_dict, 'image_url', 'image_upload', 'clear_upload')

    ignore_missing = toolkit.get_validator('ignore_missing')
    convert_to_extras = toolkit.get_converter('convert_to_extras')

    schema['job_title'] = [ignore_missing, unicode, convert_to_extras]
    schema['telephone_number'] = [ignore_missing, unicode, convert_to_extras]
    schema['main_organization'] = [ignore_missing, unicode, convert_to_extras]

    schema['image_url'] = [ignore_missing, unicode, convert_to_extras]

    schema['linkedin'] = [ignore_missing, unicode, convert_to_extras]
    schema['facebook'] = [ignore_missing, unicode, convert_to_extras]
    schema['twitter'] = [ignore_missing, unicode, convert_to_extras]

    schema['blog'] = [ignore_missing, to_list_json, convert_to_extras]
    schema['www_page'] = [ignore_missing, to_list_json, convert_to_extras]

    # Add the localized keys for the localized fields to the schema
    schema = add_languages_modify(schema, _localized_fields)

    not_empty = toolkit.get_validator('not_empty')
    schema['fullname'] = [not_empty, unicode]

    id = logic.get_or_bust(data_dict, 'id')

    user_obj = model.User.get(id)
    context['user_obj'] = user_obj
    if user_obj is None:
        raise NotFound('User was not found.')

    # If the translations are not in the data_dict, the user has not added any translations or the user has deleted all translations.
    # Therefore, the translations are not sent with the POST so we need to empty and update the translations here.
    if 'translations' not in data_dict:
        data_dict['translations'] = []

    toolkit.check_access('user_update', context, data_dict)

    data, errors = validate(data_dict, schema, context)
    if errors:
        session.rollback()
        raise ValidationError(errors)

    for extra in data['extras'] if 'extras' in data else []:
        user_obj.extras[extra['key']] = extra['value']

    user = model_save.user_dict_save(data, context)

    activity_dict = {'user_id': user.id,
                     'object_id': user.id,
                     'activity_type': 'changed user'}

    activity_create_context = {'model': model,
                               'user': user,
                               'defer_commit': True,
                               'ignore_auth': True,
                               'session': session}

    toolkit.get_action('activity_create')(activity_create_context, activity_dict)

    # Attempt to update drupal user
    _update_drupal_user(context, data_dict)

    # TODO: Also create an activity detail recording what exactly changed in
    # the user.

    upload.upload(uploader.get_max_image_size())
    if not context.get('defer_commit'):
        model.repo.commit()
    user_data = user_dictize(user, context)

    for key, value in user.extras.iteritems():
        if key in user_data:
            log.warning("Trying to override user data with extra variable '%s'", key)
            continue
        user_data[key] = value
    return user_data
Ejemplo n.º 8
0
def action_user_update(context, data_dict):
    ''' Modified from CKAN: user_update

    Update a user account.

    Normal users can only update their own user accounts. Sysadmins can update
    any user account.

    For further parameters see ``user_create()``.

    :param id: the name or id of the user to update
    :type id: string

    :returns: the updated user account
    :rtype: dictionary

    '''
    model = context['model']
    user = context['user']
    session = context['session']
    schema = context.get('schema') or logic.schema.default_update_user_schema()
    # Modify the schema by adding translation related keys
    add_translation_modify_schema(schema)

    upload = uploader.Upload('user')
    upload.update_data_dict(data_dict, 'image_url', 'image_upload',
                            'clear_upload')

    ignore_missing = toolkit.get_validator('ignore_missing')
    convert_to_extras = toolkit.get_converter('convert_to_extras')

    schema['job_title'] = [ignore_missing, unicode, convert_to_extras]
    schema['telephone_number'] = [ignore_missing, unicode, convert_to_extras]
    schema['main_organization'] = [ignore_missing, unicode, convert_to_extras]

    schema['image_url'] = [ignore_missing, unicode, convert_to_extras]

    schema['linkedin'] = [ignore_missing, unicode, convert_to_extras]
    schema['facebook'] = [ignore_missing, unicode, convert_to_extras]
    schema['twitter'] = [ignore_missing, unicode, convert_to_extras]

    schema['blog'] = [ignore_missing, to_list_json, convert_to_extras]
    schema['www_page'] = [ignore_missing, to_list_json, convert_to_extras]

    # Add the localized keys for the localized fields to the schema
    schema = add_languages_modify(schema, _localized_fields)

    not_empty = toolkit.get_validator('not_empty')
    schema['fullname'] = [not_empty, unicode]

    id = logic.get_or_bust(data_dict, 'id')

    user_obj = model.User.get(id)
    context['user_obj'] = user_obj
    if user_obj is None:
        raise NotFound('User was not found.')

    # If the translations are not in the data_dict, the user has not added any translations or the user has deleted all translations.
    # Therefore, the translations are not sent with the POST so we need to empty and update the translations here.
    if 'translations' not in data_dict:
        data_dict['translations'] = []

    toolkit.check_access('user_update', context, data_dict)

    data, errors = validate(data_dict, schema, context)
    if errors:
        session.rollback()
        raise ValidationError(errors)

    for extra in data['extras'] if 'extras' in data else []:
        user_obj.extras[extra['key']] = extra['value']

    user = model_save.user_dict_save(data, context)

    activity_dict = {
        'user_id': user.id,
        'object_id': user.id,
        'activity_type': 'changed user'
    }

    activity_create_context = {
        'model': model,
        'user': user,
        'defer_commit': True,
        'ignore_auth': True,
        'session': session
    }

    toolkit.get_action('activity_create')(activity_create_context,
                                          activity_dict)

    # Attempt to update drupal user
    _update_drupal_user(context, data_dict)

    # TODO: Also create an activity detail recording what exactly changed in
    # the user.

    upload.upload(uploader.get_max_image_size())
    if not context.get('defer_commit'):
        model.repo.commit()
    user_data = user_dictize(user, context)

    for key, value in user.extras.iteritems():
        if key in user_data:
            log.warning(
                "Trying to override user data with extra variable '%s'", key)
            continue
        user_data[key] = value
    return user_data