Skip to content

Commit 0740262

Browse files
committed
Initial move of code.dp.com code out of privacy and into the light.
0 parents  commit 0740262

File tree

18 files changed

+723
-0
lines changed

18 files changed

+723
-0
lines changed

DjangoPlugin/MANIFEST.in

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
recursive-include tracdjangoplugin *
2+
recursive-exclude tracdjangoplugin *.pyc
3+
recursive-exclude tracdjangoplugin *.pyo

DjangoPlugin/setup.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from setuptools import setup
2+
3+
setup(
4+
name='Django Plugin',
5+
version='1.1',
6+
packages=['tracdjangoplugin'],
7+
include_package_data=True,
8+
entry_points = {
9+
'trac.plugins': ['tracdjangoplugin = tracdjangoplugin']
10+
}
11+
)
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
from trac.core import Component, implements
2+
from trac.web.chrome import INavigationContributor
3+
from trac.web.api import IRequestFilter, IRequestHandler
4+
from trac.wiki.web_ui import WikiModule
5+
from trac.util import Markup
6+
7+
8+
class CustomWikiModule(WikiModule):
9+
"""Works in combination with the CustomNavigationBar and replaces
10+
the default wiki module. Has a different logic for active item
11+
handling.
12+
"""
13+
14+
def get_active_navigation_item(self, req):
15+
pagename = req.args.get('page')
16+
if pagename == 'Reports':
17+
return 'custom_reports'
18+
return 'wiki'
19+
20+
21+
class CustomNewTicket(Component):
22+
"""Hide certain options for the new ticket page"""
23+
implements(IRequestFilter, IRequestHandler)
24+
hidden_fields = frozenset(['stage', 'needs_tests', 'needs_docs',
25+
'needs_better_patch'])
26+
27+
def match_request(self, req):
28+
return req.path_info == '/simpleticket'
29+
30+
def process_request(self, req):
31+
req.redirect(req.href.newticket())
32+
33+
def pre_process_request(self, req, handler):
34+
return handler
35+
36+
def post_process_request(self, req, template, data, content_type):
37+
if req.path_info == '/newticket':
38+
simple_interface = 'TICKET_BATCH_MODIFY' not in req.perm
39+
if simple_interface:
40+
data['fields'] = [f for f in data['fields']
41+
if f['name'] not in self.hidden_fields]
42+
data['simple_interface'] = simple_interface
43+
template = 'custom_ticket.html'
44+
return template, data, content_type
45+
46+
47+
class CustomNavigationBar(Component):
48+
"""Implements some more items for the navigation bar."""
49+
implements(INavigationContributor)
50+
51+
def get_active_navigation_item(self, req):
52+
return ''
53+
54+
def get_navigation_items(self, req):
55+
items = []
56+
if req.authname == 'anonymous':
57+
items.append(('metanav', 'register',
58+
Markup('<a href="https://www.djangoproject.com/accounts/register/">Register</a>')))
59+
items.append(('metanav', 'reset_password',
60+
Markup('<a href="https://www.djangoproject.com/accounts/password/reset/">Forgot your password?</a>')))
61+
items.append(('mainnav', 'custom_reports', Markup('<a href="%s">Reports</a>' % req.href.wiki('Reports'))))
62+
return items

fabfile.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from fabric.api import cd, env, puts, sudo, task
2+
from fabric.contrib import files
3+
from unipath import FSPath as Path
4+
5+
env.hosts = ['ve.djangoproject.com']
6+
env.deploy_base = Path('/home/trac')
7+
env.virtualenv = env.deploy_base.child('venv')
8+
env.code_dir = env.deploy_base.child('code.djangoproject.com')
9+
env.git_url = 'git://github.com/django/code.djangoproject.com.git'
10+
env.default_deploy_ref = 'origin/master'
11+
12+
@task
13+
def deploy():
14+
"""
15+
Full deploy.
16+
"""
17+
deploy_trac()
18+
update_dependencies()
19+
deploy_trac_media()
20+
apache("restart")
21+
22+
@task
23+
def deploy_trac(ref=None):
24+
"""
25+
Update trac-env on the servers from Git.
26+
"""
27+
ref = ref or env.default_deploy_ref
28+
puts("Deploying %s" % ref)
29+
if not files.exists(env.code_dir):
30+
sudo('git clone %s %s' % (env.git_url, env.code_dir))
31+
with cd(env.code_dir):
32+
sudo('git fetch && git reset --hard %s' % ref)
33+
34+
@task
35+
def deploy_trac_media():
36+
"""Deploy Trac media for static serving."""
37+
sudo('%s/bin/trac-admin %s/trac-env deploy /home/www/trac-media' % (env.virtualenv, env.code_dir))
38+
39+
def apache(cmd):
40+
"""
41+
Manage the apache service. For example, `fab apache:restart`.
42+
"""
43+
sudo('invoke-rc.d apache2 %s' % cmd)
44+
45+
def update_dependencies():
46+
"""
47+
Update dependencies in the virtualenv.
48+
"""
49+
pip = env.virtualenv.child('bin', 'pip')
50+
reqs = env.code_dir.child('requirements.txt')
51+
sudo('%s -q install -U pip' % pip)
52+
sudo('%s -q install -r %s' % (pip, reqs))

requirements.txt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Trac == 0.12.2
2+
Pygments == 1.4
3+
dnspython == 1.8.0
4+
psycopg2 == 2.2.2
5+
docutils == 0.7
6+
7+
# Trac plugins
8+
svn+http://trac-hacks.org/svn/batchmodifyplugin/0.12/trunk@9250
9+
svn+http://svn.edgewall.com/repos/trac/plugins/0.12/spam-filter-captcha@10597
10+
svn+http://trac-hacks.org/svn/xmlrpcplugin/trunk@9250
11+
./DjangoPlugin

trac-env/VERSION

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Trac Environment Version 1

trac-env/attachments/.hi-there-git

Whitespace-only changes.

trac-env/conf/trac.ini

+234
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
# -*- coding: utf-8 -*-
2+
3+
[attachment]
4+
max_size = 262144
5+
render_unsafe_content = false
6+
7+
[browser]
8+
downloadable_paths = /django/trunk, /django/branches/*, /django/tags/*, /djangoproject.com/django_website
9+
hide_properties = svk:merge, svn:ignore
10+
11+
[changeset]
12+
max_diff_bytes = 10000000
13+
max_diff_files = 0
14+
wiki_format_messages = true
15+
16+
[components]
17+
batchmod.* = enabled
18+
batchmod.web_ui.* = enabled
19+
navadd.* = enabled
20+
navhider.filter.* = enabled
21+
trac.ticket.query.* = enabled
22+
trac.ticket.query.querymodule = enabled
23+
trac.ticket.query.ticketquerymacro = enabled
24+
trac.ticket.report.* = disabled
25+
trac.ticket.report.reportmodule = disabled
26+
trac.ticket.roadmap.* = enabled
27+
trac.ticket.roadmap.milestonemodule = enabled
28+
trac.ticket.roadmap.roadmapmodule = disabled
29+
trac.wiki.web_ui.wikimodule = disabled
30+
tracdjangoplugin.* = enabled
31+
tracopt.ticket.commit_updater.committicketreferencemacro = enabled
32+
tracopt.ticket.commit_updater.committicketupdater = enabled
33+
tracopt.ticket.deleter.ticketdeleter = enabled
34+
tracpygments.* = enabled
35+
tracrpc.* = enabled
36+
tracspamfilter.* = enabled
37+
tracspamfilter.adapters.* = enabled
38+
tracspamfilter.admin.* = enabled
39+
tracspamfilter.api.* = enabled
40+
tracspamfilter.bayes = disabled
41+
tracspamfilter.filters.akismet.* = enabled
42+
tracspamfilter.filters.bayes.* = enabled
43+
tracspamfilter.filters.extlinks.* = enabled
44+
tracspamfilter.filters.ip_blacklist.* = enabled
45+
tracspamfilter.filters.ip_throttle.* = enabled
46+
tracspamfilter.filters.regex.* = enabled
47+
tracspamfilter.filters.session.* = enabled
48+
tracspamfilter.ip_blacklist = disabled
49+
tractoc.* = enabled
50+
tractoc.macro.* = enabled
51+
webadmin.* = enabled
52+
webadmin.basics.* = enabled
53+
webadmin.logging.* = enabled
54+
webadmin.perm.* = enabled
55+
webadmin.plugin.* = enabled
56+
webadmin.ticket.* = enabled
57+
webadmin.web_ui.* = enabled
58+
59+
[header_logo]
60+
alt = Django
61+
height = -1
62+
link = https://www.djangoproject.com/
63+
src = https://www.djangoproject.com/m/img/site/hdr_logo.gif
64+
width = -1
65+
66+
[logging]
67+
log_file = /var/log/trac/trac.log
68+
log_level = INFO
69+
log_type = file
70+
71+
[mimeviewer]
72+
enscript_modes = text/x-dylan:dylan:4
73+
enscript_path = /usr/bin/enscript
74+
max_preview_size = 262144
75+
mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb
76+
php_path = php
77+
silvercity_modes =
78+
tab_width = 8
79+
80+
[notification]
81+
always_notify_owner = true
82+
always_notify_reporter = true
83+
always_notify_updater = false
84+
mime_encoding = base64
85+
smtp_always_bcc =
86+
smtp_always_cc = [email protected]
87+
smtp_default_domain =
88+
smtp_enabled = true
89+
smtp_from = [email protected]
90+
smtp_password =
91+
smtp_port = 25
92+
smtp_replyto = [email protected]
93+
smtp_server = localhost
94+
smtp_subject_prefix = __default__
95+
smtp_user =
96+
use_public_cc = false
97+
use_short_addr = false
98+
use_tls = false
99+
100+
[project]
101+
descr = The Web framework for perfectionists with deadlines.
102+
footer =
103+
icon = /favicon.ico
104+
name = Django
105+
url = https://code.djangoproject.com/
106+
107+
[query]
108+
default_query = status!=closed
109+
default_anonymous_query = status!=closed
110+
111+
[search]
112+
min_query_length = 3
113+
114+
[spam-filter]
115+
akismet_api_key = c892e4962244
116+
akismet_api_url = rest.akismet.com/1.1/
117+
akismet_karma = 4
118+
attachment_karma = 0
119+
attachment_sample_size = 16384
120+
bayes_karma = 10
121+
blogspam_karma = 5
122+
captcha = RecaptchaCaptcha
123+
captcha_expression_ceiling = 10
124+
captcha_expression_terms = 3
125+
captcha_karma = 10
126+
captcha_karma_lifetime = 86400
127+
captcha_recaptcha_private_key = 6LcKpsMSAAAAAOiDhK_3YpFCL0tjBeM_0zm2c3h4
128+
captcha_recaptcha_public_key = 6LcKpsMSAAAAAFRfNP0VStSITt4Ev_HoBYBQpL2S
129+
defensio_karma = 5
130+
extlinks_karma = 2
131+
httpbl_spammer_karma = 6
132+
ip_blacklist_karma = 0
133+
ip_throttle_karma = 0
134+
ipregex_karma = 20
135+
is_forwarded = true
136+
logging_enabled = true
137+
max_external_links = 4
138+
max_posts_by_ip = 10
139+
min_karma = 1
140+
purge_age = 7
141+
regex_karma = 5
142+
reject_handler = CaptchaSystem
143+
session_karma = 20
144+
trust_authenticated = true
145+
typepad_karma = 5
146+
147+
[ticket]
148+
default_component = Uncategorized
149+
default_milestone =
150+
default_priority = major
151+
default_type = bug / defect
152+
default_version = 1.3
153+
restrict_owner = false
154+
155+
[ticket-custom]
156+
easy = checkbox
157+
easy.label = Easy pickings
158+
easy.order = 60
159+
has_patch = checkbox
160+
has_patch.label = Has patch
161+
has_patch.order = 20
162+
needs_better_patch = checkbox
163+
needs_better_patch.label = Patch needs improvement
164+
needs_better_patch.order = 50
165+
needs_docs = checkbox
166+
needs_docs.label = Needs documentation
167+
needs_docs.order = 30
168+
needs_tests = checkbox
169+
needs_tests.label = Needs tests
170+
needs_tests.order = 40
171+
stage = select
172+
stage.label = Triage Stage
173+
stage.options = Unreviewed|Design decision needed|Accepted|Ready for checkin|Someday/Maybe|Fixed on a branch
174+
stage.order = 10
175+
stage.value = 0
176+
ui_ux = checkbox
177+
ui_ux.label = UI/UX
178+
ui_ux.order = 70
179+
180+
[ticket-query]
181+
default_columns = id, summary, status, owner, component, version, changetime
182+
183+
[ticket-workflow]
184+
accept = new -> assigned
185+
accept.operations = set_owner_to_self
186+
accept.permissions = TICKET_MODIFY
187+
leave = * -> *
188+
leave.default = 1
189+
leave.operations = leave_status
190+
reassign = new,assigned,reopened -> new
191+
reassign.operations = set_owner
192+
reassign.permissions = TICKET_MODIFY
193+
reopen = closed -> reopened
194+
reopen.operations = del_resolution
195+
reopen.permissions = TICKET_CREATE
196+
resolve = new,assigned,reopened -> closed
197+
resolve.operations = set_resolution
198+
resolve.permissions = TICKET_MODIFY
199+
200+
[timeline]
201+
changeset_long_messages = false
202+
changeset_show_files = 0
203+
default_daysback = 3
204+
max_daysback = 7
205+
ticket_show_details = true
206+
207+
[trac]
208+
authz_file =
209+
authz_module_name =
210+
base_url = https://code.djangoproject.com
211+
check_auth_ip = true
212+
auth_cookie_lifetime = 1209600
213+
database = postgres://code.djangoproject@/code.djangoproject
214+
default_charset = utf-8
215+
default_handler = CustomWikiModule
216+
ignore_auth_case = false
217+
mainnav = wiki,timeline,browser,custom_reports,tickets,newticket,roadmap,search
218+
metanav = login,logout,register,password_reset,prefs
219+
permission_store = DefaultPermissionStore
220+
repository_dir = /home/svn/django
221+
repository_sync_per_request =
222+
repository_type = svn
223+
secure_cookies = true
224+
timeout = 20
225+
use_base_url_for_redirect = true
226+
227+
[metanav]
228+
help = disabled
229+
about = disabled
230+
231+
[wiki]
232+
ignore_missing_pages = false
233+
split_page_names = false
234+

trac-env/htdocs/favicon.ico

894 Bytes
Binary file not shown.

trac-env/htdocs/login

Whitespace-only changes.

trac-env/htdocs/robots.txt

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
User-agent: *
2+
Disallow: /search
3+
Disallow: /timeline
4+
Disallow: /simpleticket
5+
Disallow: /query
6+
Disallow: /newticket
7+
Disallow: /log
8+
Disallow: /browser
9+
Disallow: /changeset

0 commit comments

Comments
 (0)