Helper Commands for Developing¶
Note
We assume by this point you have installed the project, checked the setup is working (see Step 9: Check Project Setup Works), and also have a basic understanding of the project structure.
The CS Unplugged project uses many systems (Django, Docker, Gulp, etc) to run, so we have written a script for running groups of commands for running the system while developing.
The script is called dev
and can be found in the cs-unplugged
folder of the repository.
To run this script, open a terminal window in the directory and enter the following command (you don’t need to enter the $
character, this shows the start of your terminal prompt):
$ ./dev [COMMAND]
Where [COMMAND]
is a word from the list below:
All users of the project (content and technical developers) should become familiar with the following commands:
build
¶
Running ./dev build
will build or rebuild the Docker images that are required for the CS Unplugged system.
createsuperuser
¶
Running ./dev createsuperuser
runs the Django createsuperuser
command to create a superuser account.
This is required to access the Django admin interface.
collect_static
¶
Running ./dev collect_static
runs the Django collectstatic
command to collect static files.
It will copy files under the static/
folder into the staticfiles/
folder.
create_lesson_pdfs
¶
Running ./dev create_lesson_pdfs
runs the Django create_lesson_pdfs
command.
This will create PDF files for each lesson that are accessible through the website.
end
¶
Running ./dev end
will stop any containers which are currently running, this usually takes 10 to 20 seconds.
exec
¶
Running ./dev exec [CONTAINER] [COMMAND]
will run the given command in the given Docker container.
For example, to run ./manage.py loadactivities
in the Django Docker container, enter:
$ ./dev exec django ./manage.py loadactivities
help
¶
Running ./dev help
displays brief help text for the script.
More details for each command can be found on this page.
logs
¶
Running ./dev logs
will display the logs for the running systems.
The output is for all logs until the time the command was run, therefore successive calls may display new logs.
To follow logs as they output, enter docker compose logs --follow
.
makemessages
¶
Running ./dev makemessages
runs the Django makemessages
command.
This will create message files where each message file represents a single language.
Message files contain all available translation strings and how they should be represented in the given language.
makemigrations
¶
Running ./dev makemigrations
runs the Django makemigrations
command to create migration files.
make_resources
¶
Running ./dev make_resources
runs the Django makeresources
command.
This will create resource files for each resource and puts them in build/resources/
.
make_resource_thumbnails
¶
Running ./dev make_resource_thumbnails
runs the Django makeresourcethumbnails
command.
This will create thumbnail images for each resource and puts them in build/img/resources/{resource}/thumbnails/{language}
.
migrate
¶
Running ./dev migrate
runs the Django migrate
command to apply migration files.
reboot_django
¶
Running ./dev reboot_django
will rebuild the Django Docker container.
rebuid_search_indexes
¶
Running ./dev rebuild_search_indexes
runs the Django rebuild_search_indexes
command.
This will rebuild the search indexes for the website.
restart
¶
Running ./dev restart
is a shortcut for running:
./dev end
./dev start
More details for each command can be found on this page.
start
¶
Running ./dev start
starts the development environment.
It performs the following tasks:
Build system Docker images if required (see below)
Start the Django website system
Start the Nginx server to display the website and static files
Start the database server
When you run this command for the first time on a computer it will also run ./dev build
to build the system Docker images.
This can take some time, roughly 15 to 30 minutes, depending on your computer and internet speed.
Images are only required to be built once, unless the image specifications change (you can rebuild the images with ./dev build
).
Once the images are built, the script will run these images in containers.
Once the development environment is operational, run the ./dev update
command to load the CS Unplugged content.
static
¶
Running ./dev static
runs the commands for generating the static files for the website.
If changes are made to the static files (for example, a new image is added) when the system is running, this command needs to be entered to view the new files on the website.
style
¶
Running ./dev style
will run the flake8
and pydocstyle
commands to check the style of the project.
If the output is 0
for a check, then there are zero errors.
test_backwards
¶
Running ./dev test_backwards
will run the test suite in reverse.
This is useful to check if any tests are influencing the result of each other.
test_coverage
¶
Running ./dev test_coverage
will display a table detailing test code coverage, from the report generated by ./dev test
.
test_specific
¶
Running ./dev test_specific [MODULE_PATH]
will run a specific test module.
For example, running ./dev test_specific tests.resources.views.test_index_view
will only run the tests for checking the index view of the resources application.
test_suite
¶
Running ./dev test_suite
will run the test suite, and create a report detailing test code coverage.
The code coverage report can be displayed by running ./dev test_coverage
.
update
¶
Running ./dev update
performs the following tasks:
Update the database with the required structure (known as the schema)
Load the CS Unplugged content into the database
Create the required static files
Once the script has performed all these tasks, the script will let you know the website is ready.
Open your preferred web browser to the URL cs-unplugged.localhost
to view the website.
In more detail, ./dev update
runs the Django makemigratations
and migrate
commands for updating the database schema, and then runs the custom updatedata
command to load the topics content into the database.
It also runs the static
command to generate static files.
If changes are made to the topics content when the system is running, this command needs to be run to view the new changes on the website.
updatedata
¶
Running ./dev update_data
runs the custom update_data
command to load the topics content into the database.
update_static
¶
Running ./dev update_static
runs ./dev static
to build all the static files.
Then runs the Django collectstatic
command to copy all static files into the staticfiles
directory.
You now know the basic commands for using the CS Unplugged system. You are now ready to tackle the documentation for the area you wish to contribute on. Head back to the documentation homepage and choose the documentation related to the task you wish to contribute to.