Commit Graph

30 Commits

Author SHA1 Message Date
67e8e7c082 Disallow spaces in attachment slugs
Slugs shouldn't have spaces. It also interferes with using slugs in
shortcodes.
2018-04-03 13:59:31 +02:00
cbb5d546ef Fixed CLI cmd upgrade_attachment_schema
It didn't add the {'coerce': 'markdown'}, which caused the
upgrade_attachment_usage CLI command to skip 'upgraded' nodes.
2018-04-03 12:49:34 +02:00
a86920fc73 Disallow spaces in attachment slugs 2018-04-03 12:24:42 +02:00
14b31174dc Fixes to upgrade_attachment_schema() for URL-less projects 2018-04-03 11:47:18 +02:00
3b452d14ce Render attachments with shortcodes rather than slugs
The attachments should now be rendered using `{attachment slug}` instead
of `@[slug]`. The `link` attribute can be specified in the shortcode
(for attachments that support it), rather than in the attachment itself.

The attachment subdocument is now reduced to `{oid: File ObjectID}`, and
nodes without attachments should NOT have an `attachment` property at
all (previously it would be an empty dict). This makes querying for
nodes with/out attachments easier.

The CLI command `upgrade_attachment_schema` can do dry-run and remove
empty attachments:

- Added --go to actually perform the database changes.
- Remove empty attachments, so that a node either has one or more
  attachments or no attachments sub-document at all.

The CLI command `upgrade_attachment_usage` converts `@[slug]` to
`{attachment slug}`. It also takes into account 'link' and 'link_custom'
fields on the attachment. After conversion those fields are removed from
the attachment itself.

Simplified maintentance CLI commands that iterate over all projects:
I've moved the common approach (either run on one project or all of
them, skipping deleted ones, giving a message upon dry-run, and showing
duration of the command) to a new _db_projects() function. The new
function is now used by two recently-touched CLI commands; more of them
could be migrated to use this.
2018-04-03 10:59:20 +02:00
0841d52dd1 Removed unused imports 2018-04-03 10:48:40 +02:00
d3ff88e5cf Also replace node types when key with underscore changed
Previously all keys starting with an underscore were ignored (so changes
to _created wouldn't count as "different"), but this clashes with saving
Markdown output to _xxx_html keys.
2018-03-27 17:56:38 +02:00
d2a0a5ae26 Added CLI command 'maintenance purge_home_projects'
This command soft-deletes home projects when their owning user is no longer
there.
2018-03-27 15:45:32 +02:00
195edf679c Improved replace_pillar_node_type_schemas CLI cmd further 2018-03-27 15:32:36 +02:00
d24715a224 Smarter upgrades of node type definitions
- No changes are applied unless the new --go CLI arg is used.
- Differences to node types are actually shown.
- Dynamic form definitions are kept.
2018-03-27 12:03:18 +02:00
f2888069db Added pillar.api.utils.utcnow() which returns a datetime for 'now'
This replaces pillar.web.utils.datetime_now() and can be used in a wider
setting (since we don't import web stuff in the api, but we do vice versa).
2018-02-13 14:36:05 +01:00
660b7a3811 Added 'maintenance refresh_content_disposition' CLI command
This command fixes the filename in the Content-Disposition header of file
variations on Google Cloud Storage. This is to fix the existing files after
fixing T51477.
2018-01-26 16:03:11 +01:00
e5fb156224 Fix logging in check_home_project_groups CLI command 2018-01-26 15:05:49 +01:00
54bb506e10 Orphan finder: also interpret 24-char hex strings as ObjectIDs
This is necessary as some dynamic node properties have ObjectIDs saved
as strings.
2017-09-14 17:43:23 +02:00
d4facbf2e3 Orphan finder: store the orphan-files.txt file in STORAGE_DIR
This allows running the orphan finder inside a docker container.
2017-09-14 17:34:02 +02:00
5d137ac997 Added Celery task for refreshing file links
This includes a CLI command to kick off a single run for the Celery task.

This does *NOT* include a check to see whether the task is already running!
2017-09-14 15:12:25 +02:00
c272b5d4bb refresh_backend_links CLI: don't convert str → int multiple times 2017-09-14 15:10:32 +02:00
3be47056a0 Orphan finder: drop the per-project finding
Overall finding is much faster, at the expense of a bit more RAM.
2017-09-14 12:18:10 +02:00
f650835c07 Orphan finder: soft-delete orphan files
This uses the orphan-files.txt file output by find_orphan_files() to
mark those files as deleted. This allows for a two-stage approach, where
file IDs are found on one machine (against a read-only MongoDB slave, for
example) and soft-deleted on another machine (against a writable master).
2017-09-13 14:05:28 +02:00
33feaa81ca Orphan finder: refuse to find orphans when orphan-files.txt exists. 2017-09-13 14:05:28 +02:00
16bf193b0e Added soft-delete to the files schema.
This allows us to soft-delete orphan files, at least until we know
that the orphan file detection is solid and can really be trusted.
2017-09-13 14:05:28 +02:00
ce59bc3335 Orphan finder: write file object IDs to orphan-files.txt 2017-09-13 14:05:28 +02:00
46d834f5aa Orphan finder: log duration of orphan file search 2017-09-13 14:05:28 +02:00
4be05c8b57 Orphan finder: when iterating all projects, gracefully stop at CTRL+C 2017-09-13 14:05:28 +02:00
5ce02bbbfe Orphan finder: fix bug when no orphan files are found 2017-09-13 14:05:28 +02:00
d01b498ad5 Orphan finder: Default project._deleted to False 2017-09-13 14:05:28 +02:00
b1d69b2304 Added orphan file finder. Works per project or pass 'all' for all projects.
This is quite a heavy thing to run, since it goes over all files of a
project, and then goes over every document in (almost) every collection
which has a property 'project' that's set to the project ID. It then goes
over every document to find all ObjectIDs and removes those from the set
of file ObjectIDs for that project. The remaining ObjectIDs are considered
orphans.

This is a very thorough search, but it doesn't require any knowledge of
the document and collection structure, so it should be future-proof.
2017-09-13 14:05:28 +02:00
2482381999 Added ability to add missing node types to replace_pillar_node_type_schemas 2017-06-16 12:40:10 +02:00
6e6ea6082d Renamed _attachments_embedded_schema to attachments_embedded_schema
It's used in multiple files, and thus shouldn't be marked as 'private'.
2017-06-16 12:39:51 +02:00
a7d3ba24b4 Refactor cli scripts in submodules 2017-05-24 19:41:35 +02:00