Re: [Apache Bloodhound] #822: Weight Loss Product Pure Cambogia Ultra -- How To Mark Fat Burning Diets

2014-11-14 Thread Apache Bloodhound
#822: Weight Loss Product Pure Cambogia Ultra -- How To Mark Fat Burning Diets
-+
  Reporter:  judelatsky  |  Owner:
  Type:  defect  | Status:  closed
  Priority:  major   |  Milestone:
 Component:  dashboard   |Version:  0.7.0
Resolution:  invalid |   Keywords:
-+
Changes (by gjm):

 * status:  new => closed
 * component:   => dashboard
 * resolution:   => invalid


Old description:

> Cambogia is often a fruit tree native Indonesian origin, and that is also
> grown in India, Southeast Asia and West and Central Africa. The fruits
> are shaped pumpkin, and likewise regarded as tamarind. This fruit extract
> powder is actually a pale brown soluble in ethanol and h2o. The extract
> is constructed from the pores and skin on the fruit and contains 50% or
> maybe more of hydroxycitric acid. The useful outcomes of this extract are
> attributed to its energetic component called hydroxycitric acid, a
> spinoff of citric acid. This compound is known to obtain little or no
> side outcomes. It is actually essential to shed excess weight rapidly and
> acquire actual effects. Extremely Pure Cambogia delivers optimum
> efficiency and final results you want using only 100% all-natural
> elements as well as a solid method that not simply assists shed weight
> but will also strengthen the immune technique. Scientific reports have
> shown that men and women utilizing the extract of Garcinia Cambogia shed
> 25% physique excess weight. Is made up of a minimum of sixty p.c hydroxy
> acid (HCA) Most merchandise include 50% or much less. HCA present in
> extracts of Garcinia Cambogia are applied for the remedy of obesity. To
> accomplish this, the anorectic house that encourages a lower provide
> calories to your human body, producing a sense of satiety. In addition,
> it assists inhibiting its conversion to excess fat and blocks the
> formation of latest fat cells. Garcinia cambogia extract aids lower
> stomach fats that functions specifically from the unwanted fat cells. HCA
> blocks the conversion of carbs into body fat by inhibiting the enzyme
> citrate. In inhibition extra fat manufacturing stops as well as
> production of LDL and triglycerides diminished. Buying pure Cambogia
> ultra on abspecker.com is rally excellent concept.
>

>
> Those with medical problems like diabetes, especially insulin ought to
> check with a doctor. There individuals with Alzheimer's illness or other
> sorts of dementia should not take HCA as a consequence of the risk of
> worsening dementia. Like several other health supplement, it truly is
> documented that HCA can result in some undesirable facet consequences
> that will involve. The existence of facet results makes an item that bad.
> It makes a daily assessment of their entire body bodyweight and adjusts
> your dose. Garcinia cambogia is easily the most natural and many
> economical strategy to melt away extra excess weight payment. So
> experience safe to purchase Ultra Pure cambogia. Garcinia cambogia Pure
> Purely natural Ultra All Extremely Pure Cambogia the actual offer to lose
> excess weight? Both of those the media along with the Net are actually
> talking about this complement a good deal in recent months. The primary
> attraction of this particular product or service is that it's wholly
> secure software, definitely pure to speed up metabolic process and burn
> excess fat. Sadly, a substantial section of them are comprehensive
> ripoffs. Some may even destruction your health in some variety or vogue.
> Very best of Ultra Pure Cambogia is its potential to operate by itself.
> It's got been demonstrated that simply using the item as directed from
> the guidance can improve your metabolism by escalating your serotonin,
> and forestall excess fat development and the development of an
> regrettable midsection. A good deal of products along these traces are
> meant to be built while using the very best safest ingredients.
> Regretably, they'll not supply inside the way that Extremely Pure
> Cambogia will. People that have tried this item for them selves have
> returned rave regarding their benefits. Given that this health supplement
> is surprisingly realistic in the money, you really don't have any excuse
> to not test it for yourself. A very low metabolic amount might be a death
> sentence for fat reduction. Once your metabolic rate is slow, you are
> just not going to burn up fat how you want. Buying pure Cambogia ultra on
> abspecker.com is incredibly affordable inside our on-line store.
>
> http://abspecker.com/
>

> This product or service also does wonders for his or her capacity to
> suppress hunger. Which may sound like something of a pink flag, however
> you have nothing to worry about. Extremely Pure Cambogia just functioning
> to improve your energy stages so that your overall temper will increase,
> too. When this takes place, you are going to not switch to m

Re: [Apache Bloodhound] #822: (spam) (was: Weight Loss Product Pure Cambogia Ultra -- How To Mark Fat Burning Diets)

2014-11-14 Thread Apache Bloodhound
#822: (spam)
-+
  Reporter:  judelatsky  |  Owner:
  Type:  defect  | Status:  closed
  Priority:  major   |  Milestone:
 Component:  dashboard   |Version:  0.7.0
Resolution:  invalid |   Keywords:
-+

-- 
Ticket URL: 
Apache Bloodhound 
The Apache Bloodhound issue tracker


[Apache Bloodhound] Deleted User: judelatsky

2014-11-14 Thread Apache Bloodhound
Deleted User for user judelatsky

--
Apache Bloodhound 
The Apache Bloodhound issue tracker



svn commit: r1639602 [1/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 11:06:23 2014
New Revision: 1639602

URL: http://svn.apache.org/r1639602
Log:
importing trac-1.0.2

Added:
bloodhound/vendor/trac/current/.travis.yml
bloodhound/vendor/trac/current/trac/versioncontrol/web_ui/tests/browser.py
bloodhound/vendor/trac/current/trac/versioncontrol/web_ui/tests/changeset.py
bloodhound/vendor/trac/current/trac/versioncontrol/web_ui/tests/log.py
Removed:
bloodhound/vendor/trac/current/trac/tests/compat.py
bloodhound/vendor/trac/current/trac/ticket/templates/admin_components.html
bloodhound/vendor/trac/current/trac/ticket/templates/admin_enums.html
bloodhound/vendor/trac/current/trac/ticket/templates/admin_milestones.html
bloodhound/vendor/trac/current/trac/ticket/templates/admin_versions.html
bloodhound/vendor/trac/current/trac/timeline/tests/web_ui.py
bloodhound/vendor/trac/current/trac/timeline/tests/wikisyntax.py
bloodhound/vendor/trac/current/trac/util/tests/translation.py
bloodhound/vendor/trac/current/tracopt/ticket/tests/
bloodhound/vendor/trac/current/tracopt/versioncontrol/git/tests/git_fs.py
Modified:
bloodhound/vendor/trac/current/ChangeLog
bloodhound/vendor/trac/current/THANKS
bloodhound/vendor/trac/current/contrib/workflow/migrate_original_to_basic.py
bloodhound/vendor/trac/current/doc/dev/testing-intro.rst
bloodhound/vendor/trac/current/sample-plugins/HelloWorld.py
bloodhound/vendor/trac/current/sample-plugins/Timestamp.py
bloodhound/vendor/trac/current/sample-plugins/milestone_to_version.py

bloodhound/vendor/trac/current/sample-plugins/permissions/public_wiki_policy.py

bloodhound/vendor/trac/current/sample-plugins/permissions/vulnerability_tickets.py
bloodhound/vendor/trac/current/sample-plugins/revision_links.py
bloodhound/vendor/trac/current/sample-plugins/workflow/CodeReview.py
bloodhound/vendor/trac/current/sample-plugins/workflow/DeleteTicket.py
bloodhound/vendor/trac/current/sample-plugins/workflow/StatusFixer.py
bloodhound/vendor/trac/current/sample-plugins/workflow/VoteOperation.py
bloodhound/vendor/trac/current/setup.cfg
bloodhound/vendor/trac/current/setup.py
bloodhound/vendor/trac/current/trac/about.py
bloodhound/vendor/trac/current/trac/admin/console.py
bloodhound/vendor/trac/current/trac/admin/templates/admin.html
bloodhound/vendor/trac/current/trac/admin/templates/admin_basics.html
bloodhound/vendor/trac/current/trac/admin/templates/admin_legacy.html
bloodhound/vendor/trac/current/trac/admin/templates/admin_logging.html
bloodhound/vendor/trac/current/trac/admin/templates/admin_perms.html
bloodhound/vendor/trac/current/trac/admin/templates/admin_plugins.html
bloodhound/vendor/trac/current/trac/admin/tests/console-tests.txt
bloodhound/vendor/trac/current/trac/admin/tests/console.py
bloodhound/vendor/trac/current/trac/admin/tests/functional.py
bloodhound/vendor/trac/current/trac/admin/web_ui.py
bloodhound/vendor/trac/current/trac/cache.py
bloodhound/vendor/trac/current/trac/db/api.py
bloodhound/vendor/trac/current/trac/db/mysql_backend.py
bloodhound/vendor/trac/current/trac/db/postgres_backend.py
bloodhound/vendor/trac/current/trac/db/sqlite_backend.py
bloodhound/vendor/trac/current/trac/db/tests/__init__.py
bloodhound/vendor/trac/current/trac/db/tests/api.py
bloodhound/vendor/trac/current/trac/db/tests/mysql_test.py
bloodhound/vendor/trac/current/trac/db/tests/util.py
bloodhound/vendor/trac/current/trac/db/util.py
bloodhound/vendor/trac/current/trac/db_default.py
bloodhound/vendor/trac/current/trac/dist.py
bloodhound/vendor/trac/current/trac/env.py
bloodhound/vendor/trac/current/trac/htdocs/css/admin.css
bloodhound/vendor/trac/current/trac/htdocs/css/report.css
bloodhound/vendor/trac/current/trac/htdocs/css/roadmap.css
bloodhound/vendor/trac/current/trac/htdocs/css/ticket.css
bloodhound/vendor/trac/current/trac/htdocs/css/trac.css
bloodhound/vendor/trac/current/trac/htdocs/css/wiki.css
bloodhound/vendor/trac/current/trac/htdocs/js/auto_preview.js
bloodhound/vendor/trac/current/trac/htdocs/js/wikitoolbar.js
bloodhound/vendor/trac/current/trac/loader.py
bloodhound/vendor/trac/current/trac/locale/de/LC_MESSAGES/messages.po
bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/messages-js.po
bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/messages.po
bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/tracini.po
bloodhound/vendor/trac/current/trac/locale/messages-js.pot
bloodhound/vendor/trac/current/trac/locale/messages.pot
bloodhound/vendor/trac/current/trac/locale/tracini.pot
bloodhound/vendor/trac/current/trac/mimeview/api.py
bloodhound/vendor/trac/current/trac/mimeview/tests/api.py
bloodhound/vendor/trac/current/trac/mimeview/tests/patch.html
bloodhound/vendor/trac/current/trac/mimeview/tests/patch.py

svn commit: r1639602 [4/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/messages.po?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/messages.po 
(original)
+++ bloodhound/vendor/trac/current/trac/locale/ja/LC_MESSAGES/messages.po Fri 
Nov 14 11:06:23 2014
@@ -1,18 +1,18 @@
 # Japanese (Japan) translations for Trac.
-# Copyright (C) 2007-2013 Edgewall Software
+# Copyright (C) 2007-2014 Edgewall Software
 # This file is distributed under the same license as the Trac project.
 # Jeroen Ruigrok van der Werven , 2007.
 # Kyosuke Takayama , 2008,2009.
 # hirobe, 2008.
 # kabuchan, 2009.
 # IWAI, Masaharu , 2009,2010.
-# Jun Omae , 2010-2013.
+# Jun Omae , 2010-2014.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Trac 1.0\n"
+"Project-Id-Version: Trac 1.0.2\n"
 "Report-Msgid-Bugs-To: trac-...@googlegroups.com\n"
-"POT-Creation-Date: 2013-03-21 22:54+0100\n"
+"POT-Creation-Date: 2014-09-01 12:43+\n"
 "PO-Revision-Date: 2011-07-14 21:38+0900\n"
 "Last-Translator: Jun Omae \n"
 "Language-Team: ja \n"
@@ -20,7 +20,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
@@ -52,7 +52,7 @@ msgstr "コピー"
 msgid "Create a copy of this ticket"
 msgstr "このチケットのコピーを作成する"
 
-#: tracopt/ticket/commit_updater.py:275
+#: tracopt/ticket/commit_updater.py:283
 msgid ""
 "Insert a changeset message into the output.\n"
 "\n"
@@ -78,12 +78,16 @@ msgstr ""
 " - `repository`: チェンジセットがあるリポジトリ\n"
 " - `revision`: 要求のチェンジセットを示すリビジョン"
 
+#: tracopt/ticket/commit_updater.py:313
+msgid "(The changeset message doesn't reference this ticket)"
+msgstr "(チェンジセットのメッセージはこのチケットを参ç…
§ã—ていません)"
+
 #: tracopt/ticket/deleter.py:73 tracopt/ticket/deleter.py:90
-#: trac/ticket/templates/report_list.html:82
+#: trac/ticket/templates/report_list.html:92
 msgid "Delete"
 msgstr "削除"
 
-#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:42
+#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:51
 msgid "Delete ticket"
 msgstr "チケットの削除"
 
@@ -107,82 +111,105 @@ msgstr "チケット #%(id)s
 msgid "Comment %(num)s not found"
 msgstr "コメント %(num)s が見つかりません"
 
-#: tracopt/ticket/templates/ticket_delete.html:11
+#: tracopt/ticket/templates/ticket_delete.html:21
 #, python-format
 msgid "Delete Ticket #%(id)s"
 msgstr "チケット #%(id)s の削除"
 
-#: tracopt/ticket/templates/ticket_delete.html:12
-#: tracopt/ticket/templates/ticket_delete.html:48
+#: tracopt/ticket/templates/ticket_delete.html:22
+#: tracopt/ticket/templates/ticket_delete.html:58
 #, python-format
 msgid "Delete comment %(num)s on Ticket #%(id)s"
 msgstr "チケット #%(id)s コメント %(num)s の削除"
 
-#: tracopt/ticket/templates/ticket_delete.html:20
+#: tracopt/ticket/templates/ticket_delete.html:30
 #, python-format
 msgid "Delete [1:Ticket #%(id)s]"
 msgstr "[1:チケット #%(id)s] の削除"
 
-#: tracopt/ticket/templates/ticket_delete.html:32
+#: tracopt/ticket/templates/ticket_delete.html:42
 msgid "Are you sure you want to delete this ticket?"
 msgstr "このチケットを削除しますか?"
 
-#: tracopt/ticket/templates/ticket_delete.html:33
+#: tracopt/ticket/templates/ticket_delete.html:43
 #, python-format
 msgid ""
 "(comments: %(comments)s,\n"
 " attachments: %(attachments)s)"
 msgstr "(コメント: %(comments)s, 添付ファイル: %(attachments)s)"
 
-#: tracopt/ticket/templates/ticket_delete.html:36
-#: tracopt/ticket/templates/ticket_delete.html:61
-#: trac/templates/attachment.html:70 trac/wiki/templates/wiki_delete.html:95
+#: tracopt/ticket/templates/ticket_delete.html:46
+#: tracopt/ticket/templates/ticket_delete.html:71
+#: trac/templates/attachment.html:80 trac/wiki/templates/wiki_delete.html:105
 msgid "This is an irreversible operation."
 msgstr "これは取り消しの効かない操作です。"
 
-#: tracopt/ticket/templates/ticket_delete.html:41
-#: tracopt/ticket/templates/ticket_delete.html:65
-#: trac/admin/templates/admin_components.html:55
-#: trac/admin/templates/admin_enums.html:24
-#: trac/admin/templates/admin_milestones.html:74
-#: trac/admin/templates/admin_versions.html:50
-#: trac/templates/attachment.html:63 trac/templates/attachment.html:76
-#: trac/ticket/templates/milestone_delete.html:40
-#: trac/ticket/templates/milestone_edit.html:108
-#: trac/ticket/templates/report_delete.html:21
-#: trac/ticket/templates/report_edit.html:44
-#: trac/ticket/templates/ticket_cha

svn commit: r1639602 [9/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/ticket/roadmap.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/ticket/roadmap.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/ticket/roadmap.py (original)
+++ bloodhound/vendor/trac/current/trac/ticket/roadmap.py Fri Nov 14 11:06:23 
2014
@@ -350,6 +350,13 @@ def grouped_stats_data(env, stats_provid
 group_names = field['options']
 if field.get('optional'):
 group_names.insert(0, '')
+elif field.get('custom'):
+group_names = [name for name, in env.db_query("""
+SELECT DISTINCT COALESCE(c.value, '') FROM ticket_custom c
+WHERE c.name=%s ORDER BY COALESCE(c.value, '')
+""", (by, ))]
+if '' not in group_names:
+group_names.insert(0, '')
 else:
 group_names = [name for name, in env.db_query("""
 SELECT DISTINCT COALESCE(%s, '') FROM ticket
@@ -854,6 +861,9 @@ class MilestoneModule(Component):
 'TICKET_ADMIN' in req.perm)
 else:
 req.perm(milestone.resource).require('MILESTONE_CREATE')
+if milestone.name:
+add_notice(req, _("Milestone %(name)s does not exist. You can"
+  " create it here.", name=milestone.name))
 
 chrome = Chrome(self.env)
 chrome.add_jquery_ui(req)
@@ -1027,7 +1037,7 @@ class MilestoneModule(Component):
 milestone_realm = Resource('milestone')
 for name, due, completed, description \
 in MilestoneCache(self.env).milestones.itervalues():
-if any(r.search(description) or r.search(name)
+if all(r.search(description) or r.search(name)
for r in term_regexps):
 milestone = milestone_realm(id=name)
 if 'MILESTONE_VIEW' in req.perm(milestone):

Modified: bloodhound/vendor/trac/current/trac/ticket/templates/batch_modify.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/ticket/templates/batch_modify.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/ticket/templates/batch_modify.html 
(original)
+++ bloodhound/vendor/trac/current/trac/ticket/templates/batch_modify.html Fri 
Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/1999/xhtml";
  xmlns:py="http://genshi.edgewall.org/";
  xmlns:i18n="http://genshi.edgewall.org/i18n";
@@ -12,7 +22,7 @@
 Comment:
   
   
+  id="batchmod_value_comment" name="batchmod_value_comment" 
class="trac-fullwidth" cols="70" rows="5"/>
   
 
 

Modified: 
bloodhound/vendor/trac/current/trac/ticket/templates/milestone_delete.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/ticket/templates/milestone_delete.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/ticket/templates/milestone_delete.html 
(original)
+++ bloodhound/vendor/trac/current/trac/ticket/templates/milestone_delete.html 
Fri Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: 
bloodhound/vendor/trac/current/trac/ticket/templates/milestone_edit.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/ticket/templates/milestone_edit.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/ticket/templates/milestone_edit.html 
(original)
+++ bloodhound/vendor/trac/current/trac/ticket/templates/milestone_edit.html 
Fri Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -103,9 +113,10 @@
 
 
   
-Description (you may use WikiFormatting 
here):
-
+
+  Description: (you may use WikiFormatting here)
+
+
 ${milestone.description}
   
 

Modified: 
bloodhound/vendor/trac/current/trac/ticket/templates/milestone_view.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/ticket/templates/milestone_view.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/ticket/templates/milestone_view.html 
(original)
+++ bloodhound/vendor/trac/current/trac/ticket/templates/milestone_view.html 
Fri Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/vendor/t

svn commit: r1639602 [3/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/admin/web_ui.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/admin/web_ui.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/admin/web_ui.py (original)
+++ bloodhound/vendor/trac/current/trac/admin/web_ui.py Fri Nov 14 11:06:23 2014
@@ -22,11 +22,6 @@ import pkg_resources
 import re
 import shutil
 
-try:
-from babel.core import Locale
-except ImportError:
-Locale = None
-
 from genshi import HTML
 from genshi.builder import tag
 
@@ -37,7 +32,7 @@ from trac.perm import PermissionSystem, 
 from trac.util.datefmt import all_timezones, pytz
 from trac.util.text import exception_to_unicode, \
unicode_to_base64, unicode_from_base64
-from trac.util.translation import _, get_available_locales, ngettext
+from trac.util.translation import _, Locale, get_available_locales, ngettext
 from trac.web import HTTPNotFound, IRequestHandler
 from trac.web.chrome import add_notice, add_stylesheet, \
 add_warning, Chrome, INavigationContributor, \
@@ -71,8 +66,8 @@ class AdminModule(Component):
 # admin panel is available
 panels, providers = self._get_panels(req)
 if panels:
-yield 'mainnav', 'admin', tag.a(_('Admin'), href=req.href.admin(),
-title=_('Administration'))
+yield 'mainnav', 'admin', tag.a(_("Admin"), href=req.href.admin(),
+title=_("Administration"))
 
 # IRequestHandler methods
 
@@ -88,7 +83,7 @@ class AdminModule(Component):
 def process_request(self, req):
 panels, providers = self._get_panels(req)
 if not panels:
-raise HTTPNotFound(_('No administration panels available'))
+raise HTTPNotFound(_("No administration panels available"))
 
 def _panel_order(p1, p2):
 if p1[::2] == ('general', 'basics'):
@@ -114,11 +109,11 @@ class AdminModule(Component):
 panel_id = \
 filter(lambda panel: panel[0] == cat_id, panels)[0][2]
 except IndexError:
-raise HTTPNotFound(_('Unknown administration panel'))
+raise HTTPNotFound(_("Unknown administration panel"))
 
 provider = providers.get((cat_id, panel_id), None)
 if not provider:
-raise HTTPNotFound(_('Unknown administration panel'))
+raise HTTPNotFound(_("Unknown administration panel"))
 
 if hasattr(provider, 'render_admin_panel'):
 template, data = provider.render_admin_panel(req, cat_id, panel_id,
@@ -189,14 +184,14 @@ def _save_config(config, req, log, notic
 try:
 config.save()
 if notices is None:
-notices = [_('Your changes have been saved.')]
+notices = [_("Your changes have been saved.")]
 for notice in notices:
 add_notice(req, notice)
 except Exception, e:
-log.error('Error writing to trac.ini: %s', exception_to_unicode(e))
-add_warning(req, _('Error writing to trac.ini, make sure it is '
-   'writable by the web server. Your changes have '
-   'not been saved.'))
+log.error("Error writing to trac.ini: %s", exception_to_unicode(e))
+add_warning(req, _("Error writing to trac.ini, make sure it is "
+   "writable by the web server. Your changes have "
+   "not been saved."))
 
 
 class BasicsAdminPanel(Component):
@@ -207,7 +202,7 @@ class BasicsAdminPanel(Component):
 
 def get_admin_panels(self, req):
 if 'TRAC_ADMIN' in req.perm('admin', 'general/basics'):
-yield ('general', _('General'), 'basics', _('Basic Settings'))
+yield ('general', _("General"), 'basics', _("Basic Settings"))
 
 def render_admin_panel(self, req, cat, page, path_info):
 if Locale:
@@ -267,7 +262,7 @@ class LoggingAdminPanel(Component):
 
 def get_admin_panels(self, req):
 if 'TRAC_ADMIN' in req.perm('admin', 'general/logging'):
-yield ('general', _('General'), 'logging', _('Logging'))
+yield ('general', _("General"), 'logging', _("Logging"))
 
 def render_admin_panel(self, req, cat, page, path_info):
 log_type = self.env.log_type
@@ -276,16 +271,18 @@ class LoggingAdminPanel(Component):
 log_dir = os.path.join(self.env.path, 'log')
 
 log_types = [
-dict(name='none', label=_('None'), selected=log_type == 'none', 
disabled=False),
-dict(name='stderr', label=_('Console'),
+dict(name='none', label=_("None"),
+ selected=log_type == 'none', disabled=False),
+dict(name='stderr', label=_("Console"),
  selected=log_type == 'stderr

svn commit: r1639602 [2/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/admin/tests/console.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/admin/tests/console.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/admin/tests/console.py (original)
+++ bloodhound/vendor/trac/current/trac/admin/tests/console.py Fri Nov 14 
11:06:23 2014
@@ -14,6 +14,7 @@
 # Author: Tim Moloney 
 
 import difflib
+import inspect
 import os
 import re
 import sys
@@ -42,9 +43,10 @@ import trac.search.web_ui
 import trac.timeline.web_ui
 import trac.wiki.web_ui
 
-from trac.admin import console
-from trac.admin.api import AdminCommandManager, console_date_format, \
-   get_console_locale
+from trac.admin.api import AdminCommandManager, IAdminCommandProvider, \
+   console_date_format, get_console_locale
+from trac.admin.console import TracAdmin, TracAdminHelpMacro
+from trac.core import Component, implements
 from trac.test import EnvironmentStub
 from trac.util.datefmt import format_date, get_date_format_hint, \
   get_datetime_format_hint
@@ -75,20 +77,50 @@ def load_expected_results(file, pattern)
 return expected
 
 
+def execute_cmd(tracadmin, cmd, strip_trailing_space=True, input=None):
+_in = sys.stdin
+_err = sys.stderr
+_out = sys.stdout
+try:
+if input:
+sys.stdin = StringIO(input.encode('utf-8'))
+sys.stdin.encoding = 'utf-8' # fake input encoding
+sys.stderr = sys.stdout = out = StringIO()
+out.encoding = 'utf-8' # fake output encoding
+retval = None
+try:
+retval = tracadmin.onecmd(cmd)
+except SystemExit:
+pass
+value = out.getvalue()
+if isinstance(value, str): # reverse what print_listing did
+value = value.decode('utf-8')
+if strip_trailing_space:
+return retval, STRIP_TRAILING_SPACE.sub('', value)
+else:
+return retval, value
+finally:
+sys.stdin = _in
+sys.stderr = _err
+sys.stdout = _out
+
+
 class TracadminTestCase(unittest.TestCase):
 """
 Tests the output of trac-admin and is meant to be used with
 .../trac/tests.py.
 """
 
-expected_results = load_expected_results(
-os.path.join(os.path.split(__file__)[0], 'console-tests.txt'),
-'= (test_[^ ]+) =')
+expected_results_file = os.path.join(os.path.dirname(__file__),
+ 'console-tests.txt')
+
+expected_results = load_expected_results(expected_results_file,
+ '= (test_[^ ]+) =')
 
 def setUp(self):
 self.env = EnvironmentStub(default_data=True, enable=('trac.*',),
disable=('trac.tests.*',))
-self._admin = console.TracAdmin()
+self._admin = TracAdmin()
 self._admin.env_set('', self.env)
 
 # Set test date to 11th Jan 2004
@@ -98,34 +130,9 @@ class TracadminTestCase(unittest.TestCas
 self.env = None
 
 def _execute(self, cmd, strip_trailing_space=True, input=None):
-_in = sys.stdin
-_err = sys.stderr
-_out = sys.stdout
-try:
-if input:
-sys.stdin = StringIO(input.encode('utf-8'))
-sys.stdin.encoding = 'utf-8' # fake input encoding
-sys.stderr = sys.stdout = out = StringIO()
-out.encoding = 'utf-8' # fake output encoding
-retval = None
-try:
-retval = self._admin.onecmd(cmd)
-except SystemExit:
-pass
-value = out.getvalue()
-if isinstance(value, str): # reverse what print_listing did
-value = value.decode('utf-8')
-# DEBUG: uncomment in case of `AssertionError: 0 != 2` in tests
-#if retval != 0:
-#print>>_err, value
-if strip_trailing_space:
-return retval, STRIP_TRAILING_SPACE.sub('', value)
-else:
-return retval, value
-finally:
-sys.stdin = _in
-sys.stderr = _err
-sys.stdout = _out
+return execute_cmd(self._admin, cmd,
+   strip_trailing_space=strip_trailing_space,
+   input=input)
 
 @property
 def _datetime_format_hint(self):
@@ -136,10 +143,19 @@ class TracadminTestCase(unittest.TestCas
 self.assertEqual(1, len(docs))
 return docs[0][2]
 
-def assertEqual(self, expected_results, output):
+def assertExpectedResult(self, output, args=None):
+test_name = inspect.stack()[1][3]
+expected_result = self.expected_results[test_name]
+if args is not None:
+expected_result %

svn commit: r1639602 [11/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templ

2014-11-14 Thread rjollos
Modified: 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/repository_index.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/versioncontrol/templates/repository_index.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/repository_index.html
 (original)
+++ 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/repository_index.html
 Fri Nov 14 11:06:23 2014
@@ -1,4 +1,15 @@
-
+
 http://www.w3.org/1999/xhtml";
 xmlns:py="http://genshi.edgewall.org/";
 xmlns:xi="http://www.w3.org/2001/XInclude"; py:strip="">
@@ -11,11 +22,11 @@
 
   
 
-  
+  
 $reponame
-  
+  
 
   
   

Modified: 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/revisionlog.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/versioncontrol/templates/revisionlog.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/revisionlog.html 
(original)
+++ 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/revisionlog.html 
Fri Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/sortable_th.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/versioncontrol/templates/sortable_th.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/sortable_th.html 
(original)
+++ 
bloodhound/vendor/trac/current/trac/versioncontrol/templates/sortable_th.html 
Fri Nov 14 11:06:23 2014
@@ -1,4 +1,14 @@
-

svn commit: r1639602 [14/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templ

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/tracopt/perm/authz_policy.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/tracopt/perm/authz_policy.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/tracopt/perm/authz_policy.py (original)
+++ bloodhound/vendor/trac/current/tracopt/perm/authz_policy.py Fri Nov 14 
11:06:23 2014
@@ -14,7 +14,7 @@
 #
 # Author: Alec Thomas 
 
-from fnmatch import fnmatch
+from fnmatch import fnmatchcase
 from itertools import groupby
 import os
 
@@ -23,7 +23,6 @@ from trac.config import ConfigurationErr
 from trac.perm import PermissionSystem, IPermissionPolicy
 from trac.util import lazy
 from trac.util.text import to_unicode
-from trac.util.translation import _
 
 ConfigObj = None
 try:
@@ -196,14 +195,11 @@ class AuthzPolicy(Component):
 self.log.error("Error parsing authz permission policy file: %s",
to_unicode(e))
 raise ConfigurationError()
-if not self.authz:
-self.log.error("The authz file is empty.")
-raise ConfigurationError()
 groups = {}
 for group, users in self.authz.get('groups', {}).iteritems():
 if isinstance(users, basestring):
 users = [users]
-groups[group] = users
+groups[group] = map(to_unicode, users)
 
 self.groups_by_user = {}
 
@@ -220,28 +216,29 @@ class AuthzPolicy(Component):
 self.authz_mtime = os.path.getmtime(self.get_authz_file)
 
 def normalise_resource(self, resource):
+def to_descriptor(resource):
+id = resource.id
+return '%s:%s@%s' % (resource.realm or '*',
+ id if id is not None else '*',
+ resource.version or '*')
+
 def flatten(resource):
 if not resource:
 return ['*:*@*']
-if not (resource.realm or resource.id):
-return ['%s:%s@%s' % (resource.realm or '*',
-  resource.id or '*',
-  resource.version or '*')]
+descriptor = to_descriptor(resource)
+if not resource.realm and resource.id is None:
+return [descriptor]
 # XXX Due to the mixed functionality in resource we can end up with
 # ticket, ticket:1, ticket:1@10. This code naively collapses all
 # subsets of the parent resource into one. eg. ticket:1@10
 parent = resource.parent
-while parent and (resource.realm == parent.realm or
-  (resource.realm == parent.realm and
-   resource.id == parent.id)):
+while parent and resource.realm == parent.realm:
 parent = parent.parent
 if parent:
-parent = flatten(parent)
+return flatten(parent) + [descriptor]
 else:
-parent = []
-return parent + ['%s:%s@%s' % (resource.realm or '*',
-   resource.id or '*',
-   resource.version or '*')]
+return [descriptor]
+
 return '/'.join(flatten(resource))
 
 def authz_permissions(self, resource_key, username):
@@ -252,14 +249,15 @@ class AuthzPolicy(Component):
 else:
 valid_users = ['*', 'anonymous']
 for resource_section in [a for a in self.authz.sections
- if a != 'groups']:
-resource_glob = resource_section
+   if a != 'groups']:
+resource_glob = to_unicode(resource_section)
 if '@' not in resource_glob:
 resource_glob += '@*'
 
-if fnmatch(resource_key, resource_glob):
+if fnmatchcase(resource_key, resource_glob):
 section = self.authz[resource_section]
 for who, permissions in section.iteritems():
+who = to_unicode(who)
 if who in valid_users or \
 who in self.groups_by_user.get(username, []):
 self.log.debug('%s matched section %s for user %s',

Modified: bloodhound/vendor/trac/current/tracopt/perm/config_perm_provider.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/tracopt/perm/config_perm_provider.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/tracopt/perm/config_perm_provider.py 
(original)
+++ bloodhound/vendor/trac/current/tracopt/perm/config_perm_provider.py Fri Nov 
14 11:06:23 2014
@@ -34,17 +34,21 @@ class ExtraPermissionsProvider(Component
 and a comma-separated list of perm

svn commit: r1639602 [6/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/locale/messages.pot
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/locale/messages.pot?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/locale/messages.pot (original)
+++ bloodhound/vendor/trac/current/trac/locale/messages.pot Fri Nov 14 11:06:23 
2014
@@ -1,14 +1,14 @@
 # Translations template for Trac.
-# Copyright (C) 2013 Edgewall Software
+# Copyright (C) 2014 Edgewall Software
 # This file is distributed under the same license as the Trac project.
-# FIRST AUTHOR , 2013.
+# FIRST AUTHOR , 2014.
 #
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: Trac 1.0.2\n"
 "Report-Msgid-Bugs-To: trac-...@googlegroups.com\n"
-"POT-Creation-Date: 2013-03-21 22:54+0100\n"
+"POT-Creation-Date: 2014-09-01 12:43+\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -44,7 +44,7 @@ msgstr ""
 msgid "Create a copy of this ticket"
 msgstr ""
 
-#: tracopt/ticket/commit_updater.py:275
+#: tracopt/ticket/commit_updater.py:283
 msgid ""
 "Insert a changeset message into the output.\n"
 "\n"
@@ -59,12 +59,16 @@ msgid ""
 " - `revision`: the revision of the desired changeset"
 msgstr ""
 
+#: tracopt/ticket/commit_updater.py:313
+msgid "(The changeset message doesn't reference this ticket)"
+msgstr ""
+
 #: tracopt/ticket/deleter.py:73 tracopt/ticket/deleter.py:90
-#: trac/ticket/templates/report_list.html:82
+#: trac/ticket/templates/report_list.html:92
 msgid "Delete"
 msgstr ""
 
-#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:42
+#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:51
 msgid "Delete ticket"
 msgstr ""
 
@@ -88,89 +92,112 @@ msgstr ""
 msgid "Comment %(num)s not found"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:11
+#: tracopt/ticket/templates/ticket_delete.html:21
 #, python-format
 msgid "Delete Ticket #%(id)s"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:12
-#: tracopt/ticket/templates/ticket_delete.html:48
+#: tracopt/ticket/templates/ticket_delete.html:22
+#: tracopt/ticket/templates/ticket_delete.html:58
 #, python-format
 msgid "Delete comment %(num)s on Ticket #%(id)s"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:20
+#: tracopt/ticket/templates/ticket_delete.html:30
 #, python-format
 msgid "Delete [1:Ticket #%(id)s]"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:32
+#: tracopt/ticket/templates/ticket_delete.html:42
 msgid "Are you sure you want to delete this ticket?"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:33
+#: tracopt/ticket/templates/ticket_delete.html:43
 #, python-format
 msgid ""
 "(comments: %(comments)s,\n"
 " attachments: %(attachments)s)"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:36
-#: tracopt/ticket/templates/ticket_delete.html:61
-#: trac/templates/attachment.html:70 trac/wiki/templates/wiki_delete.html:95
+#: tracopt/ticket/templates/ticket_delete.html:46
+#: tracopt/ticket/templates/ticket_delete.html:71
+#: trac/templates/attachment.html:80 trac/wiki/templates/wiki_delete.html:105
 msgid "This is an irreversible operation."
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:41
-#: tracopt/ticket/templates/ticket_delete.html:65
-#: trac/admin/templates/admin_components.html:55
-#: trac/admin/templates/admin_enums.html:24
-#: trac/admin/templates/admin_milestones.html:74
-#: trac/admin/templates/admin_versions.html:50
-#: trac/templates/attachment.html:63 trac/templates/attachment.html:76
-#: trac/ticket/templates/milestone_delete.html:40
-#: trac/ticket/templates/milestone_edit.html:108
-#: trac/ticket/templates/report_delete.html:21
-#: trac/ticket/templates/report_edit.html:44
-#: trac/ticket/templates/ticket_change.html:118
-#: trac/versioncontrol/templates/admin_repositories.html:84
-#: trac/wiki/templates/wiki_delete.html:98
-#: trac/wiki/templates/wiki_edit_form.html:73
-#: trac/wiki/templates/wiki_rename.html:32
+#: tracopt/ticket/templates/ticket_delete.html:52
+#: tracopt/ticket/templates/ticket_delete.html:76
+#: trac/templates/attachment.html:73 trac/templates/attachment.html:87
+#: trac/ticket/templates/admin_components.html:64
+#: trac/ticket/templates/admin_enums.html:38
+#: trac/ticket/templates/admin_milestones.html:93
+#: trac/ticket/templates/admin_versions.html:61
+#: trac/ticket/templates/milestone_delete.html:45
+#: trac/ticket/templates/milestone_edit.html:128
+#: trac/ticket/templates/report_delete.html:32
+#: trac/ticket/templates/report_edit.html:62
+#: trac/ticket/templates/ticket_change.html:127
+#: trac/versioncontrol/templates/admin_repositories.html:98
+#: trac/wiki/templates/wiki_delete.html:112
+#: trac/wiki/templates/wiki_edit_form.html:84
+#: trac/wiki/templates/wiki_rename.html:43
 msgid "Cancel"
 msgstr ""
 
-#: tracopt/

svn commit: r1639602 [7/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/locale/tracini.pot
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/locale/tracini.pot?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/locale/tracini.pot (original)
+++ bloodhound/vendor/trac/current/trac/locale/tracini.pot Fri Nov 14 11:06:23 
2014
@@ -1,14 +1,14 @@
 # Translations template for Trac.
-# Copyright (C) 2013 Edgewall Software
+# Copyright (C) 2014 Edgewall Software
 # This file is distributed under the same license as the Trac project.
-# FIRST AUTHOR , 2013.
+# FIRST AUTHOR , 2014.
 #
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: Trac 1.0.2\n"
 "Report-Msgid-Bugs-To: trac-...@googlegroups.com\n"
-"POT-Creation-Date: 2013-03-21 22:54+0100\n"
+"POT-Creation-Date: 2014-09-01 12:43+\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -51,11 +51,11 @@ msgid ""
 "(''since 0.10'')."
 msgstr ""
 
-#: tracopt/perm/authz_policy.py:132
+#: tracopt/perm/authz_policy.py:134
 msgid "Location of authz policy configuration file."
 msgstr ""
 
-#: tracopt/perm/config_perm_provider.py:24
+#: tracopt/perm/config_perm_provider.py:27
 msgid ""
 "This section provides a way to add arbitrary permissions to a\n"
 "Trac environment. This can be useful for adding new permissions to use\n"
@@ -66,17 +66,21 @@ msgid ""
 "and a comma-separated list of permissions. For example:\n"
 "{{{\n"
 "[extra-permissions]\n"
-"extra_admin = extra_view, extra_modify, extra_delete\n"
+"EXTRA_ADMIN = EXTRA_VIEW, EXTRA_MODIFY, EXTRA_DELETE\n"
 "}}}\n"
 "This entry will define three new permissions `EXTRA_VIEW`,\n"
 "`EXTRA_MODIFY` and `EXTRA_DELETE`, as well as a meta-permissions\n"
 "`EXTRA_ADMIN` that grants all three permissions.\n"
 "\n"
+"The permissions are created in upper-case characters regardless of\n"
+"the casing of the definitions in `trac.ini`. For example, the\n"
+"definition `extra_view` would create the permission `EXTRA_VIEW`.\n"
+"\n"
 "If you don't want a meta-permission, start the meta-name with an\n"
 "underscore (`_`):\n"
 "{{{\n"
 "[extra-permissions]\n"
-"_perms = extra_view, extra_modify\n"
+"_perms = EXTRA_VIEW, EXTRA_MODIFY\n"
 "}}}"
 msgstr ""
 
@@ -113,68 +117,68 @@ msgstr ""
 msgid "Send ticket change notification when updating a ticket."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:169
+#: tracopt/versioncontrol/git/git_fs.py:269
 msgid "Enable persistent caching of commit tree."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:172
+#: tracopt/versioncontrol/git/git_fs.py:272
 msgid "Wrap `GitRepository` in `CachedRepository`."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:175
+#: tracopt/versioncontrol/git/git_fs.py:275
 msgid ""
 "The length at which a sha1 should be abbreviated to (must\n"
 "be >= 4 and <= 40)."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:180
+#: tracopt/versioncontrol/git/git_fs.py:280
 msgid ""
 "The minimum length of an hex-string for which\n"
 "auto-detection as sha1 is performed (must be >= 4 and <= 40)."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:185
+#: tracopt/versioncontrol/git/git_fs.py:285
 msgid ""
 "Enable reverse mapping of git email addresses to trac user ids\n"
 "(costly if you have many users)."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:189
+#: tracopt/versioncontrol/git/git_fs.py:289
 msgid ""
 "Use git-committer id instead of git-author id for the\n"
 "changeset ''Author'' field."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:194
+#: tracopt/versioncontrol/git/git_fs.py:294
 msgid ""
 "Use git-committer timestamp instead of git-author timestamp\n"
 "for the changeset ''Timestamp'' field."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:199
+#: tracopt/versioncontrol/git/git_fs.py:299
 msgid "Define charset encoding of paths within git repositories."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:202
+#: tracopt/versioncontrol/git/git_fs.py:302
 msgid "Path to the git executable."
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:752
+#: tracopt/versioncontrol/git/git_fs.py:879
 msgid "Path to a gitweb-formatted projects.list"
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:755
+#: tracopt/versioncontrol/git/git_fs.py:882
 msgid "Path to the base of your git projects"
 msgstr ""
 
-#: tracopt/versioncontrol/git/git_fs.py:758
+#: tracopt/versioncontrol/git/git_fs.py:885
 #, python-format
 msgid ""
 "Template for project URLs. %s will be replaced with the repo\n"
 "name"
 msgstr ""
 
-#: tracopt/versioncontrol/svn/svn_fs.py:253
+#: tracopt/versioncontrol/svn/svn_fs.py:265
 msgid ""
 "Comma separated list of paths categorized as branches.\n"
 "If a path ends with '*', then all the directory entries found below\n"
@@ -182,7 +186,7 @@ msgid ""
 "Example: `/trunk, /branches/*, /projectAlpha/trunk, /sandbox/*`"
 msgstr ""
 
-#: tracopt/v

svn commit: r1639602 [10/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templ

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/ticket/tests/report.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/ticket/tests/report.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/ticket/tests/report.py (original)
+++ bloodhound/vendor/trac/current/trac/ticket/tests/report.py Fri Nov 14 
11:06:23 2014
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2006-2013 Edgewall Software
+# Copyright (C) 2006-2014 Edgewall Software
 # All rights reserved.
 #
 # This software is licensed as described in the file COPYING, which
@@ -11,16 +11,24 @@
 # individuals. For the exact contribution history, see the revision
 # history and logs, available at http://trac.edgewall.org/log/.
 
+from __future__ import with_statement
+
 import doctest
+from datetime import datetime, timedelta
 
+import unittest
+from StringIO import StringIO
+
+import trac.tests.compat
 from trac.db.mysql_backend import MySQLConnection
+from trac.ticket.model import Ticket
 from trac.ticket.report import ReportModule
-from trac.test import EnvironmentStub, Mock
+from trac.test import EnvironmentStub, Mock, MockPerm
+from trac.util.datefmt import utc
 from trac.web.api import Request, RequestDone
+from trac.web.href import Href
 import trac
 
-import unittest
-from StringIO import StringIO
 
 class MockMySQLConnection(MySQLConnection):
 def __init__(self):
@@ -110,11 +118,409 @@ class ReportTestCase(unittest.TestCase):
  'type=r%C3%A9sum%C3%A9&report=' + str(id),
  headers_sent['Location'])
 
+def test_quoted_id_with_var(self):
+req = Mock(base_path='', chrome={}, args={}, session={},
+   abs_href=Href('/'), href=Href('/'), locale='',
+   perm=MockPerm(), authname=None, tz=None)
+db = self.env.get_read_db()
+name = """%s"`'%%%?"""
+sql = 'SELECT 1 AS %s, $USER AS user' % db.quote(name)
+rv = self.report_module.execute_paginated_report(req, db, 1, sql,
+ {'USER': 'joe'})
+self.assertEqual(5, len(rv), repr(rv))
+cols, results, num_items, missing_args, limit_offset = rv
+self.assertEqual([name, 'user'], cols)
+self.assertEqual([(1, 'joe')], results)
+self.assertEqual([], missing_args)
+self.assertEqual(None, limit_offset)
+
+
+class ExecuteReportTestCase(unittest.TestCase):
+
+def setUp(self):
+self.env = EnvironmentStub(default_data=True)
+self.req = Mock(base_path='', chrome={}, args={}, session={},
+abs_href=Href('/'), href=Href('/'), locale='',
+perm=MockPerm(), authname=None, tz=None)
+self.report_module = ReportModule(self.env)
+
+def tearDown(self):
+self.env.reset_db()
+
+def _insert_ticket(self, when=None, **kwargs):
+ticket = Ticket(self.env)
+for name, value in kwargs.iteritems():
+ticket[name] = value
+ticket['status'] = 'new'
+ticket.insert(when=when)
+return ticket
+
+def _save_ticket(self, ticket, author=None, comment=None, when=None,
+ **kwargs):
+if when is None:
+when = ticket['changetime'] + timedelta(microseconds=1)
+for name, value in kwargs.iteritems():
+ticket[name] = value
+return ticket.save_changes(author=author, comment=comment, when=when)
+
+def _execute_report(self, id, args=None):
+mod = self.report_module
+req = self.req
+with self.env.db_query as db:
+title, description, sql = mod.get_report(id)
+return mod.execute_paginated_report(req, db, id, sql, args or {})
+
+def _generate_tickets(self, columns, data, attrs):
+with self.env.db_transaction as db:
+tickets = []
+when = datetime(2014, 1, 1, 0, 0, 0, 0, utc)
+for idx, line in enumerate(data.splitlines()):
+line = line.strip()
+if not line or line.startswith('#'):
+continue
+values = line.split()
+assert len(columns) == len(values), 'Line %d' % (idx + 1)
+summary = ' '.join(values)
+values = map(lambda v: None if v == 'None' else v, values)
+d = attrs.copy()
+d['summary'] = summary
+d.update(zip(columns, values))
+
+status = None
+if 'status' in d:
+status = d.pop('status')
+ticket = self._insert_ticket(when=when, status='new', **d)
+if status != 'new':
+self._save_ticket(ticket, status=status,
+  when=when + timedelta(microseconds=1))
+tickets.append(ticket)
+  

svn commit: r1639602 [12/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templ

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBackup
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBackup?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBackup (original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBackup Fri Nov 
14 11:06:23 2014
@@ -8,17 +8,15 @@ Since Trac uses a database backend, some
 == Creating a Backup ==
 
 To create a backup of a live TracEnvironment, simply run:
-{{{
-
-  $ trac-admin /path/to/projenv hotcopy /path/to/backupdir
-
+ {{{#!sh
+$ trac-admin /path/to/projenv hotcopy /path/to/backupdir
 }}}
 
 [wiki:TracAdmin trac-admin] will lock the database while copying.''
 
 The resulting backup directory is safe to handle using standard file-based 
backup tools like `tar` or `dump`/`restore`.
 
-Please, note, that hotcopy command does not overwrite target directory and 
when such exists, hotcopy ends with error: `Command failed: [Errno 17] File 
exists:` This is discussed in [trac:ticket:3198 #3198].
+Please note, the `hotcopy` command will not overwrite a target directory and 
when such exists the operation ends with error: `Command failed: [Errno 17] 
File exists:` This is discussed in [trac:ticket:3198 #3198].
 
 === Restoring a Backup ===
 

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBatchModify
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBatchModify?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBatchModify 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBatchModify Fri 
Nov 14 11:06:23 2014
@@ -1,10 +1,14 @@
 = Trac Ticket Batch Modification =
 [[TracGuideToc]]
 
-From [wiki:TracQuery custom query] results Trac provides support for modifying 
a batch of tickets in one request.
+From [TracQuery custom query] results Trac provides support for modifying a 
batch of tickets in one request.
 
 To perform a batch modification select the tickets you wish to modify and set 
the new field values using the section underneath the query results. 
 
 == List fields
 
 The `Keywords` and `Cc` fields are treated as lists, where list items can be 
added and/or removed in addition of replacing the entire list value. All list 
field controls accept multiple items (i.e. multiple keywords or cc addresses).
+
+== Excluded fields
+
+Multi-line text fields are not supported, because no valid use-case has been 
presented for syncing them across several tickets. That restriction applies to 
the `Description` field as well as to any 
[TracTicketsCustomFields#AvailableFieldTypesandOptions custom field] of type 
'textarea'. However in conjunction with more suitable actions like 'prepend', 
'append' or search & replace ([http://trac-hacks.org/ticket/2415 th:#2415]) 
this could change in future Trac versions.
\ No newline at end of file

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBrowser
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBrowser?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBrowser 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracBrowser Fri Nov 
14 11:06:23 2014
@@ -52,20 +52,15 @@ for more advanced cases.
 If you're using a Javascript enabled browser, you'll be able to expand and 
 collapse directories in-place by clicking on the arrow head at the right side 
of a 
 directory. Alternatively, the [trac:TracKeys keyboard] can also be used for 
this: 
- - use `'j'` and `'k'` to select the next or previous entry, starting with the 
first
- - `'o'` (open) to toggle between expanded and collapsed state of the selected 
+ - use `j` and `k` to select the next or previous entry, starting with the 
first
+ - `o` ('''o'''pen) to toggle between expanded and collapsed state of the 
selected 
directory or for visiting the selected file 
- - `'v'` (view, visit) and `''`, same as above
- - `'r'` can be used to force the reload of an already expanded directory
- - `'A'` can be used to directly visit a file in annotate (blame) mode
- - `'L'` to view the log for the selected entry
-If no row has been selected using `'j'` or `'k'` these keys will operate on 
the entry under the mouse.
+ - `v` ('''v'''iew, '''v'''isit) and ``, same as above
+ - `r` can be used to force the '''r'''eload of an already expanded directory
+ - `a` can be used to directly visit a file in '''a'''nnotate (blame) mode
+ - `l` to view the '''l'''og for the selected entry
+If no row has been selected using `j` or `k` these keys will op

svn commit: r1639603 - /bloodhound/vendor/trac/1.0.2/

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 11:08:15 2014
New Revision: 1639603

URL: http://svn.apache.org/r1639603
Log:
tagging trac 1.0.2

Added:
bloodhound/vendor/trac/1.0.2/
  - copied from r1639602, bloodhound/vendor/trac/current/



svn commit: r1639602 [8/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templa

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/templates/error.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/templates/error.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/templates/error.html (original)
+++ bloodhound/vendor/trac/current/trac/templates/error.html Fri Nov 14 
11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -39,7 +49,9 @@
$("#traceback pre").hide();
$("#tbtoggle").parent().show();
 
-   $("#systeminfo").append("jQuery" + $().jquery + 
"");
+   
$("#systeminfo").append("jQuery"+$().jquery+"" +
+   "jQuery 
UI"+$.ui.version+"" +
+   "jQuery 
Timepicker"+$.timepicker.version+"");
$("#systeminfo").before("User Agent: " + navigator.userAgent + 
"");
   });
 /*]]>*/
@@ -48,7 +60,9 @@
 $("form.newticket textarea").each(function() {
   $(this).val($(this).val()
  .replace(/#USER_AGENT#/m, navigator.userAgent)
- .replace(/#JQUERY#/m, $().jquery));
+ .replace(/#JQUERY#/m, $().jquery)
+ .replace(/#JQUERYUI#/m, $.ui.version)
+ .replace(/#JQUERYTP#/m, $.timepicker.version));
 });
   });
 /*]]>*/
@@ -98,13 +112,17 @@ ${description_en if url else description
   The action that triggered the error was:
   ${req.method}: ${req.path_info}
 
-
-  
+
+  
+This is probably a local installation issue.
+  
+  
 This is probably a local installation issue.
-  
+  
 You should ${create_ticket()} a ticket at the admin Trac 
to report
 the issue.
-  
+  
 
   
   Found a bug in Trac?
@@ -140,7 +158,7 @@ ${description_en if url else description
 
   
 File "${frame.filename}",
-line ${frame.lineno + 1}, in
+line ${frame.lineno + 1}, in
 ${frame.function}
   
   

Modified: bloodhound/vendor/trac/current/trac/templates/history_view.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/templates/history_view.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/templates/history_view.html (original)
+++ bloodhound/vendor/trac/current/trac/templates/history_view.html Fri Nov 14 
11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -15,7 +25,7 @@
 
   Change History for ${name or name_of(resource)}
 
-  
+  
 
   
   

Modified: bloodhound/vendor/trac/current/trac/templates/index.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/templates/index.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/templates/index.html (original)
+++ bloodhound/vendor/trac/current/trac/templates/index.html Fri Nov 14 
11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/vendor/trac/current/trac/templates/layout.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/templates/layout.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/templates/layout.html (original)
+++ bloodhound/vendor/trac/current/trac/templates/layout.html Fri Nov 14 
11:06:23 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/vendor/trac/current/trac/templates/list_of_attachments.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/templates/list_of_attachments.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/templates/list_of_attachments.html 
(original)
+++ bloodhound/vendor/trac/current/trac/templates/list_of_attachments.html Fri 
Nov 14 11:06:23 2014
@@ -1,4 +1,13 @@
-
 http://www.w3.org/1999/xhtml";
  xmlns:py="http://genshi.edgewall.org/";
  xmlns:xi="http://www.w3.org/2001/XInclude";

Modified: bloodhound/vendor/trac/current/trac/templates/page_index.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/temp

svn commit: r1639602 [13/14] - in /bloodhound/vendor/trac/current: ./ contrib/workflow/ doc/dev/ sample-plugins/ sample-plugins/permissions/ sample-plugins/workflow/ trac/ trac/admin/ trac/admin/templ

2014-11-14 Thread rjollos
Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch (original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch Fri Nov 
14 11:06:23 2014
@@ -16,7 +16,8 @@ For example:
  * ![42] -- Opens change set 42
  * !#42 -- Opens ticket number 42
  * !{1} -- Opens report 1
- * /trunk -- Opens the browser for the `trunk` directory
+ * /trunk -- Opens the browser for the `trunk` directory in the default 
repository
+ * /repos1/trunk -- Opens the browser for the `trunk` directory in the 
`repos1` repository
 
 == Advanced ==
 

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone Fri 
Nov 14 11:06:23 2014
@@ -13,7 +13,7 @@ It can be used in a variety of situation
 
  * Fewer features: Tracd implements a very simple web-server and is not as 
configurable or as scalable as Apache httpd.
  * No native HTTPS support: [http://www.rickk.com/sslwrap/ sslwrap] can be 
used instead,
-   or [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- a tutorial on how 
to use stunnel with tracd] or Apache with mod_proxy.
+   or [trac:wiki:STunnelTracd stunnel -- a tutorial on how to use stunnel with 
tracd] or Apache with mod_proxy.
 
 == Usage examples ==
 
@@ -21,7 +21,7 @@ A single project on port 8080. (http://l
 {{{
  $ tracd -p 8080 /path/to/project
 }}}
-Stricly speaking this will make your Trac accessible to everybody from your 
network rather than ''localhost only''. To truly limit it use ''--hostname'' 
option.
+Strictly speaking this will make your Trac accessible to everybody from your 
network rather than ''localhost only''. To truly limit it use ''--hostname'' 
option.
 {{{
  $ tracd --hostname=localhost -p 8080 /path/to/project
 }}}
@@ -95,6 +95,8 @@ $ net start tracd
 
 Tracd allows you to run Trac without the need for Apache, but you can take 
advantage of Apache's password tools (htpasswd and htdigest) to easily create a 
password file in the proper format for tracd to use in authentication. (It is 
also possible to create the password file without htpasswd or htdigest; see 
below for alternatives)
 
+Make sure you place the generated password files on a filesystem which 
supports sub-second timestamps, as Trac will monitor their modified time and 
changes happening on a filesystem with too coarse-grained timestamp resolution 
(like `ext2` or `ext3` on Linux) may go undetected.
+
 Tracd provides support for both Basic and Digest authentication. Digest is 
considered more secure. The examples below use Digest; to use Basic 
authentication, replace `--auth` with `--basic-auth` in the command line.
 
 The general format for using authentication is:

Modified: 
bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring?rev=1639602&r1=1639601&r2=1639602&view=diff
==
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring 
Fri Nov 14 11:06:23 2014
@@ -6,8 +6,8 @@ To do this, Trac uses external libraries
 Currently Trac supports syntax coloring using one or more of the following 
packages:
 
  * [http://pygments.pocoo.org/ Pygments], by far the preferred system, as it 
covers a wide range of programming languages and other structured texts and is 
actively supported
- * [http://www.codento.com/people/mtr/genscript/ GNU Enscript], commonly 
available on Unix but somewhat unsupported on Windows
- * [http://silvercity.sourceforge.net/ SilverCity], legacy system, some 
versions can be 
[http://trac.edgewall.org/wiki/TracFaq#why-is-my-css-code-not-being-highlighted-even-though-i-have-silvercity-installed
 problematic]
+ * [http://www.codento.com/people/mtr/genscript/ GNU Enscript], commonly 
available on Unix but somewhat unsupported on Windows //(use is deprecated)//
+ * [http://silvercity.sourceforge.net/ SilverCity], legacy system, some 
versions can be problematic //(use is deprecated)//
 
 
 To activate syntax coloring, simply install either one (or more) of these 
packages (see [#ExtraSoftware] section below).
@@ -16,7 +16,7 @@ If none of these packages is available, 
 
 === Ab

svn commit: r1639604 - /bloodhound/branches/trac-1.0-stable-integration/

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 11:10:57 2014
New Revision: 1639604

URL: http://svn.apache.org/r1639604
Log:
Removed unused integration branch.

Removed:
bloodhound/branches/trac-1.0-stable-integration/



svn commit: r1639605 - /bloodhound/branches/trac-1.0.2-integration/

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 11:11:45 2014
New Revision: 1639605

URL: http://svn.apache.org/r1639605
Log:
Created branch for integration of Trac 1.0.2.

Added:
bloodhound/branches/trac-1.0.2-integration/   (props changed)
  - copied from r1639604, bloodhound/trunk/

Propchange: bloodhound/branches/trac-1.0.2-integration/
--
--- svn:auto-props (added)
+++ svn:auto-props Fri Nov 14 11:11:45 2014
@@ -0,0 +1,5 @@
+*.html = svn:eol-style=native
+*.js = svn:eol-style=native
+*.css = svn:eol-style=native
+*.py = svn:eol-style=native
+*.xml = svn:eol-style=native

Propchange: bloodhound/branches/trac-1.0.2-integration/
--
--- svn:ignore (added)
+++ svn:ignore Fri Nov 14 11:11:45 2014
@@ -0,0 +1,7 @@
+*.DS_Store
+.idea
+.project
+.pydevproject
+.git
+.gitignore
+.hg

Propchange: bloodhound/branches/trac-1.0.2-integration/
--
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Nov 14 11:11:45 2014
@@ -0,0 +1,3 @@
+/bloodhound/branches/bep_0003_multiproduct:1461360-1463488
+/bloodhound/branches/bep_0010_ticket_numbering:1506462-1517786
+/incubator/bloodhound/branches/bep_0003_multiproduct:1420073-1461359




svn commit: r1639618 - /bloodhound/vendor/trac/1.0.2/

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 12:10:53 2014
New Revision: 1639618

URL: http://svn.apache.org/r1639618
Log:
Removed bad tag.

Removed:
bloodhound/vendor/trac/1.0.2/



svn commit: r1639617 - in /bloodhound/vendor/trac/current: trac/tests/ trac/ticket/templates/ trac/timeline/tests/ trac/util/tests/ tracopt/ticket/tests/ tracopt/versioncontrol/git/tests/

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 12:10:40 2014
New Revision: 1639617

URL: http://svn.apache.org/r1639617
Log:
Missing file adds from Trac 1.0.2.

Added:
bloodhound/vendor/trac/current/trac/tests/compat.py
bloodhound/vendor/trac/current/trac/ticket/templates/admin_components.html
bloodhound/vendor/trac/current/trac/ticket/templates/admin_enums.html
bloodhound/vendor/trac/current/trac/ticket/templates/admin_milestones.html
bloodhound/vendor/trac/current/trac/ticket/templates/admin_versions.html
bloodhound/vendor/trac/current/trac/timeline/tests/web_ui.py
bloodhound/vendor/trac/current/trac/timeline/tests/wikisyntax.py
bloodhound/vendor/trac/current/trac/util/tests/translation.py
bloodhound/vendor/trac/current/tracopt/ticket/tests/
bloodhound/vendor/trac/current/tracopt/ticket/tests/__init__.py
bloodhound/vendor/trac/current/tracopt/ticket/tests/commit_updater.py
bloodhound/vendor/trac/current/tracopt/versioncontrol/git/tests/git_fs.py

Added: bloodhound/vendor/trac/current/trac/tests/compat.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/tests/compat.py?rev=1639617&view=auto
==
--- bloodhound/vendor/trac/current/trac/tests/compat.py (added)
+++ bloodhound/vendor/trac/current/trac/tests/compat.py Fri Nov 14 12:10:40 2014
@@ -0,0 +1,101 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+
+"""Some test functions since Python 2.7 to provide backwards-compatibility
+with previous versions of Python from 2.5 onward.
+"""
+
+import os
+import shutil
+import sys
+import unittest
+
+
+if not hasattr(unittest.TestCase, 'assertIs'):
+def assertIs(self, expr1, expr2, msg=None):
+if expr1 is not expr2:
+raise self.failureException(msg or '%r is not %r'
+   % (expr1, expr2))
+unittest.TestCase.assertIs = assertIs
+
+
+if not hasattr(unittest.TestCase, 'assertIsNot'):
+def assertIsNot(self, expr1, expr2, msg=None):
+if expr1 is expr2:
+raise self.failureException(msg or '%r is %r' % (expr1, expr2))
+unittest.TestCase.assertIsNot = assertIsNot
+
+
+if not hasattr(unittest.TestCase, 'assertIsNone'):
+def assertIsNone(self, obj, msg=None):
+self.assertIs(obj, None, msg)
+unittest.TestCase.assertIsNone = assertIsNone
+
+
+if not hasattr(unittest.TestCase, 'assertIsNotNone'):
+def assertIsNotNone(self, obj, msg=None):
+self.assertIsNot(obj, None, msg)
+unittest.TestCase.assertIsNotNone = assertIsNotNone
+
+
+if not hasattr(unittest.TestCase, 'assertIn'):
+def assertIn(self, member, container, msg=None):
+if member not in container:
+raise self.failureException(msg or '%r not in %r' %
+   (member, container))
+unittest.TestCase.assertIn = assertIn
+
+
+if not hasattr(unittest.TestCase, 'assertNotIn'):
+def assertNotIn(self, member, container, msg=None):
+if member in container:
+raise self.failureException(msg or '%r in %r' %
+   (member, container))
+unittest.TestCase.assertNotIn = assertNotIn
+
+
+if not hasattr(unittest.TestCase, 'assertIsInstance'):
+def assertIsInstance(self, obj, cls, msg=None):
+if not isinstance(obj, cls):
+raise self.failureException(msg or '%r is not an instance of %r' %
+   (obj, cls))
+unittest.TestCase.assertIsInstance = assertIsInstance
+
+
+if not hasattr(unittest.TestCase, 'assertNotIsInstance'):
+def assertNotIsInstance(self, obj, cls, msg=None):
+if isinstance(obj, cls):
+raise self.failureException(msg or '%r is an instance of %r' %
+   (obj, cls))
+unittest.TestCase.assertNotIsInstance = assertNotIsInstance
+
+
+def rmtree(path):
+import errno
+def onerror(function, path, excinfo):
+# `os.remove` fails for a readonly file on Windows.
+# Then, it attempts to be writable and remove.
+if function != os.remove:
+raise
+e = excinfo[1]
+if isinstance(e, OSError) and e.errno == errno.EACCES:
+mode = os.stat(path).st_mode
+os.chmod(path, mode | 0666)
+function(path)
+else:
+raise
+if os.name == 'nt' and isinstance(path, str):
+# Use unicode characters in order to allo

svn commit: r1639619 - /bloodhound/vendor/trac/1.0.2/

2014-11-14 Thread rjollos
Author: rjollos
Date: Fri Nov 14 12:11:27 2014
New Revision: 1639619

URL: http://svn.apache.org/r1639619
Log:
tagging trac 1.0.2

Added:
bloodhound/vendor/trac/1.0.2/
  - copied from r1639618, bloodhound/vendor/trac/current/



svn commit: r1639823 [5/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/db_default.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/db_default.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/db_default.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/db_default.py Sat Nov 
15 01:14:46 2014
@@ -300,34 +300,27 @@ USER dynamic variable, replaced with the
 logged in user when executed.
 """,
 """\
-SELECT  __color__, __group,
+SELECT p.value AS __color__,
(CASE
- WHEN __group = 1 THEN 'Accepted'
- WHEN __group = 2 THEN 'Owned'
- WHEN __group = 3 THEN 'Reported'
+ WHEN owner = $USER AND status = 'accepted' THEN 'Accepted'
+ WHEN owner = $USER THEN 'Owned'
+ WHEN reporter = $USER THEN 'Reported'
  ELSE 'Commented' END) AS __group__,
-   ticket, summary, component, version, milestone,
-   type, priority, created, _changetime, _description,
-   _reporter
-FROM (
- SELECT DISTINCT """ + db.cast('p.value', 'int') + """ AS __color__,
-  (CASE
- WHEN owner = $USER AND status = 'accepted' THEN 1
- WHEN owner = $USER THEN 2
- WHEN reporter = $USER THEN 3
- ELSE 4 END) AS __group,
t.id AS ticket, summary, component, version, milestone,
t.type AS type, priority, t.time AS created,
t.changetime AS _changetime, description AS _description,
reporter AS _reporter
   FROM ticket t
   LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
-  LEFT JOIN ticket_change tc ON tc.ticket = t.id AND tc.author = $USER
-AND tc.field = 'comment'
-  WHERE t.status <> 'closed'
-AND (owner = $USER OR reporter = $USER OR author = $USER)
-) AS sub
-ORDER BY __group, __color__, milestone, type, created
+  WHERE t.status <> 'closed' AND
+(owner = $USER OR reporter = $USER OR
+ EXISTS (SELECT * FROM ticket_change tc
+ WHERE tc.ticket = t.id AND tc.author = $USER AND
+   tc.field = 'comment'))
+  ORDER BY (COALESCE(owner, '') = $USER AND status = 'accepted') DESC,
+   COALESCE(owner, '') = $USER DESC,
+   COALESCE(reporter, '') = $USER DESC,
+   """ + db.cast('p.value', 'int') + """, milestone, t.type, t.time
 """),
 #
 ('Active Tickets, Mine first',

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/dist.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/dist.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/dist.py (original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/dist.py Sat Nov 15 
01:14:46 2014
@@ -85,8 +85,8 @@ try:
 in_def = in_translator_comments = False
 comment_tag = None
 
-encoding = parse_encoding(fileobj) \
-   or options.get('encoding', 'iso-8859-1')
+encoding = str(parse_encoding(fileobj) or
+   options.get('encoding', 'iso-8859-1'))
 kwargs_maps = _DEFAULT_KWARGS_MAPS.copy()
 if 'kwargs_maps' in options:
 kwargs_maps.update(options['kwargs_maps'])
@@ -466,6 +466,17 @@ try:
 self.run_command('compile_catalog')
 def run(self):
 self.l10n_run()
+# When bdist_egg is called on distribute 0.6.29 and later, the
+# egg file includes no *.mo and *.js files which are generated
+# in l10n_run() method.
+# We remove build_py.data_files property to re-compute in order
+# to avoid the issue (#11640).
+build_py = self.get_finalized_command('build_py')
+if 'data_files' in build_py.__dict__ and \
+   not any(any(name.endswith('.mo') for name in filenames)
+   for pkg, src_dir, build_dir, filenames
+   in build_py.data_files):
+del build_py.__dict__['data_files']
 _install_lib.run(self)
 return build, install_lib
 

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/env.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/env.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/env.py (original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/env.py Sat Nov 15 
01:14:46 2014
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2003-2011 Edgewall Software
+# Copyright (C) 2003-

svn commit: r1639823 [17/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/functional.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/functional.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/functional.py 
(original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/functional.py 
Sat Nov 15 01:14:46 2014
@@ -1,24 +1,89 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 # -*- coding: utf-8 -*-
+#
+# Copyright (C) 2008-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+
 import os
 import re
 
 from datetime import datetime, timedelta
 
+from trac.admin.tests.functional import AuthorizationTestCaseSetup
 from trac.test import locale_en
 from trac.tests.functional import *
+from trac.util import create_file
 from trac.util.datefmt import utc, localtz, format_date, format_datetime
+from trac.util.text import to_utf8
+
+try:
+from configobj import ConfigObj
+except ImportError:
+ConfigObj = None
 
 
 class TestTickets(FunctionalTwillTestCaseSetup):
 def runTest(self):
-"""Create a ticket, comment on it, and attach a file"""
+"""Create a ticket and comment on it."""
 # TODO: this should be split into multiple tests
-summary = random_sentence(5)
-ticketid = self._tester.create_ticket(summary)
-self._tester.create_ticket()
-self._tester.add_comment(ticketid)
-self._tester.attach_file_to_ticket(ticketid)
+id = self._tester.create_ticket()
+self._tester.add_comment(id)
+
+
+class TestTicketMaxSummarySize(FunctionalTwillTestCaseSetup):
+def runTest(self):
+"""Test `[ticket] max_summary_size` option.
+http://trac.edgewall.org/ticket/11472""";
+prev_max_summary_size = \
+self._testenv.get_config('ticket', 'max_summary_size')
+short_summary = "abcdefghijklmnopqrstuvwxyz"
+long_summary = short_summary + "."
+max_summary_size = len(short_summary)
+warning_message = r"Ticket summary is too long \(must be less " \
+  r"than %s characters\)" % max_summary_size
+self._testenv.set_config('ticket', 'max_summary_size',
+ str(max_summary_size))
+try:
+self._tester.create_ticket(short_summary)
+tc.find(short_summary)
+tc.notfind(warning_message)
+self._tester.go_to_front()
+tc.follow(r"\bNew Ticket\b")
+tc.notfind(internal_error)
+tc.url(self._tester.url + '/newticket')
+tc.formvalue('propertyform', 'field_summary', long_summary)
+tc.submit('submit')
+tc.url(self._tester.url + '/newticket')
+tc.find(warning_message)
+finally:
+self._testenv.set_config('ticket', 'max_summary_size',
+ prev_max_summary_size)
+
+
+class TestTicketAddAttachment(FunctionalTwillTestCaseSetup):
+def runTest(self):
+"""Add attachment to a ticket. Test that the attachment button
+reads 'Attach file' when no files have been attached, and 'Attach
+another file' when there are existing attachments.
+Feature added in http://trac.edgewall.org/ticket/10281""";
+id = self._tester.create_ticket()
+tc.find("Attach file")
+filename = self._tester.attach_file_to_ticket(id)
+
+self._tester.go_to_ticket(id)
+tc.find("Attach another file")
+tc.find('Attachments \(1\)')
+tc.find(filename)
+tc.find('Download all attachments as:\s+.zip' % id)
 
 
 class TestTicketPreview(FunctionalTwillTestCaseSetup):
@@ -51,27 +116,72 @@ class TestTicketNoSummary(FunctionalTwil
 tc.find('ticket not yet created')
 
 
+class TestTicketManipulator(FunctionalTwillTestCaseSetup):
+def runTest(self):
+plugin_name = self.__class__.__name__
+env = self._testenv.get_trac_environment()
+env.config.set('components', plugin_name + '.*', 'enabled')
+env.config.save()
+create_file(os.path.join(env.path, 'plugins', plugin_name + '.py'),
+"""\
+from genshi.builder import tag
+from trac.core import Component, implements
+from trac.ticket.api import ITicketManipulator
+from trac.util.translation import tag_
+
+
+class TicketManipulator(Component):
+implements(ITicketManipulator)
+
+def prepare_ticket(self, req, t

svn commit: r1639823 [7/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/cs/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/cs/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/cs/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/cs/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -5,7 +5,7 @@
 # Translators:
 # Radek Bartoň , 2007.
 # Tomáš Čapek , 2010.
-# Zbyněk Schwarz , 2012.
+# Zbyněk Schwarz , 2012-2013.
 msgid ""
 msgstr ""
 "Project-Id-Version:  Trac\n"
@@ -19,7 +19,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
@@ -757,7 +757,7 @@ msgid ""
 msgstr ""
 "Vítejte v trac-admin %(version)s\n"
 "Interaktivní konzoli pro správu Trac.\n"
-"Autorská práva (C) 2003-2012 Edgewall Software\n"
+"Autorská práva (C) 2003-2013 Edgewall Software\n"
 "\n"
 "Zadejte:  '?' nebo 'help' pro nápovědu pro příkazy.\n"
 ""
@@ -778,13 +778,15 @@ msgid ""
 "No documentation found for '%(cmd)s'. Use 'help' to see the list of "
 "commands."
 msgstr ""
+"Pro '%(cmd)s' nebyla nalezena žádná dokumentace, Použijte 'help' pro "
+"zobrazení seznamu příkazů."
 
 #: trac/admin/console.py:322
 msgid "Did you mean this?"
 msgid_plural "Did you mean one of these?"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Mysleli jste toto?"
+msgstr[1] "Mysleli jste tyto?"
+msgstr[2] "Mysleli jste tyto?"
 
 #: trac/admin/console.py:326
 #, python-format
@@ -2121,7 +2123,7 @@ msgid ""
 "Copyright © 2003-2013\n"
 "[1:Edgewall Software]"
 msgstr ""
-"Autorská práva © 2003-2012\n"
+"Autorská práva © 2003-2013\n"
 "[1:Edgewall Software]"
 
 #: trac/templates/about.html:54

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages-js.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages-js.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages-js.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages-js.po
 Sat Nov 15 01:14:46 2014
@@ -17,7 +17,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: trac/htdocs/js/blame.js:84
 msgid "(no changeset information)"

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/da/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -17,7 +17,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
@@ -772,7 +772,7 @@ msgid ""
 msgstr ""
 "Velkommen til trac-admin %(version)s\n"
 "Interaktiv Trac administrationskonsol.\n"
-"Copyright (C) 2003-2012 Edgewall Software\n"
+"Copyright (C) 2003-2013 Edgewall Software\n"
 "\n"
 "Skriv:  '?' eller 'help' for hjælp til kommandoer.\n"
 ""

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/de/LC_MESSAGES/messages-js.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/de/LC_MESSAGES/messages-js.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/de/LC_MESSAGES/messages-js.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/de/LC_MESSAGES/messages-js.po
 Sat Nov 15 01:14:46 2014
@@ -15,7 +15,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: trac/htdocs/js/blame.js:84
 msgid "(no changeset information)"

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/de/LC_MESSAGES/messages.po
URL: 
http://sv

svn commit: r1639823 [8/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ja/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ja/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ja/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ja/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -1,18 +1,18 @@
 # Japanese (Japan) translations for Trac.
-# Copyright (C) 2007-2013 Edgewall Software
+# Copyright (C) 2007-2014 Edgewall Software
 # This file is distributed under the same license as the Trac project.
 # Jeroen Ruigrok van der Werven , 2007.
 # Kyosuke Takayama , 2008,2009.
 # hirobe, 2008.
 # kabuchan, 2009.
 # IWAI, Masaharu , 2009,2010.
-# Jun Omae , 2010-2013.
+# Jun Omae , 2010-2014.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Trac 1.0\n"
+"Project-Id-Version: Trac 1.0.2\n"
 "Report-Msgid-Bugs-To: trac-...@googlegroups.com\n"
-"POT-Creation-Date: 2013-01-27 11:21+0900\n"
+"POT-Creation-Date: 2014-09-01 12:43+\n"
 "PO-Revision-Date: 2011-07-14 21:38+0900\n"
 "Last-Translator: Jun Omae \n"
 "Language-Team: ja \n"
@@ -20,7 +20,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
@@ -52,7 +52,7 @@ msgstr "コピー"
 msgid "Create a copy of this ticket"
 msgstr "このチケットのコピーを作成する"
 
-#: tracopt/ticket/commit_updater.py:275
+#: tracopt/ticket/commit_updater.py:283
 msgid ""
 "Insert a changeset message into the output.\n"
 "\n"
@@ -78,12 +78,16 @@ msgstr ""
 " - `repository`: チェンジセットがあるリポジトリ\n"
 " - `revision`: 要求のチェンジセットを示すリビジョン"
 
+#: tracopt/ticket/commit_updater.py:313
+msgid "(The changeset message doesn't reference this ticket)"
+msgstr "(チェンジセットのメッセージはこのチケットを参ç…
§ã—ていません)"
+
 #: tracopt/ticket/deleter.py:73 tracopt/ticket/deleter.py:90
-#: trac/ticket/templates/report_list.html:82
+#: trac/ticket/templates/report_list.html:92
 msgid "Delete"
 msgstr "削除"
 
-#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:42
+#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:51
 msgid "Delete ticket"
 msgstr "チケットの削除"
 
@@ -107,82 +111,105 @@ msgstr "チケット #%(id)s
 msgid "Comment %(num)s not found"
 msgstr "コメント %(num)s が見つかりません"
 
-#: tracopt/ticket/templates/ticket_delete.html:11
+#: tracopt/ticket/templates/ticket_delete.html:21
 #, python-format
 msgid "Delete Ticket #%(id)s"
 msgstr "チケット #%(id)s の削除"
 
-#: tracopt/ticket/templates/ticket_delete.html:12
-#: tracopt/ticket/templates/ticket_delete.html:48
+#: tracopt/ticket/templates/ticket_delete.html:22
+#: tracopt/ticket/templates/ticket_delete.html:58
 #, python-format
 msgid "Delete comment %(num)s on Ticket #%(id)s"
 msgstr "チケット #%(id)s コメント %(num)s の削除"
 
-#: tracopt/ticket/templates/ticket_delete.html:20
+#: tracopt/ticket/templates/ticket_delete.html:30
 #, python-format
 msgid "Delete [1:Ticket #%(id)s]"
 msgstr "[1:チケット #%(id)s] の削除"
 
-#: tracopt/ticket/templates/ticket_delete.html:32
+#: tracopt/ticket/templates/ticket_delete.html:42
 msgid "Are you sure you want to delete this ticket?"
 msgstr "このチケットを削除しますか?"
 
-#: tracopt/ticket/templates/ticket_delete.html:33
+#: tracopt/ticket/templates/ticket_delete.html:43
 #, python-format
 msgid ""
 "(comments: %(comments)s,\n"
 " attachments: %(attachments)s)"
 msgstr "(コメント: %(comments)s, 添付ファイル: %(attachments)s)"
 
-#: tracopt/ticket/templates/ticket_delete.html:36
-#: tracopt/ticket/templates/ticket_delete.html:61
-#: trac/templates/attachment.html:70 trac/wiki/templates/wiki_delete.html:95
+#: tracopt/ticket/templates/ticket_delete.html:46
+#: tracopt/ticket/templates/ticket_delete.html:71
+#: trac/templates/attachment.html:80 trac/wiki/templates/wiki_delete.html:105
 msgid "This is an irreversible operation."
 msgstr "これは取り消しの効かない操作です。"
 
-#: tracopt/ticket/templates/ticket_delete.html:41
-#: tracopt/ticket/templates/ticket_delete.html:65
-#: trac/admin/templates/admin_components.html:55
-#: trac/admin/templates/admin_enums.html:24
-#: trac/admin/templates/admin_milestones.html:74
-#: trac/admin/templates/admin_versions.html:50
-#: trac/templates/attachment.html:63 trac/templates/attachment.html:76
-#: trac/ticket/templates/milestone_delete.html:40
-#: trac/ticket/templates/milestone_edit.html:108
-#: trac/ticket/templates/report_delete.html:21
-#: trac/ti

svn commit: r1639823 [2/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-hook
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-hook?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-hook 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-hook Sat 
Nov 15 01:14:46 2014
@@ -1,4 +1,17 @@
 #!/bin/sh
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2009-2013 Edgewall Software
+# Copyright (C) 2009 Christian Boos 
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
 #
 # = trac-svn-hook =
 #

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-post-commit-hook.cmd
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-post-commit-hook.cmd?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-post-commit-hook.cmd
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-post-commit-hook.cmd
 Sat Nov 15 01:14:46 2014
@@ -1,8 +1,19 @@
 @ECHO OFF
 ::
+:: Copyright (C) 2007-2013 Edgewall Software
+:: Copyright (C) 2007 Markus Tacker 
+:: Copyright (C) 2007 Christian Boos 
+:: All rights reserved.
+::
+:: This software is licensed as described in the file COPYING, which
+:: you should have received as part of this distribution. The terms
+:: are also available at http://trac.edgewall.com/license.html.
+::
+:: This software consists of voluntary contributions made by many
+:: individuals. For the exact contribution history, see the revision
+:: history and logs, available at http://trac.edgewall.org/.
 :: Trac post-commit-hook script for Windows
 ::
-:: Contributed by markus, modified by cboos.
 :: Modified for the multirepos branch to use the `changeset` command.
 
 :: Usage:

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/migrate_original_to_basic.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/migrate_original_to_basic.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/migrate_original_to_basic.py
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/migrate_original_to_basic.py
 Sat Nov 15 01:14:46 2014
@@ -1,9 +1,24 @@
 #!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2007-2013 Edgewall Software
+# Copyright (C) 2007 Eli Carter 
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
+
 import sys
 
 import trac.env
 from trac.ticket.default_workflow import load_workflow_config_snippet
 
+
 def main():
 """Rewrite the ticket-workflow section of the config; and change all
 'assigned' tickets to 'accepted'.

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/showworkflow
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/showworkflow?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/showworkflow 
(original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/contrib/workflow/showworkflow 
Sat Nov 15 01:14:46 2014
@@ -1,4 +1,17 @@
 #!/bin/bash -x
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2007-2013 Edgewall Software
+# Copyright (C) 2007 Eli Carter 
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
 
 basedir=`dirname $0`
 options=""

Modified: 
bloodhound/branches/trac-1.0.2-integr

svn commit: r1639823 [1/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Author: rjollos
Date: Sat Nov 15 01:14:46 2014
New Revision: 1639823

URL: http://svn.apache.org/r1639823
Log:
Merged Trac 1.0.2 and resolved merge conflicts. Many tests are failing.

Added:
bloodhound/branches/trac-1.0.2-integration/trac/.travis.yml
  - copied unchanged from r1639805, bloodhound/vendor/trac/1.0.2/.travis.yml
bloodhound/branches/trac-1.0.2-integration/trac/trac/tests/compat.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/tests/compat.py

bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/admin_components.html
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/ticket/templates/admin_components.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/admin_enums.html
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/ticket/templates/admin_enums.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/admin_milestones.html
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/ticket/templates/admin_milestones.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/admin_versions.html
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/ticket/templates/admin_versions.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/timeline/tests/web_ui.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/timeline/tests/web_ui.py

bloodhound/branches/trac-1.0.2-integration/trac/trac/timeline/tests/wikisyntax.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/timeline/tests/wikisyntax.py

bloodhound/branches/trac-1.0.2-integration/trac/trac/util/tests/translation.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/util/tests/translation.py

bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/tests/browser.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/versioncontrol/web_ui/tests/browser.py

bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/tests/changeset.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/versioncontrol/web_ui/tests/changeset.py

bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/tests/log.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/trac/versioncontrol/web_ui/tests/log.py
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/ticket/tests/
  - copied from r1639805, bloodhound/vendor/trac/1.0.2/tracopt/ticket/tests/

bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/git/tests/git_fs.py
  - copied unchanged from r1639805, 
bloodhound/vendor/trac/1.0.2/tracopt/versioncontrol/git/tests/git_fs.py
Removed:

bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/templates/admin_components.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/templates/admin_enums.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/templates/admin_milestones.html

bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/templates/admin_versions.html
Modified:
bloodhound/branches/trac-1.0.2-integration/trac/   (props changed)
bloodhound/branches/trac-1.0.2-integration/trac/.gitignore
bloodhound/branches/trac-1.0.2-integration/trac/.hgignore
bloodhound/branches/trac-1.0.2-integration/trac/AUTHORS
bloodhound/branches/trac-1.0.2-integration/trac/ChangeLog
bloodhound/branches/trac-1.0.2-integration/trac/Makefile
bloodhound/branches/trac-1.0.2-integration/trac/Makefile.cfg.sample
bloodhound/branches/trac-1.0.2-integration/trac/THANKS
bloodhound/branches/trac-1.0.2-integration/trac/contrib/bugzilla2trac.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/cgi-bin/trac.cgi
bloodhound/branches/trac-1.0.2-integration/trac/contrib/cgi-bin/trac.fcgi
bloodhound/branches/trac-1.0.2-integration/trac/contrib/checkwiki.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/emailfilter.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/htdigest.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/htpasswd.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/l10n_diff_index.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/l10n_reset_en_GB.py

bloodhound/branches/trac-1.0.2-integration/trac/contrib/l10n_revert_lineno_conflicts.py

bloodhound/branches/trac-1.0.2-integration/trac/contrib/migrateticketmodel.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/sourceforge2trac.py
bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-pre-commit-hook
bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-hook

bloodhound/branches/trac-1.0.2-integration/trac/contrib/trac-svn-post-commit-hook.cmd

bloodhound/branches/t

svn commit: r1639823 [6/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ca/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ca/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ca/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/ca/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -1,35 +1,36 @@
 # Catalan translation of Trac.
-# Copyright © 2004, 2009, 2010, 2011 Edgewall Software.
+# Copyright © 2004, 2009, 2010, 2011, 2013 Edgewall Software.
 # This file is distributed under the same license as the trac package.
 # Núria Montesinos, 2004.
-# Jordi Mallach , 2004, 2009, 2010, 2011.
+# Jordi Mallach , 2004, 2009, 2010, 2011, 2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: trac 0.12.3-dev\n"
+"Project-Id-Version: trac 1.0-dev\n"
 "Report-Msgid-Bugs-To: trac-...@googlegroups.com\n"
-"POT-Creation-Date: 2013-01-27 11:21+0900\n"
-"PO-Revision-Date: 2011-11-17 11:12+0100\n"
+"POT-Creation-Date: 2013-03-21 22:54+0100\n"
+"PO-Revision-Date: 2013-04-25 17:37+0200\n"
 "Last-Translator: Jordi Mallach \n"
 "Language-Team: Catalan \n"
-"Plural-Forms: nplurals=2; plural=n!=1\n"
+"Language: ca\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Plural-Forms: nplurals=2; plural=n!=1\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
-"You appear to be using the PHP CGI binary. Trac requires the CLI version "
-"for syntax highlighting."
+"You appear to be using the PHP CGI binary. Trac requires the CLI version for "
+"syntax highlighting."
 msgstr ""
-"Sembla que esteu emprant el binari de PHP CGI. Trac requereix la versió "
-"CLI per al ressaltat de sintaxi."
+"Sembla que esteu emprant el binari de PHP CGI. Trac requereix la versió CLI "
+"per al ressaltat de sintaxi."
 
 #: tracopt/ticket/clone.py:49
 #, python-format
 msgid "%(summary)s (cloned)"
-msgstr ""
+msgstr "%(summary)s (clonat)"
 
 #: tracopt/ticket/clone.py:53
 #, python-format
@@ -38,15 +39,17 @@ msgid ""
 "\n"
 "%(description)s"
 msgstr ""
+"Clonat des de #%(id)s:\n"
+"\n"
+"%(description)s"
 
 #: tracopt/ticket/clone.py:60
-#, fuzzy
 msgid "Clone"
-msgstr "tancat"
+msgstr "Clona"
 
 #: tracopt/ticket/clone.py:61
 msgid "Create a copy of this ticket"
-msgstr ""
+msgstr "Crea una còpia d'aquest tiquet"
 
 #: tracopt/ticket/commit_updater.py:275
 msgid ""
@@ -172,12 +175,12 @@ msgstr "No s'ha pogut obrir el dipòsi
 #: tracopt/versioncontrol/svn/svn_fs.py:664
 #, python-format
 msgid ""
-"Diff mismatch: Base is a %(oldnode)s (%(oldpath)s in revision %(oldrev)s)"
-" and Target is a %(newnode)s (%(newpath)s in revision %(newrev)s)."
+"Diff mismatch: Base is a %(oldnode)s (%(oldpath)s in revision %(oldrev)s) "
+"and Target is a %(newnode)s (%(newpath)s in revision %(newrev)s)."
 msgstr ""
-"Inconsistència al diff: La base és un %(oldnode)s (%(oldpath)s a la "
-"revisió %(oldrev)s) i la destinació és %(newnode)s (%(newpath)s a la "
-"revisió %(newrev)s)."
+"Inconsistència al diff: La base és un %(oldnode)s (%(oldpath)s a la 
revisió "
+"%(oldrev)s) i la destinació és %(newnode)s (%(newpath)s a la revisió "
+"%(newrev)s)."
 
 #: tracopt/versioncontrol/svn/svn_fs.py:823
 #, python-format
@@ -287,14 +290,14 @@ msgstr "No s'ha pogut suprimir l'adjunt"
 #, python-format
 msgid "Cannot reparent attachment \"%(att)s\" as %(realm)s:%(id)s is invalid"
 msgstr ""
-"No es pot assignar un pare a l'adjunt «%(att)s» perquè %(realm)s:%(id)s "
-"és invàlid"
+"No es pot assignar un pare a l'adjunt «%(att)s» perquè %(realm)s:%(id)s 
és "
+"invàlid"
 
 #: trac/attachment.py:258
 #, python-format
 msgid ""
-"Cannot reparent attachment \"%(att)s\" as it already exists in "
-"%(realm)s:%(id)s"
+"Cannot reparent attachment \"%(att)s\" as it already exists in %(realm)s:"
+"%(id)s"
 msgstr ""
 "No es pot assignar un pare a l'adjunt «%(att)s» perquè ja existeix a "
 "%(realm)s:%(id)s"
@@ -377,20 +380,19 @@ msgid "Invalid attachment: %(message)s"
 msgstr "L'adjunt és invàlid: %(message)s"
 
 #: trac/attachment.py:745
-#, fuzzy
 msgid "Note: File must be selected again."
-msgstr "No s'ha seleccionat cap fita"
+msgstr "Nota: S'ha de tornar a seleccionar el fitxer."
 
 #: trac/attachment.py:758
 #, python-format
 msgid ""
-"You don't have permission to replace the attachment %(name)s. You can "
-"only replace your own attachments. Replacing other's attachments requires"
-" ATTACHMENT_DELETE permission."
-msgstr ""
-"No teniu permís per a reemplaçar l'adjunt %(name)s. Només podeu "
-"reemplaçar els adjunts propis. Reemplaçar els adjunts d'altres requereix "
-"permisos «ATTACHMENT_DELETE»."
+"You do

svn commit: r1639823 [12/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/mimeview/tests/api.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/mimeview/tests/api.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/mimeview/tests/api.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/mimeview/tests/api.py 
Sat Nov 15 01:14:46 2014
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C)2006-2009 Edgewall Software
+# Copyright (C) 2006-2013 Edgewall Software
 # All rights reserved.
 #
 # This software is licensed as described in the file COPYING, which
@@ -14,8 +14,8 @@
 import doctest
 import unittest
 from StringIO import StringIO
-import sys
 
+import trac.tests.compat
 from trac.core import *
 from trac.test import EnvironmentStub
 from trac.mimeview import api
@@ -112,22 +112,22 @@ class GroupLinesTestCase(unittest.TestCa
 def test_text_only_stream(self):
 input = [(TEXT, "test", (None, -1, -1))]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), 1)
-self.assertTrue(isinstance(lines[0], Stream))
-self.assertEquals(lines[0].events, input)
+self.assertEqual(len(lines), 1)
+self.assertIsInstance(lines[0], Stream)
+self.assertEqual(lines[0].events, input)
 
 def test_text_only_stream2(self):
 input = [(TEXT, "test\n", (None, -1, -1))]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), 1)
-self.assertTrue(isinstance(lines[0], Stream))
-self.assertEquals(lines[0].events, [(TEXT, "test", (None, -1, -1))])
+self.assertEqual(len(lines), 1)
+self.assertIsInstance(lines[0], Stream)
+self.assertEqual(lines[0].events, [(TEXT, "test", (None, -1, -1))])
 
 def test_simplespan(self):
 input = HTMLParser(StringIO(u"test"), encoding=None)
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), 1)
-self.assertTrue(isinstance(lines[0], Stream))
+self.assertEqual(len(lines), 1)
+self.assertIsInstance(lines[0], Stream)
 for (a, b) in zip(lines[0], input):
 self.assertEqual(a, b)
 
@@ -137,17 +137,17 @@ class GroupLinesTestCase(unittest.TestCa
 """
 input = [(TEXT, "", (None, -1, -1))]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), 0)
+self.assertEqual(len(lines), 0)
 
 def test_newline_stream(self):
 input = [(TEXT, "\n", (None, -1, -1))]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), 1)
+self.assertEqual(len(lines), 1)
 
 def test_newline_stream2(self):
 input = [(TEXT, "\n\n\n", (None, -1, -1))]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), 3)
+self.assertEqual(len(lines), 3)
 
 def test_empty_text_in_span(self):
 """
@@ -172,9 +172,9 @@ class GroupLinesTestCase(unittest.TestCa
 'b',
]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), len(expected))
+self.assertEqual(len(lines), len(expected))
 for a, b in zip(lines, expected):
-self.assertEquals(a.render('html'), b)
+self.assertEqual(a.render('html'), b)
 
 def test_newline2(self):
 """
@@ -187,9 +187,9 @@ class GroupLinesTestCase(unittest.TestCa
 'b',
]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), len(expected))
+self.assertEqual(len(lines), len(expected))
 for a, b in zip(lines, expected):
-self.assertEquals(a.render('html'), b)
+self.assertEqual(a.render('html'), b)
 
 def test_multinewline(self):
 """
@@ -203,17 +203,17 @@ class GroupLinesTestCase(unittest.TestCa
 'a',
]
 lines = list(_group_lines(input))
-self.assertEquals(len(lines), len(expected))
+self.assertEqual(len(lines), len(expected))
 for a, b in zip(lines, expected):
-self.assertEquals(a.render('html'), b)
+self.assertEqual(a.render('html'), b)
 
 
 def suite():
 suite = unittest.TestSuite()
 suite.addTest(doctest.DocTestSuite(api))
-suite.addTest(unittest.makeSuite(GetMimeTypeTestCase, 'test'))
-suite.addTest(unittest.makeSuite(MimeviewTestCase, 'test'))
-suite.addTest(unittest.makeSuite(GroupLinesTestCase, 'test'))
+suite.addTest(unittest.makeSuite(GetMimeTypeTestCase))
+suite.addTest(unittest.makeSuite(MimeviewTestCase))
+suite.addTest(unittest.makeSuite(GroupLinesTestCase))
 return suite
 
 if __name__ == '__main__':

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/mimeview/tests/patch.html
URL: 
http://

svn commit: r1639823 [13/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/list_of_attachments.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/list_of_attachments.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/list_of_attachments.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/list_of_attachments.html
 Sat Nov 15 01:14:46 2014
@@ -1,4 +1,13 @@
-
 http://www.w3.org/1999/xhtml";
  xmlns:py="http://genshi.edgewall.org/";
  xmlns:xi="http://www.w3.org/2001/XInclude";

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/page_index.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/page_index.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/page_index.html 
(original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/page_index.html 
Sat Nov 15 01:14:46 2014
@@ -1,6 +1,17 @@
-
 http://www.w3.org/1999/xhtml";

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/preview_file.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/preview_file.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/preview_file.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/templates/preview_file.html
 Sat Nov 15 01:14:46 2014
@@ -1,4 +1,13 @@
-
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/test.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/test.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/test.py (original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/test.py Sat Nov 15 
01:14:46 2014
@@ -144,7 +144,8 @@ class TestSetup(unittest.TestSuite):
 return result
 
 def _wrapped_run(self, *args, **kwargs):
-"Python 2.7 / unittest2 compatibility - there must be a better way..."
+"""Python 2.7 / unittest2 compatibility - there must be a better
+way..."""
 self.setUp()
 if hasattr(self, 'fixture'):
 for test in self._tests:
@@ -153,6 +154,7 @@ class TestSetup(unittest.TestSuite):
 unittest.TestSuite._wrapped_run(self, *args, **kwargs)
 self.tearDown()
 
+
 class TestCaseSetup(unittest.TestCase):
 def setFixture(self, fixture):
 self.fixture = fixture
@@ -164,7 +166,7 @@ def get_dburi():
 dburi = os.environ.get('TRAC_TEST_DB_URI')
 if dburi:
 scheme, db_prop = _parse_db_str(dburi)
-# Assume the schema 'tractest' for Postgres
+# Assume the schema 'tractest' for PostgreSQL
 if scheme == 'postgres' and \
 not db_prop.get('params', {}).get('schema'):
 if '?' in dburi:
@@ -176,9 +178,8 @@ def get_dburi():
 
 
 def reset_sqlite_db(env, db_prop):
-dbname = os.path.basename(db_prop['path'])
 with env.db_transaction as db:
-tables = db("SELECT name FROM sqlite_master WHERE type='table'")
+tables = db.get_table_names()
 for table in tables:
 db("DELETE FROM %s" % table)
 return tables
@@ -189,24 +190,24 @@ def reset_postgres_db(env, db_prop):
 dbname = db.schema
 if dbname:
 # reset sequences
-# information_schema.sequences view is available in PostgreSQL 8.2+
-# however Trac supports PostgreSQL 8.0+, uses
+# information_schema.sequences view is available in
+# PostgreSQL 8.2+ however Trac supports PostgreSQL 8.0+, uses
 # pg_get_serial_sequence()
-for seq in db("""
-SELECT sequence_name FROM (
-SELECT pg_get_serial_sequence(%s||table_name,
-  column_name)
-   AS sequence_name
-FROM information_schema.columns
-WHERE table_schema=%s) AS tab
-WHERE sequence_name IS NOT NULL""",
-(dbname + '.', dbname)):
+seqs = [seq for seq, in db("""
+SELECT sequence_name
+FROM (
+SELECT pg_get_serial_sequence(
+quote_ident(table_schema) || '.' ||
+quote_ident(table_name), c

svn commit: r1639823 [15/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/admin.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/admin.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/admin.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/admin.py Sat 
Nov 15 01:14:46 2014
@@ -15,7 +15,9 @@ from __future__ import with_statement
 
 from datetime import datetime
 
-from trac.admin import *
+from trac.admin.api import AdminCommandError, IAdminCommandProvider, \
+   IAdminPanelProvider, console_date_format, \
+   console_datetime_format, get_console_locale
 from trac.core import *
 from trac.perm import PermissionSystem
 from trac.resource import ResourceNotFound
@@ -40,11 +42,10 @@ class TicketAdminPanel(Component):
 #and don't use it whenever using them as field names (after
 #a call to `.lower()`)
 
-
 # IAdminPanelProvider methods
 
 def get_admin_panels(self, req):
-if 'TICKET_ADMIN' in req.perm:
+if 'TICKET_ADMIN' in req.perm('admin', 'ticket/' + self._type):
 # in global scope show only products
 # in local scope everything but products
 parent = getattr(self.env, 'parent', None)
@@ -54,7 +55,6 @@ class TicketAdminPanel(Component):
 gettext(self._label[1]))
 
 def render_admin_panel(self, req, cat, page, version):
-req.perm.require('TICKET_ADMIN')
 # Trap AssertionErrors and convert them to TracErrors
 try:
 return self._render_admin_panel(req, cat, page, version)
@@ -152,7 +152,7 @@ class ComponentAdminPanel(TicketAdminPan
 req.redirect(req.href.admin(cat, page))
 
 data = {'view': 'list',
-'components': model.Component.select(self.env),
+'components': list(model.Component.select(self.env)),
 'default': default}
 
 if self.config.getbool('ticket', 'restrict_owner'):
@@ -175,7 +175,7 @@ class ComponentAdminPanel(TicketAdminPan
 yield ('component list', '',
'Show available components',
None, self._do_list)
-yield ('component add', ' ',
+yield ('component add', ' [owner]',
'Add a new component',
self._complete_add, self._do_add)
 yield ('component rename', ' ',
@@ -214,7 +214,7 @@ class ComponentAdminPanel(TicketAdminPan
  for c in model.Component.select(self.env)],
 [_('Name'), _('Owner')])
 
-def _do_add(self, name, owner):
+def _do_add(self, name, owner=None):
 component = model.Component(self.env)
 component.name = name
 component.owner = owner
@@ -242,21 +242,19 @@ class MilestoneAdminPanel(TicketAdminPan
 # IAdminPanelProvider methods
 
 def get_admin_panels(self, req):
-if 'MILESTONE_VIEW' in req.perm:
+if 'MILESTONE_VIEW' in req.perm('admin', 'ticket/' + self._type):
 return TicketAdminPanel.get_admin_panels(self, req)
-return iter([])
 
 # TicketAdminPanel methods
 
 def _render_admin_panel(self, req, cat, page, milestone):
-req.perm.require('MILESTONE_VIEW')
-
+perm = req.perm('admin', 'ticket/' + self._type)
 # Detail view?
 if milestone:
 mil = model.Milestone(self.env, milestone)
 if req.method == 'POST':
 if req.args.get('save'):
-req.perm.require('MILESTONE_MODIFY')
+perm.require('MILESTONE_MODIFY')
 mil.name = name = req.args.get('name')
 mil.due = mil.completed = None
 due = req.args.get('duedate', '')
@@ -273,7 +271,7 @@ class MilestoneAdminPanel(TicketAdminPan
 _('Invalid Completion Date'))
 mil.description = req.args.get('description', '')
 try:
-mil.update()
+mil.update(author=req.authname)
 except self.env.db_exc.IntegrityError:
 raise TracError(_('The milestone "%(name)s" already '
   'exists.', name=name))
@@ -290,7 +288,7 @@ class MilestoneAdminPanel(TicketAdminPan
 if req.method == 'POST':
 # Add Milestone
 if req.args.get('add') and req.args.get('name'):
-req.perm.require('MILESTONE_CREATE')
+perm.require('MILESTONE_CREATE')
 name = req.args.get('name')
 try:
 mil = model.Milestone(self.env, name=name)
@@ -313,7 +311,7 @@ c

svn commit: r1639823 [11/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages-js.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages-js.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages-js.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages-js.po
 Sat Nov 15 01:14:46 2014
@@ -15,7 +15,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: trac/htdocs/js/blame.js:84
 msgid "(no changeset information)"

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nb/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -15,7 +15,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
@@ -7008,3 +7008,8 @@ msgstr "(tom side)"
 msgid "The following pages have a name similar to this page, and may be 
related:"
 msgstr "Følgende sider har navn som ligner denne siden, og kan være 
relatert:"
 
+#~ msgid ""
+#~ "Copyright © 2003-2012\n"
+#~ "[1:Edgewall Software]"
+#~ msgstr ""
+

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nl/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nl/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nl/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/nl/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version:  Trac\n"
 "Report-Msgid-Bugs-To: http://trac.edgewall.org/\n";
-"POT-Creation-Date: 2012-10-29 19:08+0100\n"
+"POT-Creation-Date: 2013-02-17 15:58+0100\n"
 "PO-Revision-Date: 2013-01-27 17:56+\n"
 "Last-Translator: Pander \n"
 "Language-Team: Dutch "
@@ -764,7 +764,7 @@ msgid ""
 msgstr ""
 "Welkom in trac-admin %(version)s\n"
 "Interactieve Trac-administratieomgeving.\n"
-"Copyright (c) 2003-2010 Edgewall Software\n"
+"Copyright (c) 2003-2013 Edgewall Software\n"
 "\n"
 "Type:  '?' of 'help' voor hulp bij commando’s.\n"
 ""
@@ -2162,7 +2162,7 @@ msgid ""
 "Copyright © 2003-2013\n"
 "[1:Edgewall Software]"
 msgstr ""
-"Copyright © 2003-2010\n"
+"Copyright © 2003-2013\n"
 "[1:Edgewall Software]"
 
 #: trac/templates/about.html:54

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pl/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pl/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pl/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pl/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -19,7 +19,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.6dev-r0\n"
+"Generated-By: Babel 0.9.6\n"
 
 #: tracopt/mimeview/php.py:96
 msgid ""
@@ -7042,3 +7042,8 @@ msgstr ""
 "Następujące strony mają nazwę podobną do tej strony i mogą zostać "
 "powiązane:"
 
+#~ msgid ""
+#~ "Copyright © 2003-2012\n"
+#~ "[1:Edgewall Software]"
+#~ msgstr ""
+

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pt/LC_MESSAGES/messages.po
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pt/LC_MESSAGES/messages.po?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pt/LC_MESSAGES/messages.po
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/pt/LC_MESSAGES/messages.po
 Sat Nov 15 01:14:46 2014
@@ -17,7 +17,7 @@ msgstr ""
 "MIME-Vers

svn commit: r1639823 [16/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_edit.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_edit.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_edit.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_edit.html
 Sat Nov 15 01:14:46 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -26,13 +36,14 @@
   var retarget = $("#retarget");
   retarget.enable(checked);
   $("#target").enable(checked && retarget.checked());
+  $("#retarget-comment").enable(checked && retarget.checked());
 }
 $("#completed").click(updateCompletedDate);
 updateCompletedDate();
 $("#retarget").click(function(){
   $("#target").enable(this.checked);
+  $("#retarget-comment").enable(this.checked);
 });
-$("#name").get(0).focus()
 $("#duedate").datetimepicker();
 $("#completeddate").datetimepicker();
   });
@@ -51,7 +62,8 @@
   
   
   Name of the milestone:
-
+
   
 
 
@@ -91,20 +103,28 @@
   value="${milestone.name}" 
py:content="milestone.name">
 
   
+  
+  Comment:
+  
+  
 
   
 
 
   
-Description (you may use WikiFormatting 
here):
-
+
+  Description: (you may use WikiFormatting here)
+
+
 ${milestone.description}
   
 
 
-  
-  
+  
+  
   
 
   

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_view.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_view.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_view.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/milestone_view.html
 Sat Nov 15 01:14:46 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query.html
 Sat Nov 15 01:14:46 2014
@@ -1,3 +1,13 @@
+
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -223,7 +233,7 @@
   
 
   
-  
+  
 
   http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query_results.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query_results.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/query_results.html
 Sat Nov 15 01:14:46 2014
@@ -1,17 +1,26 @@
-
 http://www.w3.org/1999/xhtml";
  xmlns:py="http://genshi.edgewall.org/";
@@ -74,7 +83,8 @@
   
 #$result.id
-
+
   $value
   ${pretty_dateinfo(value, dateonly=True)}
   ${authorinfo(value)}
@@ -82,6 +92,7 @@
   ${authorinfo(value)}
   ${value}
   ${wiki_to_oneliner(ticket_context, value)}
+  ${wiki_to_html(ticket_context, value)}
   $value
 
   

Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/report_delete.html
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/report_delete.html?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/report_delete.html
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/templates/report_delete.html
 Sat Nov 15 01:14:4

svn commit: r1639823 [28/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/git/git_fs.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/git/git_fs.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/git/git_fs.py
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/git/git_fs.py
 Sat Nov 15 01:14:46 2014
@@ -15,20 +15,25 @@
 from __future__ import with_statement
 
 from datetime import datetime
+import itertools
 import os
 import sys
 
 from genshi.builder import tag
+from genshi.core import Markup
 
+from trac.cache import cached
 from trac.config import BoolOption, IntOption, PathOption, Option
 from trac.core import *
 from trac.util import TracError, shorten_line
 from trac.util.datefmt import FixedOffset, to_timestamp, format_datetime
-from trac.util.text import to_unicode
+from trac.util.text import to_unicode, exception_to_unicode
+from trac.util.translation import _
 from trac.versioncontrol.api import Changeset, Node, Repository, \
 IRepositoryConnector, NoSuchChangeset, \
 NoSuchNode, IRepositoryProvider
-from trac.versioncontrol.cache import CachedRepository, CachedChangeset
+from trac.versioncontrol.cache import CACHE_YOUNGEST_REV, CachedRepository, \
+  CachedChangeset
 from trac.versioncontrol.web_ui import IPropertyRenderer
 from trac.web.chrome import Chrome
 from trac.wiki import IWikiSyntaxProvider
@@ -37,10 +42,7 @@ from tracopt.versioncontrol.git import P
 
 
 class GitCachedRepository(CachedRepository):
-"""Git-specific cached repository.
-
-Passes through {display,short,normalize}_rev
-"""
+"""Git-specific cached repository."""
 
 def display_rev(self, rev):
 return self.short_rev(rev)
@@ -50,15 +52,113 @@ class GitCachedRepository(CachedReposito
 
 def normalize_rev(self, rev):
 if not rev:
-return self.repos.get_youngest_rev()
+return self.get_youngest_rev()
 normrev = self.repos.git.verifyrev(rev)
 if normrev is None:
 raise NoSuchChangeset(rev)
 return normrev
 
+def get_youngest_rev(self):
+# return None if repository is empty
+return CachedRepository.get_youngest_rev(self) or None
+
+def child_revs(self, rev):
+return self.repos.child_revs(rev)
+
+def get_changesets(self, start, stop):
+for key, csets in itertools.groupby(
+CachedRepository.get_changesets(self, start, stop),
+key=lambda cset: cset.date):
+csets = list(csets)
+if len(csets) == 1:
+yield csets[0]
+continue
+rev_csets = dict((cset.rev, cset) for cset in csets)
+while rev_csets:
+revs = [rev for rev in rev_csets
+if not any(r in rev_csets
+   for r in self.repos.child_revs(rev))]
+for rev in sorted(revs):
+yield rev_csets.pop(rev)
+
 def get_changeset(self, rev):
 return GitCachedChangeset(self, self.normalize_rev(rev), self.env)
 
+def sync(self, feedback=None, clean=False):
+if clean:
+self.remove_cache()
+
+metadata = self.metadata
+self.save_metadata(metadata)
+meta_youngest = metadata.get(CACHE_YOUNGEST_REV)
+repos = self.repos
+
+def is_synced(rev):
+for count, in self.env.db_query("""
+SELECT COUNT(*) FROM revision WHERE repos=%s AND rev=%s
+""", (self.id, rev)):
+return count > 0
+return False
+
+def traverse(rev, seen, revs=None):
+if revs is None:
+revs = []
+while True:
+if rev in seen:
+return revs
+seen.add(rev)
+if is_synced(rev):
+return revs
+revs.append(rev)
+parent_revs = repos.parent_revs(rev)
+if not parent_revs:
+return revs
+if len(parent_revs) == 1:
+rev = parent_revs[0]
+continue
+idx = len(revs)
+traverse(parent_revs.pop(), seen, revs)
+for parent in parent_revs:
+revs[idx:idx] = traverse(parent, seen)
+
+while True:
+repos.sync()
+repos_youngest = repos.youngest_rev
+updated = False
+seen = set()
+
+for rev in repos.git.all_revs():
+if repos.child_revs(rev):
+continue
+revs = trav

svn commit: r1639823 [3/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/tests/console.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/tests/console.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/tests/console.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/tests/console.py 
Sat Nov 15 01:14:46 2014
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2004-2009 Edgewall Software
+# Copyright (C) 2004-2013 Edgewall Software
 # All rights reserved.
 #
 # This software is licensed as described in the file COPYING, which
@@ -14,6 +14,7 @@
 # Author: Tim Moloney 
 
 import difflib
+import inspect
 import os
 import re
 import sys
@@ -42,9 +43,14 @@ import trac.search.web_ui
 import trac.timeline.web_ui
 import trac.wiki.web_ui
 
-from trac.admin import console, console_date_format
+from trac.admin.api import AdminCommandManager, IAdminCommandProvider, \
+   console_date_format, get_console_locale
+from trac.admin.console import TracAdmin, TracAdminHelpMacro
+from trac.core import Component, implements
 from trac.test import EnvironmentStub
-from trac.util.datefmt import format_date, get_date_format_hint
+from trac.util.datefmt import format_date, get_date_format_hint, \
+  get_datetime_format_hint
+from trac.util.translation import get_available_locales, has_babel
 from trac.web.tests.session import _prep_session_table
 
 STRIP_TRAILING_SPACE = re.compile(r'( +)$', re.MULTILINE)
@@ -71,20 +77,50 @@ def load_expected_results(file, pattern)
 return expected
 
 
+def execute_cmd(tracadmin, cmd, strip_trailing_space=True, input=None):
+_in = sys.stdin
+_err = sys.stderr
+_out = sys.stdout
+try:
+if input:
+sys.stdin = StringIO(input.encode('utf-8'))
+sys.stdin.encoding = 'utf-8' # fake input encoding
+sys.stderr = sys.stdout = out = StringIO()
+out.encoding = 'utf-8' # fake output encoding
+retval = None
+try:
+retval = tracadmin.onecmd(cmd)
+except SystemExit:
+pass
+value = out.getvalue()
+if isinstance(value, str): # reverse what print_listing did
+value = value.decode('utf-8')
+if strip_trailing_space:
+return retval, STRIP_TRAILING_SPACE.sub('', value)
+else:
+return retval, value
+finally:
+sys.stdin = _in
+sys.stderr = _err
+sys.stdout = _out
+
+
 class TracadminTestCase(unittest.TestCase):
 """
 Tests the output of trac-admin and is meant to be used with
 .../trac/tests.py.
 """
 
-expected_results = load_expected_results(
-os.path.join(os.path.split(__file__)[0], 'console-tests.txt'),
-'= (test_[^ ]+) =')
+expected_results_file = os.path.join(os.path.dirname(__file__),
+ 'console-tests.txt')
+
+expected_results = load_expected_results(expected_results_file,
+ '= (test_[^ ]+) =')
 
 def setUp(self):
 self.env = EnvironmentStub(default_data=True, enable=('trac.*',),
disable=('trac.tests.*',))
-self._admin = console.TracAdmin()
+self._admin = TracAdmin()
 self._admin.env_set('', self.env)
 
 # Set test date to 11th Jan 2004
@@ -94,39 +130,32 @@ class TracadminTestCase(unittest.TestCas
 self.env = None
 
 def _execute(self, cmd, strip_trailing_space=True, input=None):
-_in = sys.stdin
-_err = sys.stderr
-_out = sys.stdout
-try:
-if input:
-sys.stdin = StringIO(input.encode('utf-8'))
-sys.stdin.encoding = 'utf-8' # fake input encoding
-sys.stderr = sys.stdout = out = StringIO()
-out.encoding = 'utf-8' # fake output encoding
-retval = None
-try:
-retval = self._admin.onecmd(cmd)
-except SystemExit:
-pass
-value = out.getvalue()
-if isinstance(value, str): # reverse what print_listing did
-value = value.decode('utf-8')
-# DEBUG: uncomment in case of `AssertionError: 0 != 2` in tests
-#if retval != 0:
-#print>>_err, value
-if strip_trailing_space:
-return retval, STRIP_TRAILING_SPACE.sub('', value)
-else:
-return retval, value
-finally:
-sys.stdin = _in
-sys.stderr = _err
-sys.stdout = _out
-
-def assertEqual(self, expected_results, output):
-if not (isinstance(expected_results, basestring) and \
+return execute_cmd(self._admin, cmd,

svn commit: r1639823 [29/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/svn/tests/svnrepos.dump
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/svn/tests/svnrepos.dump?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/svn/tests/svnrepos.dump
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/tracopt/versioncontrol/svn/tests/svnrepos.dump
 Sat Nov 15 01:14:46 2014
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 25
-Initial directory layout.
 K 10
 svn:author
 V 4
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2005-04-01T10:00:52.353248Z
+K 7
+svn:log
+V 25
+Initial directory layout.
 PROPS-END
 
 Node-path: branches
@@ -61,10 +61,6 @@ Revision-number: 2
 Prop-content-length: 112
 Content-length: 112
 
-K 7
-svn:log
-V 13
-Added README.
 K 10
 svn:author
 V 4
@@ -73,6 +69,10 @@ K 8
 svn:date
 V 27
 2005-04-01T13:12:18.216267Z
+K 7
+svn:log
+V 13
+Added README.
 PROPS-END
 
 Node-path: tête/README.txt
@@ -92,11 +92,6 @@ Revision-number: 3
 Prop-content-length: 113
 Content-length: 113
 
-K 7
-svn:log
-V 14
-Fixed README.
-
 K 10
 svn:author
 V 4
@@ -105,6 +100,11 @@ K 8
 svn:date
 V 27
 2005-04-01T13:24:58.234643Z
+K 7
+svn:log
+V 14
+Fixed README.
+
 PROPS-END
 
 Node-path: tête/README.txt
@@ -117,13 +117,13 @@ Text-content-sha1: 6aade8dde7d1b86b451b5
 Content-length: 83
 
 K 13
-svn:mime-type
-V 10
-text/plain
-K 13
 svn:eol-style
 V 6
 native
+K 13
+svn:mime-type
+V 10
+text/plain
 PROPS-END
 A test.
 
@@ -132,10 +132,6 @@ Revision-number: 4
 Prop-content-length: 116
 Content-length: 116
 
-K 7
-svn:log
-V 17
-More directories.
 K 10
 svn:author
 V 4
@@ -144,6 +140,10 @@ K 8
 svn:date
 V 27
 2005-04-01T15:42:35.450595Z
+K 7
+svn:log
+V 17
+More directories.
 PROPS-END
 
 Node-path: tête/dir1
@@ -177,10 +177,6 @@ Revision-number: 5
 Prop-content-length: 117
 Content-length: 117
 
-K 7
-svn:log
-V 18
-Moved directories.
 K 10
 svn:author
 V 4
@@ -189,6 +185,10 @@ K 8
 svn:date
 V 27
 2005-04-01T16:25:39.658099Z
+K 7
+svn:log
+V 18
+Moved directories.
 PROPS-END
 
 Node-path: tête/dir1/dir2
@@ -217,10 +217,6 @@ Revision-number: 6
 Prop-content-length: 118
 Content-length: 118
 
-K 7
-svn:log
-V 19
-More things to read
 K 10
 svn:author
 V 4
@@ -229,6 +225,10 @@ K 8
 svn:date
 V 27
 2005-04-01T18:56:46.985846Z
+K 7
+svn:log
+V 19
+More things to read
 PROPS-END
 
 Node-path: tête/README2.txt
@@ -244,10 +244,6 @@ Revision-number: 7
 Prop-content-length: 151
 Content-length: 151
 
-K 7
-svn:log
-V 42
-test the tag operation (copy of directory)
 K 10
 svn:author
 V 13
@@ -256,6 +252,10 @@ K 8
 svn:date
 V 27
 2005-04-14T15:06:20.717616Z
+K 7
+svn:log
+V 42
+test the tag operation (copy of directory)
 PROPS-END
 
 Node-path: tags/v1
@@ -269,10 +269,6 @@ Revision-number: 8
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 15
-Fix stuff in v1
 K 10
 svn:author
 V 13
@@ -281,6 +277,10 @@ K 8
 svn:date
 V 27
 2005-04-22T08:57:33.499643Z
+K 7
+svn:log
+V 15
+Fix stuff in v1
 PROPS-END
 
 Node-path: branches/v1x
@@ -294,10 +294,6 @@ Revision-number: 9
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 18
-Now that's the fix
 K 10
 svn:author
 V 13
@@ -306,6 +302,10 @@ K 8
 svn:date
 V 27
 2005-04-22T08:59:24.308979Z
+K 7
+svn:log
+V 18
+Now that's the fix
 PROPS-END
 
 Node-path: branches/v1x/README.txt
@@ -323,10 +323,6 @@ Revision-number: 10
 Prop-content-length: 141
 Content-length: 141
 
-K 7
-svn:log
-V 32
-Tagging v1.1 from the fix branch
 K 10
 svn:author
 V 13
@@ -335,6 +331,10 @@ K 8
 svn:date
 V 27
 2005-04-22T09:00:34.549980Z
+K 7
+svn:log
+V 32
+Tagging v1.1 from the fix branch
 PROPS-END
 
 Node-path: tags/v1.1
@@ -348,10 +348,6 @@ Revision-number: 11
 Prop-content-length: 191
 Content-length: 191
 
-K 7
-svn:log
-V 82
-''(a few months later)'' We don't need the fix branch anymore, 1.1 is 
super-stable
 K 10
 svn:author
 V 13
@@ -360,6 +356,10 @@ K 8
 svn:date
 V 27
 2005-04-22T09:01:38.361737Z
+K 7
+svn:log
+V 82
+''(a few months later)'' We don't need the fix branch anymore, 1.1 is 
super-stable
 PROPS-END
 
 Node-path: branches/v1x
@@ -370,10 +370,6 @@ Revision-number: 12
 Prop-content-length: 166
 Content-length: 166
 
-K 7
-svn:log
-V 57
-''(a few years later)'' Argh... v1.1 was buggy, after all
 K 10
 svn:author
 V 13
@@ -382,6 +378,10 @@ K 8
 svn:date
 V 27
 2005-04-22T09:06:37.011174Z
+K 7
+svn:log
+V 57
+''(a few years later)'' Argh... v1.1 was buggy, after all
 PROPS-END
 
 Node-path: branches/v1x
@@ -395,10 +395,6 @@ Revision-number: 13
 Prop-content-length: 143
 Content-length: 143
 
-K 7
-svn:log
-V 43
-Setting property on the repository_dir root
 K 10
 svn:author
 V 5
@@ -407,6 +403,10 @@ K 8
 svn:date
 V 27
 2005-11-17T15:13:16.197772Z
+K 7
+svn:log
+V 43
+Setting property on the re

svn commit: r1639823 [23/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/log.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/log.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/log.py
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/web_ui/log.py
 Sat Nov 15 01:14:46 2014
@@ -28,8 +28,7 @@ from trac.resource import ResourceNotFou
 from trac.util import Ranges
 from trac.util.text import to_unicode, wrap
 from trac.util.translation import _
-from trac.versioncontrol.api import (RepositoryManager, Changeset,
- NoSuchChangeset)
+from trac.versioncontrol.api import Changeset, RepositoryManager
 from trac.versioncontrol.web_ui.changeset import ChangesetModule
 from trac.versioncontrol.web_ui.util import *
 from trac.web import IRequestHandler
@@ -90,8 +89,12 @@ class LogModule(Component):
 reponame, repos, path = rm.get_repository_by_path(path)
 
 if not repos:
-raise ResourceNotFound(_("Repository '%(repo)s' not found",
-   repo=reponame))
+if path == '/':
+raise TracError(_("No repository specified and no default"
+  " repository configured."))
+else:
+raise ResourceNotFound(_("Repository '%(repo)s' not found",
+ repo=reponame or path.strip('/')))
 
 if reponame != repos.reponame:  # Redirect alias
 qs = req.query_string
@@ -106,11 +109,11 @@ class LogModule(Component):
 revranges = None
 if revs:
 try:
-revranges = Ranges(revs)
+revranges = self._normalize_ranges(repos, path, revs)
 rev = revranges.b
 except ValueError:
 pass
-rev = unicode(repos.normalize_rev(rev))
+rev = repos.normalize_rev(rev)
 display_rev = repos.display_rev
 
 # The `history()` method depends on the mode:
@@ -139,25 +142,27 @@ class LogModule(Component):
 node_history = list(node.get_history(2))
 p, rev, chg = node_history[0]
 if repos.rev_older_than(rev, a):
-break # simply skip, no separator
+break  # simply skip, no separator
 if 'CHANGESET_VIEW' in req.perm(cset_resource(id=rev)):
 if expected_next_item:
 # check whether we're continuing previous range
 np, nrev, nchg = expected_next_item
-if rev != nrev: # no, we need a separator
+if rev != nrev:  # no, we need a separator
 yield (np, nrev, None)
 yield node_history[0]
-prevpath = node_history[-1][0] # follow copy
-b = repos.previous_rev(rev)
 if len(node_history) > 1:
 expected_next_item = node_history[-1]
+prevpath = expected_next_item[0]  # follow copy
+b = expected_next_item[1]
 else:
 expected_next_item = None
+break  # no more older revisions
 if expected_next_item:
 yield (expected_next_item[0], expected_next_item[1], None)
 else:
 show_graph = path == '/' and not verbose \
  and not repos.has_linear_changesets
+
 def history():
 node = get_existing_node(req, repos, path, rev)
 for h in node.get_history():
@@ -192,7 +197,7 @@ class LogModule(Component):
 break
 elif mode == 'path_history':
 depth -= 1
-if old_chg is None: # separator entry
+if old_chg is None:  # separator entry
 stop_limit = limit
 else:
 count += 1
@@ -200,13 +205,15 @@ class LogModule(Component):
 if count >= stop_limit:
 break
 previous_path = old_path
-if info == []:
+if not info:
 node = get_existing_node(req, repos, path, rev)
 if repos.rev_older_than(stop_rev, node.created_rev):
 # FIXME: we should send a 404 error here
 raise TracError(_("The file or directory '%(path)s' doesn't "
-"exist at revision %(rev)s or at any previous revision.",
-path=path, rev=display_rev(rev)

svn commit: r1639823 [21/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/util/tests/datefmt.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/util/tests/datefmt.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/util/tests/datefmt.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/util/tests/datefmt.py 
Sat Nov 15 01:14:46 2014
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2007-2009 Edgewall Software
+# Copyright (C) 2007-2013 Edgewall Software
 # Copyright (C) 2007 Matt Good 
 # All rights reserved.
 #
@@ -15,23 +15,21 @@
 # Author: Matt Good 
 
 import datetime
+import locale
 import os
 import time
 import unittest
 
+import trac.tests.compat
 from trac.core import TracError
-from trac.util import datefmt, translation
+from trac.util import datefmt
 
 try:
-import pytz
-except ImportError:
-pytz = None
-try:
 from babel import Locale
 except ImportError:
 Locale = None
 
-if pytz is None:
+if datefmt.pytz is None:
 PytzTestCase = None
 else:
 class PytzTestCase(unittest.TestCase):
@@ -99,19 +97,6 @@ else:
 dt = datefmt.to_datetime(t, tz)
 self.assertEqual(datetime.timedelta(0, 7200), dt.utcoffset())
 
-def test_parse_date_across_dst_boundary(self):
-tz = datefmt.get_timezone('Europe/Zurich')
-# DST start - 31 March, 02:00
-format = '%Y-%m-%d %H:%M:%S %Z%z'
-expected = '2002-03-31 03:30:00 CEST+0200'
-# iso8601
-t = datefmt.parse_date('2002-03-31T02:30:00', tz)
-self.assertEqual(expected, t.strftime(format))
-# strptime
-t = datetime.datetime(2002, 3, 31, 2, 30)
-t = datefmt.parse_date(t.strftime('%x %X'), tz)
-self.assertEqual(expected, t.strftime(format))
-
 def test_to_datetime_astimezone(self):
 tz = datefmt.get_timezone('Europe/Paris')
 t = datetime.datetime(2012, 3, 25, 2, 15, tzinfo=datefmt.utc)
@@ -121,11 +106,11 @@ else:
 def test_to_datetime_tz_from_naive_datetime_is_localtz(self):
 t = datetime.datetime(2012, 3, 25, 2, 15)
 dt = datefmt.to_datetime(t)
-self.assert_(isinstance(dt.tzinfo, datefmt.LocalTimezone))
+self.assertIsInstance(dt.tzinfo, datefmt.LocalTimezone)
 
 def test_to_datetime_tz_from_now_is_localtz(self):
 dt = datefmt.to_datetime(None)
-self.assert_(isinstance(dt.tzinfo, datefmt.LocalTimezone))
+self.assertIsInstance(dt.tzinfo, datefmt.LocalTimezone)
 
 
 class ParseISO8601TestCase(unittest.TestCase):
@@ -205,7 +190,7 @@ class ParseISO8601TestCase(unittest.Test
 t = datetime.datetime(2012, 10, 11, 2, 40, 57, 0, datefmt.localtz)
 dt = datefmt.parse_date('2012-10-11T02:40:57')
 self.assertEqual(t, dt)
-self.assert_(isinstance(dt.tzinfo, datefmt.LocalTimezone))
+self.assertIsInstance(dt.tzinfo, datefmt.LocalTimezone)
 
 def test_iso8601_naive_tz_used_tzinfo_arg(self):
 tz = datefmt.timezone('GMT +1:00')
@@ -221,7 +206,7 @@ class ParseISO8601TestCase(unittest.Test
 self.assertEqual(datetime.timedelta(hours=-9, minutes=-30),
  dt.utcoffset())
 
-if pytz:
+if datefmt.pytz:
 def test_iso8601_naive_tz_normalize_non_existent_time(self):
 t = datetime.datetime(2012, 3, 25, 1, 15, 57, 0, datefmt.utc)
 tz = datefmt.timezone('Europe/Paris')
@@ -238,6 +223,128 @@ class ParseISO8601TestCase(unittest.Test
 self.assertEqual(2, dt.hour)
 self.assertEqual(datetime.timedelta(hours=1), dt.utcoffset())
 
+def test_hint_iso8601(self):
+def validate(locale=None):
+try:
+datefmt.parse_date('2001-0a-01', locale=locale, hint='iso8601')
+raise self.failureException('TracError not raised')
+except TracError, e:
+self.assertIn(u'"-MM-DDThh:mm:ss±hh:mm"', unicode(e))
+
+validate(locale=None)
+validate(locale='iso8601')
+if Locale:
+validate(locale=Locale.parse('en_US'))
+
+
+class ParseDateWithoutBabelTestCase(unittest.TestCase):
+
+if os.name != 'nt':
+locales = {}
+else:
+# LCID: http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
+# NLS: http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx
+ref_time = time.gmtime(123456)
+locales = {
+'en_US.UTF8': ('English_United States', '1/2/1970 10:17:36 AM'),
+'en_GB.UTF8': ('English_United Kingdom', '02/01/1970 10:17:36'),
+'fr_FR.UTF8': ('French_France', '02/01/1970 10:17:36'),
+'ja_JP.UTF8': ('Japanese_Japan', '1970/01/02 10:17:36'),
+'zh_CN.UTF8': ("Chinese_People's Republic

svn commit: r1639823 [24/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/web/tests/chrome.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/web/tests/chrome.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/web/tests/chrome.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/web/tests/chrome.py 
Sat Nov 15 01:14:46 2014
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2013 Edgewall Software
+# Copyright (C) 2005-2013 Edgewall Software
 # All rights reserved.
 #
 # This software is licensed as described in the file COPYING, which
@@ -11,23 +11,31 @@
 # individuals. For the exact contribution history, see the revision
 # history and logs, available at http://trac.edgewall.org/log/.
 
-from trac.core import Component, implements
-from trac.test import EnvironmentStub
+import os
+import shutil
+import tempfile
+import unittest
+
+import trac.tests.compat
+from trac.core import Component, TracError, implements
+from trac.test import EnvironmentStub, locale_en
 from trac.tests.contentgen import random_sentence
+from trac.util import create_file
 from trac.web.chrome import (
 Chrome, INavigationContributor, add_link, add_meta, add_notice, add_script,
 add_script_data, add_stylesheet, add_warning)
 from trac.web.href import Href
 
-import unittest
 
 class Request(object):
 locale = None
+args = {}
 def __init__(self, **kwargs):
 self.chrome = {}
 for k, v in kwargs.items():
 setattr(self, k, v)
 
+
 class ChromeTestCase(unittest.TestCase):
 
 def setUp(self):
@@ -76,14 +84,24 @@ class ChromeTestCase(unittest.TestCase):
 add_script(req, 'common/js/trac.js')
 add_script(req, 'common/js/trac.js')
 add_script(req, 'http://example.com/trac.js')
+add_script(req, '//example.com/trac.js')
+add_script(req, '/dynamic.js')
+add_script(req, 'plugin/js/plugin.js')
 scripts = req.chrome['scripts']
-self.assertEqual(2, len(scripts))
+self.assertEqual(5, len(scripts))
 self.assertEqual('text/javascript', scripts[0]['type'])
 self.assertEqual('/trac.cgi/chrome/common/js/trac.js',
  scripts[0]['href'])
 self.assertEqual('text/javascript', scripts[1]['type'])
 self.assertEqual('http://example.com/trac.js',
  scripts[1]['href'])
+self.assertEqual('text/javascript', scripts[2]['type'])
+self.assertEqual('//example.com/trac.js',
+ scripts[2]['href'])
+self.assertEqual('/trac.cgi/dynamic.js',
+ scripts[3]['href'])
+self.assertEqual('/trac.cgi/chrome/plugin/js/plugin.js',
+ scripts[4]['href'])
 
 def test_add_script_data(self):
 req = Request(href=Href('/trac.cgi'))
@@ -97,14 +115,24 @@ class ChromeTestCase(unittest.TestCase):
 add_stylesheet(req, 'common/css/trac.css')
 add_stylesheet(req, 'common/css/trac.css')
 add_stylesheet(req, 'https://example.com/trac.css')
+add_stylesheet(req, '//example.com/trac.css')
+add_stylesheet(req, '/dynamic.css')
+add_stylesheet(req, 'plugin/css/plugin.css')
 links = req.chrome['links']['stylesheet']
-self.assertEqual(2, len(links))
+self.assertEqual(5, len(links))
 self.assertEqual('text/css', links[0]['type'])
 self.assertEqual('/trac.cgi/chrome/common/css/trac.css',
  links[0]['href'])
 self.assertEqual('text/css', links[1]['type'])
 self.assertEqual('https://example.com/trac.css',
  links[1]['href'])
+self.assertEqual('text/css', links[2]['type'])
+self.assertEqual('//example.com/trac.css',
+ links[2]['href'])
+self.assertEqual('/trac.cgi/dynamic.css',
+ links[3]['href'])
+self.assertEqual('/trac.cgi/chrome/plugin/css/plugin.css',
+ links[4]['href'])
 
 def test_add_stylesheet_media(self):
 req = Request(base_path='/trac.cgi', href=Href('/trac.cgi'))
@@ -152,8 +180,8 @@ class ChromeTestCase(unittest.TestCase):
 # Verify that no logo data is put in the HDF if no logo is configured
 self.env.config.set('header_logo', 'src', '')
 info = Chrome(self.env).prepare_request(req)
-assert 'src' not in info['logo']
-assert 'src_abs' not in info['logo']
+self.assertNotIn('src', info['logo'])
+self.assertNotIn('src_abs', info['logo'])
 
 # Test with a relative path to the logo image
 self.env.config.set('header_logo', 'src', 'foo.png')
@@ -204,8 +232,8 @@ class ChromeTestCase(unittest.TestCase):
 # No icon set in config, so no icon links
 self.env.config

svn commit: r1639823 [18/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/model.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/model.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/model.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/model.py 
Sat Nov 15 01:14:46 2014
@@ -1,23 +1,37 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2005-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+
 from __future__ import with_statement
 
 from datetime import datetime, timedelta
-import os.path
 from StringIO import StringIO
 import tempfile
 import shutil
 import unittest
 
+import trac.tests.compat
 from trac import core
 from trac.attachment import Attachment
 from trac.core import TracError, implements
 from trac.resource import ResourceNotFound
+from trac.test import EnvironmentStub
 from trac.ticket.model import (
 Ticket, Component, Milestone, Priority, Type, Version
 )
+from trac.ticket.roadmap import MilestoneModule
 from trac.ticket.api import (
 IMilestoneChangeListener, ITicketChangeListener, TicketSystem
 )
-from trac.test import EnvironmentStub
 from trac.tests.resource import TestResourceChangeListener
 from trac.util.datefmt import from_utimestamp, to_utimestamp, utc
 
@@ -41,6 +55,36 @@ class TestTicketChangeListener(core.Comp
 self.action = 'deleted'
 self.ticket = ticket
 
+# the listener has no ticket_comment_modified and ticket_change_deleted
+
+
+class TestTicketChangeListener_2(core.Component):
+implements(ITicketChangeListener)
+
+def ticket_created(self, ticket):
+pass
+
+def ticket_changed(self, ticket, comment, author, old_values):
+pass
+
+def ticket_deleted(self, ticket):
+pass
+
+def ticket_comment_modified(self, ticket, cdate, author, comment,
+old_comment):
+self.action = 'comment_modified'
+self.ticket = ticket
+self.cdate = cdate
+self.author = author
+self.comment = comment
+self.old_comment = old_comment
+
+def ticket_change_deleted(self, ticket, cdate, changes):
+self.action = 'change_deleted'
+self.ticket = ticket
+self.cdate = cdate
+self.changes = changes
+
 
 class TicketTestCase(unittest.TestCase):
 
@@ -118,9 +162,9 @@ class TicketTestCase(unittest.TestCase):
 log = ticket3.get_changelog()
 self.assertEqual(len(log), 3)
 ok_vals = ['foo', 'summary', 'comment']
-self.failUnless(log[0][2] in ok_vals)
-self.failUnless(log[1][2] in ok_vals)
-self.failUnless(log[2][2] in ok_vals)
+self.assertIn(log[0][2], ok_vals)
+self.assertIn(log[1][2], ok_vals)
+self.assertIn(log[2][2], ok_vals)
 
 def test_create_ticket_5(self):
 ticket3 = self._modify_a_ticket()
@@ -157,7 +201,7 @@ class TicketTestCase(unittest.TestCase):
 ticket.save_changes()
 
 for change in ticket.get_changelog():
-self.assertEqual(None, change[1])
+self.assertIsNone(change[1])
 
 def test_comment_with_whitespace_only_is_not_saved(self):
 ticket = Ticket(self.env)
@@ -310,7 +354,7 @@ class TicketTestCase(unittest.TestCase):
 self.assertEqual('john', ticket['reporter'])
 
 # An unknown field
-assert ticket['bar'] is None
+self.assertIsNone(ticket['bar'])
 
 # Custom field
 self.assertEqual('bar', ticket['foo'])
@@ -599,6 +643,19 @@ class TicketCommentEditTestCase(TicketCo
 self.assertEqual((i, t[i], 'joe (%d)' % i,
  'Comment 1 (%d)' % i), history[i])
 
+def test_change_listener_comment_modified(self):
+listener = TestTicketChangeListener_2(self.env)
+ticket = Ticket(self.env, self.id)
+ticket.modify_comment(cdate=self.t2, author='jack',
+  comment='New Comment 2', when=datetime.now(utc))
+
+self.assertEqual('comment_modified', listener.action)
+self.assertEqual(ticket, listener.ticket)
+self.assertEqual(self.t2, listener.cdate)
+self.assertEqual('jack', listener.author)
+self.assertEqual('New Comment 2', listener.comment)
+self.assertEqual('Comment 2', listener.old_comment)
+
 
 class TicketCommentDeleteTestCase(TicketCommentTestCase):
 
@@ -632,8 +689,8 @@ class TicketComm

svn commit: r1639823 [22/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/cache.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/cache.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/cache.py 
(original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/versioncontrol/cache.py 
Sat Nov 15 01:14:46 2014
@@ -101,7 +101,7 @@ class CachedRepository(Repository):
   """, (to_utimestamp(cset.date), cset.author,
 cset.message, self.id, srev))
 else:
-self._insert_changeset(db, rev, cset)
+self._insert_changeset(db, cset.rev, cset)
 return old_cset
 
 @cached('_metadata_id')
@@ -115,62 +115,10 @@ class CachedRepository(Repository):
 
 def sync(self, feedback=None, clean=False):
 if clean:
-self.log.info("Cleaning cache")
-with self.env.db_transaction as db:
-db("DELETE FROM revision WHERE repos=%s",
-   (self.id,))
-db("DELETE FROM node_change WHERE repos=%s",
-   (self.id,))
-db.executemany("DELETE FROM repository WHERE id=%s AND 
name=%s",
-   [(self.id, k) for k in CACHE_METADATA_KEYS])
-db.executemany("""
-  INSERT INTO repository (id, name, value)
-  VALUES (%s, %s, %s)
-  """, [(self.id, k, '') for k in CACHE_METADATA_KEYS])
-del self.metadata
+self.remove_cache()
 
 metadata = self.metadata
-
-with self.env.db_transaction as db:
-invalidate = False
-
-# -- check that we're populating the cache for the correct
-#repository
-repository_dir = metadata.get(CACHE_REPOSITORY_DIR)
-if repository_dir:
-# directory part of the repo name can vary on case insensitive
-# fs
-if os.path.normcase(repository_dir) \
-!= os.path.normcase(self.name):
-self.log.info("'repository_dir' has changed from %r to %r",
-  repository_dir, self.name)
-raise TracError(_("The repository directory has changed, "
-  "you should resynchronize the "
-  "repository with: trac-admin $ENV "
-  "repository resync '%(reponame)s'",
-  reponame=self.reponame or '(default)'))
-elif repository_dir is None: #
-self.log.info('Storing initial "repository_dir": %s',
-  self.name)
-db("""INSERT INTO repository (id, name, value)
-  VALUES (%s, %s, %s)
-  """, (self.id, CACHE_REPOSITORY_DIR, self.name))
-invalidate = True
-else: # 'repository_dir' cleared by a resync
-self.log.info('Resetting "repository_dir": %s', self.name)
-db("UPDATE repository SET value=%s WHERE id=%s AND name=%s",
-   (self.name, self.id, CACHE_REPOSITORY_DIR))
-invalidate = True
-
-# -- insert a 'youngeset_rev' for the repository if necessary
-if metadata.get(CACHE_YOUNGEST_REV) is None:
-db("""INSERT INTO repository (id, name, value)
-  VALUES (%s, %s, %s)
-  """, (self.id, CACHE_YOUNGEST_REV, ''))
-invalidate = True
-
-if invalidate:
-del self.metadata
+self.save_metadata(metadata)
 
 # -- retrieve the youngest revision in the repository and the youngest
 #revision cached so far
@@ -263,6 +211,65 @@ class CachedRepository(Repository):
 if feedback:
 feedback(youngest)
 
+def remove_cache(self):
+"""Remove the repository cache."""
+self.log.info("Cleaning cache")
+with self.env.db_transaction as db:
+db("DELETE FROM revision WHERE repos=%s",
+   (self.id,))
+db("DELETE FROM node_change WHERE repos=%s",
+   (self.id,))
+db.executemany("DELETE FROM repository WHERE id=%s AND name=%s",
+   [(self.id, k) for k in CACHE_METADATA_KEYS])
+db.executemany("""
+  INSERT INTO repository (id, name, value)
+  VALUES (%s, %s, %s)
+  """, [(self.id, k, '') for k in CACHE_METADATA_KEYS])
+del self.metadata
+
+def save_metadata(self, metadata):
+"""Save the repository metadata."""
+with self.e

svn commit: r1639823 [10/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/messages.pot
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/messages.pot?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/messages.pot 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/locale/messages.pot 
Sat Nov 15 01:14:46 2014
@@ -1,14 +1,14 @@
 # Translations template for Trac.
-# Copyright (C) 2013 Edgewall Software
+# Copyright (C) 2014 Edgewall Software
 # This file is distributed under the same license as the Trac project.
-# FIRST AUTHOR , 2013.
+# FIRST AUTHOR , 2014.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Trac 1.0.1\n"
+"Project-Id-Version: Trac 1.0.2\n"
 "Report-Msgid-Bugs-To: trac-...@googlegroups.com\n"
-"POT-Creation-Date: 2013-01-27 11:21+0900\n"
+"POT-Creation-Date: 2014-09-01 12:43+\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -44,7 +44,7 @@ msgstr ""
 msgid "Create a copy of this ticket"
 msgstr ""
 
-#: tracopt/ticket/commit_updater.py:275
+#: tracopt/ticket/commit_updater.py:283
 msgid ""
 "Insert a changeset message into the output.\n"
 "\n"
@@ -59,12 +59,16 @@ msgid ""
 " - `revision`: the revision of the desired changeset"
 msgstr ""
 
+#: tracopt/ticket/commit_updater.py:313
+msgid "(The changeset message doesn't reference this ticket)"
+msgstr ""
+
 #: tracopt/ticket/deleter.py:73 tracopt/ticket/deleter.py:90
-#: trac/ticket/templates/report_list.html:82
+#: trac/ticket/templates/report_list.html:92
 msgid "Delete"
 msgstr ""
 
-#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:42
+#: tracopt/ticket/deleter.py:74 tracopt/ticket/templates/ticket_delete.html:51
 msgid "Delete ticket"
 msgstr ""
 
@@ -88,89 +92,112 @@ msgstr ""
 msgid "Comment %(num)s not found"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:11
+#: tracopt/ticket/templates/ticket_delete.html:21
 #, python-format
 msgid "Delete Ticket #%(id)s"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:12
-#: tracopt/ticket/templates/ticket_delete.html:48
+#: tracopt/ticket/templates/ticket_delete.html:22
+#: tracopt/ticket/templates/ticket_delete.html:58
 #, python-format
 msgid "Delete comment %(num)s on Ticket #%(id)s"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:20
+#: tracopt/ticket/templates/ticket_delete.html:30
 #, python-format
 msgid "Delete [1:Ticket #%(id)s]"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:32
+#: tracopt/ticket/templates/ticket_delete.html:42
 msgid "Are you sure you want to delete this ticket?"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:33
+#: tracopt/ticket/templates/ticket_delete.html:43
 #, python-format
 msgid ""
 "(comments: %(comments)s,\n"
 " attachments: %(attachments)s)"
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:36
-#: tracopt/ticket/templates/ticket_delete.html:61
-#: trac/templates/attachment.html:70 trac/wiki/templates/wiki_delete.html:95
+#: tracopt/ticket/templates/ticket_delete.html:46
+#: tracopt/ticket/templates/ticket_delete.html:71
+#: trac/templates/attachment.html:80 trac/wiki/templates/wiki_delete.html:105
 msgid "This is an irreversible operation."
 msgstr ""
 
-#: tracopt/ticket/templates/ticket_delete.html:41
-#: tracopt/ticket/templates/ticket_delete.html:65
-#: trac/admin/templates/admin_components.html:55
-#: trac/admin/templates/admin_enums.html:24
-#: trac/admin/templates/admin_milestones.html:74
-#: trac/admin/templates/admin_versions.html:50
-#: trac/templates/attachment.html:63 trac/templates/attachment.html:76
-#: trac/ticket/templates/milestone_delete.html:40
-#: trac/ticket/templates/milestone_edit.html:108
-#: trac/ticket/templates/report_delete.html:21
-#: trac/ticket/templates/report_edit.html:44
-#: trac/ticket/templates/ticket_change.html:118
-#: trac/versioncontrol/templates/admin_repositories.html:84
-#: trac/wiki/templates/wiki_delete.html:98
-#: trac/wiki/templates/wiki_edit_form.html:73
-#: trac/wiki/templates/wiki_rename.html:32
+#: tracopt/ticket/templates/ticket_delete.html:52
+#: tracopt/ticket/templates/ticket_delete.html:76
+#: trac/templates/attachment.html:73 trac/templates/attachment.html:87
+#: trac/ticket/templates/admin_components.html:64
+#: trac/ticket/templates/admin_enums.html:38
+#: trac/ticket/templates/admin_milestones.html:93
+#: trac/ticket/templates/admin_versions.html:61
+#: trac/ticket/templates/milestone_delete.html:45
+#: trac/ticket/templates/milestone_edit.html:128
+#: trac/ticket/templates/report_delete.html:32
+#: trac/ticket/templates/report_edit.html:62
+#: trac/ticket/templates/ticket_change.html:127
+#: trac/versioncontrol/templates/admin_repositories.html:98
+#: trac/wiki/templates/wiki_delete.html:112
+#: trac/wiki/templates/wi

svn commit: r1639823 [26/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracWorkflow
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracWorkflow?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracWorkflow
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracWorkflow
 Sat Nov 15 01:14:46 2014
@@ -1,7 +1,7 @@
 = The Trac Ticket Workflow System =
 [[TracGuideToc]]
 
-The Trac issue database provides a configurable workflow.
+The Trac ticket system provides a configurable workflow.
 
 == The Default Ticket Workflow ==
 === Environments upgraded from 0.10 ===
@@ -58,7 +58,7 @@ reopen.operations = del_resolution
 
 There are several example workflows provided in the Trac source tree; look in 
[trac:source:trunk/contrib/workflow contrib/workflow] for `.ini` config 
sections.  One of those may be a good match for what you want. They can be 
pasted into the `[ticket-workflow]` section of your `trac.ini` file. However if 
you have existing tickets then there may be issues if those tickets have states 
that are not in the new workflow. 
 
-Here are some [http://trac.edgewall.org/wiki/WorkFlow/Examples diagrams] of 
the above examples.
+Here are some [trac:WorkFlow/Examples diagrams] of the above examples.
 
 == Basic Ticket Workflow Customization ==
 
@@ -67,7 +67,7 @@ Note: Ticket "statuses" or "states" are 
 Create a `[ticket-workflow]` section in `trac.ini`.
 Within this section, each entry is an action that may be taken on a ticket. 
 For example, consider the `accept` action from `simple-workflow.ini`:
-{{{
+{{{#!ini
 accept = new,accepted -> accepted
 accept.permissions = TICKET_MODIFY
 accept.operations = set_owner_to_self
@@ -77,34 +77,34 @@ The `accept.permissions` line specifies 
 The `accept.operations` line specifies changes that will be made to the ticket 
in addition to the status change when this action is taken.  In this case, when 
a user clicks on `accept`, the ticket owner field is updated to the logged in 
user.  Multiple operations may be specified in a comma separated list.
 
 The available operations are:
- - del_owner -- Clear the owner field.
- - set_owner -- Sets the owner to the selected or entered owner.
-   - ''actionname''`.set_owner` may optionally be set to a comma delimited 
list or a single value.
- - set_owner_to_self -- Sets the owner to the logged in user.
- - del_resolution -- Clears the resolution field
- - set_resolution -- Sets the resolution to the selected value.
-   - ''actionname''`.set_resolution` may optionally be set to a comma 
delimited list or a single value. Example:
- {{{
+- **del_owner** -- Clear the owner field.
+- **set_owner** -- Sets the owner to the selected or entered owner. Defaults 
to the current user. When `[ticket] restrict_owner = true`, the select will be 
populated with users that have `TICKET_MODIFY` permission and an authenticated 
session.
+ - ''actionname''`.set_owner` may optionally be set to a comma delimited list 
of users that will be used to populate the select, or a single user.
+- **set_owner_to_self** -- Sets the owner to the logged in user.
+- **del_resolution** -- Clears the resolution field
+- **set_resolution** -- Sets the resolution to the selected value.
+ - ''actionname''`.set_resolution` may optionally be set to a comma delimited 
list or a single value. Example:
+ {{{#!ini
 resolve_new = new -> closed
 resolve_new.name = resolve
 resolve_new.operations = set_resolution
 resolve_new.permissions = TICKET_MODIFY
 resolve_new.set_resolution = invalid,wontfix
- }}}
- - leave_status -- Displays "leave as " and makes no change to 
the ticket.
+}}}
+- **leave_status** -- Displays "leave as " and makes no change 
to the ticket.
 '''Note:''' Specifying conflicting operations (such as `set_owner` and 
`del_owner`) has unspecified results.
 
-{{{
+In this example, we see the `.name` attribute used.  The action here is 
`resolve_accepted`, but it will be presented to the user as `resolve`.
+
+{{{#!ini
 resolve_accepted = accepted -> closed
 resolve_accepted.name = resolve
 resolve_accepted.permissions = TICKET_MODIFY
 resolve_accepted.operations = set_resolution
 }}}
 
-In this example, we see the `.name` attribute used.  The action here is 
`resolve_accepted`, but it will be presented to the user as `resolve`.
-
 For actions that should be available in all states, `*` may be used in place 
of the state.  The obvious example is the `leave` action:
-{{{
+{{{#!ini
 leave = * -> *
 leave.operations = leave_status
 leave.default = 1
@@ -114,24 +114,22 @@ If not specified for an action, `.defaul
 
 There are a couple of hard-coded constraints to the workflow.  In particular, 
tickets are created with status `new`, and tickets are expected to have a 
`closed` state.  Further, the d

svn commit: r1639823 [25/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracInstall
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracInstall?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracInstall
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/default-pages/TracInstall
 Sat Nov 15 01:14:46 2014
@@ -1,24 +1,30 @@
-= Trac Installation Guide for 1.0 = 
+{{{#!div style="margin-top: .5em; padding: 0 1em; background-color: #ffd; 
border:1px outset #ddc; text-align: center"
+
+ '''NOTE: the information in this page applies to Trac 1.0, the current 
version of Trac. \\
+ For installing previous Trac versions, please refer to 
[[wiki:0.12/TracInstall]] (for Trac 0.12)''' 
+}}}
+
+= Trac Installation Guide for 1.0
 [[TracGuideToc]]
 
 Trac is written in the Python programming language and needs a database, 
[http://sqlite.org/ SQLite], [http://www.postgresql.org/ PostgreSQL], or 
[http://mysql.com/ MySQL]. For HTML rendering, Trac uses the 
[http://genshi.edgewall.org Genshi] templating system.
 
-Since version 0.12, Trac can also be localized, and there's probably a 
translation available for your language. If you want to be able to use the Trac 
interface in other languages, then make sure you have installed the optional 
package [#OtherPythonPackages Babel]. Pay attention to the extra steps for 
localization support in the [#InstallingTrac Installing Trac] section below. 
Lacking Babel, you will only get the default english version, as usual.
+Since version 0.12, Trac can also be localized, and there's probably a 
translation available for your language. If you want to be able to use the Trac 
interface in other languages, then make sure you have installed the optional 
package [#OtherPythonPackages Babel]. Pay attention to the extra steps for 
localization support in the [#InstallingTrac Installing Trac] section below. 
Lacking Babel, you will only get the default English version, as usual.
 
-If you're interested in contributing new translations for other languages or 
enhance the existing translations, then please have a look at [[trac:TracL10N]].
+If you're interested in contributing new translations for other languages or 
enhance the existing translations, then please have a look at 
[trac:wiki:TracL10N TracL10N].
 
 What follows are generic instructions for installing and setting up Trac and 
its requirements. While you may find instructions for installing Trac on 
specific systems at [trac:TracInstallPlatforms TracInstallPlatforms] on the 
main Trac site, please be sure to '''first read through these general 
instructions''' to get a good understanding of the tasks involved.
 
 [[PageOutline(2-3,Installation Steps,inline)]]
 
-== Dependencies ==
+== Dependencies
 === Mandatory Dependencies
 To install Trac, the following software packages must be installed:
 
  * [http://www.python.org/ Python], version >= 2.5 and < 3.0
(note that we dropped the support for Python 2.4 in this release)
- * [http://peak.telecommunity.com/DevCenter/setuptools setuptools], version >= 
0.6, or better yet, [http://pypi.python.org/pypi/distribute distribute]
- * [http://genshi.edgewall.org/wiki/Download Genshi], version >= 0.6 
(unreleased version 0.7dev should work as well)
+ * [http://peak.telecommunity.com/DevCenter/setuptools setuptools], version >= 
0.6
+ * [http://genshi.edgewall.org/wiki/Download Genshi], version >= 0.6
 
 You also need a database system and the corresponding python bindings.
 The database can be either SQLite, PostgreSQL or MySQL.
@@ -27,10 +33,10 @@ The database can be either SQLite, Postg
 
 As you must be using Python 2.5, 2.6 or 2.7, you already have the SQLite 
database bindings bundled with the standard distribution of Python (the 
`sqlite3` module).
 
-However, if you'd like, you can download the latest and greatest version of 
[[trac:Pysqlite]] from 
+However, if you'd like, you can download the latest and greatest version of 
[[trac:PySqlite]] from 
 [http://code.google.com/p/pysqlite/downloads/list google code], where you'll 
find the Windows
 installers or the `tar.gz` archive for building from source: 
-{{{
+{{{#!sh
 $ tar xvfz .tar.gz 
 $ cd  
 $ python setup.py build_static install 
@@ -40,7 +46,7 @@ This will download the latest SQLite cod
 
 SQLite 2.x is no longer supported.
 
-A known bug PySqlite versions 2.5.2-4 prohibits upgrade of trac databases
+A known bug in PySqlite versions 2.5.2-4 prohibits upgrades of Trac databases
 from 0.11.x to 0.12. Please use versions 2.5.5 and newer or 2.5.1 and
 older. See #9434 for more detail.
 
@@ -50,7 +56,7 @@ See additional information in [trac:PySq
 
 You need to install the database and its Python bindings:
  * [http://www.postgresql.org/ PostgreSQL], version 8.0 or later
- * [http://pyp

svn commit: r1639823 [27/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/tests/macros.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/tests/macros.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/tests/macros.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/wiki/tests/macros.py 
Sat Nov 15 01:14:46 2014
@@ -1,15 +1,54 @@
 # -*- coding: utf-8 -*-
+#
+# Copyright (C) 2006-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+
+from StringIO import StringIO
 from datetime import datetime
+import os
+import shutil
+import tempfile
 import unittest
 
-from trac.config import Option
+from trac.config import Option, ListOption, IntOption, BoolOption
 from trac.test import locale_en
 from trac.util.datefmt import format_date, utc
 from trac.wiki.model import WikiPage
 from trac.wiki.tests import formatter
 
+
+def add_pages(tc, names):
+now = datetime.now(utc)
+for name in names:
+w = WikiPage(tc.env)
+w.name = name
+w.text = '--'
+w.save('joe', 'the page ' + name, '::1', now)
+
+
 # == [[Image]]
 
+def image_setup(tc):
+add_pages(tc, ['page:fr'])
+from trac.attachment import Attachment
+tc.env.path = tempfile.mkdtemp(prefix='trac-tempenv-')
+attachment = Attachment(tc.env, 'wiki', 'page:fr')
+attachment.description = "image in page:fr"
+attachment.insert('img.png', StringIO(''), 0, 2)
+
+def image_teardown(tc):
+shutil.rmtree(os.path.join(tc.env.path, 'files'))
+os.rmdir(tc.env.path)
+tc.env.reset_db()
+
 # Note: using `« test »` string in the following tests for checking
 #   unicode robustness and whitespace support (first space is
 #   normal ASCII SPACE, second is Unicode NO-BREAK SPACE).
@@ -91,13 +130,39 @@ IMAGE_MACRO_TEST_CASES = u"""
 --
 
 == Strip unicode white-spaces and ZWSPs (#10668)
-[[Image(  ​source:« test ».png  ​, nolink)]]
+[[Image(  ​source:« test ».png  ​, nolink, 100%  ​)]]
 --
 
-
+
 
 --
-
+
+--
+== Attachments on page with ':' characters (#10562)
+[[Image("page:fr":img.png​,nolink)]]
+--
+
+
+
+--
+
+--
+== htdocs: Image, nolink
+[[Image(htdocs:trac_logo.png, nolink)]]
+--
+
+
+
+--
+
+== shared: Image, nolink
+[[Image(shared:trac_logo.png, nolink)]]
+--
+
+
+
+--
+
 --
 """
 
@@ -110,14 +175,6 @@ IMAGE_MACRO_TEST_CASES = u"""
 
 # == [[TitleIndex]]
 
-def add_pages(tc, names):
-now = datetime.now(utc)
-for name in names:
-w = WikiPage(tc.env)
-w.name = name
-w.text = '--'
-w.save('joe', 'the page ' + name, '::1', now)
-
 def titleindex_teardown(tc):
 tc.env.reset_db()
 
@@ -391,8 +448,36 @@ TRACINI_MACRO_TEST_CASES = u"""\
 \
 [section-42]\
 \
-option1value\
-option2blahvalue\
+option1value\
+option2blahvalue\
+\
+
+
+--
+== TracIni, list option with sep=| (#11074)
+[[TracIni(section-list)]]
+--
+
+\
+[section-list]\
+\
+option14.2|42|42||0|enabled\
+\
+
+
+--
+== TracIni, option with "false" value as default
+[[TracIni(section-def)]]
+--
+
+\
+[section-def]\
+\
+option1(no 
default)\
+option2(no 
default)\
+option30\
+option4disabled\
+option5\
 \
 
 
@@ -404,6 +489,13 @@ def tracini_setup(tc):
 class Foo(object):
 option_a1 = (Option)('section-42', 'option1', 'value', doc='')
 option_a2 = (Option)('section-42', 'option2', 'value', doc='blah')
+option_l1 = (ListOption)('section-list', 'option1',
+ [4.2, '42', 42, None, 0, True], sep='|')
+option_d1 = (Option)('section-def', 'option1', None)
+option_d2 = (Option)('section-def', 'option2', '')
+option_d3 = (IntOption)('section-def', 'option3', 0)
+option_d4 = (BoolOption)('section-def', 'option4', False)
+option_d5 = (ListOption)('section-def', 'option5', [])
 
 def tracini_teardo

svn commit: r1639823 [4/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/ s

2014-11-14 Thread rjollos
Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/web_ui.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/web_ui.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/web_ui.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/admin/web_ui.py Sat 
Nov 15 01:14:46 2014
@@ -22,11 +22,6 @@ import pkg_resources
 import re
 import shutil
 
-try:
-from babel.core import Locale
-except ImportError:
-Locale = None
-
 from genshi import HTML
 from genshi.builder import tag
 
@@ -34,10 +29,10 @@ from trac.admin.api import IAdminPanelPr
 from trac.core import *
 from trac.loader import get_plugin_info, get_plugins_dir
 from trac.perm import PermissionSystem, IPermissionRequestor
-from trac.util.datefmt import all_timezones
+from trac.util.datefmt import all_timezones, pytz
 from trac.util.text import exception_to_unicode, \
-unicode_to_base64, unicode_from_base64
-from trac.util.translation import _, get_available_locales, ngettext
+   unicode_to_base64, unicode_from_base64
+from trac.util.translation import _, Locale, get_available_locales, ngettext
 from trac.web import HTTPNotFound, IRequestHandler
 from trac.web.chrome import add_notice, add_stylesheet, \
 add_warning, Chrome, INavigationContributor, \
@@ -76,8 +71,8 @@ class AdminModule(Component):
 # admin panel is available
 panels, providers = self._get_panels(req)
 if panels:
-yield 'mainnav', 'admin', tag.a(_('Admin'), href=req.href.admin(),
-title=_('Administration'))
+yield 'mainnav', 'admin', tag.a(_("Admin"), href=req.href.admin(),
+title=_("Administration"))
 
 # IRequestHandler methods
 
@@ -93,7 +88,7 @@ class AdminModule(Component):
 def process_request(self, req):
 panels, providers = self._get_panels(req)
 if not panels:
-raise HTTPNotFound(_('No administration panels available'))
+raise HTTPNotFound(_("No administration panels available"))
 
 def _panel_order(p1, p2):
 if p1[::2] == ('general', 'basics'):
@@ -116,14 +111,14 @@ class AdminModule(Component):
 path_info = req.args.get('path_info')
 if not panel_id:
 try:
-panel_id = filter(
-lambda panel: panel[0] == cat_id, panels)[0][2]
+panel_id = \
+filter(lambda panel: panel[0] == cat_id, panels)[0][2]
 except IndexError:
-raise HTTPNotFound(_('Unknown administration panel'))
+raise HTTPNotFound(_("Unknown administration panel"))
 
 provider = providers.get((cat_id, panel_id), None)
 if not provider:
-raise HTTPNotFound(_('Unknown administration panel'))
+raise HTTPNotFound(_("Unknown administration panel"))
 
 if hasattr(provider, 'render_admin_panel'):
 template, data = provider.render_admin_panel(req, cat_id, panel_id,
@@ -201,14 +196,14 @@ def _save_config(config, req, log, notic
 try:
 config.save()
 if notices is None:
-notices = [_('Your changes have been saved.')]
+notices = [_("Your changes have been saved.")]
 for notice in notices:
 add_notice(req, notice)
 except Exception, e:
-log.error('Error writing to trac.ini: %s', exception_to_unicode(e))
-add_warning(req, _('Error writing to trac.ini, make sure it is '
-   'writable by the web server. Your changes have '
-   'not been saved.'))
+log.error("Error writing to trac.ini: %s", exception_to_unicode(e))
+add_warning(req, _("Error writing to trac.ini, make sure it is "
+   "writable by the web server. Your changes have "
+   "not been saved."))
 
 
 class BasicsAdminPanel(Component):
@@ -218,19 +213,19 @@ class BasicsAdminPanel(Component):
 # IAdminPanelProvider methods
 
 def get_admin_panels(self, req):
-if 'TRAC_ADMIN' in req.perm:
-yield ('general', _('General'), 'basics', _('Basic Settings'))
+if 'TRAC_ADMIN' in req.perm('admin', 'general/basics'):
+yield ('general', _("General"), 'basics', _("Basic Settings"))
 
 def render_admin_panel(self, req, cat, page, path_info):
-req.perm.require('TRAC_ADMIN')
-
 if Locale:
-locales = [Locale.parse(locale)
-   for locale in  get_available_locales()]
-languages = sorted((str(locale), locale.display_name)
-   for locale in locales)
+local

svn commit: r1639823 [19/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/query.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/query.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/query.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/ticket/tests/query.py 
Sat Nov 15 01:14:46 2014
@@ -1,9 +1,24 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2004-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+
 from trac.test import Mock, EnvironmentStub, MockPerm, locale_en
+from trac.ticket.model import Ticket
 from trac.ticket.query import Query, QueryModule, TicketQueryMacro
 from trac.util.datefmt import utc
 from trac.web.chrome import web_context
 from trac.web.href import Href
 from trac.wiki.formatter import LinkFormatter
+from trac.wiki.tests import formatter
 
 import unittest
 import difflib
@@ -257,12 +272,14 @@ ORDER BY COALESCE(t.id,0)=0,t.id""" % {'
 sql, args = query.get_sql()
 foo = self.env.get_read_db().quote('foo')
 self.assertEqualSQL(sql,
-"""SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,priority.value AS priority_value,%s.value AS 
%s
-FROM ticket AS t
-  LEFT OUTER JOIN ticket_custom AS %s ON (id=%s.ticket AND %s.name='foo')
+"""SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,priority.value AS priority_value,t.%s AS %s
+FROM (
+  SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,
+  (SELECT c.value FROM ticket_custom c WHERE c.ticket=t.id AND c.name='foo') 
AS %s
+  FROM ticket AS t) AS t
   LEFT OUTER JOIN enum AS priority ON (priority.type='priority' AND 
priority.name=priority)
-WHERE ((COALESCE(%s.value,'')=%%s))
-ORDER BY COALESCE(t.id,0)=0,t.id""" % ((foo,) * 6))
+WHERE ((COALESCE(t.%s,'')=%%s))
+ORDER BY COALESCE(t.id,0)=0,t.id""" % ((foo,) * 4))
 self.assertEqual(['something'], args)
 tickets = query.execute(self.req)
 
@@ -272,15 +289,77 @@ ORDER BY COALESCE(t.id,0)=0,t.id""" % ((
 sql, args = query.get_sql()
 foo = self.env.get_read_db().quote('foo')
 self.assertEqualSQL(sql,
-"""SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,priority.value AS priority_value,%s.value AS 
%s
-FROM ticket AS t
-  LEFT OUTER JOIN ticket_custom AS %s ON (id=%s.ticket AND %s.name='foo')
+"""SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,priority.value AS priority_value,t.%s AS %s
+FROM (
+  SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,
+  (SELECT c.value FROM ticket_custom c WHERE c.ticket=t.id AND c.name='foo') 
AS %s
+  FROM ticket AS t) AS t
   LEFT OUTER JOIN enum AS priority ON (priority.type='priority' AND 
priority.name=priority)
-ORDER BY COALESCE(%s.value,'')='',%s.value,COALESCE(t.id,0)=0,t.id""" %
-((foo,) * 7))
+ORDER BY COALESCE(t.%s,'')='',t.%s,COALESCE(t.id,0)=0,t.id""" %
+((foo,) * 5))
 self.assertEqual([], args)
 tickets = query.execute(self.req)
 
+def test_constrained_by_id_ranges(self):
+query = Query.from_string(self.env, 'id=42,44,51-55&order=id')
+sql, args = query.get_sql()
+self.assertEqualSQL(sql,
+"""SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS 
type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time 
AS time,t.changetime AS changetime,priority.value AS priority_value
+FROM ticket AS t
+  LEFT OUTER JOIN enum AS priority ON (priority.type='priority' AND 
priority.name=priority)
+WHERE ((t.id BETWEEN %s AND %s OR t.id IN (42,44)))
+ORDER BY COALESCE(t.id,0)=0,t.id""")
+self.assertEqual([51, 55], args)
+
+def test_constrained_by_id_and_custom_field(self):
+self.env.config.set

svn commit: r1639823 [20/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db15.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db15.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db15.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db15.py Sat 
Nov 15 01:14:46 2014
@@ -1,3 +1,16 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2005-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
+
 from trac.db import Table, Column, Index, DatabaseManager
 
 def do_upgrade(env, ver, cursor):

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db16.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db16.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db16.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db16.py Sat 
Nov 15 01:14:46 2014
@@ -1,3 +1,16 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2005-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
+
 from trac.db import Table, Column, Index
 
 def do_upgrade(env, ver, cursor):

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db17.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db17.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db17.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db17.py Sat 
Nov 15 01:14:46 2014
@@ -1,3 +1,16 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2006-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
+
 from trac.db import Table, Column, Index, DatabaseManager
 
 def do_upgrade(env, ver, cursor):

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db18.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db18.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db18.py 
(original)
+++ bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db18.py Sat 
Nov 15 01:14:46 2014
@@ -1,3 +1,16 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2006-2013 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.com/license.html.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/.
+
 from trac.db import Table, Column, Index, DatabaseManager
 
 def do_upgrade(env, ver, cursor):
@@ -61,4 +74,3 @@ def do_upgrade(env, ver, cursor):
 
 cursor.execute("DROP TABLE session_old")
 cursor.execute("DROP TABLE ticket_change_old")
-

Modified: bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db19.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db19.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- bloodhound/branches/trac-1.0.2-integration/trac/trac/upgrades/db19.py 
(original)
+++ bloodhound/branches/trac

svn commit: r1639823 [14/29] - in /bloodhound/branches/trac-1.0.2-integration/trac: ./ contrib/ contrib/cgi-bin/ contrib/workflow/ doc/ doc/dev/ doc/utils/ sample-plugins/ sample-plugins/permissions/

2014-11-14 Thread rjollos
Modified: 
bloodhound/branches/trac-1.0.2-integration/trac/trac/tests/functional/better_twill.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/trac-1.0.2-integration/trac/trac/tests/functional/better_twill.py?rev=1639823&r1=1639822&r2=1639823&view=diff
==
--- 
bloodhound/branches/trac-1.0.2-integration/trac/trac/tests/functional/better_twill.py
 (original)
+++ 
bloodhound/branches/trac-1.0.2-integration/trac/trac/tests/functional/better_twill.py
 Sat Nov 15 01:14:46 2014
@@ -1,12 +1,26 @@
-#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2008-2014 Edgewall Software
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+
 """better_twill is a small wrapper around twill to set some sane defaults and
 monkey-patch some better versions of some of twill's methods.
 It also handles twill's absense.
 """
 
 import os
-from os.path import abspath, dirname, join
 import sys
+import urllib
+import urlparse
+from os.path import abspath, dirname, join
 from pkg_resources import parse_version as pv
 try:
 from cStringIO import StringIO
@@ -36,9 +50,9 @@ except ImportError:
 
 if twill:
 # We want Trac to generate valid html, and therefore want to test against
-# the html as generated by Trac.  "tidy" tries to clean up broken html, and
-# is responsible for one difficult to track down testcase failure (for
-# #5497).  Therefore we turn it off here.
+# the html as generated by Trac.  "tidy" tries to clean up broken html,
+# and is responsible for one difficult to track down testcase failure
+# (for #5497).  Therefore we turn it off here.
 twill.commands.config('use_tidy', '0')
 
 # We use a transparent proxy to access the global browser object through
@@ -90,9 +104,9 @@ if twill:
 context = data.splitlines()[max(0, entry.line - 5):
 entry.line + 6]
 msg.append("\n# %s\n# URL: %s\n# Line %d, column %d\n\n%s\n"
-% (entry.message, entry.filename,
-   entry.line, entry.column,
-   "\n".join([each.decode('utf-8') for each in context])))
+   % (entry.message, entry.filename, entry.line,
+  entry.column, "\n".join([each.decode('utf-8')
+   for each in context])))
 return "\n".join(msg).encode('ascii', 'xmlcharrefreplace')
 
 def _validate_xhtml(func_name, *args, **kwargs):
@@ -120,6 +134,8 @@ if twill:
 """Write the current html to a file.  Name the file based on the
 current testcase.
 """
+import unittest
+
 frame = sys._getframe()
 while frame:
 if frame.f_code.co_name in ('runTest', 'setUp', 'tearDown'):
@@ -127,19 +143,26 @@ if twill:
 testname = testcase.__class__.__name__
 tracdir = testcase._testenv.tracdir
 break
+elif isinstance(frame.f_locals.get('self'), unittest.TestCase):
+testcase = frame.f_locals['self']
+testname = '%s.%s' % (testcase.__class__.__name__,
+  testcase._testMethodName)
+tracdir = testcase._testenv.tracdir
+break
 frame = frame.f_back
 else:
 # We didn't find a testcase in the stack, so we have no clue what's
 # going on.
 raise Exception("No testcase was found on the stack.  This was "
-"really not expected, and I don't know how to handle it.")
+"really not expected, and I don't know how to "
+"handle it.")
 
 filename = os.path.join(tracdir, 'log', "%s.html" % testname)
 html_file = open(filename, 'w')
 html_file.write(b.get_html())
 html_file.close()
 
-return filename
+return urlparse.urljoin('file:', urllib.pathname2url(filename))
 
 # Twill isn't as helpful with errors as I'd like it to be, so we replace
 # the formvalue function.  This would be better done as a patch to Twill.
@@ -149,8 +172,8 @@ if twill:
 except (twill.errors.TwillAssertionError,
 twill.utils.ClientForm.ItemNotFoundError), e:
 filename = twill_write_html()
-args = e.args + (filename,)
-raise twill.errors.TwillAssertionError(*args)
+raise twill.errors.TwillAssertionError('%s at %s' %
+