Code

Allow default value declaration in DB schema.
[roundup.git] / doc / upgrading.txt
index 84a703a0aa39be4a42cb0e5713a1b827d47f7ea6..43051a169a2149b2fbdcefcd22fe299a1ea30ad6 100644 (file)
@@ -13,6 +13,45 @@ steps.
 
 .. contents::
 
 
 .. contents::
 
+Migrating from 1.4.x to 1.4.17
+==============================
+
+Searching now requires either read-permission without a check method, or
+you will have to add a "Search" permission for a class or a list of
+properties for a class (if you want to allow searching). For the classic
+template (or other templates derived from it) you want to add the
+following lines to your `schema.py` file::
+
+  p = db.security.addPermission(name='Search', klass='query')
+  db.security.addPermissionToRole('User', p)
+
+This is needed, because for the `query` class users may view only their
+own queries (or public queries). This is implemented with a `check`
+method, therefore the default search permissions will not allow
+searching and you'll have to add an explicit search permission.
+If you have modified your schema, you can check if you're missing any
+search permissions with the following script, run it in your tracker
+directory, it will list for each Class and Property the roles that may
+search for this property::
+
+    #!/usr/bin/python
+    import os
+    from roundup import instance
+    
+    tracker = instance.open(os.getcwd ())
+    db = tracker.open('admin')
+    
+    for cl in sorted(db.getclasses()):
+        print "Class:", cl
+        for p in sorted(db.getclass(cl).properties.keys()):
+            print "    Property:", p
+            roles = []
+            for role in sorted(db.security.role.iterkeys()):
+                if db.security.roleHasSearchPermission(cl,p,role):
+                    roles.append(role)
+            print "        roles may search:", ', '.join(roles)
+
+
 Migrating from 1.4.x to 1.4.12
 ==============================
 
 Migrating from 1.4.x to 1.4.12
 ==============================
 
@@ -22,11 +61,50 @@ permissions from the default distribution, you should check that
 "Create" permissions exist for all properties you want users to be able
 to create.
 
 "Create" permissions exist for all properties you want users to be able
 to create.
 
+
+Fixing some potential security holes
+------------------------------------
+
+Enhanced checking was added to the user registration auditor. If you
+run a public tracker you should update your tracker's
+``detectors/userauditor.py`` using the new code from
+``share/roundup/templates/classic/detectors/userauditor.py``. In most
+cases you may just copy the file over, but if you've made changes to
+the auditor in your tracker then you'll need to manually integrate
+the new code.
+
+Some HTML templates were found to have formatting security problems:
+
+``html/page.html``::
+
+  -tal:replace="request/user/username">username</span></b><br>
+  +tal:replace="python:request.user.username.plain(escape=1)">username</span></b><br>
+
+``html/_generic.help-list.html``::
+
+  -tal:content="structure python:item[prop]"></label>
+  +tal:content="python:item[prop]"></label>
+
+The lines marked "+" should be added and lines marked "-" should be
+deleted (minus the "+"/"-" signs).
+
+
+Some HTML interface tweaks
+--------------------------
+
+You may wish to copy the ``user_utils.js`` and ``style.css` files from the
+source distribution ``share/roundup/templates/classic/html/`` directory to the
+``html`` directory of your trackers as it includes a small improvement.
+
+If you have made local changes to those files you'll need to manually work
+the differences in to your versions or ignore the changes.
+
+
 Migrating from 1.4.x to 1.4.11
 ==============================
 
 Migrating from 1.4.x to 1.4.11
 ==============================
 
-Close poential security hole
-----------------------------
+Close potential security hole
+-----------------------------
 
 If your tracker has untrusted users you should examine its ``schema.py``
 file and look for the section granting the "Edit" permission to your users.
 
 If your tracker has untrusted users you should examine its ``schema.py``
 file and look for the section granting the "Edit" permission to your users.
@@ -54,10 +132,10 @@ A separate "Register" permission has been introduced to allow
 anonymous users to register. This means you will need to add the
 following to your tracker's ``schema.py`` to add the permission and
 assign it to the Anonymous role (replacing any previously assigned
 anonymous users to register. This means you will need to add the
 following to your tracker's ``schema.py`` to add the permission and
 assign it to the Anonymous role (replacing any previously assigned
-"Create user" permission for the Anonymous role):
+"Create user" permission for the Anonymous role)::
 
   +db.security.addPermission(name='Register', klass='user',
 
   +db.security.addPermission(name='Register', klass='user',
-  +                          description='User is allowed to register new user')
+  +     description='User is allowed to register new user')
  
    # Assign the appropriate permissions to the anonymous user's Anonymous
    # Role. Choices here are:
  
    # Assign the appropriate permissions to the anonymous user's Anonymous
    # Role. Choices here are:
@@ -68,6 +146,20 @@ assign it to the Anonymous role (replacing any previously assigned
 The lines marked "+" should be added and lines marked "-" should be
 deleted (minus the "+"/"-" signs).
 
 The lines marked "+" should be added and lines marked "-" should be
 deleted (minus the "+"/"-" signs).
 
+You should also modify the ``html/page.html`` template to change the
+permission tested there::
+
+   -tal:condition="python:request.user.hasPermission('Create', 'user')"
+   +tal:condition="python:request.user.hasPermission('Register', 'user')"
+
+
+Generic class editor may now restore retired items
+--------------------------------------------------
+
+The instructions for doing so won't be present in your tracker unless you copy
+the ``_generic.index.html`` template from the roundup distribution in
+``share/roundup/templates/classic/html`` to your tracker's ``html`` directory.
+
 
 Migrating from 1.4.x to 1.4.9
 =============================
 
 Migrating from 1.4.x to 1.4.9
 =============================
@@ -162,7 +254,7 @@ The lines marked "+" should be added, minus the "+" sign.
 Fix the "retire" link in the users list for admin users
 -------------------------------------------------------
 
 Fix the "retire" link in the users list for admin users
 -------------------------------------------------------
 
-The "retire" link found in the file ``html/users.index.html``::
+The "retire" link found in the file ``html/user.index.html``::
 
   <td tal:condition="context/is_edit_ok">
    <a tal:attributes="href string:user${user/id}?@action=retire&@template=index"
 
   <td tal:condition="context/is_edit_ok">
    <a tal:attributes="href string:user${user/id}?@action=retire&@template=index"
@@ -266,8 +358,8 @@ SQL-backends (mysql, postgresql, sqlite) for speeding up building the
 roundup-index for full-text search. We recommend that you create the
 following database indexes on the database by hand::
 
 roundup-index for full-text search. We recommend that you create the
 following database indexes on the database by hand::
 
- CREATE INDEX words_by_id ON __words (_textid)
- CREATE UNIQUE INDEX __textids_by_props ON __textids (_class, _itemid, _prop)
+ CREATE INDEX words_by_id ON __words (_textid);
+ CREATE UNIQUE INDEX __textids_by_props ON __textids (_class, _itemid, _prop);
 
 Migrating from 1.2.x to 1.3.0
 =============================
 
 Migrating from 1.2.x to 1.3.0
 =============================