{22} Trac tickets (2647 matches)

Results (2201 - 2300 of 2647)

Id Type Owner Reporter Milestone Status Resolution Summary Description Posixtime Modifiedtime
#2783 enhancement shevski closed wontfix Way to generate homepage backgrounds for demos/ckan hosted

Really we want this for CKAN Hosted & for creating demos.

Currently we're using http://leaflet.cloudmade.com/ - but by finding the area & taking screenshots. Would be better to interate with the app so that: a) this happens automatically and b) correct attribution will be visible on maps

1343812931000000 1343818702000000
#2787 enhancement toby aron.carroll demo phase 5 closed fixed Ensure templates_legacy directory is loaded for extensions

Currently the stats plugin has a template and templates_legacy directory. We need to ensure that the templates in templates_legacy are loaded.

1343827782000000 1344543473000000
#2789 enhancement aron.carroll toby demo phase 3 closed fixed logo fixups

With the text logo I'd like the tag line to be under the site name so some css like

float:left;clear:left;font-size:13px;line-height:0.1;

Also the site name can be larger if no tagline

commit daac54dbd856 I've added a new global g.header_css that sets the hgroup class to

'header-image' 'header-text-logo' 'header-text-logo-tagline'

I think maybe we should also have 'header-image-css' for the equivalent of the class="logo" in the link to allow/stop the image replacement

1343835141000000 1343835904000000
#2791 enhancement aron.carroll toby demo phase 3 closed fixed Logo fix

@aron

We should be able to have longish tag lines that look ok currently they wrap and stop the logo text being clickable

Can we have white-space:nowrap; for the tagline so long ones don't wrap and maybe look at aligning long ones

1343895034000000 1343906891000000
#2792 enhancement aron.carroll toby demo phase 3 closed fixed dropdown fixes - open correctly

http://s031.okserver.org:2375/ language dropdown expands downwards it should open upwards

select2 can do this see http://ivaynberg.github.com/select2/#documentation can you see if we can get this in ckan demo

1343895296000000 1343901501000000
#2793 enhancement toby ross demo phase 3 closed fixed Markdown of resource page not rendered as markdown

As per #2650 (on master/1.8 now)

If the resource has a description it isn't rendered as markdown ..

1343896663000000 1343897811000000
#2794 enhancement aron.carroll toby demo phase 3 closed fixed top buttons missing on edit resource

http://s031.okserver.org:2375/dataset/resource-markdown/resource_edit/ba1b094d-697c-47c4-a72a-6c2557da5409

should have back to resource as a minimum

1343897926000000 1343903064000000
#2797 enhancement aron.carroll toby demo phase 3 closed fixed plain_textarea styling

http://localhost:5000/ckan-admin/config uses a plain (non markup) textarea for custom css

I've added form macro plain_textarea to provide one, however it renders without a bottom border due to markup textarea styling can you fix this - thanks

1344000422000000 1344250973000000
#2798 enhancement toby toby demo phase 4 closed fixed Admin Config reset

this want to

a) be a link on the left of the form like deletes

b) needs a confirm like delete

c) wants to work with the autoform

1344012605000000 1345540010000000
#2799 enhancement toby aron.carroll demo phase 3 closed fixed Translations for demo not picking up {% trans %} blocks

Also they seem to be missing the odd _() block. Such in the new package form.

https://github.com/okfn/ckan/blob/2375-demo-theme-development/ckan/templates/package/snippets/package_form.html#L44

1344243005000000 1344249253000000
#2800 enhancement aron.carroll shevski demo phase 5 closed worksforme tooltip on popular datasets with number of views

be good to do this in phase 3

1344243925000000 1344544461000000
#2801 defect aron.carroll shevski demo phase 3 closed fixed no way to see full description of a related item

e.g. see here: http://s031.okserver.org:2375/apps same with related page on a dataset

1344245809000000 1344531016000000
#2802 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Need to tweak the JSON formatting of the localisations

This is what we need the JSON to look like. Taken from the Jed documentation (http://slexaxton.github.com/Jed/).

{

      // The empty string key is used as the configuration
      // block for each domain
      "" : {
        // Domain name
        "domain" : "the_domain",

        // Language code
        "lang" : "en",

        // Plural form function for language
        "plural_forms" : "nplurals=2; plural=(n != 1);"
      },

      // Other keys in a domain contain arrays as values
      // that map to the translations for that key.
      // Gettext suggests that you use english as your keys
      // in case the key isn't found, and it can just pass
      // the value directly through.
      // Note: by convention, the 0-index location of the translations
      // is never accessed. It's just a thing, I guess.
      "a key" : [ null, "the translation", "the plural translations", ... ],

      // The plural form string is converted into a function
      // and the value that's passed into the gettext call
      // is passed into the plural form function. It's result
      // (plus 1) is the index that the translation comes from.

      // We're using sprintf interpolation on our keys so we can
      // then sub in the _actual_ values into the result.
      "%d key" : [ null, "%d key", "%d keys" ],

      // Contexts are keys that are just prefixed with a context string
      // with a unicode \u0004 as the delimiter.
      // You can use it for anything. Usually it's just for being content aware
      // in some way (e.g. male vs. female, product vs. category)
      "context\u0004%d key": [ null, "context %d key", "context %d keys" ]
    }

This looks like an appropriate python library to do the formatting. http://pypi.python.org/pypi/pojson/ but I'll leave to your discretion.

Finally an API endpoint that returns the appropriate request would save us making requests to the i18n directory.

/api/i18n/{locale}

For example if the current url is http://localhost:5000/pl/dataset then the client would request:

http://localhost:5000/api/i18n/pl

This should return the Content-Type: application/json and a 200 with an appropriate JSON body (this can be the language requested or an appropriate fallback). I think that if the fallback is the default language (in most cases English) then we just return a 204 No Content to save data.

1344248847000000 1344269446000000
#2803 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Convert all JS translations to use keywords 1344251817000000 1344256274000000
#2804 enhancement aron.carroll shevski demo phase 3 closed fixed please make download button blue

on resource pages (e.g. http://s031.okserver.org:2375/dataset/afghanistan-election-data/resource/f6331f99-51f6-44d9-95b9-b20f3b74f360), same as old ckan for continuity and to highlight!

1344252255000000 1344269865000000
#2805 enhancement seanh toby closed fixed zh_TW has no Plural-Forms

the .po file for zh_TW does not contain Plural-Forms which breaks the i18n JavaScript? Extractions for ckan-demo.

I've added the following which may or may not be correct - from web search "Plural-Forms: nplurals=1; plural=0\n"

I suspect it will get overwritten when translations are pulled from transiflex so passing to you as you are the expert in that realm

1344253863000000 1344254760000000
#2806 enhancement johnmartin shevski demo phase 4 closed fixed way to read full group description

e.g. currently no way to read full description for the 'data explorer examples' group here:http://s031.okserver.org:2375/group/data-explorer

Can we add a 'read more' link that expands and contracts the sidebar box or similar?

1344254292000000 1352206005000000
#2807 enhancement aron.carroll toby demo phase 3 closed fixed autocomplete.js error

@aron,

edit dataset has a js error

http://localhost:5000/dataset/edit/1-kmwaterfractionfromnationaltopographicdatabasemapscanada

TypeError?: options is undefined [Break On This Error]

this.lookup(options.term, options.callback);

autocomplete.js (line 231)

1344266228000000 1344270190000000
#2808 enhancement aron.carroll toby demo phase 3 closed fixed Confirm delete dialog badly placed on small screen

If you make your browser window short - say half screen height on a page with delete eg http://localhost:5000/dataset/edit/1-kmwaterfractionfromnationaltopographicdatabasemapscanada

the dialog box is partially off the screen - it should try to stay on screen

1344333474000000 1345023693000000
#2809 enhancement aron.carroll toby demo phase 3 closed fixed _ not defined for modules

eg on confirm delete

http://localhost:5000/zh_TW/dataset/edit/1-kmwaterfractionfromnationaltopographicdatabasemapscanada

_(....) gives [object Object] not translation

1344335863000000 1344347814000000
#2811 defect seanh ckan-v1.8 closed fixed Author doesn't show on dataset read page

Edit a dataset and add an author, dataset read page still says 'author not given'. If you fill out both the author and author email fields then it works.

1344415861000000 1349869110000000
#2812 enhancement toby markw demo phase 3 closed invalid Groups description needs improving

The 'What are Groups?' text at <http://demo.ckan.org/group> is a bit naff. Here is a suggested replacement:

What are groups?

Groups allow you to group users and data together so that they are easier to manage. For example datasets in a group could be visible only to group members, or publicly visible but only editable by group members.

Groups can be used to collect together datasets from a single publisher, or related to a particular project, for example.

1344419953000000 1344524290000000
#2816 enhancement toby toby ckan-v1.8 closed fixed DomainObjectOperation not in model

Over-enthusiastic removal of some model items

this breaks qa extension

1344496621000000 1345040471000000
#2817 defect danieljohnlewis demo phase 5 closed worksforme Item Type Reverts on Invalid URL

Problem: When creating a related item, if you put in a invalid URL it loses the choice of Item Type (e.g. Visualisation, Application) and reverts to the first time (API). Expected: It remembers which one was chosen

1344504076000000 1344544901000000
#2819 defect danieljohnlewis demo phase 5 closed worksforme Related Item Summary of Descriptions Markdown Issue

Problem: When creating a related item it mentions that you can use markdown in the description, however markdown doesn't render in apps page nor in related items page. Expected: Make shortened descriptions (on apps page & related items page) render markdown

1344504321000000 1344545479000000
#2824 defect danieljohnlewis demo phase 4 closed fixed Multiple of the same Flag Issues

There is some bizarre language flag issues. 1) Log in to http://s031.okserver.org:2375/ (I'm logged in as danieljohnlewis) 2) Visit the apps page: http://s031.okserver.org:2375/apps 3) Have a look at the languages drop down, flags look fine (although Deutsche does have an EU flag rather than the German flag.. but that's irrelevant) 4) Change filters to, say, type: Application and sort: Newest, and apply. Web address becomes: http://s031.okserver.org:2375/apps?page=1&type=application&sort=created_desc 5) Look at the languages drop down: Flags are largely incorrect, with more than one country having the same flag.

Please see the attached screenshot.

Note: this was originally tested with Google Chrome on Linux (Ubuntu).

1344505215000000 1344532640000000
#2825 defect danieljohnlewis demo phase 5 closed fixed Loss of URL encoding on language change on apps page

Problem: On /apps page if you start in one language, filter the data, and then change languages it loses the correct format for the HTTP Get Parameters (and therefore loses the filters). Example, start in English language, change filter settings to to Application and Newest, change language to German. Expected: Retain correct format for HTTP Get Parameters so that the filter settings are retained. Solution will involve not turning "=" into "%3D" in the URL, i.e. turn off URL encoding.

1344505317000000 1344547172000000
#2826 defect toby danieljohnlewis demo phase 3 closed fixed Null group image

Problem: Example group ( http://s031.okserver.org:2375/en/group/example-group ) has a broken image, image not found. Link either incorrect, or no image set, if no image set then shouldn't it show a default image? Expected: There should be an image.

1344505546000000 1344528004000000
#2827 defect danieljohnlewis demo phase 4 closed fixed View Item - RSS Feed Issues

Problem: Server Error (HTTP Code 500) when trying to see information related to an RSS feed... example: http://s031.okserver.org:2375/en/dataset/testerisation/resource/974df29e-77bb-4b5e-982c-cb7a295c1923 Expected: A page that looks a bit more like this: http://s031.okserver.org:2375/dataset/epims-lod2/resource/97531bd8-e75c-4efa-bfa2-bb51d0ba90d0

1344505590000000 1344549139000000
#2832 enhancement shevski demo phase 4 closed duplicate can't add a dataset to more than one group

add to groups is a drop down menu where you can only choose one needs a new UI & logic allowing user to add new groups & potentially remove from other lists

1344521472000000 1344542984000000
#2836 enhancement toby toby demo phase 3 closed fixed Need extra info for forms

like we have on the form here

http://s031.okserver.org:2375/harvest/new

you said it partly exists so maybe I just need some training

1344605931000000 1345023663000000
#2837 enhancement aron.carroll toby demo phase 3 closed fixed checkbox styling

Is this done I know checkboxes are a pain but it looks a bit out of place compared to the other items.

1344605993000000 1344851271000000
#2839 enhancement seanh ckan-v1.8 closed fixed Specifying sort order breaks search results on group page

Create a group, create some datasets and add them to the group, then view the group's page with a sort-order specified in the URL, e.g. /group/foo?q=&sort=title_string+asc, no datasets are displayed even though there are datasets in the group that match the search query. Remove the sort order from the URL and the datasets will appear.

1344787799000000 1344854522000000
#2840 enhancement aron.carroll toby demo phase 3 closed fixed tag line styling

@aron

Is it possible to get the tagline text to float the other way

at the moment we have

...........Title Tag line to here

I'd like

...........Title ...........Tag line to here

is this possible or too much pain

based partly on this comment Markw wrote

A minor problem visible on the home page <http://s031.okserver.org:2375/> and other pages, when viewing in both Chrome and Firefox:

if the browser width is not very wide, the tag line 'Open source data portal' vanishes off the *left* hand side of the screen. For some reason the browser doesn't even recognise this with a horizontal scroll bar (as it does when stuff is off the *right* hand side) - it just chops off the text.

1344851307000000 1344852538000000
#2841 enhancement aron.carroll amercader demo phase 3 closed fixed Slug generation fails on demo dev

On the add dataset form, slug generation fails with JS error:

Uncaught TypeError: Object [object Object] has no method 'incompleteFormWarning'    basic-form.js:5
1344855653000000 1344857415000000
#2842 enhancement seanh ckan-v1.8 closed fixed Allow sort ordering of dataset listings on group pages 1344855695000000 1344855852000000
#2843 defect seanh seanh ckan-v1.8 closed fixed Adding existing datasets to organizations is broken

On the organization read page there is only an 'Add Dataset' button, not a drop-down with add new dataset or add existing dataset as on the default group page.

On the organization edit page you do have the drop-down, but if you click add existing dataset nothing happens except it appends #datasets to the URL

1344859137000000 1347270569000000
#2845 defect seanh seanh ckan-v1.8 closed fixed Editing an organization removes all datasets from the organization

Run CKAN with the publisher profile and organizations plugins enabled. Make an organization. Make a dataset and add it to the organization. Edit the organization and change e.g. its description. After saving the organization, all its datasets have been removed from the organization and now belong to no organization.

1344859286000000 1347271110000000
#2847 defect toby shevski demo phase 3 closed fixed 'show inactive sources' checkbox displaying incorrectly

On harvest page: http://s031.okserver.org:2375/harvest the checkbox appears above the text and not clear what it refers to/

Beter to relocate to the left (as on publicdata.eu) see screenshots attached.

1344864322000000 1345023769000000
#2848 defect toby shevski demo phase 3 closed fixed no dataset descriptions on front page

http://s031.okserver.org:2375/

1344938505000000 1344947085000000
#2849 defect toby shevski demo phase 4 closed fixed header tagline misalighned

should be left alighned, not right aligned. Otherwise tag line disappears left off the page.

See: header here: http://s031.okserver.org:2375/ckan-admin/config

1344938638000000 1344947130000000
#2852 enhancement toby shevski demo phase 3 closed fixed better message for trying to refresh inactive sources in harvest

Currently if you try to refresh (i.e. schedule the harvester to re-run) an inactive source (one who's state is 'withdrawn' - e.g. http://s031.okserver.org:2375/harvest/3feea629-32d8-4431-9957-9f31d32864f1)

you get the error message: "An error occurred: [Can not create jobs on inactive sources]"

This could be better and not red, e.g. and info box (maybe yellow) saying that "Cannot re-run harvesting on inactive sources. Please first change the status to 'active'"

1345048317000000 1345106515000000
#2853 enhancement toby shevski demo phase 3 closed fixed unclear error message in refreshing harvest source

Tried to refresh the datagm harvest source to get error message:

"An error occurred: [There already is an unrun job for this source]"

This is unclear and not sure why it created an error. We should have something informative such as "A harvest has already been scheduled for this source"

Do we have a date/time for when this has been scheduled that we can display?

1345048482000000 1345104231000000
#2855 defect shevski shevski demo phase 3 closed fixed language box no longer functional

e.g. tried changing the lang here: http://s031.okserver.org:2375/ to no effect. Doesn't work on any other pages either. Flags have also dissappeared

1345049152000000 1345104178000000
#2856 defect toby shevski demo phase 3 closed fixed server error when clicking on deleted app link
  1. go to http://s031.okserver.org:2375/user/okfn
  2. Click on activity stream
  3. Click on 'Deletion test' related item that's linked to in entries 1 & 2
  4. Server error
1345049684000000 1345107503000000
#2858 enhancement toby toby demo phase 3 closed fixed Harvester tweaks

I've had a look at the new harvesting theme, it looks great, thanks. I did some minor changes and reworded the errors as per tickets #2852 and #2853, but I kept the messages red, as the only other ones available ("flash_notice") are blue and are not very prominent.

Toby, on the old form there was a list of descriptions for all available harvesters which could be nice to have back. I couldn't find an easy way with the new form macro, so I don't know how easy would be to implement

http://i.imgur.com/pzS8z.png

1345103198000000 1345105842000000
#2860 enhancement toby shevski demo phase 3 closed fixed target blank link in qa report

can we get the link going to an explanation of the 5 star system on page http://s031.okserver.org:2375/qa/dataset/five_stars to open in new tab? it's leaving demo all together so better to open in new tab than navigate away

1345113826000000 1345120404000000
#2864 defect toby shevski demo phase 4 closed fixed don't show `create one now` message on other's user pages

e.g. I can see 'You haven't created any datasets. Create one now?. ' http://s031.okserver.org:2375/user/kindly when logged in as shevski

1345114552000000 1345471138000000
#2865 enhancement ross ross closed fixed 1.8 unicode error

URL: http://thedatahub.org/el/tag/jutatt%C3%A1sok 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:155 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:131 in call << r'\1', oldpath)

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:239 in call << try:

res = WSGIController.call(self, environ, start_response)

finally:

model.Session.remove()

res = 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.environpylons.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.template:30 in view << """

try:

return render(url)

except TemplateNotFound?:

if url.endswith('.html'):

return render(url)

Module ckan.lib.base:153 in render << try:

return cached_template(template_name, render_template,

loader_class=loader_class)

except ckan.exceptions.CkanUrlException?, e:

raise

loader_class=loader_class)

Module pylons.templating:249 in cached_template << return content

else:

return render_func()

return render_func()

Module ckan.lib.base:95 in render_template << template = globsapp_globals?.genshi_loader.load(template_name,

cls=loader_class)

stream = template.generate(globs)

cls=loader_class)

Module genshi.template.loader:223 in load << loadfunc = directory(loadfunc)

try:

filepath, filename, fileobj, uptodate = loadfunc(filename)

except IOError:

continue

filepath, filename, fileobj, uptodate = loadfunc(filename)

Module genshi.template.loader:286 in _load_from_directory << def _load_from_directory(filename):

filepath = os.path.join(path, filename) fileobj = open(filepath, 'U') mtime = os.path.getmtime(filepath) def _uptodate():

fileobj = open(filepath, 'U')

UnicodeEncodeError?: 'ascii' codec can't encode character u'\xe1' in position 73: ordinal not in range(128) CGI Variables CKAN_CURRENT_URL '/el/tag/jutatt%C3%A1sok' CKAN_LANG 'en' CKAN_LANG_IS_DEFAULT True CKAN_PAGE_CACHABLE True CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/el/tag/jutatt\xc3\xa1sok' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/el/tag/jutatt\xc3\xa1sok' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '49520' REQUEST_METHOD 'GET' REQUEST_URI '/el/tag/jutatt%c3%a1sok' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345113298.778472, '_creation_time': 1345113298.778472} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.registry <paste.registry.Registry object at 0x7f5309add610> paste.throw_errors True pylons.action_method <bound method TemplateController?.view of <ckan.controllers.template.TemplateController? object at 0x7f52b0ea2d10>> pylons.controller <ckan.controllers.template.TemplateController? object at 0x7f52b0ea2d10> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52b0ea2b90> pylons.routes_dict {'url': u'el/tag/jutatt\xe1sok', 'action': u'view', 'controller': u'template'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f531296ea10> routes.url <routes.util.URLGenerator object at 0x7f5309add810> webob._parsed_query_vars (GET([]), ) 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 0x7f52d4004990> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f5309add810>, {'url': u'el/tag/jutatt\xe1sok', 'action': u'view', 'controller': u'template'})

1345114613000000 1346670331000000
#2866 enhancement ross ross closed fixed 1.8 template error

URL: http://thedatahub.org/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%3Db4c2d03fa8 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:155 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:131 in call << r'\1', oldpath)

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:239 in call << try:

res = WSGIController.call(self, environ, start_response)

finally:

model.Session.remove()

res = 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.environpylons.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.user:409 in perform_reset << c.reset_key = request.params.get('key')

if not mailer.verify_reset_link(user_obj, c.reset_key):

h.flash_error(_('Invalid reset key. Please try again.')) abort(403)

if not mailer.verify_reset_link(user_obj, c.reset_key):

Module ckan.lib.mailer:100 in verify_reset_link << if not user.reset_key or len(user.reset_key) < 5:

return False

return key.strip() == user.reset_key

return key.strip() == user.reset_key

AttributeError?: 'NoneType?' object has no attribute 'strip' CGI Variables CKAN_CURRENT_URL '/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%253Db4c2d03fa8' CKAN_LANG 'it' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/it/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d' QUERY_STRING 'key%3Db4c2d03fa8' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '54634' REQUEST_METHOD 'GET' REQUEST_URI '/it/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%3Db4c2d03fa8' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345066159.520708, '_creation_time': 1345066159.520708} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.parsed_dict_querystring (MultiDict?([('key=b4c2d03fa8', )]), 'key%3Db4c2d03fa8') paste.parsed_querystring ([('key=b4c2d03fa8', )], 'key%3Db4c2d03fa8') paste.registry <paste.registry.Registry object at 0x7f52eba637d0> paste.throw_errors True pylons.action_method <bound method UserController?.perform_reset of <ckan.controllers.user.UserController? object at 0x7f52e49f7a50>> pylons.controller <ckan.controllers.user.UserController? object at 0x7f52e49f7a50> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52f5649ad0> pylons.routes_dict {'action': u'perform_reset', 'controller': u'user', 'id': u'3086e91c-fe09-4a98-92e1-19de67a9ac9d'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312961ad0> routes.url <routes.util.URLGenerator object at 0x7f52de7f6390> webob._parsed_query_vars (GET([('key=b4c2d03fa8', )]), 'key%3Db4c2d03fa8') 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 0x7f52fc4f1a08> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52de7f6390>, {'action': u'perform_reset', 'controller': u'user', 'id': u'3086e91c-fe09-4a98-92e1-19de67a9ac9d'})

1345114641000000 1346670324000000
#2868 enhancement ross ross closed fixed 1.8 SOLR error

From: <thedatahub.org@…> Date: Wed, Aug 15, 2012 at 8:34 AM Subject: WebApp? Error: <class 'ckan.lib.search.common.SearchError?'>: SOLR returned an error running query: {'sort': 'metadata_modified desc', 'fq': u'groups:"welcome" capacity:"public" +site_id:"www.ckan.net" +state:active', 'facet.mincount': 1, 'rows': 21, 'facet.limit': '50', 'facet': 'true', 'q': '*:*', 'start': -20, 'wt': 'json', 'fl': 'id data_dict'} Error: "'start' parameter cannot be negative" To: ckan-sysadmin@…, kindly@…

URL: http://thedatahub.org/feeds/group/welcome.atom?page=0 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:155 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:131 in call << r'\1', oldpath)

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:239 in call << try:

res = WSGIController.call(self, environ, start_response)

finally:

model.Session.remove()

res = 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.environpylons.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.feed:180 in group << data_dictfq? = 'groups:"%s"' % id

item_count, results = _package_search(data_dict)

navigation_urls = self._navigation_urls(params,

item_count, results = _package_search(data_dict)

Module ckan.controllers.feed:57 in _package_search << # package_search action modifies the data_dict, so keep our copy intact.

query = get_action('package_search')(context, data_dict.copy())

return querycount?, queryresults?

query = get_action('package_search')(context, data_dict.copy())

Module ckan.logic.action.get:1130 in package_search << query = search.query_for(model.Package)

query.run(data_dict)

for package in query.results:

query.run(data_dict)

Module ckan.lib.search.query:350 in run << except SolrException?, e:

raise SearchError?('SOLR returned an error running query: %r Error: %r' %

(query, e.reason))

try:

data = json.loads(solr_response)

(query, e.reason))

SearchError?: SOLR returned an error running query: {'sort': 'metadata_modified desc', 'fq': u'groups:"welcome" capacity:"public" +site_id:"www.ckan.net" +state:active', 'facet.mincount': 1, 'rows': 21, 'facet.limit': '50', 'facet': 'true', 'q': '*:*', 'start': -20, 'wt': 'json', 'fl': 'id data_dict'} Error: "'start' parameter cannot be negative" CGI Variables CKAN_CURRENT_URL '/feeds/group/welcome.atom?page%3D0' CKAN_LANG 'ja' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/feeds/group/welcome.atom' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/ja/feeds/group/welcome.atom' QUERY_STRING 'page=0' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '33139' REQUEST_METHOD 'GET' REQUEST_URI '/ja/feeds/group/welcome.atom?page=0' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345016040.884951, '_creation_time': 1345016040.884951} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.parsed_dict_querystring (MultiDict?([('page', '0')]), 'page=0') paste.parsed_querystring ([('page', '0')], 'page=0') paste.registry <paste.registry.Registry object at 0x7f5302eef7d0> paste.throw_errors True pylons.action_method <bound method FeedController?.group of <ckan.controllers.feed.FeedController? object at 0x7f52f0341750>> pylons.controller <ckan.controllers.feed.FeedController? object at 0x7f52f0341750> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52f0341450> pylons.routes_dict {'action': u'group', 'controller': u'feed', 'id': u'welcome'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312961e90> routes.url <routes.util.URLGenerator object at 0x7f52f0341210> webob._parsed_query_vars (GET([('page', '0')]), 'page=0') 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 0x7f52ed4873f0> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52f0341210>, {'action': u'group', 'controller': u'feed', 'id': u'welcome'})

1345114696000000 1345124503000000
#2871 defect shevski demo phase 3 closed fixed user profile about text does not show up

tested with my http://s031.okserver.org:2375/user/shevski and daniel's account. I have added about text and yet see ' Irina Bolychevsky

You have not provided a biography.'

The about text is saved (and viewable on the edit form itself) but does not show on profile

1345114953000000 1345121991000000
#2872 defect seanh ckan-v1.8 closed fixed Non-open licenses are marked as open

Set a dataset's license to 'Other (Not Open)', the dataset will have an Open Data icon next to it

1345124135000000 1350304179000000
#2875 enhancement toby demo phase 4 closed fixed Fanstatic css issues

Fanstatic does not support

@import ...

relative imports for images etc

need to get a fix for these asap

1345208199000000 1345214469000000
#2876 enhancement toby toby demo phase 4 closed fixed Admin Config changes are not forced

need to make sure these update everywhere when done

1345208451000000 1345470265000000
#2878 enhancement icmurray ross ckan 2.0 closed wontfix Roles and Permissions for Organisations

As part of merging Organisations into core, it is necessary that we clarify the capacity field with which the users/datasets are added as members to the group 'subclass'.

Rather than the capacity being an opaque string that implies auth but doesn't clearly specify it, we will use role names where roles are defined in the database - with a clearly defined set of standard roles. The Role table is expected to have simply a string name/representation and acts as a container for permissions.

Each permission is a string of the form object.action (such as package.add, group.delete) of which several are expected to be associated with a role. This means the permission table will contain a string and a reference to the role.

This work will require UI changes to the screens allowing users to be added to a group/organisation so that the list of available roles is available to add those users.

[x] Model for Role and Permission

[ ] Logic layer changes for managing roles/permissions etc.

[ ] Determine default roles, perhaps just admin/editor/viewer

[ ] Fix the auth layer to use the permissions/roles - may be better implemented as another ticket.

1345466266000000 1350561906000000
#2879 enhancement ross ross ckan 2.0 closed wontfix Datasets (Package) should have a 'public' field

The Package model should have a boolean field added to it describing its visibility beyond that supplied via auth.

The related permission for viewing packages where public is set to False would be package.view (show, whatever), and *never* visible for unauthenticated users.

1345466389000000 1350562096000000
#2880 enhancement icmurray ross ckan 2.0 closed wontfix Datasets (Package) should have owners

Each dataset should have an explicit owner that is an organisation. This is the organisation that owns the dataset* and will be used for specifying who can move a dataset out of the default organisation.

This should probably be a foreign key link from dataset to organisation (or rather group).

  • Currently this won't necessarily be the organisation that the dataset is a member of, but it is likely that this will be the case initially (at least until someone moves it to another organisation).
1345466535000000 1350561968000000
#2903 enhancement johnmartin johnmartin demo phase 5 closed wontfix Two search boxes

I think the architecture on the search page is a bit odd. Not sure I like that there is a doubling up of the search box (e.g. one in the header and one in the body of the search results page)

Needs some thought

1346853712000000 1352206813000000
#2907 enhancement johnmartin johnmartin demo phase 5 closed fixed Demo header

The user login / avatar with in the header really should be within another topbar, as it goes against convention to have the user information within the normal header.

1346930925000000 1352206307000000
#2916 enhancement johnmartin ross ckan 2.0 closed fixed User management in orgs needs autocomplete

The user management in organizations ( http://localhost:5000/organization/users/NAME ) should autocomplete names in the dropdown box so that only valid usernames are added to the table.

1347451792000000 1347970727000000
#2918 enhancement johnmartin ross ckan 2.0 closed fixed Can't remove users from organizations

When you remove someone, without adding them, the text box at the bottom (which should probably autocomplete) is empty, and this causes problems on the server.

Ideally when you add a user (select from the autocomplete) it would add another row to the table, defaulting the user to editor and setting the names to user{{X}}name and user{{X}}capacity where X is $('tr').size()

1347455572000000 1347970735000000
#2930 defect seanh ckan-v1.8.1 closed fixed convert_from_extras() returns qupted strings from API

Use an IGroupForm plugin to add a custom metadata field to groups using convert_to_extras() and convert_from_extras(), when calling group show the value comes back quoted, e.g. '"my_value"'

Should add tests to example_igroupform and others that setting and getting the custom fields works through the action API.

1347639864000000 1361988592000000
#2935 enhancement kindly kindly ckan 2.0 closed fixed Make recline work with new datastore 1348042459000000 1350578067000000
#2937 defect seanh ckan-v1.8 closed fixed GroupController.history() missing extras_as_string

GroupController?'s history() method doesn't pass 'extras_as_string': True in the context when it calls group_show. This means that if you have an IGroupForm plugin that is adding a custom metadata field and using convert_to/from_extras() then a field value of 'foo' will be returned as '"foo"'

Other GroupController? and PackageController? methods do pass 'extras_as_string'

1348155730000000 1348238875000000
#2940 enhancement johnmartin johnmartin ckan 2.0 closed fixed Edit different resources from edit dataset pag

We need a nice way to be able to get to editing the different resources that are associated to a dataset.

1348580812000000 1350560926000000
#2941 enhancement johnmartin johnmartin ckan 2.0 closed fixed Add follower support back into CKAN 2.0

Add the views and functionality of following users and groups into 2.0

1348584670000000 1350560915000000
#2942 defect dread dread closed wontfix API POST barfs on interesting Content-Type headers

When POSTing to the API, if specified, the 'Content-Type' header must be blank or 'application/x-www-form-urlencoded'. Otherwise we get an error like: "Bad request - JSON Error: Could not extract request body data: Bad content type: \'; charset=utf-8\'""

The problem is that this is a very reasonable header to send. Indeed requests 0.14 sends this particular header.

This affects all versions of CKAN.

This is due to webob/requests.py:1248 being pretty basic.

1348593156000000 1348611144000000
#2946 enhancement dominik closed duplicate Pdf preview does not load in IE

The pdf preview does not load in IE 9.

1349090873000000 1349090992000000
#2950 requirement icmurray ckan 2.0 closed fixed paster command to minify javascript and css

With the latest template, css and js changes in 2.0, there are a number of things that need preparation prior to a production deployment. One of these is:

  • the fanstatic_resources defined in ckan/lib/fanstatic_resources.py (bottom of module) should be prepared, and minified.

This ticket is to:

  • provide a paster command which when run will generate the minified javascript as css files.
  • stop the auto-minification of files when CKAN starts up.
  • remove reference to the minified files in the .gitignore file.
  • add instruction to the release process to run this command, and check-in the minified files to the repo.

## Background

Currently, minification works seamlessly without the need for any preparation when CKAN is started in a development setup. But on a production site, the webserver will (almost certainly) not have write-access to the directories that will contain the minified files. And so the minification will fail, and the site will end up serving the un-minified media, or even *old* minified media.

One way around this would be to allow webserver write access to the directory its serving out of. But this is not generally considered good practice.

Another method would be to distribute the minified files with CKAN. This ticket describes how to do this without causing a lot of noise in the commit history of the repo.

The auto-minifcation occurs when importing ckan/lib/fanstatic_resources.py.

## Changing the process slightly

The reason for moving away from auto-minifying files at start-up, to minifying files when running a paster command is:

  • we should be distributing the minified files when we make a release (as we do with translation files). This makes it easier to install CKAN from source.
  • if we distribute the minified files, then they need to be checked-in to the repo.
  • if they are auto-minified, whenever small changes are made, then this will create a lot of noise in the repo. It will be clearer to have the minified-files generated manually as part of the release process. (Or whever we make a deployment internally).
1349118376000000 1349189654000000
#2953 defect dominik closed fixed Server error in template directories

If you go to: /{any template dir} for example /home or /related, a Server errror occurs.

IOError: [Errno 21] Is a directory: u'/../venv/src/ckan/ckan/templates/home'

1349252920000000 1349257893000000
#2954 enhancement johnmartin johnmartin ckan 2.0 closed fixed Flickering on resource view when changing between views

From the google doc: When I move between grid, graph and map view mode (or click on filters) the whole data explorer flickers (jumps up & down slightly) for a few moments before settling. This is happening on all resources for me and when you initially open launch the page: http://demo.ckan.org/dataset/afghanistan-election-data/resource/f6331f99-51f6-44d9-95b9-b20f3b74f360. Only in Chrome, working fine in Firefox.

1349268916000000 1350578030000000
#2955 defect dominik dominik ckan 2.0 closed fixed Recline should be updated 1349270534000000 1350577952000000
#2980 enhancement seanh ckan 2.0 closed wontfix Add new groups and organizations functionality into legacy templates

From Toby: add the functionality to legacy templates

1350297883000000 1350560252000000
#3004 defect seanh ckan 2.0 closed fixed ImportError: No module named polib

This is happening whenever people try to run paster commands. polib should only be needed for the check-po-files command don't import otherwise.

1350907790000000 1361988802000000
#3008 enhancement seanh ckan 2.0 closed fixed Add tests for dashboard activity stream auth

We need to test that only logged in users can see their own dashboard activity streams, and they can only see their own dashboard activity streams not those of other users.

1351600860000000 1355141103000000
#3009 enhancement seanh seanh ckan 2.0 closed fixed On-site notification of new dashboard activity

We want a "bubble" with a number in it to appear in the top-right of the site next to your user name when you're logged in, telling you how many new activity stream items you have in your dashboard activity stream.

There's a github issue for this here:

https://github.com/okfn/ckanext-pdeu/issues/11

1351615762000000 1353949938000000
#3015 enhancement johnmartin johnmartin ckan 2.0 closed invalid Dropdowns don't work without JavaScript

Essentially the default bootstrap dropdowns don't work properly without JavaScript? which is a little bit of an issue with JS not working.

1352805553000000 1353410072000000
#3022 defect amercader amercader ckan 2.0 closed fixed setup_template_variables method of IDatasetForm never called

On the package controller the package_type is not passed to the lookup function, so the setup_template_variables defined on the extensions is never called

1353602743000000 1358254781000000
#3024 enhancement seanh closed fixed Add activity stream tab to dataset read page 1353949986000000 1355141087000000
#140 enhancement rgrp ckan-backlog new News section on front page

Have a news section (suggest as a sidebar item).

News section will link to latest 3/4 blog posts on CKAN from blog.okfn.org.

Details:

  • Suggest pulling via rss or similar.
  • Will want to cache this ...

Cost: 4h?

1254902541000000 1265625159000000
#331 enhancement rgrp ckan-backlog new Timezone of CKAN timestamps should be configurable

Revisions are timestamped using the server's clock, which may not relate to the expected timezone for the site. e.g. the Norway site has a server on GMT. No timezone info is displayed either.

Would like to set timezone for a CKAN instance to use in rendering revision timestamps. For example, use CET or EST timezone.

1275302440000000 1339774701000000
#351 enhancement dread ckan-backlog new Homepage: list new, updated and 'hot' packages

Have a simpler list of exciting data, as opposed to the big revision list.

For example:

Hot data
===========

New packages: package1, package2, package3
Updated resources: package1, package2, package3
Popular packages: 
1276595816000000 1339774677000000
#369 enhancement shudson@… ckan-backlog new "Package Listing Key" should appear on Tag results

Currently there's a nice legend titled "Package Listing Key" that appears in right side of "Browse Packages" results. The same key should show on other search results like when searching for a tag.

1279821634000000 1339774666000000
#370 enhancement shudson@… ckan-backlog new Use better email encryption for author_email and maintainer_email

The JavaScript? email encryption used is not very reassuring. Google's MailHide? is a much better solution that is easily implemented.

http://www.google.com/recaptcha/mailhide/

Check on the Mailhide API where there are even some Python libraries already built.

1279821819000000 1339774649000000
#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
#737 enhancement dread ckan-backlog new Markdown syntax summary page

I suggest we produce a quick Markdown cheat-sheet page, showing the key runes: e.g. create a title and quote some text. This page can link to the full Markdown docs for advanced users.

A user going to the Markdown docs that we link will have to read a couple of pages of the raison-d'etre of Markdown before he gets to the syntax. And it's not very easy to read, and being white on black it looks like proper geek stuff.

1287766749000000 1323170239000000
#811 defect cygri ckan-backlog new Extra field editing form layout breaks when there are long field names

The layout of the editing section for extra fields breaks when a field name is slightly too long. Field names jump over to the right. See http://ckan.net/package/edit/dbpedia for examples.

1289994812000000 1323170289000000
#812 defect cygri ckan-backlog new Package edit form only allows three extra fields

Rationale

The package edit form is restricted to three extra fields. To enter more than three fields, one has to save the package and hit edit again (or hit preview).

Implementation

A mechanism similar to the one for resources (where you can add lines as you go) would solve this. So, have a button that adds more extra field rows via JS. (Extra fields don't need up/down buttons that the Resource table has)

Nice to have: a blank field is added when you tab from the last filled-in field in the table.

1289995010000000 1311176917000000
#818 requirement cygri ckan-backlog new Rethinking the author and maintainer fields

The semantics of the Author and Maintainer fields are really unclear at the moment. This leads to very inconsistent usage. Also, perhaps Name and Email are not the only fields that are needed for a contact.

Here is a table that shows the current usage of these fields in CKAN: http://richard.cyganiak.de/2010/ckan/ckan-ppl.html

We note several problems:

  • Author and Maintainer are often the same
  • Author and Maintainer are often used interchangeably
  • People really want to specify URLs for the contacts and stick them into random places because there is no field for it
  • Multiple comma-separated names in a single field

I'm not sure what to do about this, but a redesign is necessary in my opinion.

Some ideas:

  • Remove the maintainer field?
  • Make really clear that Author doesn't refer to the metadata on CKAN, but to the original data
  • Add an “author URL” field?
1290003524000000 1339774621000000
#837 enhancement rgrp ckan-backlog new CKAN integration with freebase gridworks / google refine

Thread: http://lists.okfn.org/pipermail/ckan-discuss/2010-November/000718.html

Scenario 1

  1. User installs Refine and CKAN extension for refine
  2. On booting refine and asked to load data they can choose from any data package on CKAN.net (or any other CKAN instance)
  3. They edit the dataset on Refine
  4. On save (or perhaps as a separate option) they are prompted as to whether they wish to sync the dataset back to CKAN (either as a new package or as a new resource on the existing package)

NB: for the dataset sync back some form of "CKAN" storage would be required (we already have storage.ckan.net running but a closer integration would be required)

Scenario 2

  1. User visits a package on CKAN.net (or another CKAN instance)
  2. There is a button on the page "View and edit this dataset in Google Refine"
  3. Click button -- ask them if they have Google refine installed
    • Yes: instructions for loading dataset into refine
    • No: load dataset in hosted version of google refine (we could run this)
  4. User edits dataset and hits save. As in previous scenario they are prompted to sync the dataset.
1291140609000000 1339774605000000
#895 defect memespring ckan-backlog new Add version number (or simular) to css/js includes query string

Updates to css after a new deploy don't come through without a hard refresh. Adding the version number to the include urls will solve this e.g.

mycssfile.css?v=12345678

1294343382000000 1339774593000000
#924 enhancement dread ckan-backlog new Search box has no search button

The search box at the top-right of CKAN's page doesn't have a 'go' button. I feel that a larger percentage of users expect a 'go' or 'search' button on the right-hand side of the box to press to start searching. Techies tend to know the keyboard shortcut of pressing 'carriage-return' but it might be better to follow standard practise on this.

Examples with 'search' button: Internet Explorer, Firefox, Google, Amazon, trac Examples without: ?

1295867533000000 1323170436000000
#989 enhancement kindly pudo ckan-future new Extending the model from plugins

We need to support extending the model from plugins. This could involve:

  • Adding a plugin hook to extend the mapper
  • Adding an upgrade hook for plugin schema migrations
  • Documenting how this is to be done
  • Find a way to avoid conflicts
1297689724000000 1340034311000000
#1009 enhancement pudo rgrp ckan-backlog new Improvements to user accounts sytem
  • Forgot password (email a new password)
  • Confirm email
  • Do not show register page if you are logged in (redirect to home page)
  • ticket:1010 - listing of users.
    • Do not use /user for general user account home page (either user normal user page /user/{id} or /user/myaccount)
1298635991000000 1310128574000000
#1077 enhancement kindly rgrp ckan-backlog new Move to simpler vdm system

Option 1: 'Changeset' Model

See ticket:1135 for vdm ticket. This would involve a) moving to changeset in vdm b) doing the migration in ckan to support this.

Have developed a new "changeset" based model for revisioning in vdm.

Implementation

  • The main challenge with this change is schema and data migration

Every revisioned object has a revision_id and revision attribute.

Approximate algorithm:

Revision -> Changeset

for revtype in [PackageRevision, ...]:
    for pkgrev in package_revision:
        changeset = lookupchangeset(package_revision)
        ChangeObject(cset, (table, id), dictize(pkgrev))

Question:

  • does pkg include tags attributes or not? or we have to dictize, pkgrev, pkg2tagrev, and tag. Probably the latter.

Option 2: Simplify Revision Object Model

Just use a simpler vdm, see ticket:1136 (move to SessionExtension) and ticket:1137 (remove need for statefulness in vdm).

Discussion

Advantage of Option 1 versus 2:

  • Easier support for pending state and similar behaviour
  • No need to introduce new tables (and hence migrations) when making something revisioned (or not).

Disadvantages

  • Migration is required
  • More difficult to query revision history.
    • Could be addressed by having ChangeObject have separate cols for table name and id but would likely be more difficult.
  • Performance (?)
    • Have one big ChangeObject table to query when looking at changed objects rather than many revision tables.
      • Not sure this is a biggie as even with Revision model biggest revision object tables are probably on the order of the ChangeObject table

Conclusion

Implement Option 2 and leave Option 1 for present.

Option 1 includes Option 2 so it seems that that is required in either case (so we may as well with Option 2).

Option 1 requires significant effort (esp migration) so leave for present and then review the situation at some later date.

1302304464000000 1340034345000000
#1096 defect rufuspollock pudo ckan-future new [super] CKAN Hosted

Many users of CKAN want to have their own instance without much effort. Setting these up in separate places is a maintenance nightmare, we should much rather have some tenant separation in core CKAN. Some ideas:

  • introduce model.Site and c.site
    • site has: custom CSS, extra_template_path, title, languages list, package_form, group_form (all configured via web UI)
  • Subdomain detector to activate sites.
  • use site in Authorizer instead of System, have a NullSite? for global things
  • allow cross-site search
  • packages are in a list of sites, m:n rather than 1:n
    • list of sites is string-based, can contain sites not in site table to express harvested external material which is not editable locally.
1303235062000000 1339774484000000
#1101 enhancement sebbacon ckan-backlog new Integrate googlanalytics into site nav

There's a stats plugin (e.g. at http://trac.ckan.org/ticket/832).

Output from the googleanalytics plugin should append to that page, if the stats plugin is present.

Possibly the stats plugin and the googleanalytics plugin should be merged?

Finally, if the stats plugin is active, then a link to the stats page should be added to the main site footer.

1303393926000000 1339774582000000
#1120 enhancement tsm ckan-backlog new Atom feeds of each tag

Tags could/should have an Atom feed. This would mean that every edit to relevant packages could be easily monitored. See [1].

[1] http://lists.okfn.org/pipermail/ckan-discuss/2011-May/001162.html

1304309285000000 1339774568000000
#1134 CREP amercader ckan-backlog new CREP0003: Description and Configuration of Harvesters

Proposer: Adrià Mercader

Abstract

The new harvester interface allows to create harvesters for different sources, but right now harvesters don't have many ways to describe and configure themselves. We need a way of allowing them to:

  • Expose their type and other details so they can be used internally and on the UI.
  • Define configuration settings for particular harvester instances.

The Problem

Harvester description

The current UI for adding and editing harvest sources is the same used in ckanext-dgu, and thus the 3 harvester types used in DGU to harvest various GEMINI realted sources are hardcoded in the form. The form will be migrated to a DGU-independent one, so we need the harvesters to provide all the necessary data. There is a current get_type method that returns the harvester type, but for make it compatible with the DGU forms, it returns a machine-readable string (e.g. "CSW Server"), making it error prone.

Arbitrary configuration

In the current implementation, when the harvest process is started, ckanext-harvest looks for all the available plugins that implement the IHarvester interface and calls the appropiate methods for the current stage (gather_stage,fetch_stage,import_stage). At these stages, harvesters have no way of applying arbitrary configuration options, so all harvesters of the same type behave on the same way. For instance, the CKAN harvester needs a way to define the API version to use when harvesting remote instances (Right now, the version 2 is hardcoded on the code).

Specification

Harvester description

Harvesters will need to provide the following information so the UI form can be built:

  • name: machine-readable name (e.g. "waf"). This will be the value stored in the database, and the one used by ckanext-harvest to call the appropiate harvester.
  • title: human-readable name (e.g. "Web Accessible Folder (WAF)"). This will appear in the form's select box.
  • description: a description of what the harvester does (e.g. "A Web Accessible Folder (WAF) displaying a list of GEMINI 2.1 documents"). This will appear on the form as a guidance to the user.

The way to provide it will be an info method that all harvesters must implement, which will return a dictionary with the previous elements:

    {
        'name': 'csw',
        'title': 'CSW Server',
        'description': 'A server that implements OGC's Catalog Service 
                        for the Web (CSW) standard'
    }

Arbitrary configuration

As different harvesters will have very different needs, we need to provide a way to persist arbitrary configuration flags for each harvest source. The more flexible way given the current architecture in my opinion would be to store the configuration options as a JSON encoded object as a property of the harvest source (There already is an unused DB field called config in the database) (Maybe using JsonType??).

This will mean adding an extra field in the harvest source form to allow entering the configuration. This could be just a simple text field where users enter the JSON encoded object or a more clever mechanism (i.e an "Add a configuration flag" link that adds two new text fields for the key and value for each flag, and a mechanism to later build the JSON object). In any case, this should probably be hidden in an "Advance options" section.

Why do it this way

Harvester description

The info method would provide a single point to get all the information related to the harvester, and future properties could be added to the dictionary returned without having to modify the interface.

Arbitrary configuration

There is an already existing config field in the database, so we won't need to change the model. Harvesters could access the config object at any of the stages. Of course they could provide default values in their implementations so users don't need to enter them everytime.

Implementation plan

Deliverables

Risks and mitigations

The highest risk on the harvesters info method side is that harvester implementation don't offer one of the necessary properties (namely name and title). This could fire a warning when showing the UI form or using the CLI.

Participants

Adrià Mercader to do it.

Progress

None yet.

1305108868000000 1339774554000000
Note: See TracReports for help on using and creating reports.