Commit 165c3e804e846e4b45c9613889a4f6b985173520

Authored by Sergio Oliveira
1 parent 7de25ba3

Moving trac stuff to a different app

src/accounts/search_indexes.py
@@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
3 from haystack import indexes 3 from haystack import indexes
4 from django.db.models import Count 4 from django.db.models import Count
5 5
6 -from proxy.models import Revision, Ticket, Wiki  
7 from badger.utils import get_users_counters 6 from badger.utils import get_users_counters
8 from .models import User 7 from .models import User
9 8
src/accounts/views.py
@@ -25,7 +25,7 @@ from haystack.query import SearchQuerySet @@ -25,7 +25,7 @@ from haystack.query import SearchQuerySet
25 from super_archives.models import EmailAddress, Message 25 from super_archives.models import EmailAddress, Message
26 from super_archives.utils.email import send_email_lists 26 from super_archives.utils.email import send_email_lists
27 from search.utils import trans 27 from search.utils import trans
28 -from proxy.models import WikiCollabCount, TicketCollabCount 28 +#from proxy.trac.models import WikiCollabCount, TicketCollabCount
29 from .forms import (UserCreationForm, ListsForm, UserUpdateForm, 29 from .forms import (UserCreationForm, ListsForm, UserUpdateForm,
30 ChangeXMPPPasswordForm) 30 ChangeXMPPPasswordForm)
31 from .errors import XMPPChangePwdException 31 from .errors import XMPPChangePwdException
src/api/resources.py
@@ -7,8 +7,7 @@ from tastypie.constants import ALL_WITH_RELATIONS, ALL @@ -7,8 +7,7 @@ from tastypie.constants import ALL_WITH_RELATIONS, ALL
7 from tastypie.resources import ModelResource 7 from tastypie.resources import ModelResource
8 8
9 from super_archives.models import Message, EmailAddress 9 from super_archives.models import Message, EmailAddress
10 -from proxy.models import Revision, Ticket, Wiki  
11 - 10 +#from proxy.trac.models import Revision, Ticket, Wiki
12 11
13 User = get_user_model() 12 User = get_user_model()
14 13
@@ -66,56 +65,56 @@ class MessageResource(ModelResource): @@ -66,56 +65,56 @@ class MessageResource(ModelResource):
66 } 65 }
67 66
68 67
69 -class RevisionResource(ModelResource):  
70 - class Meta:  
71 - queryset = Revision.objects.all()  
72 - resource_name = 'revision'  
73 - excludes = ['collaborators', ]  
74 - filtering = {  
75 - 'key': ALL,  
76 - 'rev': ALL,  
77 - 'author': ALL,  
78 - 'message': ALL,  
79 - 'repository_name': ALL,  
80 - 'created': ALL,  
81 - }  
82 -  
83 -  
84 -class TicketResource(ModelResource):  
85 - class Meta:  
86 - queryset = Ticket.objects.all()  
87 - resource_name = 'ticket'  
88 - excludes = ['collaborators', ]  
89 - filtering = {  
90 - 'id': ALL,  
91 - 'summary': ALL,  
92 - 'description': ALL,  
93 - 'milestone': ALL,  
94 - 'priority': ALL,  
95 - 'component': ALL,  
96 - 'version': ALL,  
97 - 'severity': ALL,  
98 - 'reporter': ALL,  
99 - 'author': ALL,  
100 - 'status': ALL,  
101 - 'keywords': ALL,  
102 - 'created': ALL,  
103 - 'modified': ALL,  
104 - 'modified_by': ALL,  
105 - }  
106 -  
107 -  
108 -class WikiResource(ModelResource):  
109 - class Meta:  
110 - queryset = Wiki.objects.all()  
111 - resource_name = 'wiki'  
112 - excludes = ['collaborators', ]  
113 - filtering = {  
114 - 'name': ALL,  
115 - 'wiki_text': ALL,  
116 - 'author': ALL,  
117 - 'name': ALL,  
118 - 'created': ALL,  
119 - 'modified': ALL,  
120 - 'modified_by': ALL,  
121 - } 68 +#class RevisionResource(ModelResource):
  69 +# class Meta:
  70 +# queryset = Revision.objects.all()
  71 +# resource_name = 'revision'
  72 +# excludes = ['collaborators', ]
  73 +# filtering = {
  74 +# 'key': ALL,
  75 +# 'rev': ALL,
  76 +# 'author': ALL,
  77 +# 'message': ALL,
  78 +# 'repository_name': ALL,
  79 +# 'created': ALL,
  80 +# }
  81 +#
  82 +#
  83 +#class TicketResource(ModelResource):
  84 +# class Meta:
  85 +# queryset = Ticket.objects.all()
  86 +# resource_name = 'ticket'
  87 +# excludes = ['collaborators', ]
  88 +# filtering = {
  89 +# 'id': ALL,
  90 +# 'summary': ALL,
  91 +# 'description': ALL,
  92 +# 'milestone': ALL,
  93 +# 'priority': ALL,
  94 +# 'component': ALL,
  95 +# 'version': ALL,
  96 +# 'severity': ALL,
  97 +# 'reporter': ALL,
  98 +# 'author': ALL,
  99 +# 'status': ALL,
  100 +# 'keywords': ALL,
  101 +# 'created': ALL,
  102 +# 'modified': ALL,
  103 +# 'modified_by': ALL,
  104 +# }
  105 +#
  106 +#
  107 +#class WikiResource(ModelResource):
  108 +# class Meta:
  109 +# queryset = Wiki.objects.all()
  110 +# resource_name = 'wiki'
  111 +# excludes = ['collaborators', ]
  112 +# filtering = {
  113 +# 'name': ALL,
  114 +# 'wiki_text': ALL,
  115 +# 'author': ALL,
  116 +# 'name': ALL,
  117 +# 'created': ALL,
  118 +# 'modified': ALL,
  119 +# 'modified_by': ALL,
  120 +# }
src/api/urls.py
@@ -4,8 +4,7 @@ from django.conf.urls import patterns, include, url @@ -4,8 +4,7 @@ from django.conf.urls import patterns, include, url
4 4
5 from tastypie.api import Api 5 from tastypie.api import Api
6 6
7 -from .resources import (UserResource, EmailAddressResource, MessageResource,  
8 - RevisionResource, TicketResource, WikiResource) 7 +from .resources import (UserResource, EmailAddressResource, MessageResource)
9 from .views import VoteView 8 from .views import VoteView
10 9
11 10
@@ -13,9 +12,6 @@ api = Api(api_name='v1') @@ -13,9 +12,6 @@ api = Api(api_name='v1')
13 api.register(UserResource()) 12 api.register(UserResource())
14 api.register(EmailAddressResource()) 13 api.register(EmailAddressResource())
15 api.register(MessageResource()) 14 api.register(MessageResource())
16 -api.register(RevisionResource())  
17 -api.register(TicketResource())  
18 -api.register(WikiResource())  
19 15
20 16
21 urlpatterns = patterns('', 17 urlpatterns = patterns('',
src/badger/utils.py
@@ -2,8 +2,8 @@ @@ -2,8 +2,8 @@
2 2
3 from django.db.models import Count 3 from django.db.models import Count
4 4
5 -from proxy.models import (Revision, Ticket, Wiki,  
6 - WikiCollabCount, TicketCollabCount) 5 +#from proxy.trac.models import (Revision, Ticket, Wiki,
  6 +# WikiCollabCount, TicketCollabCount)
7 from accounts.models import User 7 from accounts.models import User
8 8
9 9
src/colab/custom_settings.py
@@ -110,7 +110,6 @@ INSTALLED_APPS = INSTALLED_APPS + ( @@ -110,7 +110,6 @@ INSTALLED_APPS = INSTALLED_APPS + (
110 'api', 110 'api',
111 'rss', 111 'rss',
112 'planet', 112 'planet',
113 - 'proxy',  
114 'search', 113 'search',
115 'badger', 114 'badger',
116 'tz', 115 'tz',
src/colab/urls.py
@@ -36,6 +36,7 @@ urlpatterns = patterns('', @@ -36,6 +36,7 @@ urlpatterns = patterns('',
36 url(r'^colab/admin/', include(admin.site.urls)), 36 url(r'^colab/admin/', include(admin.site.urls)),
37 37
38 url(r'^', include('proxy.urls')), 38 url(r'^', include('proxy.urls')),
  39 + url(r'^', include('proxy.trac.urls')),
39 ) 40 )
40 41
41 if settings.DEBUG: 42 if settings.DEBUG:
src/home/views.py
@@ -9,7 +9,7 @@ from django.http import HttpResponse, Http404 @@ -9,7 +9,7 @@ from django.http import HttpResponse, Http404
9 from search.utils import trans 9 from search.utils import trans
10 from haystack.query import SearchQuerySet 10 from haystack.query import SearchQuerySet
11 11
12 -from proxy.models import WikiCollabCount, TicketCollabCount 12 +#from proxy.trac.models import WikiCollabCount, TicketCollabCount
13 from super_archives.models import Thread 13 from super_archives.models import Thread
14 14
15 15
src/proxy/models.py
@@ -1,178 +0,0 @@ @@ -1,178 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -from django.db import models  
3 -from django.conf import settings  
4 -import os  
5 -import urllib2  
6 -  
7 -from django.conf import settings  
8 -from django.db import models, connections  
9 -from django.db.models.signals import post_save  
10 -from django.dispatch import receiver  
11 -  
12 -from accounts.models import User  
13 -from hitcounter.models import HitCounterModelMixin  
14 -  
15 -class Attachment(models.Model, HitCounterModelMixin):  
16 - url = models.TextField(primary_key=True)  
17 - attach_id = models.TextField()  
18 - used_by = models.TextField()  
19 - filename = models.TextField()  
20 - author = models.TextField(blank=True)  
21 - description = models.TextField(blank=True)  
22 - created = models.DateTimeField(blank=True)  
23 - mimetype = models.TextField(blank=True)  
24 - size = models.IntegerField(blank=True)  
25 -  
26 - class Meta:  
27 - managed = False  
28 - db_table = 'attachment_view'  
29 -  
30 - @property  
31 - def filepath(self):  
32 - return os.path.join(  
33 - settings.ATTACHMENTS_FOLDER_PATH,  
34 - self.used_by,  
35 - self.attach_id,  
36 - urllib2.quote(self.filename.encode('utf8'))  
37 - )  
38 -  
39 - def get_absolute_url(self):  
40 - return u'/raw-attachment/{}'.format(self.url)  
41 -  
42 - def get_author(self):  
43 - try:  
44 - return User.objects.get(username=self.author)  
45 - except User.DoesNotExist:  
46 - return None  
47 -  
48 -  
49 -class Revision(models.Model, HitCounterModelMixin):  
50 - key = models.TextField(blank=True, primary_key=True)  
51 - rev = models.TextField(blank=True)  
52 - author = models.TextField(blank=True)  
53 - message = models.TextField(blank=True)  
54 - repository_name = models.TextField(blank=True)  
55 - created = models.DateTimeField(blank=True, null=True)  
56 -  
57 - class Meta:  
58 - managed = False  
59 - db_table = 'revision_view'  
60 -  
61 - def get_absolute_url(self):  
62 - return u'/changeset/{}/{}'.format(self.rev, self.repository_name)  
63 -  
64 - def get_author(self):  
65 - try:  
66 - return User.objects.get(username=self.author)  
67 - except User.DoesNotExist:  
68 - return None  
69 -  
70 -class Ticket(models.Model, HitCounterModelMixin):  
71 - id = models.IntegerField(primary_key=True)  
72 - summary = models.TextField(blank=True)  
73 - description = models.TextField(blank=True)  
74 - milestone = models.TextField(blank=True)  
75 - priority = models.TextField(blank=True)  
76 - component = models.TextField(blank=True)  
77 - version = models.TextField(blank=True)  
78 - severity = models.TextField(blank=True)  
79 - reporter = models.TextField(blank=True)  
80 - author = models.TextField(blank=True)  
81 - status = models.TextField(blank=True)  
82 - keywords = models.TextField(blank=True)  
83 - collaborators = models.TextField(blank=True)  
84 - created = models.DateTimeField(blank=True, null=True)  
85 - modified = models.DateTimeField(blank=True, null=True)  
86 - modified_by = models.TextField(blank=True)  
87 -  
88 - class Meta:  
89 - managed = False  
90 - db_table = 'ticket_view'  
91 -  
92 - def get_absolute_url(self):  
93 - return u'/ticket/{}'.format(self.id)  
94 -  
95 - def get_author(self):  
96 - try:  
97 - return User.objects.get(username=self.author)  
98 - except User.DoesNotExist:  
99 - return None  
100 -  
101 - def get_modified_by(self):  
102 - try:  
103 - return User.objects.get(username=self.modified_by)  
104 - except User.DoesNotExist:  
105 - return None  
106 -  
107 -class Wiki(models.Model, HitCounterModelMixin):  
108 - name = models.TextField(primary_key=True)  
109 - wiki_text = models.TextField(blank=True)  
110 - author = models.TextField(blank=True)  
111 - collaborators = models.TextField(blank=True)  
112 - created = models.DateTimeField(blank=True, null=True)  
113 - modified = models.DateTimeField(blank=True, null=True)  
114 - modified_by = models.TextField(blank=True)  
115 -  
116 - class Meta:  
117 - managed = False  
118 - db_table = 'wiki_view'  
119 -  
120 - def get_absolute_url(self):  
121 - return u'/wiki/{}'.format(self.name)  
122 -  
123 - def get_author(self):  
124 - try:  
125 - return User.objects.get(username=self.author)  
126 - except User.DoesNotExist:  
127 - return None  
128 -  
129 - def get_modified_by(self):  
130 - try:  
131 - return User.objects.get(username=self.modified_by)  
132 - except User.DoesNotExist:  
133 - return None  
134 -  
135 -  
136 -class WikiCollabCount(models.Model):  
137 - author = models.TextField(primary_key=True)  
138 - count = models.IntegerField()  
139 -  
140 - class Meta:  
141 - managed = False  
142 - db_table = 'wiki_collab_count_view'  
143 -  
144 -  
145 -class TicketCollabCount(models.Model):  
146 - author = models.TextField(primary_key=True)  
147 - count = models.IntegerField()  
148 -  
149 - class Meta:  
150 - managed = False  
151 - db_table = 'ticket_collab_count_view'  
152 -  
153 -  
154 -@receiver(post_save, sender=User)  
155 -def change_session_attribute_email(sender, instance, **kwargs):  
156 - cursor = connections['trac'].cursor()  
157 -  
158 - cursor.execute(("UPDATE session_attribute SET value=%s "  
159 - "WHERE name='email' AND sid=%s"),  
160 - [instance.email, instance.username])  
161 - cursor.execute(("UPDATE session_attribute SET value=%s "  
162 - "WHERE name='name' AND sid=%s"),  
163 - [instance.get_full_name(), instance.username])  
164 -  
165 - cursor.execute(("INSERT INTO session_attribute "  
166 - "(sid, authenticated, name, value) "  
167 - "SELECT %s, '1', 'email', %s WHERE NOT EXISTS "  
168 - "(SELECT 1 FROM session_attribute WHERE sid=%s "  
169 - "AND name='email')"),  
170 - [instance.username, instance.email, instance.username])  
171 -  
172 - cursor.execute(("INSERT INTO session_attribute "  
173 - "(sid, authenticated, name, value) "  
174 - "SELECT %s, '1', 'name', %s WHERE NOT EXISTS "  
175 - "(SELECT 1 FROM session_attribute WHERE sid=%s "  
176 - "AND name='name')"),  
177 - [instance.username, instance.get_full_name(),  
178 - instance.username])  
src/proxy/templatetags/__init__.py
src/proxy/templatetags/proxy.py
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -from django import template  
2 -  
3 -from super_archives.utils import url  
4 -from django.conf import settings  
5 -  
6 -  
7 -register = template.Library()  
8 -TEMPLATE_PATH = 'proxy/tags/'  
9 -  
10 -@register.assignment_tag  
11 -def is_trac_enable():  
12 - return settings.TRAC_ENABLED  
13 \ No newline at end of file 0 \ No newline at end of file
src/proxy/trac/admin.py
1 from django.contrib import admin 1 from django.contrib import admin
2 2
3 -# Register your models here. 3 +from . import signals
src/proxy/trac/models.py
@@ -0,0 +1,149 @@ @@ -0,0 +1,149 @@
  1 +# -*- coding: utf-8 -*-
  2 +from django.db import models
  3 +from django.conf import settings
  4 +import os
  5 +import urllib2
  6 +
  7 +from accounts.models import User
  8 +from hitcounter.models import HitCounterModelMixin
  9 +
  10 +
  11 +class Attachment(models.Model, HitCounterModelMixin):
  12 + url = models.TextField(primary_key=True)
  13 + attach_id = models.TextField()
  14 + used_by = models.TextField()
  15 + filename = models.TextField()
  16 + author = models.TextField(blank=True)
  17 + description = models.TextField(blank=True)
  18 + created = models.DateTimeField(blank=True)
  19 + mimetype = models.TextField(blank=True)
  20 + size = models.IntegerField(blank=True)
  21 +
  22 + class Meta:
  23 + managed = False
  24 + db_table = 'attachment_view'
  25 +
  26 + @property
  27 + def filepath(self):
  28 + return os.path.join(
  29 + settings.ATTACHMENTS_FOLDER_PATH,
  30 + self.used_by,
  31 + self.attach_id,
  32 + urllib2.quote(self.filename.encode('utf8'))
  33 + )
  34 +
  35 + def get_absolute_url(self):
  36 + return u'/raw-attachment/{}'.format(self.url)
  37 +
  38 + def get_author(self):
  39 + try:
  40 + return User.objects.get(username=self.author)
  41 + except User.DoesNotExist:
  42 + return None
  43 +
  44 +
  45 +class Revision(models.Model, HitCounterModelMixin):
  46 + key = models.TextField(blank=True, primary_key=True)
  47 + rev = models.TextField(blank=True)
  48 + author = models.TextField(blank=True)
  49 + message = models.TextField(blank=True)
  50 + repository_name = models.TextField(blank=True)
  51 + created = models.DateTimeField(blank=True, null=True)
  52 +
  53 + class Meta:
  54 + managed = False
  55 + db_table = 'revision_view'
  56 +
  57 + def get_absolute_url(self):
  58 + return u'/changeset/{}/{}'.format(self.rev, self.repository_name)
  59 +
  60 + def get_author(self):
  61 + try:
  62 + return User.objects.get(username=self.author)
  63 + except User.DoesNotExist:
  64 + return None
  65 +
  66 +
  67 +class Ticket(models.Model, HitCounterModelMixin):
  68 + id = models.IntegerField(primary_key=True)
  69 + summary = models.TextField(blank=True)
  70 + description = models.TextField(blank=True)
  71 + milestone = models.TextField(blank=True)
  72 + priority = models.TextField(blank=True)
  73 + component = models.TextField(blank=True)
  74 + version = models.TextField(blank=True)
  75 + severity = models.TextField(blank=True)
  76 + reporter = models.TextField(blank=True)
  77 + author = models.TextField(blank=True)
  78 + status = models.TextField(blank=True)
  79 + keywords = models.TextField(blank=True)
  80 + collaborators = models.TextField(blank=True)
  81 + created = models.DateTimeField(blank=True, null=True)
  82 + modified = models.DateTimeField(blank=True, null=True)
  83 + modified_by = models.TextField(blank=True)
  84 +
  85 + class Meta:
  86 + managed = False
  87 + db_table = 'ticket_view'
  88 +
  89 + def get_absolute_url(self):
  90 + return u'/ticket/{}'.format(self.id)
  91 +
  92 + def get_author(self):
  93 + try:
  94 + return User.objects.get(username=self.author)
  95 + except User.DoesNotExist:
  96 + return None
  97 +
  98 + def get_modified_by(self):
  99 + try:
  100 + return User.objects.get(username=self.modified_by)
  101 + except User.DoesNotExist:
  102 + return None
  103 +
  104 +
  105 +class Wiki(models.Model, HitCounterModelMixin):
  106 + name = models.TextField(primary_key=True)
  107 + wiki_text = models.TextField(blank=True)
  108 + author = models.TextField(blank=True)
  109 + collaborators = models.TextField(blank=True)
  110 + created = models.DateTimeField(blank=True, null=True)
  111 + modified = models.DateTimeField(blank=True, null=True)
  112 + modified_by = models.TextField(blank=True)
  113 +
  114 + class Meta:
  115 + managed = False
  116 + db_table = 'wiki_view'
  117 +
  118 + def get_absolute_url(self):
  119 + return u'/wiki/{}'.format(self.name)
  120 +
  121 + def get_author(self):
  122 + try:
  123 + return User.objects.get(username=self.author)
  124 + except User.DoesNotExist:
  125 + return None
  126 +
  127 + def get_modified_by(self):
  128 + try:
  129 + return User.objects.get(username=self.modified_by)
  130 + except User.DoesNotExist:
  131 + return None
  132 +
  133 +
  134 +class WikiCollabCount(models.Model):
  135 + author = models.TextField(primary_key=True)
  136 + count = models.IntegerField()
  137 +
  138 + class Meta:
  139 + managed = False
  140 + db_table = 'wiki_collab_count_view'
  141 +
  142 +
  143 +class TicketCollabCount(models.Model):
  144 + author = models.TextField(primary_key=True)
  145 + count = models.IntegerField()
  146 +
  147 + class Meta:
  148 + managed = False
  149 + db_table = 'ticket_collab_count_view'
src/proxy/trac/signals.py 0 → 100644
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
  1 +
  2 +from django.db import connections
  3 +from django.dispatch import receiver
  4 +from django.db.models.signals import post_save
  5 +
  6 +from accounts.models import User
  7 +
  8 +
  9 +@receiver(post_save, sender=User)
  10 +def change_session_attribute_email(sender, instance, **kwargs):
  11 + cursor = connections['trac'].cursor()
  12 +
  13 + cursor.execute(("UPDATE session_attribute SET value=%s "
  14 + "WHERE name='email' AND sid=%s"),
  15 + [instance.email, instance.username])
  16 + cursor.execute(("UPDATE session_attribute SET value=%s "
  17 + "WHERE name='name' AND sid=%s"),
  18 + [instance.get_full_name(), instance.username])
  19 +
  20 + cursor.execute(("INSERT INTO session_attribute "
  21 + "(sid, authenticated, name, value) "
  22 + "SELECT %s, '1', 'email', %s WHERE NOT EXISTS "
  23 + "(SELECT 1 FROM session_attribute WHERE sid=%s "
  24 + "AND name='email')"),
  25 + [instance.username, instance.email, instance.username])
  26 +
  27 + cursor.execute(("INSERT INTO session_attribute "
  28 + "(sid, authenticated, name, value) "
  29 + "SELECT %s, '1', 'name', %s WHERE NOT EXISTS "
  30 + "(SELECT 1 FROM session_attribute WHERE sid=%s "
  31 + "AND name='name')"),
  32 + [instance.username, instance.get_full_name(),
  33 + instance.username])
src/proxy/trac/urls.py 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +
  2 +from django.conf.urls import patterns, include, url
  3 +
  4 +from .views import TracProxyView
  5 +
  6 +
  7 +urlpatterns = patterns('',
  8 + # Trac URLs
  9 + url(r'^(?P<path>(?:admin|wiki|changeset|newticket|ticket|chrome|timeline|roadmap|browser|report|tags|query|about|prefs|log|attachment|raw-attachment|diff|milestone).*)$',
  10 + TracProxyView.as_view()),
  11 +
  12 + # Trac
  13 + url(r'^trac/(?P<path>.*)$', TracProxyView.as_view()),
  14 +)
src/proxy/trac/views.py
1 -from django.shortcuts import render  
2 1
3 -# Create your views here. 2 +import os
  3 +
  4 +from django.conf import settings
  5 +
  6 +from revproxy.views import ProxyView
  7 +from hitcounter.views import HitCounterViewMixin
  8 +
  9 +from .models import Wiki, Ticket, Revision
  10 +
  11 +
  12 +CWD = os.path.abspath(os.path.dirname(__file__))
  13 +DIAZO_RULES_DIR = os.path.join(CWD, 'diazo')
  14 +
  15 +
  16 +class TracProxyView(HitCounterViewMixin, ProxyView):
  17 + base_url = settings.COLAB_TRAC_URL
  18 + add_remote_user = settings.REVPROXY_ADD_REMOTE_USER
  19 + diazo_theme_template = 'proxy/trac.html'
  20 + diazo_rules = os.path.join(DIAZO_RULES_DIR, 'trac.xml')
  21 + html5 = True
  22 +
  23 + def get_object(self):
  24 + obj = None
  25 +
  26 + if self.request.path_info.startswith('/wiki'):
  27 + wiki_name = self.request.path_info.split('/', 2)[-1]
  28 + if not wiki_name:
  29 + wiki_name = 'WikiStart'
  30 + try:
  31 + obj = Wiki.objects.get(name=wiki_name)
  32 + except Wiki.DoesNotExist:
  33 + return None
  34 + elif self.request.path_info.startswith('/ticket'):
  35 + ticket_id = self.request.path_info.split('/')[2]
  36 + try:
  37 + obj = Ticket.objects.get(id=ticket_id)
  38 + except (Ticket.DoesNotExist, ValueError):
  39 + return None
  40 + elif self.request.path_info.startswith('/changeset'):
  41 + try:
  42 + changeset, repo = self.request.path_info.split('/')[2:4]
  43 + except ValueError:
  44 + return None
  45 + try:
  46 + obj = Revision.objects.get(rev=changeset,
  47 + repository_name=repo)
  48 + except Revision.DoesNotExist:
  49 + return None
  50 +
  51 + return obj
src/proxy/urls.py
1 1
2 from django.conf.urls import patterns, include, url 2 from django.conf.urls import patterns, include, url
3 3
4 -from .views import ProxyView, JenkinsProxyView, GitlabProxyView, RedmineProxyView, TracProxyView 4 +from .views import ProxyView, JenkinsProxyView, GitlabProxyView, RedmineProxyView
5 5
6 6
7 urlpatterns = patterns('', 7 urlpatterns = patterns('',
8 - # Trac URLs  
9 - url(r'^(?P<path>(?:admin|wiki|changeset|newticket|ticket|chrome|timeline|roadmap|browser|report|tags|query|about|prefs|log|attachment|raw-attachment|diff|milestone).*)$',  
10 - TracProxyView.as_view()),  
11 -  
12 # Jenkins URLs 8 # Jenkins URLs
13 url(r'^ci/(?P<path>.*)$', JenkinsProxyView.as_view()), 9 url(r'^ci/(?P<path>.*)$', JenkinsProxyView.as_view()),
14 10
15 - # Trac  
16 - url(r'^trac/(?P<path>.*)$', TracProxyView.as_view()),  
17 -  
18 # Gitlab 11 # Gitlab
19 url(r'^gitlab/(?P<path>.*)$', GitlabProxyView.as_view()), 12 url(r'^gitlab/(?P<path>.*)$', GitlabProxyView.as_view()),
20 13
21 # Redmine 14 # Redmine
22 url(r'^redmine/(?P<path>.*)$', RedmineProxyView.as_view()) 15 url(r'^redmine/(?P<path>.*)$', RedmineProxyView.as_view())
23 -  
24 ) 16 )
src/proxy/views.py
@@ -4,50 +4,11 @@ import os @@ -4,50 +4,11 @@ import os
4 from django.conf import settings 4 from django.conf import settings
5 5
6 from revproxy.views import ProxyView 6 from revproxy.views import ProxyView
7 -from .models import Wiki, Ticket, Revision  
8 -from hitcounter.views import HitCounterViewMixin  
9 7
10 8
11 CWD = os.path.abspath(os.path.dirname(__file__)) 9 CWD = os.path.abspath(os.path.dirname(__file__))
12 DIAZO_RULES_DIR = os.path.join(CWD, 'diazo') 10 DIAZO_RULES_DIR = os.path.join(CWD, 'diazo')
13 11
14 -class TracProxyView(HitCounterViewMixin, ProxyView):  
15 - base_url = settings.COLAB_TRAC_URL  
16 - add_remote_user = settings.REVPROXY_ADD_REMOTE_USER  
17 - diazo_theme_template = 'proxy/trac.html'  
18 - diazo_rules = os.path.join(DIAZO_RULES_DIR, 'trac.xml')  
19 - html5 = True  
20 -  
21 - def get_object(self):  
22 - obj = None  
23 -  
24 - if self.request.path_info.startswith('/wiki'):  
25 - wiki_name = self.request.path_info.split('/', 2)[-1]  
26 - if not wiki_name:  
27 - wiki_name = 'WikiStart'  
28 - try:  
29 - obj = Wiki.objects.get(name=wiki_name)  
30 - except Wiki.DoesNotExist:  
31 - return None  
32 - elif self.request.path_info.startswith('/ticket'):  
33 - ticket_id = self.request.path_info.split('/')[2]  
34 - try:  
35 - obj = Ticket.objects.get(id=ticket_id)  
36 - except (Ticket.DoesNotExist, ValueError):  
37 - return None  
38 - elif self.request.path_info.startswith('/changeset'):  
39 - try:  
40 - changeset, repo = self.request.path_info.split('/')[2:4]  
41 - except ValueError:  
42 - return None  
43 - try:  
44 - obj = Revision.objects.get(rev=changeset,  
45 - repository_name=repo)  
46 - except Revision.DoesNotExist:  
47 - return None  
48 -  
49 - return obj  
50 -  
51 12
52 class JenkinsProxyView(ProxyView): 13 class JenkinsProxyView(ProxyView):
53 base_url = settings.COLAB_CI_URL 14 base_url = settings.COLAB_CI_URL
src/search/templates/search/includes/search_filters.html
1 -{% load i18n superarchives proxy %} 1 +{% load i18n superarchives %}
2 2
3 {% if filters %} 3 {% if filters %}
4 <ul class="unstyled-list"> 4 <ul class="unstyled-list">
@@ -111,7 +111,6 @@ @@ -111,7 +111,6 @@
111 <h4>{% trans "Types" %}</h4> 111 <h4>{% trans "Types" %}</h4>
112 112
113 <ul class="unstyled-list"> 113 <ul class="unstyled-list">
114 - {% is_trac_enable as is_trac %}  
115 114
116 {% if is_trac %} 115 {% if is_trac %}
117 <li> 116 <li>
src/search/views.py
@@ -5,7 +5,7 @@ from django.utils.translation import ugettext as _ @@ -5,7 +5,7 @@ from django.utils.translation import ugettext as _
5 5
6 from haystack.views import SearchView 6 from haystack.views import SearchView
7 7
8 -from proxy.models import Attachment 8 +#from proxy.trac.models import Attachment
9 9
10 10
11 class ColabSearchView(SearchView): 11 class ColabSearchView(SearchView):
src/templates/base.html
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 -{% load i18n static browserid conversejs gravatar proxy %} 2 +{% load i18n static browserid conversejs gravatar %}
3 3
4 <html> 4 <html>
5 <head> 5 <head>