{23} Trac comments (3729 matches)

Results (3001 - 3100 of 3729)

Ticket Posixtime Author Newvalue
#475 1282662794000000 rgrp Referencing ticket #472 has changed sprint.
#474 1294916760000000 dread Questions are out of date now
#470 1282662774000000 rgrp Referencing ticket #467 has changed sprint.
#470 1292587187000000 dread apikey_header_name was set to X-CKAN-API-Key some time ago I believe.
#469 1282662778000000 rgrp Referencing ticket #471 has changed sprint.
#468 1282662774000000 rgrp Referencing ticket #467 has changed sprint.
#467 1294411656000000 thejimmyg Duplicate of #467
#467 1294411681000000 thejimmyg Sorry, that should have been #466.
#466 1282723866000000 dread As mentioned yesterday, I'm not convinced this is the best way to achieve the actual requirement, which is to access the API securely, and we should discuss this further.
#466 1282921608000000 dread We've agreed that we need another header for this, although it's not clear that it needs to be configurable. We could just accept Authorization OR the new one.
#466 1294411633000000 thejimmyg What was the original requirement? What's wrong with the current HTTP header name? Can we not mark this as wontfix for now and re-open if needed?
#466 1294835610000000 dread Agreed
#465 1282724701000000 dread This was an idea, to be able to monitor users overloading. It may not be required though.
#465 1294411534000000 thejimmyg Let's reopen this ticket if it comes up again. For now not an issue. Maybe also related to caching tickets #840 #841 #856 #668 #543 #540 #537.
#464 1282325194000000 johnbywater Duplicates #458.
#463 1282306480000000 dread Could be related to this shortly afterwards at 22:32: {{{ Mail Contacts Tasks Compose mail Inbox (11364) Starred Sent Mail Drafts (10) alert (5090) bts (383) Notes okfn (134) okfn-lists (26) osm (462) 8 more▼ David Read Google Docs Invite a friend >< About these ads UK Ruby on Rails £10/m - www.1stEasy.com/ruby-on-rails - 1) Phusion Passenger LAMP stack. 2) Great support. 3) Try us free :) « Back to InboxArchiveReport spamDeleteMove to Labels More actions ‹ Newer 29 of 19141 Older › WebApp Error: <class 'genshi.template.eval.UndefinedError'>: None has no member named "id" Inbox X Reply [email protected] to ckan-sysadmin show details 22:32 (14 hours ago) URL: http://ckan.net/revision/diff/dbtune-audioscrobbler?diff=a99c98be-767a-4e49-9025-2472b2d18b9c&oldid=66a47b9e-232a-4838-8674-66fa1a5c76e1), Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug("Calling controller class with WSGI interface") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:73 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.revision:123 in diff << c.diff.sort() c.pkg = pkg return render('revision/diff.html') def _has_purge_permissions(self): >> return render('revision/diff.html') Module ckan.lib.base:38 in render << return literal(stream.render(method=method, encoding=None)) return render_template() #return cached_template(template_name, render_template, cache_key=cache_key, # cache_type=cache_type, cache_expire=cache_expire, >> return render_template() Module ckan.lib.base:36 in render_template << stream = _filter(stream) return literal(stream.render(method=method, encoding=None)) return render_template() >> return literal(stream.render(method=method, encoding=None)) Module genshi.core:183 in render << method = self.serializer or 'xml' generator = self.serialize(method=method, **kwargs) return encode(generator, method=method, encoding=encoding, out=out) def select(self, path, namespaces=None, variables=None): >> return encode(generator, method=method, encoding=encoding, out=out) Module genshi.output:57 in encode << _encode = lambda string: string if out is None: return _encode(''.join(list(iterator))) for chunk in iterator: out.write(_encode(chunk)) >> return _encode(''.join(list(iterator))) Module genshi.output:339 in __call__ << for filter_ in self.filters: stream = filter_(stream) for kind, data, pos in stream: cached = cache_get((kind, data)) if cached is not None: >> for kind, data, pos in stream: Module genshi.output:670 in __call__ << _gen_prefix = _gen_prefix().next for kind, data, pos in stream: output = cache_get((kind, data)) if output is not None: >> for kind, data, pos in stream: Module genshi.output:771 in __call__ << push_text = textbuf.append pop_text = textbuf.pop for kind, data, pos in chain(stream, [(None, None, None)]): if kind is TEXT: >> for kind, data, pos in chain(stream, [(None, None, None)]): Module genshi.output:586 in __call__ << def __call__(self, stream): prev = (None, None, None) for ev in stream: if prev[0] is START: if ev[0] is END: >> for ev in stream: Module genshi.core:288 in _ensure << # unchanged yield event for event in stream: yield event >> for event in stream: Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:605 in _include << from genshi.template.loader import TemplateNotFound for event in stream: if event[0] is INCLUDE: href, cls, fallback = event[1] >> for event in stream: Module genshi.template.markup:378 in _match << for event in self._match(self._flatten(template, ctxt, **vars), ctxt, start=idx + 1, **vars): yield event >> ctxt, start=idx + 1, **vars): Module genshi.template.markup:327 in _match << break for event in stream: # We (currently) only care about start and end events for matching >> for event in stream: Module genshi.template.base:565 in _flatten << elif kind is EXPR: result = _eval_expr(data, ctxt, vars) if result is not None: # First check for a string, otherwise the iterable test >> result = _eval_expr(data, ctxt, vars) Module genshi.template.base:277 in _eval_expr << if vars: ctxt.push(vars) retval = expr.evaluate(ctxt) if vars: ctxt.pop() >> retval = expr.evaluate(ctxt) Module genshi.template.eval:178 in evaluate << __traceback_hide__ = 'before_and_this' _globals = self._globals(data) return eval(self.code, _globals, {'__data__': data}) >> return eval(self.code, _globals, {'__data__': data}) Module ?:11 in <Expression u'c.revision_from.id'> << <p> From: ${c.revision_from.id} - ${c.revision_from.timestamp} </p> >> From: ${c.revision_from.id} - ${c.revision_from.timestamp} Module genshi.template.eval:324 in lookup_attr << val = obj[key] except (KeyError, TypeError): val = cls.undefined(key, owner=obj) return val >> val = cls.undefined(key, owner=obj) Module genshi.template.eval:410 in undefined << """Raise an ``UndefinedError`` immediately.""" __traceback_hide__ = True raise UndefinedError(key, owner=owner) >> raise UndefinedError(key, owner=owner) UndefinedError: None has no member named "id" CGI Variables DOCUMENT_ROOT '/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*' HTTP_ACCEPT_ENCODING 'gzip, deflate' HTTP_ACCEPT_LANGUAGE 'en-us' HTTP_CONNECTION 'TE, close' HTTP_HOST 'ckan.net' HTTP_TE 'deflate,gzip;q=0.3' HTTP_UA_CPU 'x86' HTTP_USER_AGENT 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8)' PATH '/usr/local/bin:/usr/bin:/bin' PATH_INFO '/revision/diff/dbtune-audioscrobbler' PATH_TRANSLATED '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py/revision/diff/dbtune-audioscrobbler' QUERY_STRING 'diff=a99c98be-767a-4e49-9025-2472b2d18b9c&oldid=66a47b9e-232a-4838-8674-66fa1a5c76e1),' REMOTE_ADDR '' REMOTE_PORT '39586' REQUEST_METHOD 'GET' REQUEST_URI '/revision/diff/dbtune-audioscrobbler?diff=a99c98be-767a-4e49-9025-2472b2d18b9c&oldid=66a47b9e-232a-4838-8674-66fa1a5c76e1),' SCRIPT_FILENAME '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py' SCRIPT_URI 'http://ckan.net/revision/diff/dbtune-audioscrobbler' SCRIPT_URL '/revision/diff/dbtune-audioscrobbler' SERVER_ADDR '' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.net' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '<address>Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2 Server at ckan.net Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0xaa5f14c> beaker.cache <beaker.cache.CacheManager object at 0xaa5f16c> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0xaa5f0ec>> beaker.session {'_accessed_time': 1282253553.63995, '_creation_time': 1282253553.63995} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.listener_host '' mod_wsgi.listener_port '80' mod_wsgi.process_group '' mod_wsgi.reload_mechanism '0' mod_wsgi.script_reloading '1' mod_wsgi.version (2, 5) paste.cookies (<SimpleCookie: >, '') paste.parsed_querystring ([('diff', 'a99c98be-767a-4e49-9025-2472b2d18b9c'), ('oldid', '66a47b9e-232a-4838-8674-66fa1a5c76e1),')], 'diff=a99c98be-767a-4e49-9025-2472b2d18b9c&oldid=66a47b9e-232a-4838-8674-66fa1a5c76e1),') paste.registry <paste.registry.Registry object at 0x11f9d8cc> paste.throw_errors True pylons.action_method <bound method RevisionController.diff of <ckan.controllers.revision.RevisionController object at 0x1200454c>> pylons.controller <ckan.controllers.revision.RevisionController object at 0x1200454c> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x11fb464c> pylons.routes_dict {'action': u'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'} repoze.who.logger <logging.Logger instance at 0xab7168c> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 179181772>, 'auth_tkt': <AuthTktCookiePlugin 179770188>} routes.route <routes.route.Route object at 0xaa42fac> routes.url <routes.util.URLGenerator object at 0x11f9d42c> webob._parsed_query_vars (GET([('diff', 'a99c98be-767a-4e49-9025-2472b2d18b9c'), ('oldid', '66a47b9e-232a-4838-8674-66fa1a5c76e1),')]), 'diff=a99c98be-767a-4e49-9025-2472b2d18b9c&oldid=66a47b9e-232a-4838-8674-66fa1a5c76e1),') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x11c20698> wsgiorg.routing_args (<routes.util.URLGenerator object at 0x11f9d42c>, {'action': u'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'}) }}}
#463 1294916148000000 dread Haven't seen this for ages.
#462 1285757238000000 dread Available at http://data.gov.uk/data/dumps
#461 1282662564000000 rgrp Referencing ticket #454 has changed sprint.
#460 1282330016000000 [email protected] Note, I'm not a sysadmin but I ''can'' see the Status dropdown for this package, with values "active" and "deleted". Not knowing much about the permission system, I was assuming that's because I created the package. I am however certain that I did not modify (or even notice) this dropdown in the mysterious edit that led to the state change from "active" to "None".
#460 1285443859000000 [email protected] I believe the initial report is incorrect. It states that the status was changed from "active" to "deleted". I believe that it was actually changed from "active" to "None". This might indicate a bug in the code: The value of the status field is lost.
#460 1285489964000000 rgrp To add to this ticket I note that package 'owners' are entitled to see State not just system sysadmins (this allows owners to delete packages).
#460 1311176868000000 thejimmyg This is most likely fixed in the new logic layer refactor but is more than 6 months old anyway so closing in line with our new ticketing policy.
#459 1282921783000000 dread I've now fixed this. default: 1.1 metastable: 1.1 stable: 1.1 / 1.0.2 (two heads) ultrastable: 1.0.2
#458 1294415537000000 thejimmyg N/a anymore.
#455 1291637172000000 rgrp Closing as invalid as not clear what task is and now almost certainly out of date.
#454 1286376044000000 dread Done
#453 1294411369000000 thejimmyg This isn't really something that should be a CKAN ticket. It is more an ongoing thing.
#452 1287997540000000 dread John did this a while ago.
#451 1288038146000000 johnbywater Moved from sprint 1.3.0
#451 1292587233000000 dread Duplicate of #742
#449 1294411301000000 thejimmyg Will, if this is something you are interested in do you want to kick it off. Otherwise maybe close the ticket?
#449 1311182945000000 thejimmyg This ticket is now more than 6 months old so marking as invalid in line with our ticketing policy.
#448 1286386256000000 dread Has this all been finished yet?
#448 1294417061000000 thejimmyg We do this on an ongoing basis. I don't think we need a ticket for it too.
#447 1294410666000000 thejimmyg Hi Richard, could you take a look at this please? It is probably invalid now, in which case feel free to close it. Many thanks, James
#447 1294410738000000 memespring Have you got a link or screengrab?
#446 1282423615000000 johnbywater I think "an admin writes to the CKAN API" is a mishearing.
#446 1294414077000000 thejimmyg I don't understand this ticket. Since no-one has contributed to this ticket in 5 months I'm closing it.
#445 1282662530000000 rgrp Referencing ticket #477 has changed sprint.
#444 1294414008000000 thejimmyg Merging with #691
#443 1282662560000000 rgrp Referencing ticket #457 has changed sprint.
#443 1282735925000000 dread Now produces daily dump in ~/dumps. Was running as root, not user. Previously it was updating ONS data but not dump because of path issues of being root. Serving files using Apache file index. Added docs for database dumping. Cost: 2h
#442 1294414214000000 thejimmyg Is this still important? Do we need to set aside some time for it? Thanks.
#442 1294661028000000 dread I'll close this now. Only thing to note is the importer code pudo wrote in ckanclient that could usefully be merged with the ckanext importer code.
#441 1282724509000000 dread Comment from pudo: Apache version is documented here: http://knowledgeforge.net/okfn/tasks/ticket/466
#441 1282724585000000 anonymous Comment from pudo: CKAN should have a read-only maintenance mode with a nice little banner on all pages, appropriate REST messages etc. Bonus points if this is triggered via an environment variable and thus can be triggered by the surrounding apache.
#441 1292586309000000 dread No need for requirements. Story tickets exist: #763 & #765
#440 1294417436000000 thejimmyg Merging with #371. We'll do this as part of the move to the new DGU servers.
#439 1294413903000000 thejimmyg These have been agreed and are awaiting signoff.
#438 1294414132000000 thejimmyg Any idea what this ticket means? Should we mark as invalid and close? Thanks.
#438 1294661079000000 dread This was to ensure it didn't parse ONS data on the CKAN server, which is complete.
#437 1288004009000000 dread This was fixed a while ago
#436 1288003983000000 dread Not seen since.
#435 1298284084000000 thejimmyg Haven't seen this myself and it is 6 months old now.
#434 1283189807000000 rgrp Looking at stack trac clear this was an issue with genshi/babel and i18n. Net search led to http://trac.edgewall.org/ticket/9171 which confirmed this. Fact that error was on every page when logged in suggested this was a string in template showing up on log in. Quick search confirmed suspicion ('You are logged in as' string) and fix in http://bitbucket.org/bboissin/ckan-i18n/changeset/8e0c25102cc0
#433 1282081297000000 wwaites So one more modification, the datapkg_sources argument is no longer a dictionary but a string, similar to the metadata.txt but with the name as the section heading rather than [DEFAULT] so as to be able to support more than one download. As of now, this works:: {{{ This class treats an installed python package as a data index. For instructions on creating such a package, what needs to go in its setup.py and such, see :func:`datapkg.pypkgtools.datapkg_sources`. Here we are concerned with how to use such a package. An example of one such package can be installed like so:: % pip install hg+http://bitbucket.org/ww/ukgov_treasury_cra Once installed, datapkg can be used to inspect it and install parts wherever desired:: % datapkg list egg://ukgov_treasury_cra cra2009 -- Country and Regional Analysis 2009 % datapkg install egg://ukgov_treasury_cra/cra2009 file:///tmp [...] % ls -l /tmp/cra2009/ total 11112 -rw-r--r-- 1 ww wheel 5681852 May 12 15:48 cra_2009_db.csv -rw-r--r-- 1 ww wheel 292 Aug 17 22:37 metadata.txt }}} Of course the related python code and machinery hasn't been ported over to that package yet, but that's quite another matter.
#433 1283183548000000 wwaites changed datapkg_sources to datapkg_index and updated to work with the new changes to how the downloader works.
#432 1282065261000000 dread Fixed in cset:5adbb79d33a2
#432 1282552819000000 dread Looks like the line with the 'location' header went in in this changeset: changeset: 1207:0525981e3b78 user: johnbywater date: Wed Jun 02 12:22:11 2010 +0100 summary: Added support for using package ID as a package reference in all operations of the API.
#430 1298283075000000 thejimmyg We are doing other refactoring that is more important than this such as: * Plugin APIs to enable extensions * Form refactroing This ticket is 6 months old so closing.
#429 1285757274000000 dread Will Waites fixed this a couple of weeks ago
#428 1285757316000000 dread This was achieved a couple of weeks ago
#427 1281606707000000 johnbywater Referencing ticket #422 has changed sprint.
#427 1283165089000000 dread Posting a new package is done. Just licenses to explain.
#427 1287997311000000 dread To cover in the README: * Deployment of the service - DONE * Adding a licence * Adding a licence group CKAN docs requires: * Example of pointing CKAN to a licence service URI, local file. * Explanation of which licences are in CKAN by default (if you don't point it to a URI).
#427 1289822093000000 dread Referencing ticket #412 has changed sprint.
#427 1294407533000000 thejimmyg We may need an updated form of the license service to support UKLP.
#427 1297686183000000 thejimmyg Documentation of the licenses service was handled in #973. Changing this ticket to be about matching the license service in UKLII.
#427 1299164063000000 thejimmyg This is done in the latest release to test.
#426 1281606707000000 johnbywater Referencing ticket #422 has changed sprint.
#426 1282667892000000 dread Referencing ticket #422 has changed sprint.
#426 1282925305000000 dread No responses unfortunately - maybe they are fine!
#424 1281606707000000 johnbywater Referencing ticket #422 has changed sprint.
#424 1282919429000000 dread Done in: https://trac.dataco.coi.gov.uk/projects/datagov/ticket/496#comment:2
#423 1282812768000000 dread Examples for creating packages with curl are now in the API docs.
#422 1283165156000000 dread Closed by mistake - task remains.
#422 1292586586000000 dread Ticket remaining is #427. No need for this story ticket now.
#421 1282909772000000 dread Done
#418 1291637919000000 rgrp Not clear what ticket entails and think this has happened (should be on dgu in any case).
#415 1288003954000000 dread rdf now available at semantic.ckan.net courtesy of ww
#414 1282661799000000 rgrp Referencing ticket #481 has changed sprint.
#414 1288003770000000 dread Catalogue API went live with caching a couple of weeks ago
#413 1282661798000000 rgrp Referencing ticket #481 has changed sprint.
#413 1294407429000000 thejimmyg There is no caching in the current DGU CKAN code.
#413 1294407458000000 thejimmyg (or rather all caching is disabled). If we re-enable it we'll want to test its behaviour.
#411 1287393033000000 pudo Now using squid in production on eu6; will only need one cache at a time.
#410 1281619720000000 pudo Done in http://bitbucket.org/pudo/ckandisqus/changeset/be90fd4d386c
#409 1297074067000000 rgrp Done item (2) http://packages.python.org/datapkg/extending.html#commands and Command class is already pluggable.
#408 1281609572000000 pudo * Plugin for this is located at: http://bitbucket.org/pudo/ckanextdeliverance * Usage is documented in HOWTO.txt (http://bitbucket.org/pudo/ckanextdeliverance/src/tip/HOWTO.txt) * Changes to CKAN were in: cset: 1422
#407 1281506792000000 [email protected] Need to agree who is doing this. ATM Julian is on holiday and Richard is focussed on visualisation. Will pick up after holidays - hope this is ok.
#407 1291149724000000 anonymous Related bug on ScraperWiki tracker: https://bitbucket.org/ScraperWiki/scraperwiki/issue/42/finish-ckan-integration
#407 1330769956000000 rgrp Long out of date ...
#406 1291139434000000 rgrp Renaming done as part of v0.7 (cset:0ea44c864153/datapkg) but pluggability for downloaders is currently disabled (half-implemented and then decided to hold back pending further thoughts).
#406 1296467427000000 pudo Has existed for a while, not implementing any more except for what is in #852.
#405 1296467471000000 pudo Rufus, you mentioned this could be done very quickly - could you have a look?
#405 1297211204000000 rgrp By mime-type and all resources done in cset:7bd693614c80 and previous (with other improvements to download system).
#405 1297214793000000 rgrp Completed in cset:a7df5071f200
#405 1297214833000000 rgrp (That is did the interactive version)
#404 1294415587000000 thejimmyg Duplicate of #896
Note: See TracReports for help on using and creating reports.