{23} Trac comments (3729 matches)

Results (1201 - 1300 of 3729)

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Ticket Posixtime Author Newvalue
#1453 1321548452000000 icmurray The allowable characters in a tagname has changed to "unicode alphanmeric plus simple punctuation". This means: - alphanumeric (inc. foreign characters) - [ .-_] The completed feature is in the [https://github.com/okfn/ckan/tree/feature-1453-flexible-tag-names feature-1453-flexible-tag-names branch]. Awaiting a code review.
#1453 1321965613000000 icmurray Updated code now in feature-1453-flexible-tag-names branch. (Also, deleted the ian-review branch.)
#1458 1340632821000000 icmurray Re-assigned to amercader. Kept on ckan-future.
#1458 1340632932000000 icmurray Sorry, I shouldn't have touched this. I pulled it from the wrong milestone.
#1485 1323172388000000 icmurray Made a small start on this: https://github.com/okfn/ckan/tree/feature-1485-package-form-extension
#1523 1323172904000000 icmurray Erroneously created when a file upload failed.
#1586 1337079419000000 icmurray Duplicate of #2298
#1593 1333385052000000 icmurray Implemented in branch [https://github.com/okfn/ckan/commits/feature-1593-create-feeds-from-search-results feature-1593-create-feeds-from-search-results] Not quite close as I've only included links to the atom feed in the <head>. Will do that this week.
#1712 1328526163000000 icmurray Update 6/2/2012 : Awaiting the publisher hierarchy in order to populate the "browse by publisher" section.
#1718 1340632748000000 icmurray Re-assigned to aron for triage.
#1737 1334591246000000 icmurray See http://ckan.okfnpad.org/feature-1737-expose-solr-based-search-api = Immediate actions * analysis of whether the current action/get.py:package_search() function exposes all we currently need for the use cases described above. * how to return that data (expand the current format?) * analysis of whether the current (action) API v.3 can use query parameters rather than as well as POSTed data. (controlles/api.py:action() ) uses "self._get_request_data()" which in-turn pulls out data from POST body. = Tasks Extend the existing package_search action. * pass the facet fields into the logic layer from the request parameters. - /api/3/action/package_search * facet information not being returned via package_search action (is empty). - curl -X POST -d '{"q": "{!lucene q.op=AND df=text}tags:health +community -profile"}' 'http://thedatahub.org/api/3/action/package_search' - figure out why it's not working, and what the facet information should look like * whitelist any GETable api actions, and optionally construct the query from url params rather than body
#1737 1335460683000000 icmurray Facet results **are** already available through the package_search action api. The facet fields need to be specified in the query, otherwise no faceting will be done (ie - the default facets specified in the .ini file are not used). This leaves "whitelist any GETable api actions, and optionally construct the query from url params rather than body" todo, which I've pulled out into another ticket, as it wasn't originally in this ticket. (#2330)
#1737 1335460997000000 icmurray ... just to add to the above: {{{ >>> pprint(json.loads(requests.post('http://127.0.0.1:8088/api/3/action/package_search', json.dumps({'facet.field': ["tags", "groups"]})).content)) <snip> u'search_facets': {u'groups': {u'items': [{u'count': 1, u'display_name': u"Roger's books", u'name': u'roger'}, {u'count': 2, u'display_name': u"Dave's books", u'name': u'david'}], u'title': u'groups'}, u'tags': {u'items': [{u'count': 1, u'display_name': u'tolstoy', u'name': u'tolstoy'}, {u'count': 2, u'display_name': u'russian', u'name': u'russian'}, {u'count': 2, u'display_name': u'Flexible \u30a1', u'name': u'Flexible \u30a1'}], u'title': u'tags'}}}, u'success': True} }}}
#1737 1337594352000000 icmurray - package_search action is now documented, with reference to the solr search parameters available. http://docs.ckan.org/en/latest/apiv3.html (auto-docs not working on rtd at the moment). - actions defined in get.py are now GETable. http://docs.ckan.org/en/latest/apiv3.html#get-able-actions - we won't be providing direct access to solr api, as we think the cost outweighs the benefit.
#1737 1337943671000000 icmurray For completeness, package_search docs can be viewed at https://github.com/okfn/ckan/blob/master/ckan/logic/action/get.py#L983 @rgrp: are you happy with this ticket now, does it expose all you need? If so, I'll close it...
#1737 1340011001000000 icmurray The GET-able actions ( #2330 ) are in master, and will make it into 1.8
#1737 1340015695000000 icmurray Replying to [comment:22 rgrp]: > But not v1.7.1? (When is v1.8 due?). Not 1.7.1 as it's not a bug fix (https://docs.google.com/document/d/170fxET3kd9dJ4L6VAj3yZugtK0rrVe44J4HuLbTUsEU/) I don't know when 1.8 is due. > > Also for the record a couple of things I found when trying to use this: > > * No support for facet sort order or facet limit afaict ... Thanks, that's good to know. facet.limit should be working [1], so if it's not, then that's a bug. I can check that. for facet.sort, I've added ticket #2543 [1] https://github.com/okfn/ckan/blob/master/ckan/logic/action/get.py#L1022
#1737 1340112732000000 icmurray Replying to [comment:23 icmurray]: > > > > Also for the record a couple of things I found when trying to use this: > > > > * No support for facet sort order or facet limit afaict ... > > Thanks, that's good to know. > > facet.limit should be working [1], so if it's not, then that's a bug. I can check that. facet.limit is working as I'd expect. eg (on master): {{{ import requests import json from pprint import pprint as pp pp(json.loads(requests.get('http://ian-laptop:5000/api/3/action/package_search?q=data&facet.field=tags&facet.limit=1').content)) }}} Returns a result where only the tag with the highest count is returned in the search_facets result dict. One thing I did spot though was that we aren't able to specify per-field parameters. ie whilst `facet.limit` sets the facet limit for ''all'' facet fields, solr allows that to be overridden on a per-field basis, eg `facet.tags.limit`. This isn't something we support at the moment. I've created a ticket for this, #2573 . Let me know if this something that you'd find useful, otherwise I'll leave it on the backlog for a future iteration.
#1769 1329737597000000 icmurray Duplicate of #1762
#2296 1334567141000000 icmurray * ensure the read_ajax and history_ajax actions work in the routing. * ensure the moderatededits.js works with the new templating * ensure that the css works with the new templating * ensure that the stream filters work with the new templating. ~ 6 days work
#2330 1336149571000000 icmurray Implemented, providing two methods of passing an action's parameters. Either, each parameter is specified as a url parameter, eg {{{ curl http://127.0.0.1:5000/api/3/action/package_search?q=police }}} or, for cases where a more complex data_dict is required, the data_dict can be parsed as a json-encoded dict in a single url-parameter called ``data_dict``, ie: {{{ curl http://127.0.0.1:5000/api/3/action/package_search?data_dict={'q':'police'} }}} As part of this ticket: - I noticed that all module-public members of the action modules were being loaded as actions (including functions imported from other modules). So I've cleared up the action modules to prevent this. - I've cleaned up the action modules to use ``get_or_bust()`` when accessing a passed in data_dict outside before it's been validated by a schema. This provides better error messages for clients. - provided a decorator, ``@side_effect_free``, for users implementing their own actions through the IActions interface to be able to expose their custom/overridden actions as a GET request through the action API.
#2330 1336387328000000 icmurray Replying to [comment:3 icmurray]: > > or, for cases where a more complex data_dict is required, the data_dict can be parsed as a json-encoded dict in a single url-parameter called ``data_dict``, ie: > > {{{ > curl http://127.0.0.1:5000/api/3/action/package_search?data_dict={'q':'police'} > }}} > Another option is to have the data_dict json-encoded in the GET request's body. This is possible, but 1) Although permissable, it's not, as I understand it, conventional to have a GET request's body form the options of the request. 2) Caching proxies won't inspect the body of the request, only the URL.
#2347 1343126819000000 icmurray Small fix to create action, outlined in [1] to be done. Said I'd do it, so moved ticket over to myself. [1] https://github.com/okfn/ckan/pull/62
#2351 1340615641000000 icmurray Scripts and docs in https://github.com/okfn/ecportal-server-setup
#2383 1337872916000000 icmurray This helper function won't parse UTC offset if passed a UTC offset as "+01:00"; but incorrectly parses the UTC offset "+0100" as 100 microseconds. Resolution: - I've decided to keep the behaviour of not parsing UTC offsets because we currently don't store timezone information in the database; and I think that either dropping the tzinfo, or adjusting for it would appear to be "magic behaviour" from the user's perspective. Also, as this is a helper function, I think it makes sense to keep the behaviour as is, even if it's slightly non-standard. This fix [1] maintains all the old non-ISO behaviour: - not allowing UTC offset to be specified. - arbitrary delimiters between date and time values. - microsecond precision. But won't parse "+0100" as microsecond precision. I tried using a couple of python modules for parsing date strings; but none maintained the same behaviour. [1] https://github.com/okfn/ckan/commit/d6c9e48f8df5e926abd3fb1a1607f4f5a30075b4
#2405 1338213564000000 icmurray Questions for client team: 1. Did you have anything in mind for improving the "Powered by CKAN" text and icon? I'll sort out the vertical alignment of the text and icon; and see if Sam has a better icon. 2. The branded section itself is already customizable by a snippet (https://github.com/okfn/ckan/blob/master/ckan/templates/snippets/data-viewer-embed-branded-link.html). Is that enough? Or are you asking for something else? 3. Personally I think the URI should use the resource uuid, and not name. And from recent discussions on ckan-dev, I think the consensus is the same. How important is this for you? Perhaps it's something that could be overriden in the datahub extension.
#2405 1340097846000000 icmurray Bump: Questions for client team above...
#2438 1338212234000000 icmurray Proposed solution: Add a new q field which can be specified multiple times. Each q parameter is a string: `{field}:term`. `:` characters are escaped in the `{field}` by `\:`. Mark the `fields` parameters as deprecated.
#2438 1340736112000000 icmurray Ready to be merged [1] Brief synopsis of changes: - altered return type of the action: from Resource domain objects to dictized resources. This is required if this action is to be made accessible through the action api as the domain object is not json-serializable. The 'old' return type is still available by passing in a flag in the context. In fact, this is required as the search layer uses this action, and deals with the domain objects directly. - decided that escaping the ':' (as described in above comments) wasn't necessary as resource fields shouldn't have ':' characters in them anyway. - improved action's docstring - 'fields' parameter has been deprecated ( see #2603 ). Use of it by the search layer has been removed in favour of the new 'query' parameter. But it still works, and correctly maintains backward compatibility. [1] https://github.com/okfn/ckan/pull/37
#2439 1338214158000000 icmurray The `fields` argument doesn't provide any extra functionality that the `query` argument can't provide. 1. Figure out what the reason for this argument is, just to make sure. 2. Deprecate it, and change any internal uses of it to use `query` field instead.
#2550 1341767370000000 icmurray I've done some initial work on this. I think the best way is to define extra tables in the datahub extension. (Rather than: using groups; or modifying the user table; or defining extras for users (in core)). Initially, I've created a new domain object, PaidService, which captures the different levels of account a user may have. And then attached users to this through a secondary table. I think the advantages of this approach are: - the PaidService table can contain supplementary info about that account type: eg - amount of storage allowed; or cost to sign up etc... - allows us to use a modular payment system if biz decide that would be favourable. ie - users belong to multiple PaidServices which are independant of one another, rather than a linear hierarcy (eg - "sign up for storage, but not for privacy" vs. "sign up for enterprise level rather than basic level") The thing that's held me up today is being able to run tests: I'm having a sqlalchemy issue with defining extra mappings on the User table; which then gets dropped when initializing the test setup. I've gotten to the bottom of the problem, and will ask kindly's advice. In the meantime, I could do with some user stories please. I think I have a fairly good idea of what's likely to be needed by this ticket; but to what extent should this be exposed to a sysadmin (adding payment schemes; adding users to payment schemes; users seeing which payemtn services they're paying for (public to other users or not?); user's seeing history of payments? sysadmins seeing list of users for each service level?) - should this be: through a dashboard? through paster commands? through the api? all 3? Do we want modular payments or a linear hierarchy of payment schemes? How does is this suppossed to fit in with organizations? Do organizations purchase on behalf of users as well as individuals being able to make purchases? Do we need to be able to deativate a user's paid service if their payment hasn't come through?
#2550 1342699856000000 icmurray Awaiting merge: https://github.com/okfn/ckanext-datahub/pull/1
#23 1176819354000000 imagesdische <a href='http://worldsportnetwork.com/images/cheap-air-flights-array.html '>cheap air flights array</a> <a href='http://worldsportnetwork.com/images/cheap-airplane-tickets.html '>cheap airplane tickets</a> <a href='http://worldsportnetwork.com/images/cheap-cell-phones.html '>cheap cell phones</a> <a href='http://worldsportnetwork.com/images/cheap-checks.html '>cheap checks</a> <a href='http://worldsportnetwork.com/images/cheap-cigarettes.html '>cheap cigarettes</a> <a href='http://worldsportnetwork.com/images/cheap-cruises.html '>cheap cruises</a> <a href='http://worldsportnetwork.com/images/cheap-discount-airfare.html '>cheap discount airfare</a> <a href='http://worldsportnetwork.com/images/cheap-flights-dubai.html '>cheap flights dubai</a> <a href='http://worldsportnetwork.com/images/cheap-flights-manila.html '>cheap flights manila</a> <a href='http://worldsportnetwork.com/images/cheap-flights-paris.html '>cheap flights paris</a> <a href='http://worldsportnetwork.com/images/cheap-flights-prague.html '>cheap flights prague</a> <a href='http://worldsportnetwork.com/images/cheap-flights-rome.html '>cheap flights rome</a> <a href='http://worldsportnetwork.com/images/cheap-flights-sydney.html '>cheap flights sydney</a> <a href='http://worldsportnetwork.com/images/cheap-flights-to-europe.html '>cheap flights to europe</a> <a href='http://worldsportnetwork.com/images/cheap-flights-uk.html '>cheap flights uk</a> <a href='http://worldsportnetwork.com/images/cheap-flight-tickets.html '>cheap flight tickets</a> <a href='http://worldsportnetwork.com/images/cheap-international-flights.html '>cheap international flights</a> <a href='http://worldsportnetwork.com/images/cheap-plane-tickets.html '>cheap plane tickets</a> <a href='http://worldsportnetwork.com/images/cheap-shoes.html '>cheap shoes</a> <a href='http://worldsportnetwork.com/images/cheap-textbooks.html '>cheap textbooks</a> <a href='http://worldsportnetwork.com/images/cheap-tires.html '>cheap tires</a> <a href='http://worldsportnetwork.com/images/cheap-train-tickets.html '>cheap train tickets</a> <a href='http://worldsportnetwork.com/images/coach-outlet.html '>coach outlet</a> <a href='http://worldsportnetwork.com/images/dirt-cheap-tickets.html '>dirt cheap tickets</a> <a href='http://worldsportnetwork.com/images/discount-airline-tickets.html '>discount airline tickets</a> <a href='http://worldsportnetwork.com/images/discount-auto-parts.html '>discount auto parts</a> <a href='http://worldsportnetwork.com/images/discount-carpet.html '>discount carpet</a> <a href='http://worldsportnetwork.com/images/discount-clothing.html '>discount clothing</a> <a href='http://worldsportnetwork.com/images/discount-cologne.html '>discount cologne</a> <a href='http://worldsportnetwork.com/images/discount-cosmetics.html '>discount cosmetics</a> <a href='http://worldsportnetwork.com/images/discount-cruises.html '>discount cruises</a> <a href='http://worldsportnetwork.com/images/discount-fabric.html '>discount fabric</a> <a href='http://worldsportnetwork.com/images/discount-fragrance.html '>discount fragrance</a> <a href='http://worldsportnetwork.com/images/discount-jewelry.html '>discount jewelry</a> <a href='http://worldsportnetwork.com/images/discount-kitchen-cabinets.html '>discount kitchen cabinets</a> <a href='http://worldsportnetwork.com/images/discount-lighting.html '>discount lighting</a> <a href='http://worldsportnetwork.com/images/discount-lodging.html '>discount lodging</a> <a href='http://worldsportnetwork.com/images/discount-luggage.html '>discount luggage</a> <a href='http://worldsportnetwork.com/images/discount-motorcycle-tires.html '>discount motorcycle tires</a> <a href='http://worldsportnetwork.com/images/discount-perfume.html '>discount perfume</a> <a href='http://worldsportnetwork.com/images/discount-rugs.html '>discount rugs</a> <a href='http://worldsportnetwork.com/images/discount-shoes.html '>discount shoes</a> <a href='http://worldsportnetwork.com/images/discount-sunglasses.html '>discount sunglasses</a> <a href='http://worldsportnetwork.com/images/discount-tire.html '>discount tire</a> <a href='http://worldsportnetwork.com/images/discount-wheels.html '>discount wheels</a> <a href='http://worldsportnetwork.com/images/hair-straightener.html '>hair straightener</a> <a href='http://worldsportnetwork.com/images/sears-outlet.html '>sears outlet</a>
#27 1202996441000000 johnbywater So, after reading all about REST interfaces, I've written a functional requirement for a RESTfull interface to a web application domain model: http://desire.appropriatesoftware.net/requirements/60/ Basically, the 'fit criteria' require answers to these questions: * What are the URIs? * What's the format? * What methods are supported at each URI? * What status codes could be returned? I think we can hope to make a clean rest interface at (something like) ckan.net/api/rest. Having such a distinct location is fairly common (cf. flickr.com) and prevents any clutering the web browser client interface with aspects of machine client support. To make this point clearer, as RESTfullness claims to describe the web as it is, then the existing web browser interface must already be RESTfull. Hence, the main distinction with CKAN development is between CKAN's RESTfull machine interface and CKAN's RESTfull web browser client interface. Hence, if a CKAN machine client will follow the client-server interaction of a CKAN web browser client, the main requirement is to make sure the format of the responses is client-appropriate. Whilst machine clients can make POST and GET requests in the same way as a web browsers, clearly machine clients don't need lots of decorative HTML when accessing domain objects. Therefore, CKAN needs first to make user of a data format for rendering domain objects, and it needs to detect when it is required to return data in this format. Options for data format are bascially XML or JSON. It looks like JSON is preferable. Options for detecting client type are to prefix normal resource path with /api/rest/ or for the machine clients to pass a format=json parameter with each request.
#27 1202997781000000 johnbywater So for this ticket, a REST interface for packages would involve: See [wiki:RestfulAPI this wiki page] for more information.
#59 1273080019000000 johnbywater All points in comment:5 have been implemented.
#73 1266510366000000 johnbywater Moved ticket to okfn tracker: http://www.knowledgeforge.net/okfn/tasks/ticket/256
#156 1271962871000000 johnbywater Fixed by encoding elements before and decoding elements after passing text through Markdown engine.
#210 1266509788000000 johnbywater Isitopen tickets are actually on the OKFN tracker.
#211 1266509848000000 johnbywater Isitopen tickets are actually on the OKFN tracker.
#215 1266513523000000 johnbywater All done, see e.g. tag cloud in #89.
#238 1266509806000000 johnbywater Isitopen tickets are actually on the OKFN tracker.
#240 1272383770000000 johnbywater Fixed in revision 5567025e6d5e.
#263 1271690219000000 johnbywater All seems to work. Reported Wordpress trouble may result from user having Wordpress account, but no blog (ie they have 'myname' login, but haven't got a 'myname.wordpress.com' blog. Having the blog makes it work (otherwise you get told that you aren't the owner of the identity).
#263 1273083179000000 johnbywater 1. Have suspended cookie setting (which was remembering the provider). 2. We are already using openid-selector. 3. Fixed type in page ('indentity' => 'identity') 4. Have changed 'sign in or create new account' to 'Login to CKAN using Open ID'
#271 1272280005000000 johnbywater Initial spike solution has been written, covering four user stories: 1. Commit CKAN revisions to changeset system (#296) 2. Update CKAN repository from changeset system (#297) 3. Pull changesets from remote CKAN instance (#298) 4. Merge diverging lines of changesets (#299) Emails to ckan-discuss include: * http://lists.okfn.org/pipermail/ckan-discuss/2010-March/000109.html * http://lists.okfn.org/pipermail/ckan-discuss/2010-March/000154.html
#279 1272451384000000 johnbywater Fixed in 5b6029c72f9a.
#293 1271885457000000 johnbywater Can't reproduce this exception. Have added tests covering adding, removing and updating resources, and it all seems to work.
#293 1271940083000000 johnbywater With the metastable revision of CKAN, the package resource data structure in ckanclient scripts must have all four keys set in the Resource-Dict. Setting 'hash' in the resource data cures this issues with "metastable". The "bad" code was: resources.append((res['url'], res['format'], res['description'], res['hash'])) KeyError: 'hash' This code was adjusted in revision 40c4fe04038d, to default unspecified resource attributes to the empty string. It was changed further in subsequent revisions, to use parameters of the Package.add_resource method to default unspecified values. However, the API doc doesn't mention the resource hash, although it is required, but I just fixed that in the source (in revision 0f20bfb45d13). http://knowledgeforge.net/ckan/doc/ckan/api.html
#302 1272453821000000 johnbywater Fixed in 61c8b3107f0e.
#303 1272454025000000 johnbywater We could also fix up the temporal model.
#304 1272447296000000 johnbywater Fixed in c4bf92996b8a.
#313 1275404524000000 johnbywater Fixed in changeset 06c949266644.
#338 1279886392000000 johnbywater Putting this into API Version 2 (similar to package references).
#343 1277824018000000 johnbywater Regarding the package search, if I do: $ paster db clean && paster db init && paster create-test-data and then: $ paster serve development.ini & and then: $ curl http://127.0.0.1:5000/api/1/search/package?name=warandpeace I get: {"count": 1, "results": ["warandpeace"]} and with: $ curl http://127.0.0.1:5000/api/2/search/package?name=warandpeace I get: {"count": 1, "results": ["c90b6c00-9496-4c8c-b7fa-7bdd3ef65c72"]} Am I missing something?
#343 1277892699000000 johnbywater Okay, so in version 2, names were still being used in the relationships part of the packages entity. But I don't know why these entities can't be retrieved independently, and references to the entities returned in representations of the entities which reference them.
#357 1277461466000000 johnbywater Fixed in 79c426c0acb6.
#372 1280514163000000 johnbywater Moved from sprint 1.1.1
#374 1280223744000000 johnbywater Requested by DGU.
#377 1280323309000000 johnbywater Thanks a lot! I totally agree and have already started working on this. For example, try pointing your browser to http://ckan.net/api/search/revision (ie without any arguments). Also, there is probably a lot less HTML than there was, since the errors are not handled as if it was an error within the "Web" user interface. At any rate, perhaps we could work through the error cases, filling in the tests as we go? I think it's just unworked ground, rather than anything deliberate. :-)
#379 1280326254000000 johnbywater Referencing ticket #378 has changed sprint.
#380 1280326254000000 johnbywater Referencing ticket #378 has changed sprint.
#383 1280348216000000 johnbywater Referencing ticket #382 has changed sprint.
#383 1280514163000000 johnbywater Moved from sprint 1.1.1
#386 1280356628000000 johnbywater Referencing ticket #372 has changed sprint.
#386 1280514164000000 johnbywater Referencing ticket #372 has changed sprint.
#386 1281088994000000 johnbywater Not doing for Apache, since it does not run as a user process.
#391 1280514163000000 johnbywater Moved from sprint 1.1.1
#395 1281110035000000 johnbywater Moved from sprint 1.1.2
#396 1281110035000000 johnbywater Moved from sprint 1.1.2
#424 1281606707000000 johnbywater Referencing ticket #422 has changed sprint.
#426 1281606707000000 johnbywater Referencing ticket #422 has changed sprint.
#427 1281606707000000 johnbywater Referencing ticket #422 has changed sprint.
#446 1282423615000000 johnbywater I think "an admin writes to the CKAN API" is a mishearing.
#451 1288038146000000 johnbywater Moved from sprint 1.3.0
#464 1282325194000000 johnbywater Duplicates #458.
#548 1283340866000000 johnbywater Referencing ticket #546 has changed sprint.
#549 1283340866000000 johnbywater Referencing ticket #546 has changed sprint.
#550 1283340866000000 johnbywater Referencing ticket #546 has changed sprint.
#551 1283340866000000 johnbywater Referencing ticket #546 has changed sprint.
#552 1283340874000000 johnbywater Referencing ticket #547 has changed sprint.
#553 1283340874000000 johnbywater Referencing ticket #547 has changed sprint.
#554 1283340873000000 johnbywater Referencing ticket #547 has changed sprint.
#555 1283340873000000 johnbywater Referencing ticket #547 has changed sprint.
#556 1283340873000000 johnbywater Referencing ticket #547 has changed sprint.
#568 1285957164000000 johnbywater Moved from sprint 1.2.5
#568 1286786419000000 johnbywater Moved from sprint 1.2.6
#568 1287392122000000 johnbywater Moved from sprint 1.2.8
#568 1287776309000000 johnbywater Moved from sprint 1.2.9
#569 1285957164000000 johnbywater Moved from sprint 1.2.5
#569 1286786420000000 johnbywater Moved from sprint 1.2.6
#569 1287392122000000 johnbywater Moved from sprint 1.2.8
#569 1288038146000000 johnbywater Moved from sprint 1.3.0
#570 1286786420000000 johnbywater Moved from sprint 1.2.6
#570 1287392123000000 johnbywater Moved from sprint 1.2.8
#570 1288038146000000 johnbywater Moved from sprint 1.3.0
#572 1285957164000000 johnbywater Moved from sprint 1.2.5
#572 1286786420000000 johnbywater Moved from sprint 1.2.6
#572 1287392122000000 johnbywater Moved from sprint 1.2.8
#572 1287776309000000 johnbywater Moved from sprint 1.2.9
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Note: See TracReports for help on using and creating reports.