[ckan-changes] commit/ckan: 6 new changesets

Bitbucket commits-noreply at bitbucket.org
Mon Jun 27 09:59:03 UTC 2011


6 new changesets in ckan:

http://bitbucket.org/okfn/ckan/changeset/7bd90b6063bf/
changeset:   7bd90b6063bf
branch:      feature-1198-publisher-hierarcy
user:        dread
date:        2011-06-24 15:13:15
summary:     [merge] from default.
affected #:  2 files (573 bytes)

--- a/ckan/tests/html_check.py	Thu Jun 23 20:50:12 2011 +0100
+++ b/ckan/tests/html_check.py	Fri Jun 24 14:13:15 2011 +0100
@@ -10,7 +10,12 @@
     
     def named_div(self, div_name, html):
         'strips html to just the <div id="DIV_NAME"> section'
-        the_html = html.body.decode('utf8')
+        if isinstance(html, paste.fixture.TestResponse):
+            the_html = html.body.decode('utf8')
+        elif isinstance(html, basestring):
+            the_html = html
+        else:
+            raise NotImplementedError
         start_div = the_html.find(u'<div id="%s"' % div_name)
         end_div = the_html.find(u'<!-- #%s -->' % div_name)
         if end_div == -1:


--- a/ckan/tests/pylons_controller.py	Thu Jun 23 20:50:12 2011 +0100
+++ b/ckan/tests/pylons_controller.py	Fri Jun 24 14:13:15 2011 +0100
@@ -8,12 +8,18 @@
 from unittest import TestCase 
 from paste.registry import Registry 
 import pylons 
-from pylons.util import ContextObj 
+from pylons.util import AttribSafeContextObj
+import ckan.lib.app_globals as app_globals
 from pylons.controllers.util import Request, Response 
+from routes.util import URLGenerator
 
+from ckan.config.routing import make_map
 from ckan.tests import *
 from ckan.lib.cli import MockTranslator
 
+class TestSession(dict):
+    def save(self):
+        pass
 
 class PylonsTestCase(object):
     """A basic test case which allows access to pylons.c and pylons.request. 
@@ -23,9 +29,11 @@
         cls.registry=Registry() 
         cls.registry.prepare() 
 
-        cls.context_obj=ContextObj() 
+        cls.context_obj=AttribSafeContextObj()
         cls.registry.register(pylons.c, cls.context_obj)
-        pylons.c.errors = None
+
+        cls.app_globals_obj = app_globals.Globals()
+        cls.registry.register(pylons.g, cls.app_globals_obj)
 
         cls.request_obj=Request(dict(HTTP_HOST="nohost")) 
         cls.registry.register(pylons.request, cls.request_obj) 
@@ -37,4 +45,6 @@
         cls.registry.register(pylons.buffet, cls.buffet)
 
         cls.registry.register(pylons.response, Response())
-        cls.registry.register(pylons.url, None)
+        mapper = make_map()
+        cls.registry.register(pylons.url, URLGenerator(mapper, {}))
+        cls.registry.register(pylons.session, TestSession())


http://bitbucket.org/okfn/ckan/changeset/5a80f43cc0df/
changeset:   5a80f43cc0df
user:        dread
date:        2011-06-27 11:48:57
summary:     [tests][xs]: Minor fix for html check routine.
affected #:  1 file (186 bytes)

--- a/ckan/tests/html_check.py	Fri Jun 24 12:47:31 2011 +0200
+++ b/ckan/tests/html_check.py	Mon Jun 27 10:48:57 2011 +0100
@@ -10,12 +10,7 @@
     
     def named_div(self, div_name, html):
         'strips html to just the <div id="DIV_NAME"> section'
-        if isinstance(html, paste.fixture.TestResponse):
-            the_html = html.body.decode('utf8')
-        elif isinstance(html, basestring):
-            the_html = html
-        else:
-            raise NotImplementedError
+        the_html = self._get_html_from_res(html)
         start_div = the_html.find(u'<div id="%s"' % div_name)
         end_div = the_html.find(u'<!-- #%s -->' % div_name)
         if end_div == -1:
@@ -99,7 +94,7 @@
         if partly_matching_tags:
             assert 0, "Couldn't find %s in html. Closest matches were:\n%s" % (', '.join(["'%s'" % html.encode('utf8') for html in html_to_find]), '\n'.join([tag.encode('utf8') for tag in partly_matching_tags]))
         else:
-            assert 0, "Couldn't find %s in html. Tags matched were:\n%s" % (', '.join(["'%s'" % html.encode('utf8') for html in html_to_find]), '\n'.join([tag.encode('utf8') for tag in regex_compiled.finditer(html_str)]))
+            assert 0, "Couldn't find %s in html. Tags matched were:\n%s" % (', '.join(["'%s'" % html.encode('utf8') for html in html_to_find]), '\n'.join([tag.group() for tag in regex_compiled.finditer(html_str)]))
 
 
 


http://bitbucket.org/okfn/ckan/changeset/1c5222e3c806/
changeset:   1c5222e3c806
branch:      release-v1.4.1
user:        dread
date:        2011-06-27 11:54:20
summary:     [release]: Prepare CHANGELOG and version number for 1.4.1 release.
affected #:  2 files (10 bytes)

--- a/CHANGELOG.txt	Wed Jun 22 18:52:27 2011 +0100
+++ b/CHANGELOG.txt	Mon Jun 27 10:54:20 2011 +0100
@@ -1,18 +1,21 @@
 CKAN CHANGELOG
 ++++++++++++++
 
-v1.4.1 2011-XX-XX
+v1.4.1 2011-06-27
 =================
+Major:
+  * Refactor Web interface to use logic layer rather than model objects directly (#1078)
+
 Minor:
   * Links in user-supplied text made less attractive to spammers (nofollow) #1181 
   * Package change notifications - remove duplicates (#1149)
   * Metadata dump linked to (#1169)
   * Refactor authorization code to be common across Package, Group and Authorization Group (#1074)
-  * Refactor Web interface to use logic layer rather than model objects directly (#1078)
 
 Bug fixes
   * Duplicate authorization roles were difficult to delete (#1083)
 
+
 v1.4 2011-05-19
 ===============
 Major:


--- a/ckan/__init__.py	Wed Jun 22 18:52:27 2011 +0100
+++ b/ckan/__init__.py	Mon Jun 27 10:54:20 2011 +0100
@@ -1,4 +1,4 @@
-__version__ = '1.4.1b'
+__version__ = '1.4.1'
 __description__ = 'Comprehensive Knowledge Archive Network (CKAN) Software'
 __long_description__ = \
 '''The CKAN software is used to run the Comprehensive Knowledge Archive


http://bitbucket.org/okfn/ckan/changeset/d7612807af4d/
changeset:   d7612807af4d
branch:      release-v1.4.1
user:        dread
date:        2011-06-27 11:54:36
summary:     [i18n]: Updated POT ready for release.
affected #:  1 file (12.7 KB)

--- a/ckan/i18n/ckan.pot	Mon Jun 27 10:54:20 2011 +0100
+++ b/ckan/i18n/ckan.pot	Mon Jun 27 10:54:36 2011 +0100
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: ckan 1.4\n"
+"Project-Id-Version: ckan 1.4.1\n"
 "Report-Msgid-Bugs-To: EMAIL at ADDRESS\n"
-"POT-Creation-Date: 2011-05-19 15:45+0100\n"
+"POT-Creation-Date: 2011-06-27 10:54+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -17,15 +17,11 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 0.9.5\n"
 
-#: ckan/misc.py:47
-msgid "<strong>Warning:</strong>: Text could not be rendered."
-msgstr ""
-
 #: ckan/controllers/api.py:40 ckan/controllers/authorization_group.py:19
-#: ckan/controllers/group.py:22 ckan/controllers/home.py:23
-#: ckan/controllers/package.py:45 ckan/controllers/revision.py:22
-#: ckan/controllers/tag.py:17 ckan/controllers/user.py:18
-#: ckan/controllers/user.py:49 ckan/controllers/user.py:75
+#: ckan/controllers/group.py:50 ckan/controllers/home.py:23
+#: ckan/controllers/package.py:95 ckan/controllers/revision.py:22
+#: ckan/controllers/tag.py:17 ckan/controllers/user.py:22
+#: ckan/controllers/user.py:53 ckan/controllers/user.py:79
 msgid "Not authorized to see this page"
 msgstr ""
 
@@ -47,133 +43,124 @@
 msgid "Cannot read entity of this type: %s"
 msgstr ""
 
-#: ckan/controllers/api.py:206 ckan/controllers/api.py:252
+#: ckan/controllers/api.py:209 ckan/controllers/api.py:255
 #, python-format
 msgid "JSON Error: %s"
 msgstr ""
 
-#: ckan/controllers/api.py:213
+#: ckan/controllers/api.py:216
 #, python-format
 msgid "Cannot create new entity of this type: %s %s"
 msgstr ""
 
-#: ckan/controllers/api.py:229 ckan/controllers/api.py:273
+#: ckan/controllers/api.py:232 ckan/controllers/api.py:277
+#: ckan/controllers/group.py:161 ckan/controllers/group.py:179
+#: ckan/controllers/package.py:370 ckan/controllers/package.py:397
 msgid "Integrity Error"
 msgstr ""
 
-#: ckan/controllers/api.py:258
+#: ckan/controllers/api.py:261
 #, python-format
 msgid "Cannot update entity of this type: %s"
 msgstr ""
 
-#: ckan/controllers/api.py:294
+#: ckan/controllers/api.py:298
 #, python-format
 msgid "Cannot delete entity of this type: %s %s"
 msgstr ""
 
-#: ckan/controllers/api.py:316
+#: ckan/controllers/api.py:321
 #, python-format
 msgid "There is no revision with id: %s"
 msgstr ""
 
-#: ckan/controllers/api.py:327
+#: ckan/controllers/api.py:332
 msgid "Missing search term ('since_id=UUID' or 'since_time=TIMESTAMP')"
 msgstr ""
 
-#: ckan/controllers/api.py:335
+#: ckan/controllers/api.py:340
 #, python-format
 msgid "Could not read parameters: %r"
 msgstr ""
 
-#: ckan/controllers/api.py:372
+#: ckan/controllers/api.py:377
 #, python-format
 msgid "Bad search option: %s"
 msgstr ""
 
-#: ckan/controllers/api.py:375
+#: ckan/controllers/api.py:380
 #, python-format
 msgid "Unknown register: %s"
 msgstr ""
 
-#: ckan/controllers/api.py:383
+#: ckan/controllers/api.py:388
 msgid "Malformed qjson value"
 msgstr ""
 
-#: ckan/controllers/api.py:392 ckan/lib/base.py:159
+#: ckan/controllers/api.py:397 ckan/lib/base.py:159
 msgid "Request params must be in form of a json encoded dictionary."
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:37 ckan/controllers/group.py:41
+#: ckan/controllers/authorization_group.py:37 ckan/controllers/group.py:69
 #, python-format
 msgid "Not authorized to read %s"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:55 ckan/controllers/group.py:65
+#: ckan/controllers/authorization_group.py:55 ckan/controllers/group.py:99
+#: ckan/controllers/group_formalchemy.py:29
 msgid "Unauthorized to create a group"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:103 ckan/controllers/group.py:119
-#: ckan/controllers/group.py:268
+#: ckan/controllers/authorization_group.py:103 ckan/controllers/group.py:421
+#: ckan/controllers/group_formalchemy.py:83
 #, python-format
 msgid "User %r not authorized to edit %r"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:147 ckan/controllers/group.py:166
-#: ckan/controllers/group.py:266
+#: ckan/controllers/authorization_group.py:147 ckan/controllers/group.py:188
+#: ckan/controllers/group.py:419
 msgid "Group not found"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:153 ckan/controllers/group.py:173
-msgid "Not authorized to edit authorization for group"
+#: ckan/controllers/authorization_group.py:155 ckan/controllers/group.py:194
+#: ckan/controllers/package.py:438
+#, python-format
+msgid "User %r not authorized to edit %s authorizations"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:173 ckan/controllers/group.py:191
-#: ckan/controllers/package.py:444
-msgid "Please select either a user or an authorization group, not both."
+#: ckan/controllers/group.py:134 ckan/controllers/group.py:157
+#: ckan/controllers/group.py:175
+#, python-format
+msgid "Unauthorized to read group %s"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:185 ckan/controllers/group.py:205
-#: ckan/controllers/package.py:457
+#: ckan/controllers/group.py:140 ckan/controllers/package.py:341
+#: ckan/controllers/package_formalchemy.py:97
 #, python-format
-msgid "Added role '%s' for user '%s'"
+msgid "User %r not authorized to edit %s"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:199 ckan/controllers/group.py:221
-#: ckan/controllers/package.py:473
-#, python-format
-msgid "Added role '%s' for authorization group '%s'"
+#: ckan/controllers/group.py:159 ckan/controllers/group.py:177
+#: ckan/controllers/package.py:178 ckan/controllers/package.py:214
+#: ckan/controllers/package.py:249 ckan/controllers/package.py:335
+#: ckan/controllers/package.py:368 ckan/controllers/package.py:395
+#: ckan/controllers/package.py:432
+msgid "Package not found"
 msgstr ""
 
-#: ckan/controllers/authorization_group.py:206 ckan/controllers/group.py:228
-#: ckan/controllers/package.py:480
-msgid "Error: No role found with that id"
-msgstr ""
-
-#: ckan/controllers/authorization_group.py:210 ckan/controllers/group.py:234
-#: ckan/controllers/package.py:485
-#, python-format
-msgid "Deleted role '%s' for user '%s'"
-msgstr ""
-
-#: ckan/controllers/authorization_group.py:213 ckan/controllers/group.py:237
-#: ckan/controllers/package.py:488
-#, python-format
-msgid "Deleted role '%s' for authorization group '%s'"
-msgstr ""
-
-#: ckan/controllers/group.py:259 ckan/controllers/package.py:193
+#: ckan/controllers/group.py:412 ckan/controllers/package.py:242
 msgid "Select two revisions before doing the comparison."
 msgstr ""
 
-#: ckan/controllers/group.py:275
+#: ckan/controllers/group.py:428
 msgid "CKAN Group Revision History"
 msgstr ""
 
-#: ckan/controllers/group.py:277
+#: ckan/controllers/group.py:430
 msgid "Recent changes to CKAN Group: "
 msgstr ""
 
-#: ckan/controllers/group.py:297 ckan/controllers/package.py:227
+#: ckan/controllers/group.py:450 ckan/controllers/package.py:276
 msgid "Log message: "
 msgstr ""
 
@@ -189,43 +176,30 @@
 msgid "No language given!"
 msgstr ""
 
-#: ckan/controllers/package.py:128 ckan/controllers/package.py:165
-#: ckan/controllers/package.py:200 ckan/controllers/package.py:420
-msgid "Package not found"
-msgstr ""
-
-#: ckan/controllers/package.py:151 ckan/controllers/package.py:173
+#: ckan/controllers/package.py:201 ckan/controllers/package.py:222
+#: ckan/controllers/package.py:333 ckan/controllers/package.py:366
+#: ckan/controllers/package.py:393
 #, python-format
 msgid "Unauthorized to read package %s"
 msgstr ""
 
-#: ckan/controllers/package.py:206
+#: ckan/controllers/package.py:255
 msgid "CKAN Package Revision History"
 msgstr ""
 
-#: ckan/controllers/package.py:208
+#: ckan/controllers/package.py:257
 msgid "Recent changes to CKAN Package: "
 msgstr ""
 
-#: ckan/controllers/package.py:251
+#: ckan/controllers/package.py:301 ckan/controllers/package_formalchemy.py:21
 msgid "Unauthorized to create a package"
 msgstr ""
 
-#: ckan/controllers/package.py:327
-#, python-format
-msgid "User %r not authorized to edit %s"
+#: ckan/controllers/package.py:659
+msgid "Package Not Found"
 msgstr ""
 
-#: ckan/controllers/package.py:426
-#, python-format
-msgid "User %r not authorized to edit %s authorizations"
-msgstr ""
-
-#: ckan/controllers/package.py:505
-msgid "404 Package Not Found"
-msgstr ""
-
-#: ckan/controllers/package.py:512
+#: ckan/controllers/package.py:666
 msgid "Rating value invalid"
 msgstr ""
 
@@ -246,108 +220,131 @@
 msgid "Revision updated"
 msgstr ""
 
-#: ckan/controllers/tag.py:43 ckan/forms/common.py:919
+#: ckan/controllers/tag.py:43 ckan/forms/common.py:922
 msgid "Other"
 msgstr ""
 
-#: ckan/controllers/user.py:81
-msgid "That username is not available."
+#: ckan/controllers/user.py:86
+#, python-format
+msgid "Missing parameter: %r"
 msgstr ""
 
-#: ckan/controllers/user.py:105
+#: ckan/controllers/user.py:88
+msgid "Please enter a login name."
+msgstr ""
+
+#: ckan/controllers/user.py:91
+#, python-format
+msgid ""
+"That login name is not valid. It must be at least 3 characters, restricted to"
+" alphanumerics and these symbols: %s"
+msgstr ""
+
+#: ckan/controllers/user.py:94
+msgid "That login name is not available."
+msgstr ""
+
+#: ckan/controllers/user.py:97
+msgid "Please enter a password."
+msgstr ""
+
+#: ckan/controllers/user.py:122
 #, python-format
 msgid "Welcome back, %s"
 msgstr ""
 
-#: ckan/controllers/user.py:143
-msgid "Changed user details"
+#: ckan/controllers/user.py:160
+msgid ""
+"Edit not allowed as it looks like spam. Please avoid links in your "
+"description."
 msgstr ""
 
-#: ckan/controllers/user.py:159
+#: ckan/controllers/user.py:181
 msgid "Your account has been updated."
 msgstr ""
 
-#: ckan/controllers/user.py:174
+#: ckan/controllers/user.py:201
 msgid "Your password must be 4 characters or longer."
 msgstr ""
 
-#: ckan/controllers/user.py:176
+#: ckan/controllers/user.py:203
 msgid "The passwords you entered do not match."
 msgstr ""
 
-#: ckan/forms/common.py:22 ckan/logic/validators.py:59
+#: ckan/forms/common.py:25 ckan/logic/validators.py:69
 #, python-format
 msgid "Name must be at least %s characters long"
 msgstr ""
 
-#: ckan/forms/common.py:24 ckan/logic/validators.py:61
+#: ckan/forms/common.py:27 ckan/logic/validators.py:71
 msgid ""
 "Name must be purely lowercase alphanumeric (ascii) characters and these "
 "symbols: -_"
 msgstr ""
 
-#: ckan/forms/common.py:37 ckan/logic/validators.py:79
+#: ckan/forms/common.py:40 ckan/logic/validators.py:89
 msgid "Package name already exists in database"
 msgstr ""
 
-#: ckan/forms/common.py:45 ckan/logic/validators.py:95
+#: ckan/forms/common.py:48 ckan/logic/validators.py:119
 msgid "Group name already exists in database"
 msgstr ""
 
-#: ckan/forms/common.py:134
+#: ckan/forms/common.py:137
 #, python-format
 msgid "Value does not match required format: %s"
 msgstr ""
 
-#: ckan/forms/common.py:151 ckan/forms/common.py:767
+#: ckan/forms/common.py:154 ckan/forms/common.py:770
+#: ckan/templates/package/new_package_form.html:111
 msgid "(None)"
 msgstr ""
 
-#: ckan/forms/common.py:342
+#: ckan/forms/common.py:345 ckan/templates/package/new_package_form.html:94
 msgid "Package resource(s) incomplete."
 msgstr ""
 
-#: ckan/forms/common.py:503 ckan/logic/validators.py:101
+#: ckan/forms/common.py:506 ckan/logic/validators.py:125
 #, python-format
 msgid "Tag \"%s\" length is less than minimum %s"
 msgstr ""
 
-#: ckan/forms/common.py:505 ckan/logic/validators.py:109
+#: ckan/forms/common.py:508 ckan/logic/validators.py:133
 #, python-format
 msgid "Tag \"%s\" must be alphanumeric characters or symbols: -_."
 msgstr ""
 
-#: ckan/forms/common.py:507 ckan/logic/validators.py:117
+#: ckan/forms/common.py:510 ckan/logic/validators.py:141
 #, python-format
 msgid "Tag \"%s\" must not be uppercase"
 msgstr ""
 
-#: ckan/forms/common.py:524
+#: ckan/forms/common.py:527 ckan/logic/validators.py:103
 #, python-format
 msgid "Duplicate key \"%s\""
 msgstr ""
 
-#: ckan/forms/common.py:527
+#: ckan/forms/common.py:530
 #, python-format
 msgid "Extra key-value pair: key is not set for value \"%s\"."
 msgstr ""
 
-#: ckan/forms/common.py:777
+#: ckan/forms/common.py:780 ckan/templates/package/new_package_form.html:117
 msgid "Cannot add any groups."
 msgstr ""
 
-#: ckan/forms/common.py:792
+#: ckan/forms/common.py:795 ckan/templates/package/new_package_form.html:108
 msgid "Group"
 msgstr ""
 
-#: ckan/forms/common.py:822
+#: ckan/forms/common.py:825
 #, python-format
 msgid ""
 "Can't derived new group selection from serialized value structured like this:"
 " %s"
 msgstr ""
 
-#: ckan/forms/common.py:902
+#: ckan/forms/common.py:905
 msgid "other - please specify"
 msgstr ""
 
@@ -355,81 +352,86 @@
 msgid "Name"
 msgstr ""
 
-#: ckan/forms/group.py:63
+#: ckan/forms/group.py:63 ckan/templates/group/new_group_form.html:16
 msgid "Details"
 msgstr ""
 
 #: ckan/forms/group.py:64 ckan/forms/package.py:102 ckan/forms/package.py:112
+#: ckan/logic/action/update.py:29 ckan/logic/action/update.py:31
+#: ckan/logic/action/update.py:41 ckan/logic/action/update.py:43
+#: ckan/templates/group/new_group_form.html:41
+#: ckan/templates/package/new_package_form.html:154
 msgid "Extras"
 msgstr ""
 
-#: ckan/forms/group.py:87
+#: ckan/forms/group.py:87 ckan/templates/group/new_group_form.html:83
 msgid "Package"
 msgstr ""
 
-#: ckan/forms/group.py:88
+#: ckan/forms/group.py:88 ckan/templates/group/new_group_form.html:79
 msgid "Add packages"
 msgstr ""
 
-#: ckan/forms/package.py:34
+#: ckan/forms/package.py:34 ckan/templates/package/new_package_form.html:21
 msgid "A short descriptive title for the data set."
 msgstr ""
 
-#: ckan/forms/package.py:35
+#: ckan/forms/package.py:35 ckan/templates/package/new_package_form.html:22
 msgid ""
 "It should not be a description though - save that for the Notes field. Do not"
 " give a trailing full stop."
 msgstr ""
 
-#: ckan/forms/package.py:39
+#: ckan/forms/package.py:39 ckan/templates/package/new_package_form.html:27
 msgid "A unique identifier for the package."
 msgstr ""
 
-#: ckan/forms/package.py:40
+#: ckan/forms/package.py:40 ckan/templates/package/new_package_form.html:28
 msgid ""
 "It should be broadly humanly readable, in the spirit of Semantic Web URIs. "
 "Only use an acronym if it is widely recognised. Renaming is possible but "
 "discouraged."
 msgstr ""
 
-#: ckan/forms/package.py:41
+#: ckan/forms/package.py:41 ckan/templates/package/new_package_form.html:29
 msgid "2+ characters, lowercase, using only 'a-z0-9' and '-_'"
 msgstr ""
 
-#: ckan/forms/package.py:45
+#: ckan/forms/package.py:45 ckan/templates/package/new_package_form.html:139
 msgid "A number representing the version (if applicable)"
 msgstr ""
 
-#: ckan/forms/package.py:50
+#: ckan/forms/package.py:50 ckan/templates/package/new_package_form.html:34
 msgid "The URL for the web page describing the data (not the data itself)."
 msgstr ""
 
-#: ckan/forms/package.py:51
+#: ckan/forms/package.py:51 ckan/templates/package/new_package_form.html:35
 msgid "e.g. http://www.example.com/growth-figures.html"
 msgstr ""
 
-#: ckan/forms/package.py:55
+#: ckan/forms/package.py:55 ckan/templates/package/new_package_form.html:125
 msgid ""
 "The name of the main contact, for enquiries about this particular dataset, "
 "using the e-mail address in the following field."
 msgstr ""
 
-#: ckan/forms/package.py:59
+#: ckan/forms/package.py:59 ckan/templates/package/new_package_form.html:132
 msgid ""
 "If there is another important contact person (in addition to the person in "
 "the Author field) then provide details here."
 msgstr ""
 
-#: ckan/forms/package.py:63
+#: ckan/forms/package.py:63 ckan/templates/package/new_package_form.html:44
 msgid "Licence"
 msgstr ""
 
-#: ckan/forms/package.py:64
+#: ckan/forms/package.py:64 ckan/templates/package/new_package_form.html:52
 msgid "The licence under which the dataset is released."
 msgstr ""
 
 #: ckan/forms/package.py:68 ckan/forms/package.py:112
-#: ckan/templates/layout_base.html:101 ckan/templates/layout_base.html:180
+#: ckan/templates/layout_base.html:104 ckan/templates/layout_base.html:189
+#: ckan/templates/package/new_package_form.html:54
 #: ckan/templates/package/read.html:18 ckan/templates/tag/index.html:6
 #: ckan/templates/tag/index.html:9
 msgid "Tags"
@@ -442,11 +444,11 @@
 "conventions, see <a href=\"%s\">this wiki page</a>."
 msgstr ""
 
-#: ckan/forms/package.py:70
+#: ckan/forms/package.py:70 ckan/templates/package/new_package_form.html:61
 msgid "e.g. pollution rivers water-quality"
 msgstr ""
 
-#: ckan/forms/package.py:74
+#: ckan/forms/package.py:74 ckan/templates/package/new_package_form.html:91
 msgid "The files containing the data or address of the APIs for accessing it."
 msgstr ""
 
@@ -465,21 +467,22 @@
 "information you want to add to describe the resource.<br />"
 msgstr ""
 
-#: ckan/forms/package.py:76
+#: ckan/forms/package.py:76 ckan/templates/package/new_package_form.html:93
 msgid ""
 "Format choices: CSV | RDF | XML | XBRL | SDMX | HTML+RDFa | Other as "
 "appropriate"
 msgstr ""
 
 #: ckan/forms/package.py:80 ckan/forms/package.py:111
+#: ckan/templates/package/new_package_form.html:38
 msgid "Notes"
 msgstr ""
 
-#: ckan/forms/package.py:81
+#: ckan/forms/package.py:81 ckan/templates/package/new_package_form.html:40
 msgid "The main description of the dataset"
 msgstr ""
 
-#: ckan/forms/package.py:82
+#: ckan/forms/package.py:82 ckan/templates/package/new_package_form.html:41
 msgid ""
 "It is often displayed with the package title. In particular, it should start "
 "with a short sentence that describes the data set succinctly, because the "
@@ -491,52 +494,57 @@
 msgid "You can use %sMarkdown formatting%s here."
 msgstr ""
 
-#: ckan/forms/package.py:94
+#: ckan/forms/package.py:94 ckan/templates/package/new_package_form.html:17
 msgid "Basic information"
 msgstr ""
 
 #: ckan/forms/package.py:96 ckan/forms/package.py:111
+#: ckan/logic/action/update.py:27 ckan/templates/package/new_package_form.html:67
 #: ckan/templates/package/read_core.html:60
 msgid "Resources"
 msgstr ""
 
-#: ckan/forms/package.py:97 ckan/templates/layout_base.html:102
-#: ckan/templates/layout_base.html:181 ckan/templates/group/index.html:9
+#: ckan/forms/package.py:97 ckan/templates/layout_base.html:105
+#: ckan/templates/layout_base.html:190 ckan/templates/group/index.html:9
+#: ckan/templates/package/new_package_form.html:98
 #: ckan/templates/package/read.html:26 ckan/templates/revision/read.html:67
 msgid "Groups"
 msgstr ""
 
 #: ckan/forms/package.py:98 ckan/forms/package.py:105
+#: ckan/templates/package/new_package_form.html:121
 msgid "Detail"
 msgstr ""
 
 #: ckan/forms/package.py:110 ckan/templates/_util.html:97
-#: ckan/templates/_util.html:110
+#: ckan/templates/_util.html:110 ckan/templates/group/new_group_form.html:23
+#: ckan/templates/package/new_package_form.html:19
 msgid "Title"
 msgstr ""
 
-#: ckan/forms/package.py:110
+#: ckan/forms/package.py:110 ckan/templates/package/new_package_form.html:137
 msgid "Version"
 msgstr ""
 
-#: ckan/forms/package.py:110
+#: ckan/forms/package.py:110 ckan/templates/package/new_package_form.html:32
 msgid "URL"
 msgstr ""
 
 #: ckan/forms/package.py:111 ckan/templates/_util.html:282
 #: ckan/templates/group/history.html:35 ckan/templates/package/history.html:41
+#: ckan/templates/package/new_package_form.html:123
 msgid "Author"
 msgstr ""
 
-#: ckan/forms/package.py:111
+#: ckan/forms/package.py:111 ckan/templates/package/new_package_form.html:127
 msgid "Author email"
 msgstr ""
 
-#: ckan/forms/package.py:111
+#: ckan/forms/package.py:111 ckan/templates/package/new_package_form.html:130
 msgid "Maintainer"
 msgstr ""
 
-#: ckan/forms/package.py:112
+#: ckan/forms/package.py:112 ckan/templates/package/new_package_form.html:134
 msgid "Maintainer email"
 msgstr ""
 
@@ -545,7 +553,8 @@
 msgid "License"
 msgstr ""
 
-#: ckan/forms/package.py:112
+#: ckan/forms/package.py:112 ckan/templates/group/new_group_form.html:30
+#: ckan/templates/package/new_package_form.html:142
 msgid "State"
 msgstr ""
 
@@ -572,52 +581,53 @@
 msgid "Cannot render package description"
 msgstr ""
 
-#: ckan/lib/package_saver.py:43
+#: ckan/lib/package_saver.py:44
 msgid "No web page given"
 msgstr ""
 
-#: ckan/lib/package_saver.py:140
+#: ckan/lib/package_saver.py:141 ckan/logic/validators.py:20
 msgid "No links are allowed in the log_message."
 msgstr ""
 
-#: ckan/logic/validators.py:9
+#: ckan/logic/validators.py:10
 #, python-format
 msgid "Cannot change value of key from %s to %s. This key is read-only"
 msgstr ""
 
-#: ckan/logic/validators.py:20 ckan/logic/validators.py:46
-#: ckan/logic/action/update.py:30
+#: ckan/logic/validators.py:30 ckan/logic/validators.py:56
+#: ckan/logic/action/update.py:86
 msgid "Package was not found."
 msgstr ""
 
-#: ckan/logic/validators.py:31 ckan/logic/action/create.py:167
+#: ckan/logic/validators.py:41 ckan/logic/action/create.py:182
 #, python-format
 msgid "Package with name %r does not exist."
 msgstr ""
 
-#: ckan/logic/action/create.py:44 ckan/logic/action/create.py:129
+#: ckan/logic/action/create.py:56 ckan/logic/action/create.py:143
+#: ckan/logic/action/update.py:103 ckan/logic/action/update.py:189
 #, python-format
 msgid "REST API: Create object %s"
 msgstr ""
 
-#: ckan/logic/action/create.py:105
+#: ckan/logic/action/create.py:118
 #, python-format
 msgid "REST API: Create package relationship: %s %s %s"
 msgstr ""
 
-#: ckan/logic/action/create.py:154
+#: ckan/logic/action/create.py:169
 msgid "You must supply a package id or name (parameter \"package\")."
 msgstr ""
 
-#: ckan/logic/action/create.py:156
+#: ckan/logic/action/create.py:171
 msgid "You must supply a rating (parameter \"rating\")."
 msgstr ""
 
-#: ckan/logic/action/create.py:161
+#: ckan/logic/action/create.py:176
 msgid "Rating must be an integer value."
 msgstr ""
 
-#: ckan/logic/action/create.py:165
+#: ckan/logic/action/create.py:180
 #, python-format
 msgid "Rating must be between %i and %i."
 msgstr ""
@@ -632,12 +642,19 @@
 msgid "REST API: Delete %s"
 msgstr ""
 
-#: ckan/logic/action/update.py:42 ckan/logic/action/update.py:128
-#, python-format
-msgid "REST API: Update object %s"
+#: ckan/logic/action/update.py:27
+msgid "Package resource(s) incomplete"
 msgstr ""
 
-#: ckan/logic/action/update.py:60
+#: ckan/logic/action/update.py:29 ckan/logic/action/update.py:41
+msgid "Missing Value"
+msgstr ""
+
+#: ckan/logic/action/update.py:64
+msgid "Group was not found."
+msgstr ""
+
+#: ckan/logic/action/update.py:123
 #, python-format
 msgid "REST API: Update package relationship: %s %s %s"
 msgstr ""
@@ -707,7 +724,10 @@
 msgid "Number of packages"
 msgstr ""
 
-#: ckan/templates/_util.html:97 ckan/templates/package/read_core.html:36
+#: ckan/templates/_util.html:97 ckan/templates/group/new_group_form.html:27
+#: ckan/templates/package/new_package_form.html:73
+#: ckan/templates/package/new_package_form.html:92
+#: ckan/templates/package/read_core.html:36
 msgid "Description"
 msgstr ""
 
@@ -764,7 +784,9 @@
 msgid "Log Message"
 msgstr ""
 
-#: ckan/templates/_util.html:306 ckan/templates/package/form_extra_fields.html:22
+#: ckan/templates/_util.html:306 ckan/templates/group/new_group_form.html:49
+#: ckan/templates/package/form_extra_fields.html:22
+#: ckan/templates/package/new_package_form.html:162
 #: ckan/templates/revision/read.html:20
 msgid "Delete"
 msgstr ""
@@ -802,109 +824,114 @@
 msgid "Home"
 msgstr ""
 
-#: ckan/templates/layout_base.html:99 ckan/templates/layout_base.html:166
-#: ckan/templates/package/search.html:31 ckan/templates/package/search_form.html:17
+#: ckan/templates/layout_base.html:99 ckan/templates/layout_base.html:169
+#: ckan/templates/package/search.html:47 ckan/templates/package/search_form.html:17
 msgid "Search"
 msgstr ""
 
-#: ckan/templates/layout_base.html:100 ckan/templates/package/search.html:14
+#: ckan/templates/layout_base.html:103 ckan/templates/package/search.html:14
 msgid "Add a package"
 msgstr ""
 
-#: ckan/templates/layout_base.html:103 ckan/templates/layout_base.html:191
+#: ckan/templates/layout_base.html:106 ckan/templates/layout_base.html:200
 #: ckan/templates/home/about.html:6
 msgid "About"
 msgstr ""
 
-#: ckan/templates/layout_base.html:132
+#: ckan/templates/layout_base.html:135
 msgid "Master content template placeholder … please replace me."
 msgstr ""
 
-#: ckan/templates/layout_base.html:163 ckan/templates/group/edit_form.html:10
-#: ckan/templates/revision/read.html:48
+#: ckan/templates/layout_base.html:166 ckan/templates/group/edit_form.html:10
+#: ckan/templates/group/new_group_form.html:66 ckan/templates/revision/read.html:48
 msgid "Packages"
 msgstr ""
 
-#: ckan/templates/layout_base.html:167
+#: ckan/templates/layout_base.html:170
 msgid "Register a new Package"
 msgstr ""
 
-#: ckan/templates/layout_base.html:168 ckan/templates/revision/list.html:5
+#: ckan/templates/layout_base.html:171 ckan/templates/revision/list.html:5
 #: ckan/templates/revision/list.html:8
 msgid "Revision History"
 msgstr ""
 
-#: ckan/templates/layout_base.html:169
+#: ckan/templates/layout_base.html:172 ckan/templates/package/search.html:37
 msgid "API"
 msgstr ""
 
-#: ckan/templates/layout_base.html:170
+#: ckan/templates/layout_base.html:173 ckan/templates/package/search.html:38
 msgid "API Docs"
 msgstr ""
 
-#: ckan/templates/layout_base.html:177
+#: ckan/templates/layout_base.html:179
+#, python-format
+msgid "Full %s dump"
+msgstr ""
+
+#: ckan/templates/layout_base.html:186
 msgid "Groups & Tags"
 msgstr ""
 
-#: ckan/templates/layout_base.html:182
+#: ckan/templates/layout_base.html:191
 msgid "Create a new Group"
 msgstr ""
 
-#: ckan/templates/layout_base.html:183
+#: ckan/templates/layout_base.html:192
 #: ckan/templates/authorization_group/index.html:6
 #: ckan/templates/authorization_group/index.html:9
 #: ckan/templates/authorization_group/layout.html:23
 msgid "Authorization Groups"
 msgstr ""
 
-#: ckan/templates/layout_base.html:184
+#: ckan/templates/layout_base.html:193
 msgid "Create a new Authorization Group"
 msgstr ""
 
-#: ckan/templates/layout_base.html:195
+#: ckan/templates/layout_base.html:204
 msgid "Project Home Page"
 msgstr ""
 
-#: ckan/templates/layout_base.html:198
+#: ckan/templates/layout_base.html:207
 msgid "Contact Us"
 msgstr ""
 
-#: ckan/templates/layout_base.html:201 ckan/templates/user/login.html:26
+#: ckan/templates/layout_base.html:210 ckan/templates/user/login.html:26
 msgid "Privacy Policy"
 msgstr ""
 
-#: ckan/templates/layout_base.html:209
+#: ckan/templates/layout_base.html:218
 msgid "Language"
 msgstr ""
 
-#: ckan/templates/layout_base.html:234
+#: ckan/templates/layout_base.html:243
 msgid "Credits"
 msgstr ""
 
-#: ckan/templates/layout_base.html:237
+#: ckan/templates/layout_base.html:246
 msgid ""
 "[1:]\n"
 "                An\n"
 "                [2:Open Knowledge Foundation] Project"
 msgstr ""
 
-#: ckan/templates/layout_base.html:243
+#: ckan/templates/layout_base.html:252
 msgid "Open Knowledge Foundation"
 msgstr ""
 
-#: ckan/templates/layout_base.html:247 ckan/templates/layout_base.html:252
+#: ckan/templates/layout_base.html:256 ckan/templates/layout_base.html:261
 msgid "This Content and Data is Open"
 msgstr ""
 
-#: ckan/templates/layout_base.html:269
+#: ckan/templates/layout_base.html:278
 msgid "CKAN"
 msgstr ""
 
-#: ckan/templates/layout_base.html:270
+#: ckan/templates/layout_base.html:279
 msgid "Powered by CKAN"
 msgstr ""
 
-#: ckan/templates/layout_base.html:272
+#: ckan/templates/layout_base.html:281
 #, python-format
 msgid "v%(version)s"
 msgstr ""
@@ -917,21 +944,41 @@
 msgid "Authorization for authorization group:"
 msgstr ""
 
-#: ckan/templates/authorization_group/authz.html:15
-#: ckan/templates/group/authz.html:15 ckan/templates/package/authz.html:15
+#: ckan/templates/authorization_group/authz.html:13
+#: ckan/templates/group/authz.html:12 ckan/templates/package/authz.html:12
 msgid "Update Existing Roles"
 msgstr ""
 
-#: ckan/templates/authorization_group/authz.html:20
-msgid "Create New User or Authorization Group Roles"
+#: ckan/templates/authorization_group/authz.html:17
+#: ckan/templates/authorization_group/authz.html:35
+#: ckan/templates/authorization_group/edit_form.html:25
+#: ckan/templates/group/authz.html:16 ckan/templates/group/authz.html:34
+#: ckan/templates/group/edit_form.html:23 ckan/templates/package/authz.html:16
+#: ckan/templates/package/authz.html:34 ckan/templates/package/edit_form.html:29
+#: ckan/templates/user/edit.html:45
+msgid "Save"
 msgstr ""
 
-#: ckan/templates/authorization_group/authz.html:25
-#: ckan/templates/authorization_group/edit_form.html:25
-#: ckan/templates/group/authz.html:25 ckan/templates/group/edit_form.html:23
-#: ckan/templates/package/authz.html:25 ckan/templates/package/edit_form.html:29
-#: ckan/templates/user/edit.html:45
-msgid "Save"
+#: ckan/templates/authorization_group/authz.html:22
+#: ckan/templates/group/authz.html:21 ckan/templates/package/authz.html:21
+msgid "Add Roles for Any User"
+msgstr ""
+
+#: ckan/templates/authorization_group/authz.html:26
+#: ckan/templates/authorization_group/authz.html:44
+#: ckan/templates/group/authz.html:25 ckan/templates/group/authz.html:43
+#: ckan/templates/package/authz.html:25 ckan/templates/package/authz.html:43
+msgid "Add"
+msgstr ""
+
+#: ckan/templates/authorization_group/authz.html:31
+#: ckan/templates/group/authz.html:30 ckan/templates/package/authz.html:30
+msgid "Existing Roles for Authorization Groups"
+msgstr ""
+
+#: ckan/templates/authorization_group/authz.html:40
+#: ckan/templates/group/authz.html:39 ckan/templates/package/authz.html:39
+msgid "Add Roles for Any Authorization Group"
 msgstr ""
 
 #: ckan/templates/authorization_group/edit.html:5
@@ -967,7 +1014,7 @@
 msgstr ""
 
 #: ckan/templates/authorization_group/layout.html:16
-#: ckan/templates/group/layout.html:32 ckan/templates/package/layout.html:20
+#: ckan/templates/group/layout.html:32 ckan/templates/package/layout.html:17
 msgid "Authorization"
 msgstr ""
 
@@ -1027,10 +1074,6 @@
 msgid "Authorization for group:"
 msgstr ""
 
-#: ckan/templates/group/authz.html:20 ckan/templates/package/authz.html:20
-msgid "Create New User Roles"
-msgstr ""
-
 #: ckan/templates/group/edit.html:5
 msgid "- Edit - Groups"
 msgstr ""
@@ -1040,6 +1083,7 @@
 msgstr ""
 
 #: ckan/templates/group/edit_form.html:17
+#: ckan/templates/group/new_group_form.html:75
 msgid "There are no packages currently in this group."
 msgstr ""
 
@@ -1057,7 +1101,7 @@
 msgstr ""
 
 #: ckan/templates/group/history.html:27 ckan/templates/package/history.html:33
-#: ckan/templates/package/new.html:37
+#: ckan/templates/package/new.html:39
 msgid "Error:"
 msgstr ""
 
@@ -1098,7 +1142,7 @@
 msgid "Create a new group"
 msgstr ""
 
-#: ckan/templates/group/layout.html:30 ckan/templates/package/layout.html:18
+#: ckan/templates/group/layout.html:30 ckan/templates/package/layout.html:15
 msgid "History"
 msgstr ""
 
@@ -1110,6 +1154,55 @@
 msgid "New Group"
 msgstr ""
 
+#: ckan/templates/group/new_group_form.html:8 ckan/templates/package/form.html:7
+#: ckan/templates/package/new_package_form.html:9
+msgid "Errors in form"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:9 ckan/templates/package/form.html:8
+#: ckan/templates/package/new_package_form.html:10
+msgid "The form contains invalid entries:"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:18
+#: ckan/templates/package/new_package_form.html:25
+msgid "Name *"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:20
+msgid "Unique identifier"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:20
+msgid "for group."
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:20
+msgid "2+ chars, lowercase, using only 'a-z0-9' and '-_'"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:33
+#: ckan/templates/package/new_package_form.html:145
+msgid "active"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:34
+#: ckan/templates/package/new_package_form.html:146
+msgid "deleted"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:54
+#: ckan/templates/package/form_extra_fields.html:12
+#: ckan/templates/package/new_package_form.html:167
+msgid "New key"
+msgstr ""
+
+#: ckan/templates/group/new_group_form.html:56
+#: ckan/templates/package/form_extra_fields.html:26
+#: ckan/templates/package/new_package_form.html:169
+msgid "with value"
+msgstr ""
+
 #: ckan/templates/group/read.html:6
 msgid "- Groups"
 msgstr ""
@@ -1267,33 +1360,41 @@
 msgid "Edit Data Package:"
 msgstr ""
 
-#: ckan/templates/package/edit.html:29 ckan/templates/package/new.html:31
+#: ckan/templates/package/edit.html:29 ckan/templates/package/new.html:33
 #: ckan/templates/user/edit.html:52
 msgid "Preview"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:13
+#: ckan/templates/package/new_package_form.html:179
 msgid "Edit summary (briefly describe the changes you have made)"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:17
-#: ckan/templates/package/edit_form.html:20 ckan/templates/revision/read.html:39
+#: ckan/templates/package/edit_form.html:20
+#: ckan/templates/package/new_package_form.html:183
+#: ckan/templates/package/new_package_form.html:186
+#: ckan/templates/revision/read.html:39
 msgid "Author:"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:21
+#: ckan/templates/package/new_package_form.html:187
 msgid "Since you have not signed in this will just be your IP address."
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:23
+#: ckan/templates/package/new_package_form.html:189
 msgid "Click here to sign in"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:23
+#: ckan/templates/package/new_package_form.html:189
 msgid "before saving (opens in new window)."
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:33
+#: ckan/templates/package/new_package_form.html:199
 msgid "Important:"
 msgstr ""
 
@@ -1304,45 +1405,35 @@
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:34
+#: ckan/templates/package/new_package_form.html:200
 msgid "license page"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:35
+#: ckan/templates/package/new_package_form.html:200
 msgid ". Please"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:35
+#: ckan/templates/package/new_package_form.html:200
 msgid "refrain"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:35
+#: ckan/templates/package/new_package_form.html:200
 msgid "from editing this page if you are"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:35
+#: ckan/templates/package/new_package_form.html:200
 msgid "not"
 msgstr ""
 
 #: ckan/templates/package/edit_form.html:35
+#: ckan/templates/package/new_package_form.html:201
 msgid "happy to do this."
 msgstr ""
 
-#: ckan/templates/package/form.html:7
-msgid "Errors in form"
-msgstr ""
-
-#: ckan/templates/package/form.html:8
-msgid "The form contains invalid entries:"
-msgstr ""
-
-#: ckan/templates/package/form_extra_fields.html:12
-msgid "New key"
-msgstr ""
-
-#: ckan/templates/package/form_extra_fields.html:26
-msgid "with value"
-msgstr ""
-
 #: ckan/templates/package/history.html:10
 msgid "Updates"
 msgstr ""
@@ -1355,18 +1446,217 @@
 msgid "Package History"
 msgstr ""
 
-#: ckan/templates/package/layout.html:16
-msgid "Comments & Questions"
-msgstr ""
-
 #: ckan/templates/package/new.html:6
 msgid "New - Data Packages"
 msgstr ""
 
-#: ckan/templates/package/new.html:27
+#: ckan/templates/package/new.html:29
 msgid "Register a New Data Package"
 msgstr ""
 
+#: ckan/templates/package/new_package_form.html:42
+msgid "You can use"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:42
+msgid "Markdown formatting"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:42
+msgid "here."
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:60
+msgid ""
+"Terms that may link this dataset to similar ones. For more information on "
+"conventions, see"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:60
+msgid "this wiki page"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:71
+msgid "URL*"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:72
+#: ckan/templates/package/read_core.html:37
+msgid "Format"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:74
+#: ckan/templates/package/read_core.html:38
+msgid "Hash"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:92
+msgid ""
+"These can be repeated as required. For example if the data is being supplied "
+"in multiple formats, or split into different areas or time periods, each file"
+" is a different 'resource' which should be described differently. They will "
+"all appear on the dataset page on CKAN together."
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:92
+msgid "URL:"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:92
+msgid ""
+"This is the Internet link directly to the data - by selecting this link in a "
+"web browser, the user will immediately download the full data set. Note that "
+"datasets are not hosted on this site, but by the publisher of the data. "
+"Alternatively the URL can point to an API server such as a SPARQL endpoint or"
+" JSON-P service."
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:92
+msgid "Format:"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:92
+msgid "This should give the file format in which the data is supplied."
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:92
+msgid "Any information you want to add to describe the resource."
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:140
+msgid "e.g. 1.2.0"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.html:199
+msgid ""
+"By submitting content, you agree to release your contributions\n"
+"  under the open license specified on the"
+msgstr ""
+
+#: ckan/templates/package/new_package_form.js:1
+msgid ""
+"<script type=\"text/javascript\">\n"
+"//<![CDATA[\n"
+"(function($){\n"
+"    $.fn.ajaxCreateSlug = function(name, url) {\n"
+"        var title = this;\n"
+"        var updater = {\n"
+"            init: function(title, name) {\n"
+"                // Add a new element where the validity of the package name "
+"can be displayed\n"
+"                this.name_field = name;\n"
+"                this.title_field = title;\n"
+"                this.name_field.parent().append('<div "
+"id=\"package_name_valid_msg\"></div>');\n"
+"                this.title_field.blur(this.title_change_handler())\n"
+"                this.title_field.keyup(this.title_change_handler())\n"
+"                this.name_field.keyup(this.name_change_handler());\n"
+"                this.name_field.blur(this.name_blur_handler());\n"
+"                this.url = url;\n"
+"            },\n"
+"            title_change_handler: function() {\n"
+"                var self = this;\n"
+"                return function() {\n"
+"                    if (!self.name_changed && "
+"self.title_field.val().replace(/^\\s+|\\s+$/g, '')) {\n"
+"                        self.update(self.title_field.val(), function(data) "
+"{self.name_field.val(data.name)});\n"
+"                    }\n"
+"                }\n"
+"            },\n"
+"            name_blur_handler: function() {\n"
+"                var self = this;\n"
+"                return function() {\n"
+"                    // Reset if the name is emptied\n"
+"                    if (!self.name_field.val().replace(/^\\s+|\\s+$/g, '')){\n"
+"                        self.name_changed = false;\n"
+"                        $('#package_name_valid_msg').html('');\n"
+"                    } else {\n"
+"                        self.update(self.name_field.val(), function(data) {\n"
+"                            self.name_field.val(data.name)\n"
+"                        });\n"
+"                    }\n"
+"                };\n"
+"            },\n"
+"            name_change_handler: function() {\n"
+"                var self = this;\n"
+"                return function() {\n"
+"                    // Reset if the name is emptied\n"
+"                    if (!self.name_field.val().replace(/^\\s+|\\s+$/g, '')){\n"
+"                        self.name_changed = false;\n"
+"                        $('#package_name_valid_msg').html('');\n"
+"                    } else {\n"
+"                        self.name_changed = true;\n"
+"                        self.update(self.name_field.val(), function(data) {\n"
+"                            if (self.name_field.val().length >= data.name) {\n"
+"                                self.name_field.val(data.name);\n"
+"                            }\n"
+"                        });\n"
+"                    }\n"
+"                };\n"
+"            },\n"
+"            // Keep a variable where we can store whether the name field has "
+"been\n"
+"            // directly modified by the user or not. If it has, we should no "
+"longer\n"
+"            // fetch updates.\n"
+"            name_changed: false,\n"
+"            // Create a function for fetching the value and updating the "
+"result\n"
+"            perform_update: function(value, on_success){\n"
+"                var self = this;\n"
+"                $.ajax({\n"
+"                    url: self.url,\n"
+"                    data: 'title=' + value,\n"
+"                    dataType: 'jsonp',\n"
+"                    type: 'get',\n"
+"                    jsonpCallback: 'callback',\n"
+"                    success: function (data) {\n"
+"                        if (on_success) {\n"
+"                            on_success(data);\n"
+"                        }\n"
+"                        var valid_msg = $('#package_name_valid_msg');\n"
+"                        if (data.valid) {\n"
+"                            valid_msg.html('<span style=\"font-weight: bold; "
+"color: #0c0\">This package name is available!</span>');\n"
+"                        } else {\n"
+"                            valid_msg.html('<span style=\"font-weight: bold; "
+"color: #c00\">This package name is already used, please use a different "
+"name</span>');\n"
+"                        }\n"
+"                    }\n"
+"                });\n"
+"            },\n"
+"            // We only want to perform the update if there hasn't been a "
+"change for say 200ms\n"
+"            timer: null,\n"
+"            update: function(value, on_success) {\n"
+"                var self = this;\n"
+"                if (this.timer) {\n"
+"                    clearTimeout(this.timer)\n"
+"                };\n"
+"                this.timer = setTimeout(function () {\n"
+"                    self.perform_update(value, on_success)\n"
+"                }, 200);\n"
+"            }\n"
+"        }\n"
+"        updater.init(title, $(name), url);\n"
+"        return title;\n"
+"    };\n"
+"})( jQuery );\n"
+"$(document).ready(function() {\n"
+"    $('#title').ajaxCreateSlug('#name', '/api/2/util/package/create_slug');\n"
+"});\n"
+"\n"
+"$(document).ready(function () {\n"
+"    if (!$('#preview').length) {\n"
+"        $(\"#title\").focus();\n"
+"    }\n"
+"});\n"
+"//]]>\n"
+"</script>"
+msgstr ""
+
 #: ckan/templates/package/read.html:6
 msgid "- Data Packages"
 msgstr ""
@@ -1437,14 +1727,6 @@
 msgid "Downloads & Resources"
 msgstr ""
 
-#: ckan/templates/package/read_core.html:37
-msgid "Format"
-msgstr ""
-
-#: ckan/templates/package/read_core.html:38
-msgid "Hash"
-msgstr ""
-
 #: ckan/templates/package/read_core.html:48
 msgid "Download"
 msgstr ""
@@ -1549,18 +1831,42 @@
 msgid "Register it now"
 msgstr ""
 
+#: ckan/templates/package/search.html:29
+msgid "Other access"
+msgstr ""
+
+#: ckan/templates/package/search.html:35
+msgid "You can also access this registry using the"
+msgstr ""
+
 #: ckan/templates/package/search.html:37
+msgid "(see"
+msgstr ""
+
+#: ckan/templates/package/search.html:38
+msgid "or download a"
+msgstr ""
+
+#: ckan/templates/package/search.html:39
+msgid "full"
+msgstr ""
+
+#: ckan/templates/package/search.html:39
+msgid "dump"
+msgstr ""
+
+#: ckan/templates/package/search.html:53
 msgid ""
 "[1:There was an error while searching.] \n"
 "            Please try another search term."
 msgstr ""
 
-#: ckan/templates/package/search.html:41
+#: ckan/templates/package/search.html:57
 #, python-format
 msgid "[1:%(item_count)s] packages found"
 msgstr ""
 
-#: ckan/templates/package/search.html:44
+#: ckan/templates/package/search.html:60
 msgid "Would you like to [1:create a new package?]"
 msgstr ""
 


http://bitbucket.org/okfn/ckan/changeset/a394ca150daa/
changeset:   a394ca150daa
branch:      release-v1.4.1
user:        dread
date:        2011-06-27 11:56:27
summary:     [doc][xs]: Removed ref to removed distributed.rst/
affected #:  1 file (15 bytes)

--- a/doc/index.rst	Mon Jun 27 10:54:36 2011 +0100
+++ b/doc/index.rst	Mon Jun 27 10:56:27 2011 +0100
@@ -26,7 +26,6 @@
    authentication
    authorization
    load_testing
-   distributed
    database_dumps
    admin
    deb


http://bitbucket.org/okfn/ckan/changeset/1197568a63b3/
changeset:   1197568a63b3
branch:      release-v1.4.1
user:        dread
date:        2011-06-27 11:58:34
summary:     Release 1.4.1
affected #:  1 file (52 bytes)

--- a/.hgtags	Mon Jun 27 10:56:27 2011 +0100
+++ b/.hgtags	Mon Jun 27 10:58:34 2011 +0100
@@ -31,3 +31,4 @@
 e19182e8f8db1a8058ba7872b1808aa73764de4f ckan-1.3.3
 d83e20d807a6d5587ae5adef49e31fe48c906f9a ckan-1.3.3
 3a59aa5b63d06dde77424e3313433a1fb9eb1215 ckan-1.4
+a394ca150daac6977114ce5d8c911f7d9896d1cd ckan-1.4.1

Repository URL: https://bitbucket.org/okfn/ckan/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.




More information about the ckan-changes mailing list