Esempio n. 1
0
def create_update_taxonomy_post(prefer=None, q=None):
    if q:
        json_abort(
            422, {
                'message':
                'Query not appropriate when creating or updating taxonomy',
                'reason': 'search-query-not-allowed'
            })
    data = request.json
    if 'code' not in data:
        abort(Response('Code missing', status=400))
    code = data.pop('code')
    url = data.pop('url', None)
    select = data.pop('select', None)
    tax = current_flask_taxonomies.get_taxonomy(code=code, fail=False)
    if not tax:
        current_flask_taxonomies.permissions.taxonomy_create.enforce(
            request=request, code=code)
        current_flask_taxonomies.create_taxonomy(code=code,
                                                 extra_data=data,
                                                 url=url,
                                                 select=select)
        status_code = 201
    else:
        current_flask_taxonomies.permissions.taxonomy_update.enforce(
            request=request, taxonomy=tax)
        current_flask_taxonomies.update_taxonomy(tax,
                                                 extra_data=data,
                                                 url=url,
                                                 select=select)
        status_code = 200
    current_flask_taxonomies.commit()

    return get_taxonomy(code, prefer=prefer, status_code=status_code)
Esempio n. 2
0
def patch_taxonomy(code=None, prefer=None, page=None, size=None, q=None):
    if q:
        json_abort(
            422, {
                'message':
                'Query not appropriate when creating or updating taxonomy',
                'reason': 'search-query-not-allowed'
            })

    tax = current_flask_taxonomies.get_taxonomy(code=code, fail=False)
    if not tax:
        json_abort(404, {})

    current_flask_taxonomies.permissions.taxonomy_update.enforce(
        request=request, taxonomy=tax)

    data = {**(tax.extra_data or {}), 'url': tax.url, 'select': tax.select}
    data = jsonpatch.apply_patch(data, request.json)
    url = data.pop('url', None)
    select = data.pop('select', None)
    current_flask_taxonomies.update_taxonomy(tax,
                                             extra_data=data,
                                             url=url,
                                             select=select)
    status_code = 200
    current_flask_taxonomies.commit()

    return get_taxonomy(code,
                        prefer=prefer,
                        page=page,
                        size=size,
                        status_code=status_code)
Esempio n. 3
0
    def test_update_taxonomy(self, db, root_taxonomy, TaxonomyTerm):
        """Update Taxonomy extra_data."""
        current_flask_taxonomies.update_taxonomy(root_taxonomy, {"description": "updated"})

        retrieved_root = TaxonomyTerm.query.get(root_taxonomy.id)
        assert retrieved_root.extra_data == {"description": "updated"}

        root_taxonomy.check()
Esempio n. 4
0
def create_update_taxonomy(data, drop) -> Taxonomy:
    tax_dict = convert_data_to_dict(data)[0]
    if 'code' not in tax_dict:
        raise ValueError('Taxonomy does not contain "code"')
    code = tax_dict.pop('code')
    taxonomy = current_flask_taxonomies.get_taxonomy(code, fail=False)
    if taxonomy and drop:
        current_flask_taxonomies.delete_taxonomy(taxonomy)
        taxonomy = None

    if taxonomy:
        merged_dict = taxonomy.extra_data
        merged_dict.update(tax_dict)
        current_flask_taxonomies.update_taxonomy(taxonomy, merged_dict)
    else:
        taxonomy = current_flask_taxonomies.create_taxonomy(code, extra_data=tax_dict)
    db.session.commit()
    return taxonomy
Esempio n. 5
0
def create_update_taxonomy(code=None,
                           prefer=None,
                           page=None,
                           size=None,
                           q=None):
    if q:
        json_abort(
            422, {
                'message':
                'Query not appropriate when creating or updating taxonomy',
                'reason': 'search-query-not-allowed'
            })
    tax = current_flask_taxonomies.get_taxonomy(code=code, fail=False)

    if tax:
        current_flask_taxonomies.permissions.taxonomy_update.enforce(
            request=request, taxonomy=tax)
    else:
        current_flask_taxonomies.permissions.taxonomy_create.enforce(
            request=request, code=code)

    data = request.json
    url = data.pop('url', None)
    select = data.pop('select', None)
    if not tax:
        current_flask_taxonomies.create_taxonomy(code=code,
                                                 extra_data=request.json,
                                                 url=url,
                                                 select=select)
        status_code = 201
    else:
        current_flask_taxonomies.update_taxonomy(tax,
                                                 extra_data=request.json,
                                                 url=url,
                                                 select=select)
        status_code = 200
    current_flask_taxonomies.commit()
    return get_taxonomy(code,
                        prefer=prefer,
                        page=page,
                        size=size,
                        status_code=status_code)
Esempio n. 6
0
def taxonomy_update(taxonomy, extra_data):
    """Update Taxonomy."""
    taxonomy = current_flask_taxonomies.update_taxonomy(taxonomy, extra_data)

    return jsonify(jsonify_taxonomy(taxonomy))