Mozilla Foundation website
moz
Перейти к файлу
Théo Chevalier 6391f63a84
Add helper command to extract strings to an external repo (#4199)
* Add helper command to extract strings to an external repo

* Fix path

* Delete local .po/.pot

* python linter errors

* Lucie’s feedback

* Ignore localized .ftl files

* Update translation-management.sh

* Document the string extraction process

* Update README.md

* Update .gitignore

* Add buyersguide about section

* Update path in fomo-l10n repo

* remove pt migrations

* update post_compile step to download translations from S3 instead of running compilemessages

Co-authored-by: Lucie <lucie.daeye@gmail.com>
2020-02-19 15:53:44 +01:00
.devcontainer Replace Alpine by Debian stretch slim for Docker local dev (#3253) 2019-07-03 12:17:35 +02:00
.github Update pr template with link to migration (#3459) 2019-07-29 16:57:51 -04:00
bin Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
cypress Add Percy tests for blog category (#4039) 2019-12-11 11:09:10 -08:00
dockerfiles uplift node to v12 (#4191) 2020-02-12 07:08:59 -08:00
docs Update foundation pipeline to the new review app system (#4144) 2020-01-21 13:34:59 +01:00
maintenance Remove utm params from donate links (#3786) 2019-10-16 17:48:40 -04:00
network-api Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
source Fix various signup form errors (#4202) 2020-02-18 12:30:58 -08:00
test add testing for the Procfile (#2174) 2018-11-14 09:41:00 -08:00
travis-scripts uplift node to v12 (#4191) 2020-02-12 07:08:59 -08:00
.editorconfig Update HTTP to HTTPS (#2219) 2018-11-20 16:38:36 -08:00
.eslintignore Nuke Pug (#1468) 2018-04-27 10:17:12 -07:00
.eslintrc.json Switched eslint to use prettier (#2796) 2019-03-13 13:44:24 -07:00
.gitignore Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
.stylelintrc prettier for css/scss (#2807) 2019-03-14 11:11:35 -07:00
.stylelintrc-colors.js Made stylelint throw errors if custom colours are found (#3090) 2019-05-08 17:06:18 -07:00
.travis.yml uplift node to v12 (#4191) 2020-02-12 07:08:59 -08:00
CODEOWNERS Template localization (#3529) 2019-11-14 11:18:26 -08:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md (#3054) 2019-04-30 09:10:45 +02:00
ISSUE.md adding github issue template (#484) 2017-06-05 09:41:02 -07:00
LICENSE Update HTTP to HTTPS (#2219) 2018-11-20 16:38:36 -08:00
Pipfile modeltranslations 10.7 obviates the need for our own l10n shim (#4184) 2020-02-11 11:51:48 -08:00
Pipfile.lock modeltranslations 10.7 obviates the need for our own l10n shim (#4184) 2020-02-11 11:51:48 -08:00
Procfile Add a release steps file (#2240) 2018-11-22 12:26:51 +01:00
README-FOR-WAGTAIL-LOCALISATION.md Adding wagtail-modeltranslation to get at least some sort of localization. (#1566) 2018-08-21 10:30:47 -07:00
README.md Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
app.json Update foundation pipeline to the new review app system (#4144) 2020-01-21 13:34:59 +01:00
contribute.json Update contribute.json (#3496) 2019-08-06 08:11:45 -07:00
cypress.json Add MozFest homepage and primary page to Percy test (#3951) 2019-11-26 19:16:30 -08:00
docker-compose.yml Add Sentry to the Foundation site (#3983) 2019-12-06 11:43:07 +01:00
env.default Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
invoke.yaml Simplify docker invoke tasks (#3673) 2019-09-23 10:59:38 +02:00
package-lock.json Bump webpack-cli from 3.3.10 to 3.3.11 (#4214) 2020-02-18 19:21:36 -08:00
package.json Bump webpack-cli from 3.3.10 to 3.3.11 (#4214) 2020-02-18 19:21:36 -08:00
release-steps.sh Add a release steps file (#2240) 2018-11-22 12:26:51 +01:00
runtime.txt update python (#3999) 2019-12-03 17:00:00 +01:00
tasks.py Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
tox.ini Remove extra semicolon + add tasks file to lint check + move tox.ini to top-level dir (#1799) 2018-09-11 12:28:47 -07:00
translation-management.sh Add helper command to extract strings to an external repo (#4199) 2020-02-19 15:53:44 +01:00
webpack.config.js Configure the environment option with Sentry (#4047) 2019-12-12 12:23:02 -05:00

README.md

foundation.mozilla.org

Build Status Dependency Status Dev Dependency Status Uses Mofo Standards Code Coverage

Table of contents

Setup

Setup with Docker

Local development with invoke and pipenv

Local development with Docker

Engineer Workflow

OPS and Heroku Settings

Scheduled Task

Stack

How to Setup your Dev Environment with Pipenv and Invoke

Requirements: Node, npm, git, python3.6 or later, pip, pipenv, invoke, gettext.

If you installed Python with Homebrew, use pip3 install instead of pip install when installing the relevant requirements.

Check your environment

  • python --version should return 3.7 or higher,
  • pipenv --version should return 11.10 or higher,
  • invoke --version should return 0.22.1 or higher,
  • gettext --version should return 0.20.1 or higher.

Setup steps

Run the following terminal commands to get started:

  • git clone https://github.com/mozilla/foundation.mozilla.org.git
  • cd foundation.mozilla.org
  • inv setup

If you're on windows, you need an extra step: run inv manage createsuperuser to create an admin user.

You're done 🎉

To catch up on new dependencies, migrations, etc. after initial setup, you can use the inv catch-up command.

For more information on how to run this project, check the local development with invoke and pipenv documentation.

Testing

When relevant, we encourage you to write tests. You can run the tests using the following command

  • inv test

In addition to the code tests there are also visual regression tests, located in the ./cypress/integration directory. You can run these tests locally by installing cypress using npm i cypress@3.0.3, after which the command npm run cypress will run these tests locally. However, note that these tests are currently intended for screenshot comparisons across branches, and so will not yield any meaningful results when run for a single branch.

How to Setup your Dev Environment with Docker

  • Install Docker Desktop (macOS and Windows). For Linux users: install Docker CE and Docker Compose. If you don't want to create a Docker account, direct links to download can be found in this issue,
  • Check your install by running docker run hello-world,
  • If relevant: delete your node_modules directory (rm -rf node_modules). It's not necessary, but it speeds up the install.
  • Run invoke docker-new-env (install invoke if you don't have it yet). If you're running on Windows, you need to run docker-compose --rm pipenv run python network-api/manage.py createsuperuser when the setup is finished.

This task is creating a .env that is in charge of managing your environment variables while running Docker. The installation will take a few minutes: you need to download images from the Docker Hub, install JS and Python dependencies, create fake data, migrate your database, etc.

When it's done, run docker-compose up, wait until the static files to be built, and go to 0.0.0.0:8000. You should have a local working version of the foundation site with fake data. When you want to stop, do ^C to shut down your containers.

For more information on how to run the project with Docker, check the local development with Docker documentation.

Mozilla Festival

The fake data generator can generate a site structure for the Mozilla Festival that can be served under it's own domain, or in the case of review apps on Heroku, where we're limited to a single domain, as a sub-directory of the main foundation site, at {review_app_host}/mozilla-festival.

In order to access the Mozilla Festival site locally on a different domain than the main Foundation site, you'll need to edit your hosts file (/etc/hosts on *nix systems, C:\Windows\System32\Drivers\etc\hosts on Windows) to allow you to access the site at mozfest.localhost:8000. To enable this, add the following line to your hosts file: 127.0.0.1 mozfest.localhost

Gotchas

As this is REST API and CMS built on top of Django, there are some "gotcha!"s to keep in mind due to the high level of magic in the Django code base (where things will happen automatically without the code explicitly telling you).

DEBUG=True

The DEBUG flag does all sorts of magical things, to the point where testing with debugging turned on effectively runs a completely different setup compared to testing with debugging turned off. When debugging is on, the following things happen:

  • Django bypasses the ALLOWED_HOST restrictions, which again can lead to 400 Bad Request errors in DEBUG=False setting.
  • Rather than HTTP error pages, Django will generate stack traces pages that expose pretty much all environment variables except any that match certain substrings such as KEY, PASS, etc. for obvious security reasons.
  • ...there are probably more gotchas just for DEBUG so if you find any please add them to this list.

Translations

Translations of UI strings (from the Django and React apps) are stored in the fomo-l10n repository. Translations are happening in Pontoon, in multiple projects: Foundation website, *Privacy Not Included and Mozilla Festival.

The latest source strings are regularly exposed to Pontoon by a Localization PM using the following process:

Initial setup:

  • Clone the fomo-l10n repository locally.
  • Set the LOCAL_PATH_TO_L10N_REPO variable in your .env file. Use the absolute path to your copy of the fomo-l10n repository and include the trailing slash. E.g. LOCAL_PATH_TO_L10N_REPO=/Users/username/Documents/GitHub/fomo-l10n/

Exposing latest source strings:

  • Make sure your local repositories of fomo-l10n and foundation.mozilla.org are matching the latest revision from master.
  • Run inv docker-makemessages from your foundation.mozilla.org repository.
  • Files should have been updated in your fomo-l10n repository. You can now create a pull-request.

Contributing

We love contributors, but the team maintaining this project is small and not structured to significantly support new and inexperienced contributors. If there's an unassigned issue that catches your eye, feel free to open a PR for it, but keep in mind our support will be limited. We usually don't have the capacity to walk you through the process of spinning up the project, opening a PR or describing what the solution to the issue could be.