Merge lp:~flacoste/launchpad/cleanup into lp:launchpad
- cleanup
- Merge into devel
Proposed by
Francis J. Lacoste
on 2010-04-28
| Status: | Merged |
|---|---|
| Approved by: | Edwin Grubbs on 2010-04-28 |
| Approved revision: | no longer in the source branch. |
| Merged at revision: | 10865 |
| Proposed branch: | lp:~flacoste/launchpad/cleanup |
| Merge into: | lp:launchpad |
| Diff against target: |
536 lines (+0/-472) 9 files modified
doc/calendars.txt (+0/-90) doc/localdomain-setup.txt (+0/-68) doc/mochikit-packed.txt (+0/-36) doc/poexport.txt (+0/-140) doc/rosetta-cmdline.txt (+0/-41) doc/user-manual/Makefile (+0/-7) doc/user-manual/rosetta-upstream-setup.xml (+0/-58) doc/zope3sins.txt (+0/-7) lib/canonical/launchpad/scripts/__init__.py (+0/-25) |
| To merge this branch: | bzr merge lp:~flacoste/launchpad/cleanup |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Edwin Grubbs (community) | 2010-04-28 | Approve on 2010-04-28 | |
|
Review via email:
|
|||
Commit Message
Remove obsolete files in doc/ and some other classes that should have gone with CustomConfigura
Description of the Change
That's a cleanup branch that removes obsolete document files in doc/ and some
classes that are now unused and should have been removed at the same time than
the CustomConfigura
= Launchpad lint =
Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.
Linting changed files:
lib/canonical
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
| 1 | === removed file 'doc/calendars.txt' |
| 2 | --- doc/calendars.txt 2005-10-31 18:29:12 +0000 |
| 3 | +++ doc/calendars.txt 1970-01-01 00:00:00 +0000 |
| 4 | @@ -1,90 +0,0 @@ |
| 5 | -Calendars |
| 6 | -========= |
| 7 | - |
| 8 | -Some objects in Launchpad have calendars. Actually, currently only persons |
| 9 | -(and teams) have calendars, but it is planned to add them to products and |
| 10 | -projects as well. |
| 11 | - |
| 12 | -Calendaring code makes use of the SchoolBell library (Python package |
| 13 | -`schoolbell`), which comes from the SchoolTool project (www.schooltool.org). |
| 14 | - |
| 15 | -Launchpad calendars have some additional attributes such as title and owner, |
| 16 | -defined in the ILaunchpadCalendar interface (that extends schoolbell's |
| 17 | -IEditCalendar). Calendars are stored in the PostgreSQL database. |
| 18 | - |
| 19 | - |
| 20 | -Hooking up calendars to objects |
| 21 | -------------------------------- |
| 22 | - |
| 23 | -Objects that have calendars can be adapted to ILaunchpadCalendar. |
| 24 | -There is an adapter registered for ICalendarOwner that returns the |
| 25 | -'calendar' attribute of an object, so the simplest thing for adding a |
| 26 | -calendar to an object is to make sure this attribute exists, and |
| 27 | -declare that the object provides ICalendarOwner. |
| 28 | - |
| 29 | -There is a view named '+calendar' registered for ICalendarOwner, so if |
| 30 | -an object (e.g. a person) that has a calendar can be reached at a |
| 31 | -certain URL, accessing the calendar of that object is just a matter of |
| 32 | -going to URL + '/+calendar'. |
| 33 | - |
| 34 | -There is also a view named 'calendar' registered for the root object. |
| 35 | -This view provides a merged view of the calendars the user has |
| 36 | -subscribed to. |
| 37 | - |
| 38 | -There is a set of views available for ICalendar, and a traverser that |
| 39 | -interprets URL segments as dates. |
| 40 | - |
| 41 | - |
| 42 | -Interoperability with calendaring clients |
| 43 | ------------------------------------------ |
| 44 | - |
| 45 | -Every calendar can be exported as an iCalendar file via HTTP. You can |
| 46 | -subscribe to these calendars from Mozilla Calendar (or Sunbird), Evolution, |
| 47 | -KOrganizer, Apple's iCal, etc. The get the URL for getting an iCalendar file |
| 48 | -just append '/calendar.ics' to the calendar URL, e.g. |
| 49 | - |
| 50 | - http://localhost:8085/foaf/persons/test/calendar/calendar.ics |
| 51 | - |
| 52 | -The ability to upload iCalendar files (and thus modify calendars stored in |
| 53 | -Launchpad from these calendaring clients) is not hooked up yet. There is |
| 54 | -an iCalendar parser in the schoolbell module, but the tricky part is to get |
| 55 | -Zope 3 traversal (which is heavily customized in Launchpad) to actually |
| 56 | -work for HTTP PUT requests. |
| 57 | - |
| 58 | - |
| 59 | -Security |
| 60 | --------- |
| 61 | - |
| 62 | -All calendars are readable by everyone. Write access is restricted to |
| 63 | -the calendar owner. The calendar owner is taken from the calendar's |
| 64 | -parent: |
| 65 | - * if the calendar belongs to a team, then it is owned by the team's |
| 66 | - owner. |
| 67 | - * if the calendar belongs to a person, then it is owned by the |
| 68 | - person. |
| 69 | - * project and product calendars are owned by their respective |
| 70 | - owners. |
| 71 | - |
| 72 | - |
| 73 | -TODO |
| 74 | ----- |
| 75 | - |
| 76 | -- Re-add recurring event support (it was disabled to make prototyping |
| 77 | - easier). SchoolBell interfaces currently define the recurrence rule |
| 78 | - as a single attribute providing one of four recurrence rule |
| 79 | - interfaces; perhaps it can be simulated with a property. Or perhaps |
| 80 | - SchoolBell's interfaces aren't general enough and could be changed |
| 81 | - to be more convenient. Talk to me (Marius Gedminas, |
| 82 | - <marius@pov.lt>) if you have ideas. |
| 83 | - |
| 84 | -- Write and hook up the iCalendar upload view (HTTP PUT requests). |
| 85 | - Writing it should be easy -- use |
| 86 | - schoolbell.icalendar.read_icalendar(). Hooking it up is difficult |
| 87 | - (see the description above). |
| 88 | - * After discussion, it has been decided not to provide webcal:// |
| 89 | - write access. |
| 90 | - |
| 91 | - |
| 92 | -If you have any questions about the schoolbell library or calendaring in |
| 93 | -Launchpad, feel free to email Marius Gedminas <marius@pov.lt>. |
| 94 | - |
| 95 | |
| 96 | === removed file 'doc/localdomain-setup.txt' |
| 97 | --- doc/localdomain-setup.txt 2007-03-10 18:14:09 +0000 |
| 98 | +++ doc/localdomain-setup.txt 1970-01-01 00:00:00 +0000 |
| 99 | @@ -1,68 +0,0 @@ |
| 100 | -= Setting up launchpad local domains = |
| 101 | - |
| 102 | -We run Launchpad on development machines using Apache and virtual hosts, |
| 103 | -to simulate the production environment as far as possible, and allow |
| 104 | -us to use virtual hosts on our local machine. |
| 105 | - |
| 106 | -Here's how to set up your machine to do this. You need to do these operations |
| 107 | -as the root user. |
| 108 | - |
| 109 | -== Modify your /etc/hosts == |
| 110 | - |
| 111 | -Add this line to /etc/hosts: |
| 112 | -{{{ |
| 113 | -127.0.0.88 launchpad.dev code.launchpad.dev answers.launchpad.dev blueprints.launchpad.dev bugs.launchpad.dev translation.launchpad.dev xmlrpc.launchpad.dev shipit.ubuntu.dev shipit.kubuntu.dev shipit.edubuntu.dev |
| 114 | -}}} |
| 115 | - |
| 116 | -As we add more domains, you'll need to alter this line. |
| 117 | - |
| 118 | -== Set up apache == |
| 119 | - |
| 120 | -If you have apache version 1 installed, remove it: |
| 121 | - |
| 122 | - sudo apt-get remove apache |
| 123 | - |
| 124 | -Install apache2: |
| 125 | - |
| 126 | - sudo apt-get install apache2 |
| 127 | - |
| 128 | -Turn on proxying: |
| 129 | - |
| 130 | - sudo a2enmod proxy |
| 131 | - |
| 132 | -Set up virtual hosting: |
| 133 | - |
| 134 | -Create a file at /etc/apache2/sites-enabled/locallaunchpad |
| 135 | - |
| 136 | -{{{ |
| 137 | -sudo vim /etc/apache2/sites-enabled/locallaunchpad |
| 138 | -}}} |
| 139 | - |
| 140 | -Put the following text in there. |
| 141 | - |
| 142 | -{{{ |
| 143 | -<VirtualHost 127.0.0.88:80> |
| 144 | - ServerName launchpad.dev |
| 145 | - ServerAlias *.launchpad.dev |
| 146 | - LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so |
| 147 | - <Proxy *> |
| 148 | - Order deny,allow |
| 149 | - Allow from 127.0.0.0/255.0.0.0 |
| 150 | - </Proxy> |
| 151 | - ProxyPreserveHost on |
| 152 | - ProxyPass / http://localhost:8085/ retry=1 |
| 153 | -</VirtualHost> |
| 154 | -}}} |
| 155 | - |
| 156 | -Reload apache: |
| 157 | - |
| 158 | - sudo /etc/init.d/apache2 reload |
| 159 | - |
| 160 | -== Use Launchpad == |
| 161 | - |
| 162 | -As your normal user, run launchpad. You should be able to access it |
| 163 | -at the following URLs: |
| 164 | - |
| 165 | - http://launchpad.dev/ |
| 166 | - http://blueprints.launchpad.dev/ |
| 167 | - |
| 168 | |
| 169 | === removed file 'doc/mochikit-packed.txt' |
| 170 | --- doc/mochikit-packed.txt 2007-03-12 19:04:23 +0000 |
| 171 | +++ doc/mochikit-packed.txt 1970-01-01 00:00:00 +0000 |
| 172 | @@ -1,36 +0,0 @@ |
| 173 | -To produce a packed MochiKit.js file: |
| 174 | - |
| 175 | - 1. Get a svn checkout of MochiKit. |
| 176 | - 2. Run: python scripts/pack.py |
| 177 | - 3. The packed MochiKit.js will be in |
| 178 | - packed/MochiKit/MochiKit.js |
| 179 | - |
| 180 | -To remove top-level modules: |
| 181 | - |
| 182 | - 1. Edit the list MochiKit.MochiKit.SUBMODULES |
| 183 | - that is in MochiKit/MochiKit.js |
| 184 | - 2. Run pack again. |
| 185 | - |
| 186 | -We're currently using a packed MochiKit.js that includes: |
| 187 | - |
| 188 | - "Base", |
| 189 | - "Iter", |
| 190 | - "Logging", |
| 191 | - "DateTime", |
| 192 | - "Async", |
| 193 | - "DOM", |
| 194 | - "Style", |
| 195 | - "Signal", |
| 196 | - |
| 197 | -And excludes: |
| 198 | - |
| 199 | - "Format" |
| 200 | - "Selector" |
| 201 | - "LoggingPane" |
| 202 | - "Color" |
| 203 | - "Position" |
| 204 | - "Visual" |
| 205 | - |
| 206 | -This takes the size of MochiKit.js that we serve down from 172598 bytes to |
| 207 | -97200 bytes. |
| 208 | - |
| 209 | |
| 210 | === removed file 'doc/poexport.txt' |
| 211 | --- doc/poexport.txt 2005-10-31 18:29:12 +0000 |
| 212 | +++ doc/poexport.txt 1970-01-01 00:00:00 +0000 |
| 213 | @@ -1,140 +0,0 @@ |
| 214 | -Exporting PO Files From Rosetta |
| 215 | -=============================== |
| 216 | - |
| 217 | -Last Review: 26 Aug 2004 13:50 CEST |
| 218 | - |
| 219 | -This document describes the process we should follow to export a .po file from |
| 220 | -Rosetta. |
| 221 | - |
| 222 | -The process here is not optimized. Perhaps there is a faster way to do it with |
| 223 | -less queries and less steps, but that's outside the scope of this document. |
| 224 | - |
| 225 | -We need a temporary store for a list of POMsgSet.id that are already exported. |
| 226 | - |
| 227 | -Comments |
| 228 | --------- |
| 229 | - |
| 230 | - - What happens if we have a msgset in a POFile that is not available in the |
| 231 | - POFile anymore and we see it again? Should we reuse it? For example, it |
| 232 | - happens if we import a pofile with an obsolete msgset and when we import it |
| 233 | - again, someone has deleted it. Also it could be interesting add as fuzzy |
| 234 | - other translations from other modules (perhaps for Phase 2). |
| 235 | - |
| 236 | -The Procedure |
| 237 | -------------- |
| 238 | - |
| 239 | -To be able to export a POFile we need to know the POFile object we want to get. |
| 240 | - |
| 241 | - 1. We get the POTemplate associated to this POFile "po" (POFile.potemplate). |
| 242 | - This is the easy bit. |
| 243 | - |
| 244 | - 2. We get all POMsgSets for this POTemplate "pot" that have POMsgIDSighting |
| 245 | - that were in the pot file last time we imported it:: |
| 246 | - |
| 247 | - SELECT POMsgSet.* FROM POMsgSet |
| 248 | - WHERE |
| 249 | - POMsgSet.potemplate = pot.id AND |
| 250 | - POMsgSet.pofile IS NULL AND |
| 251 | - POMsgSet.sequence > 0 |
| 252 | - EXISTS (SELECT * FROM POMsgIDSighting |
| 253 | - WHERE |
| 254 | - POMsgSet.id = POMsgIDSighting.pomsgset AND |
| 255 | - POMsgIDSighting.inlastrevision = TRUE) |
| 256 | - ORDER BY POMsgSet.sequence |
| 257 | - |
| 258 | - 3. For every POMsgSet "potSet" we got in #2 we look for its equivalent |
| 259 | - POMsgSet "poSet" inside the POFile:: |
| 260 | - |
| 261 | - SELECT POMsgSet.* FROM POMsgSet |
| 262 | - WHERE |
| 263 | - POMsgSet.potemplate = pot.id AND |
| 264 | - POMsgSet.pofile = po.id AND |
| 265 | - POMsgSet.primemsgid = potSet.primemsgid |
| 266 | - |
| 267 | - If we don't find a POMsgSet, we dump potSet and continue to the next messasge |
| 268 | - set. |
| 269 | - |
| 270 | - If we get a POMsgSet, we add its id (POMsgSet.id) into a temporary list, |
| 271 | - and look for an active translation sighting ("translationSighting") for |
| 272 | - the message set:: |
| 273 | - |
| 274 | - SELECT * FROM POTranslationSighting |
| 275 | - WHERE |
| 276 | - POTranslationSighting.pomsgset = poSet.id AND |
| 277 | - POTranslationSighting.active = TRUE) |
| 278 | - |
| 279 | - If we don't get any POTranslationSighting, we dump potSet along with |
| 280 | - poSet.commenttext and go on to the next message. |
| 281 | - |
| 282 | - XXX: Should we look on older translations? (Read comment #1) |
| 283 | - |
| 284 | - If we have an active translation we need to check if it's a plural form |
| 285 | - and if it's the same as the POTemplate one:: |
| 286 | - |
| 287 | - SELECT POMsgIDSighting.id FROM POMsgIDSighting |
| 288 | - WHERE |
| 289 | - POMsgIDSighting.pomsgset = potSet.id AND |
| 290 | - POMSgIDSighting.pluralform > 0 AND |
| 291 | - POMsgIDSighting.inlastrevision = TRUE |
| 292 | - |
| 293 | - If this query returns a result (and it should only ever return one), we |
| 294 | - call it "templatePluralSighting". |
| 295 | - |
| 296 | - If this query returns no results, it's not a plural form in the template. |
| 297 | - We now check whether it's a plural form in the PO file:: |
| 298 | - |
| 299 | - SELECT POMsgIDSighting.id FROM POMsgIDSighting |
| 300 | - WHERE |
| 301 | - POMsgIDSighting.pomsgset = poSet.id AND |
| 302 | - POMSgIDSighting.pluralform > 0 AND |
| 303 | - POMsgIDSighting.inlastrevision = TRUE |
| 304 | - |
| 305 | - If this query also returns no results, (it's non-plural in the PO file |
| 306 | - too) we dump potSet, with poSet.commenttext, poSet.fuzzy, |
| 307 | - translationSighting.potranslation.translation, and go on to the next |
| 308 | - message set. |
| 309 | - |
| 310 | - If this query does return results (it's non-plural in the template but |
| 311 | - plural in the PO file), we dump potSet with poSet.commenttext, |
| 312 | - translationSighting.potranslation.translation and a fuzzy flag, then go on |
| 313 | - to the next message set. |
| 314 | - |
| 315 | - Now, the case when the message set is plural in the template. |
| 316 | - |
| 317 | - We look to see if the same plural form exists in the PO file:: |
| 318 | - |
| 319 | - SELECT POMsgIDSighting.id FROM POMsgIDSighting |
| 320 | - WHERE |
| 321 | - POMsgIDSighting.pomsgid = templatePluralSighting.pomsgid AND |
| 322 | - POMsgIDSighting.inlastrevision = TRUE |
| 323 | - |
| 324 | - If the plural forms are equal, we dump potSet with poSet.commenttext, |
| 325 | - poSet.fuzzy (although if poSet.iscomplete is false, the fuzzy flag is |
| 326 | - set), translationSighting.potranslation.translation and go on to the next |
| 327 | - message set. |
| 328 | - |
| 329 | - If the plural forms are not equal, we dump potSet with poSet.commenttext, |
| 330 | - translationSighting.potranslation.translation and set the fuzzy flag. And |
| 331 | - then go to the next message set. |
| 332 | - |
| 333 | - 4. At this point we have dumped all current messag sets from the template, |
| 334 | - now it's time to export the remaining message sets from the PO file. |
| 335 | - |
| 336 | - We get the list of POMsgSets that are active:: |
| 337 | - |
| 338 | - SELECT POMsgSet.* FROM POMsgSet |
| 339 | - WHERE |
| 340 | - POMsgSet.potemplate = pot.id AND |
| 341 | - POMsgSet.pofile = po.id AND |
| 342 | - POMsgSet.sequence > 0 |
| 343 | - EXISTS (SELECT * FROM POMsgIDSighting |
| 344 | - WHERE |
| 345 | - POMsgSet.id = POMsgIDSighting.pomsgset AND |
| 346 | - POMsgIDSighting.inlastrevision = TRUE) |
| 347 | - ORDER BY POMsgSet.sequence |
| 348 | - |
| 349 | - And, for every POMsgSet we get, we check whether it's in our list of |
| 350 | - message sets that we've looked at already. If it is, we ignore it. If it |
| 351 | - isn't, we dump the message set with all its translations but without the |
| 352 | - file references and source comment, and set the obsolete flag. |
| 353 | - |
| 354 | |
| 355 | === removed file 'doc/rosetta-cmdline.txt' |
| 356 | --- doc/rosetta-cmdline.txt 2005-10-31 18:29:12 +0000 |
| 357 | +++ doc/rosetta-cmdline.txt 1970-01-01 00:00:00 +0000 |
| 358 | @@ -1,41 +0,0 @@ |
| 359 | -=========================== |
| 360 | - Rosetta command line tool |
| 361 | -=========================== |
| 362 | - |
| 363 | -We want a Rosetta command line tool, to interact with testing, importd |
| 364 | -and other tools we will be using in the server. |
| 365 | - |
| 366 | -Local tool |
| 367 | -=========== |
| 368 | - |
| 369 | -The tool will run on the same machine where Rosetta (Launchpad) is |
| 370 | -installed, so no XML-RPC or httplib funky stuff; just import |
| 371 | -lib.canonical.rosetta and rock on. |
| 372 | - |
| 373 | -We will probably have to have a way of pointing it to where the source |
| 374 | -tree is so that it can mess with the python path and parse the zcml |
| 375 | -necessary to connect to the database. |
| 376 | - |
| 377 | -Command line |
| 378 | -============= |
| 379 | - |
| 380 | -The sanest way to tell it what to do is probably a command line scheme |
| 381 | -that uses subcommands, kind of similar to tla, but with two levels; |
| 382 | -the first argument would be a class, the second one a "command". |
| 383 | - |
| 384 | -Use cases |
| 385 | -========== |
| 386 | - |
| 387 | -Import PO template |
| 388 | -------------------- |
| 389 | - |
| 390 | -command line:: |
| 391 | - |
| 392 | - % rosetta pofile parse xxx.po --potemplate ptid |
| 393 | - |
| 394 | -Import PO file |
| 395 | ---------------- |
| 396 | - |
| 397 | -command line:: |
| 398 | - |
| 399 | - % rosetta potemplate parse xxx.pot --new --name="name" --title="" |
| 400 | |
| 401 | === removed directory 'doc/user-manual' |
| 402 | === removed file 'doc/user-manual/Makefile' |
| 403 | --- doc/user-manual/Makefile 2005-10-31 18:29:12 +0000 |
| 404 | +++ doc/user-manual/Makefile 1970-01-01 00:00:00 +0000 |
| 405 | @@ -1,7 +0,0 @@ |
| 406 | -all: xhtml |
| 407 | - |
| 408 | -xhtml: rosetta-upstream-setup.xml |
| 409 | - xmlto xhtml rosetta-upstream-setup.xml |
| 410 | - |
| 411 | -clean: |
| 412 | - rm -f rosetta-upstream-setup.html |
| 413 | |
| 414 | === removed directory 'doc/user-manual/images' |
| 415 | === removed file 'doc/user-manual/images/products-search-form.png' |
| 416 | Binary files doc/user-manual/images/products-search-form.png 2005-10-31 18:29:12 +0000 and doc/user-manual/images/products-search-form.png 1970-01-01 00:00:00 +0000 differ |
| 417 | === removed file 'doc/user-manual/rosetta-upstream-setup.xml' |
| 418 | --- doc/user-manual/rosetta-upstream-setup.xml 2005-10-31 18:29:12 +0000 |
| 419 | +++ doc/user-manual/rosetta-upstream-setup.xml 1970-01-01 00:00:00 +0000 |
| 420 | @@ -1,58 +0,0 @@ |
| 421 | -<?xml version="1.0"?> |
| 422 | -<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" |
| 423 | - "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [ |
| 424 | -]> |
| 425 | -<article> |
| 426 | - <articleinfo> |
| 427 | - <title>How can I use Rosetta to translate my project</title> |
| 428 | - <author> |
| 429 | - <firstname>Carlos</firstname> |
| 430 | - <surname>Perelló Marín</surname> |
| 431 | - </author> |
| 432 | - </articleinfo> |
| 433 | - |
| 434 | - <sect1> |
| 435 | - <title>Introduction</title> |
| 436 | - <para> |
| 437 | -This document covers all steps needed to follow so you get a new resource to |
| 438 | -translate imported into Rosetta. It does not cover the steps to translate |
| 439 | -Ubuntu resources, if you have any special request or question about Ubuntu |
| 440 | -translations, please, send it directly to |
| 441 | -<ulink url="http://lists.ubuntu.com/mailman/listinfo/ubuntu-translators"> |
| 442 | -Ubuntu translators mailing list</ulink>. |
| 443 | - </para> |
| 444 | - </sect1> |
| 445 | - |
| 446 | - <sect1> |
| 447 | - <title>Creating a new Product in Launchpad</title> |
| 448 | - <para> |
| 449 | -To be able to translate anything with Rosetta you need first a product in |
| 450 | -Launchpad. There are already many products created already in Launchpad, so |
| 451 | -the first step is check if it already exists. To do it go to the |
| 452 | -<ulink url="https://launchpad.ubuntu.com/products">Product Search form</ulink> |
| 453 | -and try to find the product you are interested on. |
| 454 | - |
| 455 | - <mediaobject> |
| 456 | - <imageobject> |
| 457 | - <imagedata fileref="images/products-search-form.png" format="PNG" /> |
| 458 | - </imageobject> |
| 459 | - |
| 460 | - <textobject> |
| 461 | - <phrase>Launchpad product search form.</phrase> |
| 462 | - </textobject> |
| 463 | - |
| 464 | - <caption> |
| 465 | - <para> |
| 466 | - Launchpad product search form. |
| 467 | - </para> |
| 468 | - </caption> |
| 469 | - </mediaobject> |
| 470 | - |
| 471 | - </para> |
| 472 | - |
| 473 | - <para> |
| 474 | -If you are not able to find the product you are interested on |
| 475 | - </para> |
| 476 | - </sect1> |
| 477 | - |
| 478 | -</article> |
| 479 | |
| 480 | === removed file 'doc/zope3sins.txt' |
| 481 | --- doc/zope3sins.txt 2005-10-31 18:29:12 +0000 |
| 482 | +++ doc/zope3sins.txt 1970-01-01 00:00:00 +0000 |
| 483 | @@ -1,7 +0,0 @@ |
| 484 | -=========== |
| 485 | -Zope 3 Sins |
| 486 | -=========== |
| 487 | - |
| 488 | -This document is for collecting those areas of Zope 3 that depend on the |
| 489 | -ZODB, object graph<->URLs or make other assumptions that make it difficult to |
| 490 | -use in ways that diverge from those assumptions. |
| 491 | |
| 492 | === removed directory 'lib/canonical/launchpad/apidoc' |
| 493 | === modified file 'lib/canonical/launchpad/scripts/__init__.py' |
| 494 | --- lib/canonical/launchpad/scripts/__init__.py 2010-04-27 22:33:21 +0000 |
| 495 | +++ lib/canonical/launchpad/scripts/__init__.py 2010-05-14 14:41:10 +0000 |
| 496 | @@ -24,11 +24,9 @@ |
| 497 | from textwrap import dedent |
| 498 | import threading |
| 499 | |
| 500 | -import zope.app.appsetup |
| 501 | import zope.sendmail.delivery |
| 502 | import zope.site.hooks |
| 503 | from zope.configuration.config import ConfigurationMachine |
| 504 | -from zope.configuration.config import GroupingContextDecorator |
| 505 | from zope.security.management import setSecurityPolicy |
| 506 | from zope.security.simplepolicies import PermissiveSecurityPolicy |
| 507 | |
| 508 | @@ -45,29 +43,6 @@ |
| 509 | # Intentional re-export, following along the lines of the logger module. |
| 510 | from canonical.launchpad.scripts.loghandlers import WatchedFileHandler |
| 511 | |
| 512 | -# XXX StuartBishop 2005-06-02: |
| 513 | -# We should probably split out all the stuff in this directory that |
| 514 | -# doesn't rely on Zope and migrate it to canonical/scripts. |
| 515 | - |
| 516 | -class NullItem: |
| 517 | - def __init__(self, context, handler, info, *argdata): |
| 518 | - newcontext = GroupingContextDecorator(context) |
| 519 | - newcontext.info = info |
| 520 | - self.context = newcontext |
| 521 | - self.handler = handler |
| 522 | - self.argdata = argdata |
| 523 | - |
| 524 | - def contained(self, name, data, info): |
| 525 | - return NullItem(self.context, None, None) |
| 526 | - |
| 527 | - def finish(self): |
| 528 | - pass |
| 529 | - |
| 530 | - |
| 531 | -def NullFactory(context, data, info): |
| 532 | - return NullItem(context, data, info) |
| 533 | - |
| 534 | - |
| 535 | def execute_zcml_for_scripts(use_web_security=False): |
| 536 | """Execute the zcml rooted at launchpad/script.zcml |
| 537 |

Looks good.