Content Profiles

Content profiles let you change the way how your content should be edited and what validation rules should apply.

Definition

You can specify custom profiles in server/data/content_types.json file.

Then you can sync it with database using cli command:

python manage.py app:initialize_data --entity-name content_types

In the file there should be list of profiles:

[
    {"_id": "story", "label": "Story", "enabled": 1, ...},
    {"_id": "snap", "label": "Snap", "enabled": 0, ...}
]

Available fields are:

_id string

Profile id, its value will be set in item.profile field and will be available in output.

label string

Label visible in the client.

description string

Optional profile description.

priority int

Used for sorting in descending order.

enabled boolean

Flag if profile is enabled (visible in lists) or not.

schema dict

Schema configuration for profile. There you can define validation rules for Item Schema fields:

"schema": {
    "headline": {
        "type": "string",
        "required": true,
        "maxlength": 120,
    },
    "keywords": {
        "type": "list",
        "required": true,
        "allowed": ["sport", "news"]
    }
}

Keys are field names, and for each field you can specify:

type string

One of string, list, dict, integer, number.

required boolean

If true, field must be there and be non empty.

minlength, maxlength int

Minimum and maximum length allowed for string type.

allowed list

List of allowed values for string or list type.

schema dict

Validation rules for dict type items.

nullable boolean

If True the value can be set to null.

regex string

Regex validation rule, eg.:

"regex": "[a-z]+"
editor dict

Editor configuration for profile, there you can set what fields will be visible and how these should be displayed:

"editor": {
    "headline": {
        "order": 1,
        "sdWidth": "full",
        "enabled": true
    },
    "body_html": {
        "order": 5,
        "formatOptions": ["h2", "bold", "italic"],
        "enabled": true
    },
    "ednote": {
        "enabled": false
    }
}

Rules for fields are:

order int

Where the field is visible in the editor.

sdWidth string

One of full, half and quarter. Fields are floating so there can be more on the same line as long as they fit there.

enabled boolean

If false field won’t be visible in the editor.

formatOptions list

What format options should be available, only works with body_html and abstract fields. For each there will be a button visible in the editor toolbar.

h2

bold

italic

underline

quote

anchor

embed

picture

removeFormat

Available schema fields

These are fields you can use in your content profile:

class DefaultSchema[source]

Default schema.

abstract = string

item abstract

anpa_category = list

category

anpa_take_key = string

anpa take key

attachments = list

item attachments .. versionadded:: 1.29

authors = list

authors

body footer

body_html = string

item content

byline = string

byline

company_codes = list

company codes

dateline = dict

dateline - info about where news was written

ednote = string

editorial note

feature_media = media

embedded media in the item

footer = string

item footer

genre = list

item genre

headline = string

headline

keywords = list

keywords

language = string

language

media_description = string

embedded media description

place = list

place where news happened

priority = integer

news item priority

sign_off = string

item sign off info

slugline = string

slugline

sms = string

sms version of an item

subject = list

subject

urgency = integer

news item urgency

usageterms = string

usageterms

Plain text profile

Before there are any content profiles defined for a desk there is one called Plain text.

Package profiles

Package profiles are not yet supported.