{22} Trac tickets (2647 matches)

Results (2101 - 2200 of 2647)

Id Type Owner Reporter Milestone Status Resolution Summary Description Posixtime Modifiedtime
#486 requirement johnbywater ckan-v1.3 closed duplicate Catalogue service shall notify and query SOLR service 1282425790000000 1291639321000000
#487 story johnbywater closed duplicate Notify SOLR service of model events 1282425910000000 1291639404000000
#488 requirement johnbywater closed wontfix Catalogue service shall notify RDF service 1282426021000000 1320930240000000
#490 requirement johnbywater closed fixed The system shall support registering a harvest source via the CKAN API 1282426875000000 1286200804000000
#491 story johnbywater ckan-v1.2 closed Get form for creating harvest source entity 1282427008000000 1284493173000000
#492 story johnbywater ckan-v1.2 closed Submit harvest source create form response to the API 1282427042000000 1284493145000000
#493 story johnbywater ckan-v1.2 closed Get harvest source entity 1282427083000000 1284493130000000
#494 story johnbywater ckan-v1.2 closed Get form for updating remote metadata entity 1282427106000000 1285198894000000
#495 story johnbywater ckan-v1.2 closed Put form for updating remote metadata entity 1282427150000000 1285198898000000
#498 story johnbywater closed invalid Search packages within location "bounding box" 1282427412000000 1294412520000000
#500 defect dread ckan-v1.2 closed duplicate Exception from diff

Investigate exception occured occasionally in last couple of days on ckan.net:

WebApp Error: <type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'key' 					

URL: http://ckan.net/revision/diff/dbtune-audioscrobbler?diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c
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:119 in diff
<<          c.revision_to = model.Session.query(model.Revision).get(
                   request.params.getone('diff'))
               diff = pkg.diff(c.revision_to, c.revision_from)
               c.diff = diff.items()
               c.diff.sort()
>>  diff = pkg.diff(c.revision_to, c.revision_from)
Module ckan.model.package:340 in diff
<<                              display_id = to_obj_rev.tag.name
                               elif obj_class.__name__ == 'PackageExtra':
                                   display_id = to_obj_rev.key
                               else:
                                   display_id = related_obj_id[:4]
>>  display_id = to_obj_rev.key
AttributeError: 'NoneType' object has no attribute 'key'
CGI Variables
DOCUMENT_ROOT	'/htdocs'
GATEWAY_INTERFACE	'CGI/1.1'
HTTP_ACCEPT	'*/*'
HTTP_ACCEPT_ENCODING	'gzip'
HTTP_ACCEPT_LANGUAGE	'zh-cn,zh-tw'
HTTP_CONNECTION	'close'
HTTP_HOST	'ckan.net'
HTTP_USER_AGENT	'Baiduspider+(+http://www.baidu.com/search/spider.htm)'
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=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c'
REMOTE_ADDR	'123.125.66.32'
REMOTE_PORT	'63767'
REQUEST_METHOD	'GET'
REQUEST_URI	'/revision/diff/dbtune-audioscrobbler?diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c'
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	'10.226.226.118'
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 0x9f603ec>
beaker.cache	<beaker.cache.CacheManager object at 0x9f6042c>
beaker.get_session	<bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x9f602ac>>
beaker.session	{'_accessed_time': 1282385101.4243281, '_creation_time': 1282385101.4243281}
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', '66a47b9e-232a-4838-8674-66fa1a5c76e1'), ('oldid', 'a99c98be-767a-4e49-9025-2472b2d18b9c')], 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c')
paste.registry	<paste.registry.Registry object at 0x104552ec>
paste.throw_errors	True
pylons.action_method	<bound method RevisionController.diff of <ckan.controllers.revision.RevisionController object at 0xfb17aec>>
pylons.controller	<ckan.controllers.revision.RevisionController object at 0xfb17aec>
pylons.environ_config	{'session': 'beaker.session', 'cache': 'beaker.cache'}
pylons.pylons	<pylons.util.PylonsContext object at 0x10286d4c>
pylons.routes_dict	{'action': u'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'}
repoze.who.logger	<logging.Logger instance at 0xa16e0cc>
repoze.who.plugins	{'openid': <OpenIdIdentificationPlugin 167584972>, 'auth_tkt': <AuthTktCookiePlugin 169253516>}
routes.route	<routes.route.Route object at 0x9f3690c>
routes.url	<routes.util.URLGenerator object at 0xfd8d7cc>
webob._parsed_query_vars	(GET([('diff', '66a47b9e-232a-4838-8674-66fa1a5c76e1'), ('oldid', 'a99c98be-767a-4e49-9025-2472b2d18b9c')]), 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c')
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 0x103a5bf0>
wsgiorg.routing_args	(<routes.util.URLGenerator object at 0xfd8d7cc>, {'action': u'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'})



1282553033000000 1287747652000000
#501 requirement pudo ckan-v1.2 closed duplicate Read-only maintenance mode

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.

1282554617000000 1282724566000000
#507 story johnbywater closed fixed Upgrade a CKAN service 1282661646000000 1282909852000000
#511 requirement dread ckan-v1.3 closed worksforme Better warnings and errors when using API 1282754677000000 1297075354000000
#512 story dread closed duplicate User creates package via API with incorrect core fields specified 1282754750000000 1294917121000000
#513 task dread closed wontfix Creating a package with API should warn if there are incorrect fields

When you create a package using the API, you might get a core field name wrong e.g. 'title' mispelt as 'titel' or 'groups' (which can't be specified in package creation). Currently that field will be ignored by the API. It should warn or give an error, rather than give 200 OK.

1282754802000000 1302774329000000
#514 defect dread ckan-v1.2 closed duplicate Inconsistent use of 'location' header in API

When you create a package then the 'location' header gets set. This doesn't happen for any other domain objects. I think this should be consistent - either none or all.

I've removed the info about the header in the docs in the meantime.

1282757357000000 1282757391000000
#516 defect dread ckan-v1.2 closed fixed Double-escaped text visible - revision page

At: http://ckan.net/revision you can see: "Next &raquo;" on pager This doesn't seem to be a problem with earlier (1.0.1) version.

1282829539000000 1288002933000000
#533 requirement johnbywater ckan-v1.3 closed invalid The performance of CKAN shall scale

CKAN uses a database. We can put the database on another machine and then clone the CKAN machine. Then there are two machines calling the database and converting SQL results into HTTP responses.

How many machines can you have before the database becomes the bottleneck? At that point, what QoS can be obtained with normal hardware?

Afterwards, can CKAN be made to scale further than this with a little development? Can its Postgres database be mirrored in realtime? Or can we change SQL writes (create/updates) to write to many databases?

Are there any other options for scaling the persistence mechanism?

1282910499000000 1292957374000000
#535 defect dread ckan-v1.2 closed duplicate genshi error when logged into sl.ckan.net

Genshi exception when rendering the page whilst logged in to sl.ckan.net.

1283165774000000 1283167040000000
#544 requirement pudo ckan-v1.3 closed duplicate Backport facet browsing to CKAN 1.2

This is in IATI, would be nice to have in generic CKAN.

1283267292000000 1291638966000000
#557 defect pudo ckan-v1.3 closed invalid Remove siblings from link_to/from relationship display

Displaying siblings is not needed for link_to/from.

1283542595000000 1297075159000000
#558 defect pudo ckan-v1.2 closed fixed Sort extras, relationships by key/object alphabetically 1283542680000000 1283781883000000
#561 defect pudo ckan-v1.2 closed duplicate Deleted packages are returned in the API

Anja is reporting this, severe bug, I think.

1283775578000000 1283775711000000
#562 defect pudo ckan-v1.2 closed fixed OpenID Login fails using Yahoo and Google

reported by LOD folks.

subsidary bug: error messages from OpenID providers are not shown on the form return page.

1283941119000000 1284063574000000
#564 requirement johnbywater ckan-v1.3 closed wontfix The system shall support location based search 1284033829000000 1294412714000000
#567 story johnbywater ckan-v1.2 closed Post new harvest job for given harvest source 1284039943000000 1284689374000000
#573 story johnbywater closed duplicate Add metadata entity to harvesting queue 1284045353000000 1284220987000000
#574 story johnbywater closed duplicate Create UKLII package with attributes from remote metadata record 1284045805000000 1284222410000000
#575 requirement johnbywater ckan-v1.2 closed fixed The system shall notify remote metadata harvesting errors 1284047959000000 1288012749000000
#577 story johnbywater ckan-v1.2 closed Get remote metadata harvest job errors 1284209381000000 1285348049000000
#578 story johnbywater ckan-v1.2 closed Get remote metadata harvest job 1284209407000000 1284493202000000
#579 story johnbywater ckan-v1.2 closed Delete remote metadata harvest job 1284209440000000 1285260356000000
#580 story johnbywater closed duplicate Write (create or update) CKAN package for metadata document 1284210730000000 1284223068000000
#582 task johnbywater ckan-v1.2 closed fixed Domain object class for harvest source 1284211104000000 1284261402000000
#583 task johnbywater ckan-v1.2 closed fixed Define fieldset object for harvest source forms 1284211169000000 1284261424000000
#584 task johnbywater ckan-v1.2 closed fixed Migration script to add harvest source table 1284211204000000 1284483760000000
#585 task johnbywater ckan-v1.2 closed fixed Method on API controller to return harvest source create form 1284211302000000 1284261448000000
#586 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest source create form API resource 1284211336000000 1284261447000000
#587 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest source create form from API 1284211364000000 1284492381000000
#588 task johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid harvest source create form submission 1284211575000000 1284318555000000
#589 task johnbywater ckan-v1.2 closed fixed Method on API controller to reject invalid harvest source create form submission 1284211620000000 1284318561000000
#590 task johnbywater ckan-v1.2 closed fixed Documentation for submitting harvest source create form submission to API 1284211659000000 1284492397000000
#591 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest source entity API resource 1284212082000000 1284342925000000
#592 task johnbywater ckan-v1.2 closed fixed Methods to return harvest source entity as JSON 1284212338000000 1284342904000000
#593 task johnbywater ckan-v1.2 closed fixed Method on API controller to return remote metadata edit form 1284212498000000 1285198853000000
#594 task johnbywater ckan-v1.2 closed fixed Routing configuration for remote metadata edit form API resource 1284212532000000 1285198859000000
#595 task johnbywater ckan-v1.2 closed fixed Documentation for getting remote metadata edit form from API 1284212572000000 1285198863000000
#596 task johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid remote metadata edit form submission 1284212662000000 1285198874000000
#597 task johnbywater ckan-v1.2 closed fixed Method on API controller to reject invalid remote metadata edit form submission 1284212689000000 1285198885000000
#598 story johnbywater ckan-v1.2 closed List remote metadata entities for given publisher 1284213730000000 1286200795000000
#599 task johnbywater ckan-v1.2 closed fixed Routing configuration for listing remote metadata entities for a given publisher 1284213814000000 1284347290000000
#600 task johnbywater ckan-v1.2 closed fixed Method on API controller for listing remote metadata entities for a given publisher 1284213854000000 1284347296000000
#601 task johnbywater ckan-v1.2 closed fixed Documentation for listing remote metadata entities for a given publisher via API 1284213928000000 1284493045000000
#602 task johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid harvest job 1284217587000000 1284336801000000
#603 task johnbywater ckan-v1.2 closed fixed Method on API controller to reject invalid harvest job 1284217624000000 1284338918000000
#604 task johnbywater ckan-v1.2 closed fixed Domain object class for harvest job 1284217689000000 1284326615000000
#605 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest job register 1284217966000000 1284336788000000
#606 task johnbywater ckan-v1.2 closed fixed Methods to return harvest job as JSON 1284218102000000 1284344127000000
#607 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest job entity 1284218136000000 1284344113000000
#608 task johnbywater ckan-v1.2 closed fixed Routing configuration for register of harvest jobs with error status 1284218378000000 1285347281000000
#609 task johnbywater ckan-v1.2 closed fixed Methods to return harvest jobs with error status as JSON 1284218437000000 1285347285000000
#618 task johnbywater ckan-v1.2 closed fixed Domain object class for metadata document 1284219669000000 1284598039000000
#619 task johnbywater ckan-v1.2 closed fixed Get HTTP response for given resource locator 1284220327000000 1284675079000000
#620 task johnbywater ckan-v1.2 closed fixed Identify remote metadata entity as metadata document, WAF, or CSW 1284220527000000 1284689400000000
#624 task johnbywater ckan-v1.2 closed fixed Read attribute 'title' from local copy of metadata document 1284221083000000 1284675746000000
#625 task johnbywater ckan-v1.2 closed fixed Read attribute 'abstract' from local copy of metadata document 1284221101000000 1284675753000000
#626 task johnbywater ckan-v1.2 closed fixed Read attribute 'point of contact' from local copy of metadata document 1284221117000000 1285443038000000
#627 task johnbywater ckan-v1.2 closed fixed Read attribute 'guid' from local copy of metadata document 1284221134000000 1284598028000000
#628 task johnbywater ckan-v1.2 closed fixed Read attribute 'bounding-box' from local copy of metadata document 1284221156000000 1285443047000000
#629 task johnbywater ckan-v1.2 closed fixed Read attribute 'keywords' from local copy of metadata document 1284221191000000 1285443055000000
#630 task johnbywater ckan-v1.2 closed fixed Read attribute 'use constraints' from local copy of metadata document 1284221210000000 1285443069000000
#631 task johnbywater ckan-v1.2 closed fixed Read attribute 'resource-locator' from local copy of metadata document 1284221223000000 1284675741000000
#632 task johnbywater ckan-v1.2 closed fixed Read attribute 'topic category' from local copy of metadata document 1284221246000000 1285443078000000
#633 task johnbywater ckan-v1.2 closed fixed Read attribute '' from local copy of metadata document 1284221272000000 1285443112000000
#634 task johnbywater ckan-v1.2 closed fixed Read attribute '' from local copy of metadata document 1284221284000000 1285443115000000
#635 task johnbywater ckan-v1.2 closed fixed Read attribute '' from local copy of metadata document 1284221305000000 1285443119000000
#636 task johnbywater ckan-v1.2 closed fixed Method on API controller to delete given harvest job 1284221790000000 1285260342000000
#637 task johnbywater closed invalid Read UKLII package data from given metadata document 1284222536000000 1284223104000000
#638 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest source entity from API 1284225805000000 1284491185000000
#639 task johnbywater ckan-v1.2 closed fixed Documentation for posting harvest job to API 1284226008000000 1284491239000000
#640 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest job entity from API 1284226036000000 1284491233000000
#641 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest job errors from API 1284226049000000 1285348033000000
#642 task johnbywater ckan-v1.2 closed fixed Migration script to add harvest job table 1284226154000000 1284483747000000
#643 task johnbywater ckan-v1.2 closed fixed Migration script to add metadata document table 1284226255000000 1284675721000000
#644 task johnbywater ckan-v1.2 closed fixed Documentation for deleting harvest job entity 1284226402000000 1285260346000000
#646 requirement johnbywater closed wontfix Web UI shall support registering harvest sources 1284740303000000 1294413500000000
#648 requirement pudo ckan-v1.3 closed fixed Enable lock-down of package creation
  • copy exisiting tests, modify authz in setUp, adapt and extend tests
    • Problem: default_role_actions is read by init_db
    • Solution: nuke db after monkey-patching
    • role = model.Role('Reader'), del role.actions[...]

self.PRE_MAUTHZ_RULES = copy(mauthz.default_role_actions) mauthz.default_role_actions.remove((Role.READER, Action.CREATE)) #raise Exception(mauthz.default_role_actions) model.Session.remove() model.repo.rebuild_db()

  1. Start from the functional

is_authorized(user, Action.Create, model.Package)

-> Doing this will put 'Package' in the context field of the user_object_role table. This will trigger SQLAlchemy to attempt a join towards PackageRole? in all queries. Since for class-level role assignments there never is a PackageRole? join table entry, this will never return any results.

  • have a ckan install that would not allow visitors to either list packages or list groups
    • two paths: create the listing, but for each group/pkg decide that you cannot show this
    • lock down the whole page (/package/list)
      • this is class-based, not object-based

is_authorized(user, Action.Package_Create, model.System()) is_authorized(user, Action.Group_Create, model.System())

[Separating Package and Group roles may be useful going forward: PackageEditor?, GroupEditor? etc]

  1. Find a standard way to lock down classes
    • possibly add default rows in user_object_role
    • introduce lock-down into controllers: group new, package new, REST equivalents,
    • confirm tests
1284889519000000 1284889656000000
#649 story pudo closed fixed Introduce Authorization Groups in model

Authorization Groups:

(Doing this first seems more stable since we first want to "re-gain" exisiting functionality)

  • Create authz.py and model tests for authorization_group-based auth
    • tests: functional: create fixtures, do actual requests

lib-tests: test for membership addition, removal, group-right additions affecting all members, group-right removal, group rights affecting non-members.

# * Adapt model to get these passing

  • Integration into existing controllers should be negligible but may want ot have tests
    • do not want that. would mean design is broken
  • Need to create a new controller for editing authz groups (will have same permissions as any other object -- Reader, Editor, Administrator)
1284889884000000 1284889983000000
#651 requirement pudo closed fixed Improve javascript helper for package/user addition on groups/authzgroups

This needs to be abstracted and we still need to be able to remove items before saving.

1284972211000000 1311171104000000
#652 requirement pudo ckan-v1.2 closed fixed Allow for addition and removal of groups on package/edit

Much more natural place to do this, even at the risk of overloading the package edit form.

1284998134000000 1284998201000000
#653 requirement dread ckan-backlog new Trackback links for packages

When people link to a package, a track-back link is auto-created. (Similar system as for blogs).

As suggested by Tim Davies:

Allowing some form of ‘track back’ against datasets When a non-technical user comes to look at a dataset it would be really useful for them to be able to see if anyone has created an interface interpretation of it already.

I found quite a few cases in research of end-users struggling to make sense of a dataset when good interfaces to that data had already been built and blogged about, but without there being any link from the dataset listing to those data uses. Accepting track backs could also make it easier for technical users to find blog posts / shared code etc. relating to a given dataset.

1285062025000000 1339774636000000
#654 bug johnbywater ckan-v1.2 closed Harvest sources and jobs should return 404 when missing (not 500) 1285170717000000 1285254097000000
#655 story johnbywater ckan-v1.2 closed Return status code 404 when harvest source is not found 1285252399000000 1285254088000000
#656 story johnbywater ckan-v1.2 closed Return status code 404 when harvesting job is not found 1285252429000000 1285254084000000
#657 task johnbywater ckan-v1.2 closed fixed Fix harvesting job entity get method to default to returning 'None' rather than raising an exception 1285252536000000 1285254068000000
#658 task johnbywater ckan-v1.2 closed fixed Fix harvest source entity get method to default to returning 'None' rather than raising an exception 1285252579000000 1285254072000000
#660 requirement dread closed invalid Check CKAN instance works

As an admin I want to check a CKAN instance works having just upgraded it or configured it.

1285348463000000 1311183115000000
#661 task dread ckan-v1.3 closed fixed Create CKAN site tester

From Rufus:

'blackbox' testing command (read-only only would be fine) -- very
useful for upgrade on sunday

On blackbox thinking of something like:

paster test-site http://hmg.ckan.net {package-name}

Or (maybe better):

paster test-site --site-spec {myconfig.json}

my-config is a json file with info for testing (could overload
--config rather than site-spec):

site-url: http://hmg.ckan.net/
package-name:
package-title:
...etc ...

Then:

Test front-page
Test /revision/
Test /package/{page}  -- check title
Test /package/history
Test /api/rest/package/ ...
Test /api/search/package ...
etc
1285348558000000 1288271266000000
#666 requirement johnbywater ckan-v1.2 closed fixed The system shall support updating packages from new versions of previously harvested dataset or service metadata 1285590374000000 1288013526000000
Note: See TracReports for help on using and creating reports.