Giter Club home page Giter Club logo

djangoproject.com's Introduction

djangoproject.com source code

image

image

To run locally, do the usual:

  1. Create a virtualenv
  2. Install dependencies:

    pip install -r requirements/dev.txt

    Alternatively use the make task:

    make install
  3. Create a 'secrets.json' file in a folder named 'conf' in the directory above your cloned repo, containing something like:

    { "secret_key": "xyz",
      "superfeedr_creds": ["[email protected]", "some_string"] }
  4. Create databases:

    createuser -d djangoproject
    createdb -O djangoproject djangoproject
    createuser -d code.djangoproject
    createdb -O code.djangoproject code.djangoproject
  5. Create tables:

    psql -d code.djangoproject < tracdb/trac.sql
    
    ./manage.py migrate
  6. Create a superuser:

    ./manage.py createsuperuser
  7. Populate the www and docs hostnames in the django.contrib.sites app:

    ./manage.py loaddata dev_sites
  8. For docs:

    ./manage.py loaddata doc_releases
    ./manage.py update_docs
  9. For dashboard:

    ./manage.py loaddata dashboard_example_data
    ./manage.py update_metrics
  10. Point the www.djangoproject.dev, docs.djangoproject.dev and dashboard.djangoproject.dev hostnames with your /etc/hosts file to localhost/127.0.0.1. Here's how it could look like:

    127.0.0.1  docs.djangoproject.dev www.djangoproject.dev dashboard.djangoproject.dev

    If you're on Mac OS and don't feel like editing the /etc/hosts file manually, there is a great preference pane called Hosts.prefpane. On Ubuntu there is a built-in network admin GUI to do the same. Remember both require admin priviledges, just like you'd need when editing /etc/hosts with your favorite editor.

  11. Compile the CSS (only the source SCSS files are stored in the repostiory):

    make compile-scss
  12. Finally run the server:

    make run

    This runs both the main site ("www") as well as the docs and dashboard site in the same process. Open http://www.djangoproject.dev:8000/, http://docs.djangoproject.dev:8000/ or http://dashboard.djangoproject.dev:8000/.

Running the tests

We us Travis-CI for continuous testing and GitHub pull request integration. If you're familiar with those systems you should not have any problems writing tests.

Our test results can be found here:

https://travis-ci.org/django/djangoproject.com

For local development don't hesitate to install tox to run the website's test suite.

Then in the root directory (next to the manage.py file) run:

tox

Behind the scenes this will run the usual ./manage.py test management command with a preset list of apps that we want to test as well as flake8 for code quality checks. We collect test coverage data as part of that tox run, to show the result simply run:

coverage report

or for a HTML-based report:

coverage html

(Optional) In case you're using an own virtualenv you can also run the tests manually using the test task of the Makefile. Don't forgot to install the test requirements with the following command first though:

pip install -r requirements/tests.txt

Then run:

make test

or simply the usual test management command:

./manage.py test [list of app labels]

Supported browsers

The goal of the site is to target various levels of browsers, depending on their ability to use the technologies in use on the site, such as HTML5, CSS3, SVG, webfonts.

We're following Mozilla's example when it comes to categorize browser support.

  • Any browser other than IE8 and lower as A grade. Which means everything needs to work on those.
  • IE8 is B grade, meaning that some functionality may be disabled, visual variations are acceptable but the content must work nevertheless.
  • IE below 8 is not supported.
  • Mobile browsers should be considered B grade as well. Mobile Safari, Firefox on Android and the Android Browser should support the responsive styles as much as possible but some degredation can't be prevented due to the limited screen size and other platform restrictions.

File locations

Static files such as CSS, JavaScript or image files can be found in the djangoproject/static subdirectory.

Templates can be found in the djangoproject/templates subdirectory.

Styles

CSS is written in Scss and compiled via Libsass.

Run the following to compile the Scss files to CSS:

make compile-scss-debug

Alternatively you can also run the following command in a separate shell to continuously watch for changes to the Scss files and automatically compile to CSS:

make watch-scss

Running all at once

Optionally you can use a tool like Foreman to run all process at once:

This is great during development. Assuming you're using Foreman simply run:

foreman start

If you just want to run one of the processes defined above use the run subcommand like so:

foreman run web

That'll just run the www server.

Check out the Procfile file for all the process names.

JavaScript libraries

This project uses Bower for managing JS library depedencies. See its documentation for how to use it. Here's the gist:

To update any of the dependencies, edit the bower.json file accordingly and then run bower install to download the appropriate files to the static directory. Commit the downloaded files to git (vendoring).

In case you want to use the documentation search you have to install Elasticsearch locally and start it on port 9200 (the default). See the official Elasticsearch docs for how to set it up.

When running ./manage.py update_docs to build all documents it will also automatically index every document it builds in the search engine as well. In case you've already built the documents and would like to reindex the search index run the command:

./manage.py update_index

This is also the right command to run when you work on the search feature itself. You can pass the -d option to try to drop the search index first before indexing all the documents.

djangoproject.com's People

Contributors

aaugustin avatar adrianholovaty avatar alex avatar andrevvm avatar apollo13 avatar asendecka avatar bmispelon avatar brutasse avatar carljm avatar claudep avatar coderanger avatar evildmp avatar freakboy3742 avatar idan avatar jacobian avatar jezdez avatar jphalip avatar justinabrahms avatar mjtamlyn avatar mtrythall avatar oinopion avatar olasitarska avatar paparent avatar ptone avatar relekang avatar rmecham avatar spookylukey avatar timgraham avatar treyhunner avatar ubernostrum avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.