Commit Graph

66 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
bf498b829c @manager.command and @manager.option are sometimes mutually exclusive
@manager.option also registers the function as command, so the double use
is generally unnecessary.

Furthermore, @manager.command will register CLI options based on the
function parameters, which potentially conflict with the ones registered
with the following @manager.options decorators.

Note that positional arguments should be given in reverse order.
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
f79642d69f Refuse to merge projects when SERVER_NAME is unset 2018-02-13 16:50:37 +01:00
de801e41e3 CLI command for moving all nodes+files to another project
`manage.py operations merge_project src_url dst_url` moves all nodes and
files from the project with `src_url` to the project with `dst_url`.
This also moves soft-deleted files/nodes, as it ignores the _deleted
field. The actual files on the storage backend are copied rather than
moved.

Note that this may invalidate the nodes, as their node type definition
may differ between projects. Since we use direct MongoDB queries the
nodes are moved to the new project anyway. This allows for a
move-first-then-fix approach).
2018-02-13 15:52:21 +01: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
ce33ce994f Elastic: Allow resetting and reindexing in one CLI command
Use `manage.py elastic reindex [indexname] --reset` to reset first and then
reindex.
2018-02-13 10:19:05 +01:00
1b57b333df Removed the URLer service
We don't have a need for it any more, so it can go.
2018-01-31 14:33:41 +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
741cdf6e12 Elastic: regenerate picture URL before inserting into ElasticSearch
This ensures the thumbnail URL is public so that it won't expire.
Since this now requires API calls to Google, I've increased the number of
parallel threads used for indexing, since they'll be waiting for network
I/O more.
2018-01-26 10:29:28 +01:00
1d08f6850b Elastic: paralellise reindexing
It's marginally faster (on our production DB user reindexing goes down from
5+ minutes to 4 minutes), but will likely become significantly faster when
we run ElasticSearch on its own machine.
2018-01-09 17:05:31 +01:00
408db5e060 Elastic: log how long reindexing took 2018-01-09 16:57:31 +01:00
fdab66a500 Elastic: prevent indexing deleted nodes 2018-01-05 15:33:40 +01:00
f6cf8d29f0 Elastic: search indexing logging tweaks 2018-01-05 15:24:47 +01:00
8f6966978f Elastic: more progress logging when reindexing users 2018-01-05 14:42:10 +01:00
1bfda7769a Elastic reindexing: more verbose logging at info level.
Including some progress report every 100 nodes.
2018-01-05 14:22:38 +01:00
2433a1b981 minor documentation / annotation fixes 2018-01-05 11:58:33 +01:00
10732f9a10 wip D2950 2017-12-15 17:57:47 +01:00
88939ba51d Cleaned up ElasticSearch CLI interface 2017-12-08 16:54:08 +01:00
fccd3e306e T52710 pytests work 2017-12-08 14:00:30 +01:00
533544117b T52710 search on id works 2017-12-08 13:12:39 +01:00
b03e8d5bd7 T53161 Proof of Concept working USER search. WIP js. 2017-11-17 16:06:51 +01:00
d2a8f2a47f T53161 elasticsearch can index nodes now. cli command. NOTE config changes!! 2017-11-17 16:06:51 +01:00
33d3ff07db Added missing newline at end of file 2017-11-03 14:32:24 +01:00
99ed8fff5d Remove unneeded properties on create_blog 2017-10-25 16:22:55 +02:00
f17453ba10 Added 'operations hash_auth_tokens' CLI command. 2017-10-05 13:04:44 +02:00
1177f516ba Set status as 'published' when creating a blog
If a blog is not set as published it won't be visible in the navbar.
2017-09-16 19:20:12 +02: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
82d2921424 Added support for periodic Celery tasks.
You have to run "manage.py celery beat" for this to work too. Run
"manage.py celery beat -- --help" to get CLI option help.
2017-09-14 16:00:59 +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