Commit Graph

66 Commits

Author SHA1 Message Date
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
Dalai Felinto
3329788be8 Localization: Fix setup.py install/develop
After I removed the @translation_manager.command decorators the setup
install was failing because translations was not found in pillar.cli.
2017-09-11 21:54:34 +02:00
Dalai Felinto
303a33c3bf Internationalization: Backend support to localization based on user browser
User experience
===============
For users it means we can provide localized web-sites to enrich their
overall experiences.

Although for the Blender Cloud this doesn't make much sense (since the
content is in English), Flamenco and Attract can really benefit from
this.

New configuration settings
==========================
There are two new parameters in config.py:

* DEFAULT_LOCALE='en_US'
* SUPPORT_ENGLISH=True

They are both properly documented in the `config.py` file.

Technicall details
==================
We are using the 'Accept-Languages' header to match the
available translations with the user supported languages.

If an extension has a `translations` folder, it's used for translations.
However the main application (e.g., Blender Cloud) is the one that
determines the supported languages based on its `languages` folder.

How to mark strings for translation
===================================
See the documentation in README.md.

But as an example, 404.pug and pillar/__init__.py::handle_sdk_resource_invalid
have marked up strings that will be extracted once you install pillar,
or run any of the translations commangs.

Remember to **gulp** after you update the template files.

How to setup translations
=========================
You will need to create translation for the main project, and for each
extension that you want to see translated. I added a new entry-point to
the installation of Pillar.

So all you need is to use the `translations`
script to initialize, update and compile your translations.

Pending tasks
=============
Aside from marking more strings for extraction and start the translation
effort it would be interesting to replace the pretty_date routine with
momentjs.

Acknowledgement
===============
Many thanks for Sybren Stüvel for the suggestions and throughout code
review. Thanks also to Francesco Siddi for the original documentation
and suggesting me to tackle this. And Kudos for Pablo Vazquez for the
motivational support and for the upcoming "strings mark up" task force!

The core of the implementation is based on Miguel Grinberg i18n chapter
of his great 'The Mega Flask Tutorial'.

Reviewers: sybren

Differential Revision: https://developer.blender.org/D2826
2017-09-09 00:26:18 +02:00
86e76aaa5f Use UserClass instead of assigning dict to g.current_user 2017-08-29 11:34:48 +02:00
87afbc52f6 Updated do_badger to take an optional set of roles.
The 'role' parameter now must be passed as keyword arg instead of
positional arg. Either 'role' or 'roles' must be given.
2017-08-23 08:59:23 +02:00
4c273671e4 CLI index_users_rebuild() made parallel 2017-07-11 15:29:17 +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
d6506b6402 Moved Celery CLI commands to 'manage.py celery' submodule + added extensions:
Added a 'celery queue' command, which is supposed to show queued
Celery tasks (but doesn't work quite as I'd expect).

Added a 'celery purge' command, which purges queued Celery tasks.
2017-06-06 15:05:18 +02:00
5af54237b9 Integrated Celery startup / management / config with PillarServer. 2017-06-02 10:44:37 +02:00
ed4ee5228a Added Celery for background tasks.
The implementation is still rather simple, using hard-coded configuration
values. This will change in subsequent commits.

The worker can be started with "manage.py operations worker". Celery
Worker CLI options can be passed after a double dash, like this:

    ./manage.py operations worker -- -C -E
2017-06-02 10:44:37 +02:00
22301a0e9a Removed unused import 2017-06-02 10:44:37 +02:00
bfbcdee926 CLI 'index_users_rebuild' should gracefully stop when Algolia isn't configured. 2017-05-31 11:03:33 +02:00
34b9be4efa Don't use str.format() when logging.
The correct way to log is to use %-formatting, and pass the format args to
the logging function. This prevents the string from being formatted at all
when the log item isn't logged anywhere (in this case, when the log level
is WARNING or higher).
2017-05-31 11:03:04 +02:00
207dacf816 Reindex users that have not been deleted 2017-05-28 20:21:06 +02:00
a7d3ba24b4 Refactor cli scripts in submodules 2017-05-24 19:41:35 +02:00