├── blog ├── __init__.py ├── migrations │ ├── __init__.py │ ├── 0003_activate_existing_entries.py │ ├── 0002_auto__add_field_entry_is_active.py │ ├── 0005_copy_entry_summary_and_body_to_html.py │ ├── 0007_existing_entries_are_raw_html.py │ ├── 0008_auto__del_field_entry_use_raw_html.py │ ├── 0006_auto__add_field_entry_use_raw_html.py │ ├── 0009_auto__add_field_entry_content_format.py │ ├── 0001_initial.py │ └── 0004_auto__add_field_entry_summary_html__add_field_entry_body_html.py ├── templatetags │ ├── __init__.py │ └── weblog.py ├── sitemaps.py ├── feeds.py ├── admin.py ├── urls.py ├── views.py └── models.py ├── cla ├── __init__.py ├── migrations │ └── __init__.py └── admin.py ├── contact ├── models.py ├── __init__.py ├── views.py ├── urls.py ├── tests.py └── forms.py ├── docs ├── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ └── __init__.py ├── migrations │ ├── __init__.py │ ├── 0003_fix_document_model.py │ ├── 0001_initial.py │ ├── 0002_add_document_model.py │ ├── 0004_add_git_support.py │ └── 0005_add_unicity_constaints.py ├── templatetags │ ├── __init__.py │ └── docs.py ├── search_sites.py ├── context_processors.py ├── admin.py ├── templates │ └── docs │ │ ├── index.html │ │ ├── search_form.html │ │ ├── py-modindex.html │ │ ├── genindex.html │ │ └── search.html ├── sitemaps.py ├── utils.py ├── search_indexes.py ├── urls.py ├── tests.py ├── forms.py ├── fixtures │ ├── doc_test_fixtures.json │ └── doc_releases.json └── models.py ├── legacy ├── __init__.py ├── models.py ├── fixtures │ ├── redirects-downloads.json.gz │ ├── flatpages-0.9x-documentation.json.gz │ └── redirects-0.9x-documentation.json.gz ├── views.py ├── tests.py └── urls.py ├── svntogit ├── models.py ├── __init__.py ├── urls.py ├── views.py └── tests.py ├── tracdb ├── __init__.py ├── migrations │ ├── __init__.py │ ├── 0001_initial.py │ └── 0002_bouncing_tickets_view.py ├── urls.py ├── db_router.py ├── views.py └── stats.py ├── accounts ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── profile_urls.py ├── urls.py ├── forms.py └── views.py ├── aggregator ├── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── update_subscriptions.py │ │ └── send_pending_approval_email.py ├── migrations │ ├── __init__.py │ └── 0002_rename_tables.py ├── utils.py ├── forms.py ├── urls.py ├── admin.py ├── feeds.py ├── tests.py └── views.py ├── django_docs ├── __init__.py ├── wsgi.py ├── urls.py └── settings.py ├── django_www ├── __init__.py ├── wsgi.py └── urls.py ├── releases ├── __init__.py ├── migrations │ ├── __init__.py │ ├── 0002_auto__chg_field_release_date.py │ ├── 0001_initial.py │ ├── 0004_auto__add_field_release_is_lts.py │ └── 0003_auto__add_fields_release_tuple.py ├── context_processors.py ├── urls.py ├── admin.py ├── tests.py └── views.py ├── static ├── css │ ├── weblog.css │ ├── community.css │ ├── download.css │ ├── homepage.css │ ├── documentation.css │ ├── print.css │ ├── docs │ │ ├── docs.css │ │ └── index.css │ └── pygments.css ├── robots.txt ├── favicon.ico └── img │ ├── site │ ├── mt.png │ ├── bbd_bg.gif │ ├── bbd_code.gif │ ├── bbdsm_bg.gif │ ├── hdr_logo.gif │ ├── nav_bg.gif │ ├── bbd_weblog.gif │ ├── bbdsm_bg.gif.1 │ ├── invisible.gif │ ├── bbd_blogroll.gif │ ├── bbd_community.gif │ ├── bbd_download.gif │ ├── bbd_homepage.gif │ ├── bbd_overview.gif │ ├── somerights20.png │ ├── arrow-head-left.gif │ ├── djangoapi-logo.gif │ ├── hdr_meetdjango.gif │ ├── screencast-back.gif │ ├── screencast-next.gif │ ├── bbd_documentation.gif │ ├── download_bg-left.gif │ └── download_bg-right.gif │ ├── badges │ ├── djangomade124x25.gif │ ├── djangosite100x25.gif │ ├── djangosite124x25.gif │ ├── djangosite80x15.gif │ ├── djangowish126x70.gif │ ├── djangojoint107x25.gif │ ├── djangodonated126x54.gif │ ├── djangomade124x25_grey.gif │ ├── djangopowered126x54.gif │ ├── djangoproject120x24.gif │ ├── djangoproject120x25.gif │ ├── djangosite100x25_grey.gif │ ├── djangosite80x15_grey.gif │ ├── djangosponsor113x25.gif │ ├── djangowish126x70_grey.gif │ ├── djangojoint107x25_grey.gif │ ├── djangodonated126x54_grey.png │ ├── djangopowered126x54_grey.gif │ ├── djangoproject120x25_grey.gif │ └── djangosponsor113x25_grey.gif │ ├── desktops │ ├── desktop-43_t.jpg │ ├── desktop-wide_t.jpg │ ├── djangodesktop-800x600.jpg │ ├── djangodesktop-1024x768.jpg │ ├── djangodesktop-1152x864.jpg │ ├── djangodesktop-1280x1024.jpg │ ├── djangodesktop-1600x1200.jpg │ └── djangodesktop-1680x1050.jpg │ ├── doc │ └── icons │ │ ├── docicons-note.gif │ │ ├── docicons-warning.png │ │ ├── docicons-philosophy.gif │ │ └── docicons-behindscenes.gif │ └── logos │ ├── django-logo-negative.png │ ├── django-logo-positive.png │ ├── django-logo-positive.svg │ └── django-logo-negative.svg ├── templates ├── feeds │ ├── community_description.html │ └── community_title.html ├── registration │ ├── activation_email_subject.txt │ ├── base.html │ ├── activation_complete.html │ ├── logout.html │ ├── registration_complete.html │ ├── activate.html │ ├── activation_email.txt │ ├── password_reset_email.html │ ├── login.html │ └── registration_form.html ├── flatfiles │ ├── default.html │ └── overview.html ├── flatpages │ ├── code.html │ ├── default.html │ ├── community.html │ ├── snakesandrubies.html │ └── foundation.html ├── aggregator │ ├── denied.html │ ├── delete-confirm.html │ ├── my-feeds.html │ ├── edit-feed.html │ ├── feeditem_list.html │ └── index.html ├── blog │ ├── month_links_snippet.html │ ├── entry_snippet.html │ ├── entry_detail.html │ ├── entry_archive_year.html │ ├── entry_archive.html │ ├── entry_archive_day.html │ └── entry_archive_month.html ├── base_blogroll.html ├── contact │ ├── coc.html │ ├── sent.html │ ├── coc_form.html │ └── foundation.html ├── base_docs.html ├── base_code.html ├── base_2col.html ├── 500.html ├── 404.html ├── log_changelog.cs ├── 410.html ├── base_3col.html ├── base_weblog.html ├── tracdb │ └── bouncing_tickets.html ├── conduct │ ├── base.html │ └── changes.html ├── accounts │ ├── edit_profile.html │ └── user_profile.html ├── donate_thanks.html ├── query_rss.cs ├── base_foundation.html ├── base_community.html └── base.html ├── django_ux ├── bg.png ├── idan.jpg ├── julien.jpg ├── djangoux.png ├── index.html └── base.css ├── local-requirements.txt ├── .gitignore ├── TODO ├── manage.py ├── deploy-requirements.txt ├── README.txt └── fabfile.py /blog/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cla/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contact/models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /legacy/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /legacy/models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /svntogit/models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tracdb/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /accounts/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /aggregator/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contact/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /django_docs/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /django_www/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /releases/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /svntogit/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blog/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cla/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /accounts/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /aggregator/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /aggregator/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blog/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /releases/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tracdb/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /aggregator/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/css/weblog.css: -------------------------------------------------------------------------------- 1 | @import url(base.css); -------------------------------------------------------------------------------- /static/css/community.css: -------------------------------------------------------------------------------- 1 | @import url(base.css); -------------------------------------------------------------------------------- /static/css/download.css: -------------------------------------------------------------------------------- 1 | @import url(base.css); -------------------------------------------------------------------------------- /docs/search_sites.py: -------------------------------------------------------------------------------- 1 | import haystack; haystack.autodiscover() -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | user-agent: AhrefsBot 2 | disallow: / 3 | -------------------------------------------------------------------------------- /templates/feeds/community_description.html: -------------------------------------------------------------------------------- 1 | {{ obj.summary|safe }} -------------------------------------------------------------------------------- /templates/feeds/community_title.html: -------------------------------------------------------------------------------- 1 | {{ obj.feed.title }}: {{ obj.title }} -------------------------------------------------------------------------------- /django_ux/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/django_ux/bg.png -------------------------------------------------------------------------------- /django_ux/idan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/django_ux/idan.jpg -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/favicon.ico -------------------------------------------------------------------------------- /templates/registration/activation_email_subject.txt: -------------------------------------------------------------------------------- 1 | Activate your djangoproject.com account 2 | -------------------------------------------------------------------------------- /django_ux/julien.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/django_ux/julien.jpg -------------------------------------------------------------------------------- /django_ux/djangoux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/django_ux/djangoux.png -------------------------------------------------------------------------------- /static/img/site/mt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/mt.png -------------------------------------------------------------------------------- /static/img/site/bbd_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_bg.gif -------------------------------------------------------------------------------- /static/img/site/bbd_code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_code.gif -------------------------------------------------------------------------------- /static/img/site/bbdsm_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbdsm_bg.gif -------------------------------------------------------------------------------- /static/img/site/hdr_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/hdr_logo.gif -------------------------------------------------------------------------------- /static/img/site/nav_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/nav_bg.gif -------------------------------------------------------------------------------- /static/img/site/bbd_weblog.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_weblog.gif -------------------------------------------------------------------------------- /static/img/site/bbdsm_bg.gif.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbdsm_bg.gif.1 -------------------------------------------------------------------------------- /static/img/site/invisible.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/invisible.gif -------------------------------------------------------------------------------- /static/img/site/bbd_blogroll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_blogroll.gif -------------------------------------------------------------------------------- /static/img/site/bbd_community.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_community.gif -------------------------------------------------------------------------------- /static/img/site/bbd_download.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_download.gif -------------------------------------------------------------------------------- /static/img/site/bbd_homepage.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_homepage.gif -------------------------------------------------------------------------------- /static/img/site/bbd_overview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_overview.gif -------------------------------------------------------------------------------- /static/img/site/somerights20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/somerights20.png -------------------------------------------------------------------------------- /static/img/site/arrow-head-left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/arrow-head-left.gif -------------------------------------------------------------------------------- /static/img/site/djangoapi-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/djangoapi-logo.gif -------------------------------------------------------------------------------- /static/img/site/hdr_meetdjango.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/hdr_meetdjango.gif -------------------------------------------------------------------------------- /static/img/site/screencast-back.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/screencast-back.gif -------------------------------------------------------------------------------- /static/img/site/screencast-next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/screencast-next.gif -------------------------------------------------------------------------------- /local-requirements.txt: -------------------------------------------------------------------------------- 1 | # Requirements to manage the site locally and run the fabfile. 2 | 3 | Unipath 4 | Fabric 5 | whoosh < 2.5 6 | -------------------------------------------------------------------------------- /static/img/badges/djangomade124x25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangomade124x25.gif -------------------------------------------------------------------------------- /static/img/badges/djangosite100x25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosite100x25.gif -------------------------------------------------------------------------------- /static/img/badges/djangosite124x25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosite124x25.gif -------------------------------------------------------------------------------- /static/img/badges/djangosite80x15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosite80x15.gif -------------------------------------------------------------------------------- /static/img/badges/djangowish126x70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangowish126x70.gif -------------------------------------------------------------------------------- /static/img/desktops/desktop-43_t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/desktop-43_t.jpg -------------------------------------------------------------------------------- /static/img/desktops/desktop-wide_t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/desktop-wide_t.jpg -------------------------------------------------------------------------------- /static/img/doc/icons/docicons-note.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/doc/icons/docicons-note.gif -------------------------------------------------------------------------------- /static/img/site/bbd_documentation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/bbd_documentation.gif -------------------------------------------------------------------------------- /static/img/site/download_bg-left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/download_bg-left.gif -------------------------------------------------------------------------------- /static/img/site/download_bg-right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/site/download_bg-right.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.db 3 | local_settings.py 4 | djangodocs 5 | static_root 6 | djangodocs.index 7 | docs/locale/*/LC_MESSAGES/django.mo 8 | -------------------------------------------------------------------------------- /static/img/badges/djangojoint107x25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangojoint107x25.gif -------------------------------------------------------------------------------- /legacy/fixtures/redirects-downloads.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/legacy/fixtures/redirects-downloads.json.gz -------------------------------------------------------------------------------- /static/img/badges/djangodonated126x54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangodonated126x54.gif -------------------------------------------------------------------------------- /static/img/badges/djangomade124x25_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangomade124x25_grey.gif -------------------------------------------------------------------------------- /static/img/badges/djangopowered126x54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangopowered126x54.gif -------------------------------------------------------------------------------- /static/img/badges/djangoproject120x24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangoproject120x24.gif -------------------------------------------------------------------------------- /static/img/badges/djangoproject120x25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangoproject120x25.gif -------------------------------------------------------------------------------- /static/img/badges/djangosite100x25_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosite100x25_grey.gif -------------------------------------------------------------------------------- /static/img/badges/djangosite80x15_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosite80x15_grey.gif -------------------------------------------------------------------------------- /static/img/badges/djangosponsor113x25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosponsor113x25.gif -------------------------------------------------------------------------------- /static/img/badges/djangowish126x70_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangowish126x70_grey.gif -------------------------------------------------------------------------------- /static/img/doc/icons/docicons-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/doc/icons/docicons-warning.png -------------------------------------------------------------------------------- /static/img/logos/django-logo-negative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/logos/django-logo-negative.png -------------------------------------------------------------------------------- /static/img/logos/django-logo-positive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/logos/django-logo-positive.png -------------------------------------------------------------------------------- /static/img/badges/djangojoint107x25_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangojoint107x25_grey.gif -------------------------------------------------------------------------------- /static/img/desktops/djangodesktop-800x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/djangodesktop-800x600.jpg -------------------------------------------------------------------------------- /static/img/doc/icons/docicons-philosophy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/doc/icons/docicons-philosophy.gif -------------------------------------------------------------------------------- /static/img/badges/djangodonated126x54_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangodonated126x54_grey.png -------------------------------------------------------------------------------- /static/img/badges/djangopowered126x54_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangopowered126x54_grey.gif -------------------------------------------------------------------------------- /static/img/badges/djangoproject120x25_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangoproject120x25_grey.gif -------------------------------------------------------------------------------- /static/img/badges/djangosponsor113x25_grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/badges/djangosponsor113x25_grey.gif -------------------------------------------------------------------------------- /static/img/desktops/djangodesktop-1024x768.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/djangodesktop-1024x768.jpg -------------------------------------------------------------------------------- /static/img/desktops/djangodesktop-1152x864.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/djangodesktop-1152x864.jpg -------------------------------------------------------------------------------- /static/img/desktops/djangodesktop-1280x1024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/djangodesktop-1280x1024.jpg -------------------------------------------------------------------------------- /static/img/desktops/djangodesktop-1600x1200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/djangodesktop-1600x1200.jpg -------------------------------------------------------------------------------- /static/img/desktops/djangodesktop-1680x1050.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/desktops/djangodesktop-1680x1050.jpg -------------------------------------------------------------------------------- /static/img/doc/icons/docicons-behindscenes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/static/img/doc/icons/docicons-behindscenes.gif -------------------------------------------------------------------------------- /legacy/fixtures/flatpages-0.9x-documentation.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/legacy/fixtures/flatpages-0.9x-documentation.json.gz -------------------------------------------------------------------------------- /legacy/fixtures/redirects-0.9x-documentation.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramiro/djangoproject.com/master/legacy/fixtures/redirects-0.9x-documentation.json.gz -------------------------------------------------------------------------------- /templates/registration/base.html: -------------------------------------------------------------------------------- 1 | {% extends "base_2col.html" %} 2 | {% block sectionid %}community{% endblock %} 3 | {% block billboard %}
Thanks for signing up! Now you can log in.
8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /docs/templates/docs/index.html: -------------------------------------------------------------------------------- 1 | {% extends "docs/doc.html" %} 2 | {% load staticfiles %} 3 | 4 | {% block extrahead %} 5 | {{ block.super }} 6 | 7 | {% endblock %} 8 | 9 | {% block toc-wrapper %}{% endblock %} 10 | -------------------------------------------------------------------------------- /templates/registration/logout.html: -------------------------------------------------------------------------------- 1 | {% extends "registration/base.html" %} 2 | 3 | {% block title %}Logged out{% endblock %} 4 | 5 | {% block content %} 6 |Thanks for stopping by; when you come back, don't forget to log in again.
8 | {% endblock %} -------------------------------------------------------------------------------- /static/css/homepage.css: -------------------------------------------------------------------------------- 1 | @import url(base.css); 2 | 3 | .button-download { display:block; background:url(../img/site/download_bg-left.gif) no-repeat; } 4 | .button-download a { height:18px; color:white; display:block; white-space:nowrap; background:url(../img/site/download_bg-right.gif) top right no-repeat; padding:6px 12px; } 5 | -------------------------------------------------------------------------------- /accounts/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.contrib.auth.models import User 3 | 4 | class Profile(models.Model): 5 | user = models.OneToOneField(User) 6 | name = models.CharField(max_length=200, blank=True) 7 | 8 | def __unicode__(self): 9 | return self.name or unicode(self.user) 10 | -------------------------------------------------------------------------------- /legacy/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | class LegacyTests(TestCase): 4 | urls = 'legacy.urls' 5 | 6 | # Just a smoke test to ensure the URLconf works 7 | 8 | def test_gone(self): 9 | response = self.client.get('/comments/') 10 | self.assertEquals(response.status_code, 410) 11 | -------------------------------------------------------------------------------- /templates/base_code.html: -------------------------------------------------------------------------------- 1 | {% extends "base_2col.html" %} 2 | {% load staticfiles %} 3 | 4 | {% block sectionid %}code{% endblock %} 5 | 6 | {% block title %}Code{% endblock %} 7 | 8 | {% block billboard %}by {{ e.author }} on {{ e.pub_date|date:"M. j, Y" }}
4 | {{ e.summary_html|safe }} 5 | 6 | {% endfor %} 7 | -------------------------------------------------------------------------------- /templates/registration/registration_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "registration/base.html" %} 2 | 3 | {% block title %}Registration complete{% endblock %} 4 | 5 | {% block content %} 6 |An activation link has been sent to the email address you supplied, along with instructions for activating your account.
8 | {% endblock %} -------------------------------------------------------------------------------- /accounts/profile_urls.py: -------------------------------------------------------------------------------- 1 | """ 2 | URLs for the profile pages (under ~) 3 | """ 4 | 5 | from __future__ import absolute_import 6 | from django.conf.urls import patterns, url, include 7 | from . import views as account_views 8 | 9 | urlpatterns = patterns('', 10 | r'^(?PPosted by {{ object.author }} on {{ object.pub_date|date:"F j, Y" }}
9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /templates/base_2col.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block columnwrap %} 4 |We're sorry, but the requested page is currently unavailable.
10 | 11 |We're messing around with things internally, and the server had a bit of a hiccup.
12 | 13 |Please try again later.
14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base_2col.html" %} 2 | 3 | {% block title %}Page not found{% endblock %} 4 | 5 | {% block content %} 6 | 7 |Looks like you followed a bad link. If you think it's our fault, please let us know.
10 | 11 |Here's a link to the homepage. You know, just in case.
12 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /contact/urls.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from django.conf.urls import patterns, url 4 | from django.views.generic import TemplateView 5 | 6 | from .views import ContactFoundation 7 | 8 | urlpatterns = patterns('', 9 | url(r'^foundation/$', ContactFoundation.as_view(), name='contact_foundation'), 10 | url(r'^sent/$', TemplateView.as_view(template_name='contact/sent.html'), name='contact_form_sent'), 11 | ) 12 | -------------------------------------------------------------------------------- /templates/blog/entry_archive.html: -------------------------------------------------------------------------------- 1 | {% extends "base_weblog.html" %} 2 | 3 | {% block content %} 4 | 5 |Posted by {{ object.author }} on {{ object.pub_date|date:"F j, Y" }}
11 | {% endfor %} 12 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /django_docs/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for django_docs project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_docs.settings") 12 | 13 | from django.core.wsgi import get_wsgi_application 14 | application = get_wsgi_application() 15 | -------------------------------------------------------------------------------- /docs/templates/docs/search_form.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | 17 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | if '--docs' in sys.argv: 7 | settings_module = 'django_docs.settings' 8 | sys.argv.remove('--docs') 9 | else: 10 | settings_module = 'django_www.settings' 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_module) 12 | 13 | from django.core.management import execute_from_command_line 14 | execute_from_command_line(sys.argv) 15 | -------------------------------------------------------------------------------- /templates/blog/entry_archive_day.html: -------------------------------------------------------------------------------- 1 | {% extends "base_weblog.html" %} 2 | 3 | {% block title %}{{ day|date:"F j" }} | Weblog{% endblock %} 4 | 5 | {% block content %} 6 | 7 |{{ object.pub_date|date:"F j, Y" }}
12 | {{ object.body_html|safe }} 13 | 14 | {% endfor %} 15 | 16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /templates/blog/entry_archive_month.html: -------------------------------------------------------------------------------- 1 | {% extends "base_weblog.html" %} 2 | 3 | {% block title %}{{ month|date:"F" }} | Weblog{% endblock %} 4 | 5 | {% block content %} 6 | 7 |{{ object.pub_date|date:"F j, Y" }}
12 | {{ object.body_html|safe }} 13 | 14 | {% endfor %} 15 | 16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /templates/log_changelog.cs: -------------------------------------------------------------------------------- 1 | # 2 | # ChangeLog for 3 | # 4 | # Generated by Trac 5 | # 6 | # 7 | 8 | [] 10 | 11 | * : 13 | 14 | 15 | -------------------------------------------------------------------------------- /templates/registration/activate.html: -------------------------------------------------------------------------------- 1 | {% extends "registration/base.html" %} 2 | 3 | {% block title %}Account activation failed{% endblock %} 4 | 5 | {% block content %} 6 |Sorry, it didn't work. Either your activation link was incorrect, or 9 | the activation key for your account has expired; activation keys are 10 | only valid for {{ expiration_days|apnumber }} days after 11 | registration.
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /templates/410.html: -------------------------------------------------------------------------------- 1 | {% extends "base_2col.html" %} 2 | 3 | {% block title %}Page removed{% endblock %} 4 | 5 | {% block content %} 6 | 7 |Sorry, we've removed some of parts of the site that were completely out 10 | of date. In most cases, that content has been moved into 11 | the new documentation site.
12 | 13 |Here's a link to the homepage. You know, just in case.
14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /templates/aggregator/delete-confirm.html: -------------------------------------------------------------------------------- 1 | {% extends "base_community.html" %} 2 | 3 | {% block content %} 4 |9 | All items in the aggregator will be deleted, too. Because Jacob's 10 | lazy, there's no "undo"! 11 |
12 | 13 | 17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /django_docs/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import patterns, url, include 2 | from django.http import HttpResponse 3 | 4 | from docs.sitemaps import DocsSitemap 5 | from docs.urls import urlpatterns as docs_urlpatterns 6 | 7 | sitemaps = {'docs': DocsSitemap} 8 | 9 | urlpatterns = docs_urlpatterns + patterns('', 10 | url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), 11 | url(r'^google79eabba6bf6fd6d3\.html$', lambda req: HttpResponse('google-site-verification: google79eabba6bf6fd6d3.html')), 12 | ) 13 | -------------------------------------------------------------------------------- /django_www/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for django_www project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_www.settings") 12 | 13 | from django.core.wsgi import get_wsgi_application 14 | application = get_wsgi_application() 15 | 16 | from django.contrib.auth.handlers.modwsgi import check_password, groups_for_user 17 | -------------------------------------------------------------------------------- /svntogit/views.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from django.http import HttpResponsePermanentRedirect, Http404 4 | from .mapping import svn_to_git 5 | 6 | def redirect_to_github(request, svn_revision): 7 | try: 8 | git_changeset = svn_to_git[int(svn_revision)] 9 | except IndexError: 10 | git_changeset = None 11 | if git_changeset is None: 12 | raise Http404 13 | github_url = 'https://github.com/django/django/commit/%s' % git_changeset 14 | return HttpResponsePermanentRedirect(github_url) 15 | 16 | -------------------------------------------------------------------------------- /templates/registration/activation_email.txt: -------------------------------------------------------------------------------- 1 | {% load humanize %} 2 | Someone, hopefully you, signed up for a new account at djangoproject.com using this email address. If it was you, and you'd like to activate and use your account, click the link below or copy and paste it into your web browser's address bar: 3 | 4 | http://www.djangoproject.com/accounts/activate/{{ activation_key }}/ 5 | 6 | If you didn't request this, you don't need to do anything; you won't receive any more email from us, and the account will expire automatically in {{ expiration_days|apnumber }} days. 7 | -------------------------------------------------------------------------------- /templates/base_3col.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block columnwrap %} 4 |9 | Your mail will be read by a real, live human being. We can't 10 | guarantee when or whether you'll get a reply, but your message 11 | will be read, generally within the next couple of days. 12 |
13 |14 | If you're expecting a reply and don't get one, please feel free 15 | to send a reminder. Please wait a few days, however, unless 16 | it's an emergency. 17 |
18 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/password_reset_email.html: -------------------------------------------------------------------------------- 1 | {% load i18n %}{% autoescape off %} 2 | {% trans "You're receiving this e-mail because you requested a password reset" %} 3 | {% blocktrans %}for your user account at {{ site_name }}{% endblocktrans %}. 4 | 5 | {% trans "Please go to the following page and choose a new password:" %} 6 | {% block reset_link %} 7 | {{ protocol }}://{{ domain }}{% url 'auth_password_reset_confirm' uidb36=uid token=token %} 8 | {% endblock %} 9 | {% trans "Your username, in case you've forgotten:" %} {{ user.username }} 10 | 11 | {% trans "Thanks for using our site!" %} 12 | 13 | {% blocktrans %}The {{ site_name }} team{% endblocktrans %} 14 | 15 | {% endautoescape %} 16 | -------------------------------------------------------------------------------- /contact/tests.py: -------------------------------------------------------------------------------- 1 | from django.core import mail 2 | from django.test import TestCase 3 | from django.test.utils import override_settings 4 | 5 | @override_settings(AKISMET_API_KEY='') # Disable Akismet in tests 6 | class ContactFormTests(TestCase): 7 | def test_foundation_contact(self): 8 | data = { 9 | 'name': 'A. Random Hacker', 10 | 'email': 'a.random@example.com', 11 | 'message_subject': 'Hello', 12 | 'body': 'Hello, World!' 13 | } 14 | resp = self.client.post('/contact/foundation/', data) 15 | self.assertRedirects(resp, '/contact/sent/') 16 | self.assertEqual(mail.outbox[-1].subject, '[Contact form] Hello') 17 | -------------------------------------------------------------------------------- /aggregator/forms.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from django import forms 4 | from .models import Feed 5 | 6 | class FeedModelForm(forms.ModelForm): 7 | title = forms.CharField(max_length=250, 8 | help_text="title of the resource / blog.") 9 | feed_url = forms.URLField(label='Feed URL', 10 | help_text="link to the RSS/Atom feed. Please only use Django-specific feeds.") 11 | public_url = forms.URLField(label='Public URL', 12 | help_text="link to main page (i.e. blog homepage)") 13 | 14 | class Meta: 15 | model = Feed 16 | exclude = ('feed_type', 'owner', 'approval_status') 17 | -------------------------------------------------------------------------------- /cla/admin.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | from django.contrib import admin 3 | from .models import ICLA, CCLA, CCLADesignee 4 | 5 | class ICLAAdmin(admin.ModelAdmin): 6 | list_display = ['__unicode__', 'user', 'date_signed'] 7 | raw_id_fields = ['user'] 8 | ordering = ['-date_signed'] 9 | 10 | class DesigneeInline(admin.StackedInline): 11 | model = CCLADesignee 12 | raw_id_fields = ['user'] 13 | 14 | class CCLAAdmin(admin.ModelAdmin): 15 | list_display = ['company_name', 'contact_name', 'contact_email', 'date_signed'] 16 | ordering = ['-date_signed'] 17 | inlines = [DesigneeInline] 18 | 19 | admin.site.register(ICLA, ICLAAdmin) 20 | admin.site.register(CCLA, CCLAAdmin) 21 | -------------------------------------------------------------------------------- /blog/admin.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from django.contrib import admin 4 | 5 | from .models import Entry 6 | 7 | class EntryAdmin(admin.ModelAdmin): 8 | list_display = ('headline', 'pub_date', 'is_active', 'is_published', 'author') 9 | list_filter = ('is_active',) 10 | exclude = ('summary_html', 'body_html') 11 | prepopulated_fields = {"slug": ("headline",)} 12 | 13 | def formfield_for_dbfield(self, db_field, **kwargs): 14 | formfield = super(EntryAdmin, self).formfield_for_dbfield(db_field, **kwargs) 15 | if db_field.name == 'body': 16 | formfield.widget.attrs['rows'] = 25 17 | return formfield 18 | 19 | admin.site.register(Entry, EntryAdmin) 20 | -------------------------------------------------------------------------------- /svntogit/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | class SvnToGitTests(TestCase): 4 | urls = 'svntogit.urls' 5 | 6 | def test_redirect(self): 7 | response = self.client.get('/1/', follow=False) 8 | target = 'https://github.com/django/django/commit/d6ded0e91b' 9 | self.assertEquals(response.status_code, 301) 10 | self.assertEquals(response['Location'], target) 11 | 12 | def test_redirect_empty_changeset(self): 13 | response = self.client.get('/7/') 14 | self.assertEquals(response.status_code, 404) 15 | 16 | def test_redirect_non_existing_changeset(self): 17 | response = self.client.get('/20000/') 18 | self.assertEquals(response.status_code, 404) 19 | -------------------------------------------------------------------------------- /templates/flatpages/foundation.html: -------------------------------------------------------------------------------- 1 | {% extends "base_foundation.html" %} 2 | 3 | {% block extrahead %} 4 | 16 | {% endblock %} 17 | 18 | {% block title %}{{ flatpage.title }}{% endblock %} 19 | 20 | {% block content %} 21 |{{ feed.feed_url }} — {{ feed.get_approval_status_display }}) —
12 | edit |
13 | delete
14 | | Ticket | 17 |Times reopened | 18 |Last reopened | 19 |
|---|---|---|
| #{{ t.id }}: {{ t.summary|truncatewords:10 }} | 25 |{{ t.times_reopened }} | 26 |{{ t.last_reopen_time|date:"F j, Y" }} | 27 |
Please correct the errors below:
11 | {% endif %} 12 | 13 | 24 | {% endblock %} 25 | 26 | {% block content-related %} 27 |If you don't have an account, you can sign 28 | up for one.
29 |If you forgot your password, you can reset it.
30 | {% endblock %} 31 | -------------------------------------------------------------------------------- /tracdb/migrations/0002_bouncing_tickets_view.py: -------------------------------------------------------------------------------- 1 | from south.db import dbs 2 | from south.v2 import SchemaMigration 3 | 4 | # 5 | # Create a database view for "bouncing" tickets - tickets that change their 6 | # state from closed back to open, possibly a number of times. 7 | # 8 | 9 | class Migration(SchemaMigration): 10 | viewname = "bouncing_tickets" 11 | viewquery = """ 12 | SELECT 13 | ticket.id, 14 | ticket.summary, 15 | COUNT(*) AS times_reopened, 16 | MAX(change.time) AS last_reopen_time 17 | FROM ticket_change AS change 18 | JOIN ticket ON change.ticket = ticket.id 19 | WHERE 20 | change.field = 'status' 21 | AND change.oldvalue = 'closed' 22 | AND change.newvalue != 'closed' 23 | AND ticket.resolution = 'wontfix' 24 | GROUP BY ticket.id, ticket.summary; 25 | """ 26 | 27 | def forwards(self, orm): 28 | db = dbs['trac'] 29 | db.execute("CREATE VIEW %s AS %s" % (self.viewname, self.viewquery)) 30 | db.execute('COMMIT') 31 | 32 | def backwards(self, orm): 33 | db = dbs['trac'] 34 | db.execute("DROP VIEW %s" % self.viewname) 35 | db.execute('COMMIT') 36 | -------------------------------------------------------------------------------- /templates/contact/foundation.html: -------------------------------------------------------------------------------- 1 | {% extends "base_foundation.html" %} 2 | 3 | {% block title %}Contact the Django Software Foundation{% endblock %} 4 | 5 | {% block content %} 6 |16 | All content on this page is licensed under a 17 | Creative Commons 18 | Attribution license. 19 |
20 |
21 |
22 |
23 |
24 |
Posted on {{ item.date_modified|date:"F j, Y" }} at {{ item.date_modified|date:"g:i A" }} by {{ item.feed.title }} RSS
14 |12 | {% for letter, _ in doc.genindexentries %} 13 | {{ letter }} {% if not forloop.last %} |{% endif %} 14 | {% endfor %} 15 |
16 | 17 | 18 | {% for letter, entries in doc.genindexentries %} 19 |Please correct the errors below: {{ form.non_field_errors }}
9 | {% endif %} 10 | 11 |{% highlight result.text with query max_length 200 %}
33 | {% empty %} 34 |We're (mostly) programmers, so we'll track changes to the code of conduct and 11 | associated documents the same way we track changes to code. All changes will 12 | proposed via a pull request to the 13 | djangoproject.com repository 14 | on Github. Changes will be reviewed by the conduct committee first, and then 15 | sent to the the DSF, the Django core team, and the Django community for comment. 16 | We'll hold a comment period of at least one week, and then each group will vote 17 | on the change using its normal process (a board for the DSF, 18 | 19 | a core dev vote for the core team). 20 | Approved changes will be merged, published, and noted below.
21 | 22 |This only applies to material changes; changes that don't effect the intent 23 | (typo fixes, re-wordings, etc.) can be made immediately.
24 | 25 |A complete list of changes can always be found 26 | on Github; 27 | major changes and releases are summarized below.
28 | 29 |Please correct the errors below: {{ form.non_field_errors }}
9 | {% endif %} 10 | 11 |16 | 17 | {% if form.username.errors %} 18 |
{{ form.username.errors.as_text }}
19 | {% endif %} 20 | {{ form.username }} 21 | 22 |23 | 24 | {% if form.email.errors %} 25 |
{{ form.email.errors.as_text }}
26 | {% endif %} 27 | {{ form.email }} 28 | 29 |30 | 31 | {% if form.password1.errors %} 32 |
{{ form.password1.errors.as_text }}
33 | {% endif %} 34 | {{ form.password1 }} 35 | 36 |37 | 38 | {% if form.password2.errors %} 39 |
{{ form.password2.errors.as_text }}
40 | {% endif %} 41 | {{ form.password2 }} 42 | 43 | 44 |Fill out the form to the left (all fields are required), and your 50 | account will be created; you'll be sent an email with instructions on how 51 | to finish your registration.
52 | 53 |We'll only use your email to send you signup instructions. We hate spam 54 | as much as you do.
55 | 56 |This account will let you log into the ticket tracker, claim tickets, 57 | and be exempt from spam filtering.
58 | 59 |Your username can only consist of alphanumeric characters and 60 | underscores and may be up to 30 characters long.
61 | {% endblock %} 62 | -------------------------------------------------------------------------------- /tracdb/stats.py: -------------------------------------------------------------------------------- 1 | """ 2 | Various queries for grabbing interesting user stats from Trac. 3 | """ 4 | 5 | from __future__ import absolute_import 6 | import operator 7 | import django.db 8 | from django.utils.datastructures import SortedDict 9 | from .models import Revision, Ticket, TicketChange, Attachment 10 | 11 | _statfuncs = [] 12 | 13 | def stat(title): 14 | """ 15 | Register a function as a "stat" 16 | 17 | The function should take a username and return a number. 18 | """ 19 | 20 | def _inner(f): 21 | _statfuncs.append(f) 22 | f.title = title 23 | return f 24 | return _inner 25 | 26 | def get_user_stats(username): 27 | stats = SortedDict() 28 | for func in sorted(_statfuncs, key=operator.attrgetter('title')): 29 | stats[func.title] = func(username) 30 | return stats 31 | 32 | @stat('Commits') 33 | def commit_count(username): 34 | return Revision.objects.filter(author=username).count() 35 | 36 | @stat('Tickets closed') 37 | def tickets_closed(username): 38 | # Raw query so that we can do COUNT(DISTINCT ticket). 39 | q = """SELECT COUNT(DISTINCT ticket) FROM ticket_change 40 | WHERE author = %s AND field = 'status' AND newvalue = 'closed';""" 41 | return run_single_value_query(q, username) 42 | 43 | @stat('Tickets opened') 44 | def tickets_opened(username): 45 | return Ticket.objects.filter(reporter=username).count() 46 | 47 | @stat('New tickets reviewed') 48 | def new_tickets_reviewed(username): 49 | # We don't want to de-dup as for tickets_closed: multiple reviews of the 50 | # same ticket should "count" as a review. 51 | qs = TicketChange.objects.filter(author=username, field='stage', oldvalue='Unreviewed') 52 | qs = qs.exclude(newvalue='Unreviewed') 53 | return qs.count() 54 | 55 | @stat('Patches submitted') 56 | def patches_submitted(username): 57 | return Attachment.objects.filter(author=username).count() 58 | 59 | def run_single_value_query(query, *params): 60 | """ 61 | Helper: run a query returning a single value (e.g. a COUNT) and return the value. 62 | """ 63 | c = django.db.connections['trac'].cursor() 64 | c.execute(query, params) 65 | return c.fetchone()[0] 66 | -------------------------------------------------------------------------------- /templates/base_foundation.html: -------------------------------------------------------------------------------- 1 | {% extends "base_community.html" %} 2 | 3 | {% block content-related %} 4 |6 |
Read more about donating to the DSF. 26 | 27 |
dsf-volunteers: The list for volunteering to help with the foundation.
42 |dsf-members: For members of the foundation.
43 | 44 | {% endblock %} 45 | -------------------------------------------------------------------------------- /docs/templatetags/docs.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from django import template 4 | from ..forms import DocSearchForm 5 | from ..models import DocumentRelease 6 | from ..utils import get_doc_root, get_doc_path 7 | 8 | register = template.Library() 9 | 10 | @register.inclusion_tag('docs/search_form.html', takes_context=True) 11 | def search_form(context, search_form_id='sidebar_search'): 12 | request = context['request'] 13 | auto_id = 'id_%s_%%s' % search_form_id 14 | release = DocumentRelease.objects.get(version=context['version'], lang=context['lang']) 15 | return { 16 | 'form': DocSearchForm(request.GET, auto_id=auto_id, default_release=release), 17 | 'search_form_id': search_form_id, 18 | } 19 | 20 | @register.tag 21 | def get_all_doc_versions(parser, token): 22 | """ 23 | Get a list of all versions of this document to link to. 24 | 25 | Usage: {% get_all_doc_versions22 | Need to edit something? Here's how: 23 |
24 |