Anonymous avatar Anonymous committed 9819104

Move rietveld to Mercurial.

Comments (0)

Files changed (47)

rietveld/Makefile

-RIETVELDREV=510
-
-default:
-	@echo "Run 'make all' to fetch required sources to run this example."
-
-all: static templates_svn codereview django gae2django syncdb
-	@echo "Run './manage.py runserver 127.0.0.1:8000' to run Rietveld."
-
-clean: clean_local clean_external
-
-clean_external: clean_rietveld clean_django
-
-clean_rietveld:
-	rm -rf codereview static templates_svn
-
-clean_django:
-	unlink django
-
-clean_local:
-	unlink gae2django
-
-gae2django:
-	ln -s ../gae2django/gae2django .
-
-syncdb:
-	./manage.py syncdb
-
-codereview:
-	svn co http://rietveld.googlecode.com/svn/trunk/codereview@$(RIETVELDREV)
-	patch -p0 < codereview.diff
-
-static:
-	svn co http://rietveld.googlecode.com/svn/trunk/static@$(RIETVELDREV)
-	patch -p0 < patches/upload.diff
-
-templates_svn:
-	svn co http://rietveld.googlecode.com/svn/trunk/templates@$(RIETVELDREV) templates_svn
-
-django:
-	ln -s ../gae2django/django .

rietveld/README

-This is a copy (with modifications) from gae2django/examples/rietveld.
Add a comment to this file

rietveld/__init__.py

Empty file removed.

rietveld/codereview.diff

-Index: codereview/views.py
-===================================================================
---- codereview/views.py	(revision 510)
-+++ codereview/views.py	(working copy)
-@@ -1382,6 +1382,8 @@
-   issue = request.issue
-   patchsets = list(issue.patchset_set.order('created'))
-   response = None
-+  if not patchsets:
-+    return issue, patchsets, response
-   if not patchset_id:
-     patchset_id = patchsets[-1].key().id()
- 
-Index: codereview/models.py
-===================================================================
---- codereview/models.py	(revision 510)
-+++ codereview/models.py	(working copy)
-@@ -520,14 +520,14 @@
-   @classmethod
-   def get_account_for_user(cls, user):
-     """Get the Account for a user, creating a default one if needed."""
--    email = user.email()
--    assert email
--    key = '<%s>' % email
-     # Since usually the account already exists, first try getting it
-     # without the transaction implied by get_or_insert().
--    account = cls.get_by_key_name(key)
-+    # Roundup adjustment: accounts will have the same IDs as users
-+    account = cls.get_by_id(user.id)
-     if account is not None:
-       return account
-+    # Not found, don't auto-create in any case
-+    raise engine.FetchError('account not found')
-     nickname = cls.create_nickname_for_user(user)
-     return cls.get_or_insert(key, user=user, email=email, nickname=nickname,
-                              fresh=True)
-@@ -556,8 +556,10 @@
-   def get_account_for_email(cls, email):
-     """Get the Account for an email address, or return None."""
-     assert email
--    key = '<%s>' % email
--    return cls.get_by_key_name(key)
-+    account = cls.objects.filter(email=email)
-+    if not account:
-+      return None
-+    return account[0]
- 
-   @classmethod
-   def get_by_key_name(cls, key, **kwds):

rietveld/gae2django.diff

-Index: gaeapi/appengine/api/urlfetch.py
-===================================================================
---- gaeapi/appengine/api/urlfetch.py	(Revision 134)
-+++ gaeapi/appengine/api/urlfetch.py	(Arbeitskopie)
-@@ -76,10 +76,11 @@
-                 connection.close()
- 
-             if http_response.status in REDIRECT_STATUSES:
--                url = http_response.getheader('Location', None)
--                if url is None:
-+                newurl = http_response.getheader('Location', None)
-+                if newurl is None:
-                     raise DownloadError('Redirect is missing Location header.')
-                 else:
-+                    url = urlparse.urljoin(url, newurl)
-                     method = 'GET'
-             else:
-                 response = Response()

rietveld/manage.py

-#!/usr/bin/env python
-import gae2django
-# Use gae2django.install(server_software='Dev') to enable a link to the
-# admin frontend at the top of each page. By default this link is hidden.
-gae2django.install(server_software='Django')
-
-from django.core.management import execute_manager
-try:
-    import settings # Assumed to be in the same directory.
-except ImportError:
-    import sys
-    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
-    sys.exit(1)
-
-if __name__ == "__main__":
-    execute_manager(settings)

rietveld/patches

-../gae2django/examples/rietveld/patches

rietveld/rietveld_helper

-../gae2django/examples/rietveld/rietveld_helper
Add a comment to this file

rietveld/roundup_helper/__init__.py

Empty file removed.

rietveld/roundup_helper/middleware.py

-from models import Session, User
-from codereview.models import Account
-from django.conf import settings
-from django.contrib import auth
-from django.contrib.auth.backends import RemoteUserBackend
-
-class UserBackend(RemoteUserBackend):
-    # auto-creation of django users should not be necessary,
-    # as they should have been created before, so suppress it here.
-    create_unknown_user = False
-
-class LookupRoundupUser(object):
-
-    def process_request(self, request):
-        session_key = request.COOKIES.get(settings.TRACKER_COOKIE_NAME, None)
-        if not session_key:
-            self.logout(request)
-            return
-        session = Session.objects.filter(session_key = session_key)
-        if not session:
-            self.logout(request)
-            return
-        username = eval(session[0].session_value)['user']
-        # the username comes from the cookie, so it really ought to exist
-        roundup_user = User.objects.filter(_username=username)[0]
-        # if we already have a user from the session, we are done.
-        if request.user.is_authenticated():
-            if request.user.username == username:
-                return
-        # We see the user for the first time. Authenticate it, and create
-        # codereview account if none exists.
-        user = auth.authenticate(remote_user=username)
-        if not user:
-            return
-        # User is valid.  Set request.user and persist user in the session
-        # by logging the user in.
-        request.user = user
-        account = Account.get_by_id(user.id)
-        if not account:
-            account = Account(id=user.id, user=user, email=user.email,
-                              nickname=username, fresh=True)
-            account.put()
-        auth.login(request, user)
-        
-    def logout(self, request):
-        # Clear django session if roundup session is gone.
-        auth.logout(request)

rietveld/roundup_helper/models.py

-# Django mappings for roundup tables
-from django.db import models
-
-class Session(models.Model):
-    session_key = models.CharField(primary_key=True, max_length=255)
-    session_value = models.TextField()
-    class Meta:
-        db_table = 'sessions'
-
-class User(models.Model):
-    _username = models.CharField()
-    _realname = models.CharField()
-    _address = models.CharField()
-    class Meta:
-        db_table = '_user'
-
-class File(models.Model):
-    _creator = models.IntegerField()
-    _creation = models.DateTimeField()
-    _branch = models.CharField()
-    _revision = models.CharField()
-    _patchset = models.CharField()
-    class Meta:
-        db_table = '_file'
-
-class RoundupIssue(models.Model):
-    _creator = models.IntegerField()
-    _creation = models.DateTimeField()
-    _status = models.IntegerField()
-    class Meta:
-        db_table = '_issue'

rietveld/roundup_helper/urls.py

-from django.conf.urls.defaults import *
-from django.contrib import admin
-
-urlpatterns = patterns('',
-        ('review/', include('rietveld_helper.urls')),
-    )

rietveld/settings.py

-# Django settings for django_gae2django project.
-
-# NOTE: Keep the settings.py in examples directories in sync with this one!
-
-import os, ConfigParser, re
-
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-
-ADMINS = (
-    # ('Your Name', 'your_email@domain.com'),
-)
-
-MANAGERS = ADMINS
-
-_c = ConfigParser.ConfigParser({'password':'', 'port':''})
-_c.read(os.path.dirname(__file__)+"/../config.ini")
-TRACKER_COOKIE_NAME='roundup_session_'+re.sub('[^a-zA-Z]', '', _c.get('tracker','name'))
-
-DATABASE_ENGINE = 'postgresql_psycopg2'
-DATABASE_NAME = _c.get('rdbms', 'name')
-DATABASE_USER = _c.get('rdbms', 'user')
-DATABASE_PASSWORD = _c.get('rdbms', 'password')
-DATABASE_HOST = _c.get('rdbms', 'host')
-DATABASE_PORT = _c.get('rdbms', 'port')
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# If running in a Windows environment this must be set to the same as your
-# system time zone.
-TIME_ZONE = 'Europe/Amsterdam'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# Absolute path to the directory that holds media.
-# Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = ''
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash if there is a path component (optional in other cases).
-# Examples: "http://media.lawrence.com", "http://example.com/media/"
-MEDIA_URL = '/review/static/'
-
-# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
-# trailing slash.
-# Examples: "http://foo.com/media/", "/media/".
-ADMIN_MEDIA_PREFIX = '/media/'
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = _c.get('django', 'secret_key')
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
-    'django.template.loaders.filesystem.load_template_source',
-    'django.template.loaders.app_directories.load_template_source',
-#     'django.template.loaders.eggs.load_template_source',
-)
-
-AUTHENTICATION_BACKENDS = ('roundup_helper.middleware.UserBackend',)
-MIDDLEWARE_CLASSES = (
-    'django.middleware.common.CommonMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'roundup_helper.middleware.LookupRoundupUser',
-    'gae2django.middleware.FixRequestUserMiddleware',
-    'rietveld_helper.middleware.AddUserToRequestMiddleware',
-    'django.middleware.doc.XViewMiddleware',
-)
-
-TEMPLATE_CONTEXT_PROCESSORS = (
-    'django.core.context_processors.request',
-)
-
-ROOT_URLCONF = 'roundup_helper.urls'
-
-TEMPLATE_DIRS = (
-    os.path.join(os.path.dirname(__file__), 'templates'),
-)
-
-INSTALLED_APPS = (
-    'django.contrib.auth',
-    'django.contrib.contenttypes',
-    'django.contrib.sessions',
-    'django.contrib.sites',
-    'django.contrib.admin',
-    'gae2django',
-    'rietveld_helper',
-    'codereview',
-)
-
-AUTH_PROFILE_MODULE = 'codereview.Account'
-LOGIN_REDIRECT_URL = '/'
-
-# This won't work with gae2django.
-RIETVELD_INCOMING_MAIL_ADDRESS = None

rietveld/templates/404.html

-../templates_svn/404.html

rietveld/templates/500.html

-../templates_svn/500.html

rietveld/templates/all.html

-../templates_svn/all.html

rietveld/templates/base.html

-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-  "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-  <title>
-    {%if is_dev%}
-      (DEV)
-    {%endif%}
-    {%block title1%}
-      {%if patch%}{{patch.filename}} -{%endif%}
-    {%endblock%}
-    {%block title2%}
-      {%if issue%}Issue {{issue.key.id}}: {{issue.subject}} -{%endif%}
-    {%endblock%}
-    Code Review
-  </title>
-  <link rel="icon" href="{{media_url}}favicon.ico" />
-  <link type="text/css" rel="stylesheet" href="{{media_url}}styles.css" />
-  <script type="text/javascript" src="{{media_url}}script.js"></script>
-  <link rel="alternate" type="application/atom+xml"
-   	title="Recent Issues"
-   	href="{%url django.contrib.syndication.views.feed url="all"%}" />
-   {%if user%}
-     <link rel="alternate" type="application/atom+xml"
-   	  title="Issues created by me"
-   	  href="{%url django.contrib.syndication.views.feed url="mine"%}/{%nickname user True%}" />
-     <link rel="alternate" type="application/atom+xml"
-   	  title="Issues reviewable by me" 
-   	  href="{%url django.contrib.syndication.views.feed url="reviews"%}/{%nickname user True%}" />
-     <link rel="alternate" type="application/atom+xml"
-   	  title="Issues closed by me"
-   	  href="{%url django.contrib.syndication.views.feed url="closed"%}/{%nickname user True%}" />
-   {%endif%}
-   {%if issue%}
-     <link rel="alternate" type="application/atom+xml"
- 	    title="Issue {{issue.key.id}}"
- 	    href="{%url django.contrib.syndication.views.feed url="issue"%}/{{issue.key.id}}" />
-   {%endif%} 
-</head>
-<body onunload="M_unloadPage();">
-
-<!-- Begin help window -->
-<script type="text/javascript"><!--
-var xsrfToken = '{{xsrf_token}}';
-var helpDisplayed = false;
-document.onclick = M_clickCommon;
-var media_url = "{{media_url}}";
-var base_url = "{%url codereview.views.index%}";
-{%if issue%}
-var publish_link = "{%url codereview.views.publish issue.key.id%}";
-{%endif%}
-// -->
-</script>
-<div id="help" style="display: none;">
-{%block help%}{%endblock%}
-<div style="font-size: medium; text-align: center;">Keyboard Shortcuts</div>
-<hr />
-<table width="100%">
-
-  <tr valign="top">
-    <td>
-      <table width="100%">
-        <tr>
-          <td></td><th>File</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">u</span> <b>:</b></td><td>up to issue</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">m</span> <b>:</b></td><td>publish + mail comments</td>
-        </tr>
-	<tr>
-	  <td class="shortcut"><span class="letter">M</span> <b>:</b></td><td>edit review message</td>
-	</tr>
-        <tr>
-          <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to file after / before current file</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">J</span> / <span class="letter">K</span> <b>:</b></td><td>jump to next file with a comment after / before current file</td>
-        </tr>
-        <tr>
-          <td></td><th>Side-by-side diff</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">i</span> <b>:</b></td><td>toggle intra-line diffs</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">e</span> <b>:</b></td><td>expand all comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">c</span> <b>:</b></td><td>collapse all comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">s</span> <b>:</b></td><td>toggle showing all comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">n</span> / <span class="letter">p</span> <b>:</b></td><td>next / previous diff chunk or comment</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">N</span> / <span class="letter">P</span> <b>:</b></td><td>next / previous comment</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>respond to / edit current comment</td>
-        </tr>
-      </table>
-    </td>
-    <td>
-      <table width="100%"> 
-        <tr>
-         <td></td><th>Issue</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">u</span> <b>:</b></td><td>up to list of issues</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">m</span> <b>:</b></td><td>publish + mail comments</td>
-        </tr>
-	<tr>
-	  <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to patch after / before current patch</td>
-	</tr>
-	<tr>
-	  <td class="shortcut"><span class="letter">o</span> / <span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>open current patch in side-by-side view</td>
-	</tr>
-	<tr>
-	  <td class="shortcut"><span class="letter">i</span> <b>:</b></td><td>open current patch in unified diff view</td>
-	</tr>
-        <tr><td>&nbsp;</td></tr>
-        <tr><td></td><th>Issue List</th></tr>
-        <tr>
-          <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to issue after / before current issue</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">o</span> / <span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>open current issue</td>
-        </tr>
-        <tr>
-	  <td class="shortcut"><span class="letter">#</span> <b>:</b></td>
-	  <td>close issue</td>
-	</tr>
-        <tr><td>&nbsp;</td></tr>
-        <tr>
-          <td></td><th>Comment/message editing</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">&lt;Ctrl&gt;</span> + <span class="letter">s</span> <b>:</b></td><td>save comment</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">&lt;Esc&gt;</span> <b>:</b></td><td>cancel edit</td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-
-</table>
-</div>
-<!-- End help window -->
-
-<div align="right">
-{%if is_dev%}
-<div style="float:left; color:green; font-weight:bold">DEVELOPMENT SERVER</div>
-{%else%}
-<div style="float:left; font-weight:bold"><i>Rietveld</i> Code Review Tool</div>
-{%endif%}
-{%if user%}
-<b>{{user.email}} ({%nickname user True%})</b>
-|
-{%if must_choose_nickname%}
-<span style="color:red">Please choose your nickname with</span>{%endif%}
-<a class="novisit" href="{%url codereview.views.settings%}">Settings</a>
-|
-{%endif%}
-{%if is_dev%}
-<a class="novisit" target="_blank" href="/_ah/admin">Admin</a>
-|
-{%endif%}
-<a class="novisit" target="_blank"
-   href="http://code.google.com/p/rietveld/wiki/CodeReviewHelp">Help</a>
-|
-<a class="novisit" target="_blank"
-   href="http://code.google.com/p/rietveld/issues/list">Bug tracker</a>
-|
-<a class="novisit" target="_blank"
-   href="http://groups.google.com/group/codereview-discuss">Discussion group</a>
-|
-<a class="novisit" target="_blank"
-   href="http://code.google.com/p/rietveld">Source code</a>
-|
-{%if user%}
-<a class="novisit" href="/?@action=logout">Sign out</a>
-{% else %}
-<a class="novisit" href="/">Sign in</a>
-{%endif%}
-</div>
-
-<div class="counter">({{counter}})</div>
-<div class="mainmenu">
-  {%block mainmenu%}
-  <a href="{%url codereview.views.index %}">Issues</a>
-  <a href="{%url codereview.views.repos %}">Repositories</a>
-  {%endblock%}
-</div>
-<div class="mainmenu2">
-  {%block mainmenu2%}{%endblock%}
-</div>
-
-<div>
-{%block body%}BODY GOES HERE{%endblock%}
-</div>
-{%block popup%}{%endblock%}
-
-<p />
-<div id="footer" style="float:left; font-size:75%">
-<a href="http://www.python.org/about/website">Website maintained by the Python community</a><br />
-
-<a href="http://www.upfrontsystems.co.za/" title="issue tracker hosting provided by Upfront Systems, South Africa">hosting by Upfront Systems</a> <br/>
-Copyright &copy; 1990-2012, <a href="http://python.org/psf">Python Software Foundation</a><br />
-<a href="http://python.org/about/legal">Legal Statements</a>
-</div> 
-
-<div class="extra" style="font-size: 9pt; float: right; text-align: right;">
-  <div style="height:14px;">
-  <img src="{{media_url}}rss.gif" alt="RSS Feeds" width="14" height="14"
-       align="top" />
-  <a href="{%url django.contrib.syndication.views.feed url="all"%}">Recent Issues</a>
-  {%if user%}
-  |
-  <a href="{%url django.contrib.syndication.views.feed url="mine"%}/{%nickname user True%}">My Issues</a>
-  |
-  <a href="{%url django.contrib.syndication.views.feed url="reviews"%}/{%nickname user True%}">My Reviews</a>
-  |
-  <a href="{%url django.contrib.syndication.views.feed url="closed"%}/{%nickname user True%}">My Closed</a>
-  {%endif%}
-  {%if issue%}
-  |
-  <a href="{%url django.contrib.syndication.views.feed url="issue"%}/{{issue.key.id}}">This issue</a>
-  {%endif%} 
-  </div>
-  <div style="margin-top: .3em;">{%include "live_revision.html"%}</div>
-</div>
-
-</body>
-</html>

rietveld/templates/branch_edit.html

-../templates_svn/branch_edit.html

rietveld/templates/branch_new.html

-../templates_svn/branch_new.html

rietveld/templates/diff.html

-../templates_svn/diff.html

rietveld/templates/diff2.html

-../templates_svn/diff2.html

rietveld/templates/diff_navigation.html

-../templates_svn/diff_navigation.html

rietveld/templates/draft_message.html

-../templates_svn/draft_message.html

rietveld/templates/edit.html

-../templates_svn/edit.html

rietveld/templates/feeds

-../templates_svn/feeds

rietveld/templates/file_navigation.html

-../templates_svn/file_navigation.html

rietveld/templates/inline_comment.html

-../templates_svn/inline_comment.html

rietveld/templates/issue.html

-../templates_svn/issue.html

rietveld/templates/issue_base.html

-{%extends "base.html"%}
-
-{%block mainmenu%}
-  <a href="{%url codereview.views.index%}" class="active">Issues</a>
-  <a href="{%url codereview.views.repos%}">Repositories</a>
-{%endblock%}
-
-
-{%block mainmenu2%}
-  {%if user%}
-    <a href="{%url codereview.views.mine%}">My Issues</a>
-    |
-    <a href="{%url codereview.views.all%}">Recent Issues</a>
-    |
-    <a href="{%url codereview.views.starred%}">Starred Issues</a>
-  {%else%}
-    <a class="novisit" href="{%url codereview.views.index%}">Recent Issues</a>
-    |
-    <a class="novisit" href="/">Sign in</a>
-    with your traccer account to create issues and add comments
-  {%endif%}
-{%endblock%}
-
-
-{%block body%}
-  <h2>
-    {%include "issue_star.html"%}
-{%if issue.edit_allowed and not issue.closed%}
-<span class="issue-close" id="issue-close-{{issue.key.id}}">
-    <a href="javascript:M_closeIssue({{issue.key.id}})">
-      <img src="{{media_url}}close.gif" title="Close This Issue" width="15"
-	   height="15" border="0"></a>
-</span>
-{%endif%}
-    <a href="/issue{{issue.key.id}}"
-       onmouseover="M_showPopUp(this, 'popup-issue');">#{{issue.key.id}}</a>:
-    {{issue.subject}} {%if issue.closed %} (Closed) {%endif%}
-  </h2>
-
-  <table class="issue-details" border="0" width="100%">
-    <tr valign="top">
-
-      <td class="meta" width="20%">
-        {%block issue_actions%}
-          <div>
-            {%if issue.edit_allowed%}
-              <a class="novisit"
-                 href="{%url codereview.views.edit issue.key.id%}">
-                Edit Issue
-              </a>
-            {%else%}
-              <span class="disabled">Can't Edit</span>
-            {%endif%}
-            <br/>
-            {%if user%}
-              <a class="novisit"
-                 href="{%url codereview.views.publish issue.key.id%}">
-                Publish+Mail Comments
-              </a> ('m')
-            {%else%}
-              <span class="disabled">Can't Publish+Mail</span>
-            {%endif%}
-            {%if last_patchset and first_patch%}
-              <br/>
-              <a class="novisit"
-                 href="{%url codereview.views.diff issue.key.id,last_patchset.key.id,first_patch.key.id%}">
-                <b>Start Review</b>
-              </a>
-            {%endif%}
-          </div>
-        {%endblock%}
-        <div class="issue_details_sidebar">
-          <div><b>Created:</b><br/>
-            {{issue.created|timesince}} ago by {{issue.owner|show_user}}
-          </div>
-          <div><b>Modified:</b><br/>
-            {{issue.modified|timesince}} ago
-          </div>
-          <div><b>Reviewers:</b><br/>
-            {{issue.reviewers|show_users}}
-          </div>
-          <div><b>CC:</b><br/>
-            {%nicknames issue.cc%}
-          </div>
-          <div><b>SVN Base:</b><br/>
-            {%firstof issue.base%}
-          </div>
-          <div><b>Visibility:</b><br/>
-            {%if issue.private%}
-                Private. Only viewable by reviewers and CCs.
-            {% else %}
-                Public.
-            {%endif%}
-          </div>
-        </div>
-      </td>
-
-      <td style="padding-left: .8em; padding-right: .8em;" width="80%">
-        {%block issue_body%}BODY GOES HERE{%endblock%}
-      </td>
-    </tr>
-  </table>
-{%endblock%}
-
-
-{%block popup%}
-  {%if issue%}
-    <div class="popup" id="popup-issue">
-      <b>Issue {{issue.key.id}}: {{issue.subject}}
-	{%if issue.closed %} (Closed) {%endif%}</b><br/>
-      Created {{issue.created|timesince}} ago by {%nickname issue.owner%}<br/>
-      Modified {{issue.modified|timesince}} ago<br/>
-      Reviewers: {%nicknames issue.reviewers%}<br/>
-      SVN Base: {{issue.base}}<br/>
-      Comments: {{issue.num_comments}}
-      {%if issue.num_drafts%} <span style="color: red;">+
-	{{issue.num_drafts}} drafts</span>{%endif%}
-    </div>
-  {%endif%}
-{%endblock%}

rietveld/templates/issue_heading.html

-../templates_svn/issue_heading.html

rietveld/templates/issue_row.html

-../templates_svn/issue_row.html

rietveld/templates/issue_star.html

-../templates_svn/issue_star.html

rietveld/templates/live_revision.html

-../templates_svn/live_revision.html

rietveld/templates/mails

-../templates_svn/mails

rietveld/templates/new.html

-../templates_svn/new.html

rietveld/templates/patch.html

-../templates_svn/patch.html

rietveld/templates/patchset.html

-../templates_svn/patchset.html

rietveld/templates/publish.html

-../templates_svn/publish.html

rietveld/templates/repo_new.html

-../templates_svn/repo_new.html

rietveld/templates/repos.html

-../templates_svn/repos.html

rietveld/templates/repos_base.html

-{%extends "base.html"%}
-{%block mainmenu%}
-<a href="{%url codereview.views.index%}">Issues</a>
-<a href="{%url codereview.views.repos%}" class="active">Repositories</a>
-{%endblock%}
-
-{%block mainmenu2%}
-  <a href="{%url codereview.views.repos%}">Repositories and Branches</a>
-  {%if is_admin%}
-    |
-    <a href="{%url codereview.views.repo_init%}">Initialize Repositories</a>
-  {%endif%}
-{%endblock%}
-
-{%block body%}BODY GOES HERE{%endblock%}

rietveld/templates/settings.html

-../templates_svn/settings.html

rietveld/templates/starred.html

-../templates_svn/starred.html

rietveld/templates/use_uploadpy.html

-../templates_svn/use_uploadpy.html

rietveld/templates/user.html

-../templates_svn/user.html

rietveld/templates/user_popup.html

-../templates_svn/user_popup.html

rietveld/templates/view_details_select.html

-../templates_svn/view_details_select.html
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.