====
TODO
====

as next
-------

- implement ghost file management

  - allow to remove ghost files


- fsfile path

  - migrate to relativ file path using base url



- publisher

  - switch to p01.publisher

- testing

  - use p01.testbrowser for testing

- pypi.org

  - use new pypi.org standards

  - support new release api

- search

  - fix search form and listing


Usability
---------

- implement better batching, it's a pain to iterate over all pages

- improve search, it doesn't return Scrapy if we search for scrapy (lower case)

  - check our indexer implementation and all text index options
    simlify the text lookup, currently they all use different names e.g.
    packageText, releaseText etc

- improve sorting, sort release packages correct e.g. 0.1.0, 0.2.0, ..., 0.10.0


Issues
------

- fix missing created and modified for project files

  - any others where we don't show the created/modified date?

- fix System Error if a unknown package name get used e.g. scrapy instead of
  Scrapy


Update
------

- use new attributes, see latest changes in pypi

  - at least update xmlrpc method release_data which uses new attributes


General
-------

- make sure we can fetch the docutils 0.4 version from the following url:
  Download URL: http://prdownloads.sourceforge.net/docutils/docutils-0.4.tar.gz?download

  see the pypi page for the link we have to follow at:

  http://pypi.python.org/pypi/docutils/0.4


Flexibility
-----------

  - Allow to mirror packages from different pypi servers.

    - implement pypiURL and simpleURL for each package
      Right now we guess the simple index url based on the pypi index url.
      Change this and offer a simple index url attribute at site level.

    - implement pypi and simple index url attributes for mirror packages

  - optional hand crafted release for mirror packages

    - implement the option for allow to add local release for mirror packages
      this is needed if we like to mirror packages like PIL which are messed up
      and do not follow the pacakge release guideline. It should be possible
      to add missing release which didn''t get mirrored within our concept in
      mypypi.api


User Management
---------------

  - implement search in user management page

  - use password confirmation widget from p01.widget.password

  - allow to edit users without to have the password. Should work with
    p01.widget.password. If not, fix it.

  - implement send lost password, including an option at site level for
    enable/disable this option.


Search
------

  - fix search, eek, this is important of large egg listings


Datetime
--------

  - check datetime handling

    - the created time in history.html does not show the local time. It shows
      01:39 but we have 03:39. That's a (-02.00) difference (timezone)!


General
-------

  - allow to upload a build.cfg with versions, check through the stored
    packages for versions, allow fetching of packages which miss the
    specified versions

  - allow to add a package collection and ignore DuplicationError, just
    skip duplicated packages and show a status message about skipped packages
    instead of abort transaction.

  - implement ITZInfo adapter which is able to lookup the right time zone.
    First, we need to implement an ITZInfo adapter probably in p01.l10n

  - implement mail option, send mail on error to a special error message email
    address (mailing list). Add option for mail mirror message summary to each
    user which enables such an option. (push status observation)

    - add this option to the buildout setup script

  - implement classifiers as local data and implement update method which will
    fetch new classifiers from pypi. See ClassifierBuilder in mpypi.api

  - implement md5 check for already mirrored packages. If original md5 hash
    has changed at pypi, remove and mirror package again. Add option for
    enable/disable this security check. This is usefull since people update
    bad released packages and replace them within new releases instead of
    release another bugfix version. eeek

  - add something for storing .cfg files for buildout

  - remove log to stdout?


Documentation
-------------

Write better documentation

- document installation

- document permission concept (group at site level, local role at package level)

- document fsfile concept

- document keas.build support

  - add a special note about the leak of files in source folders and explain
    the workarround we use in our p01.recipe.setup packages (deploy resources
    in packages which keas.build includes implicit with the correct version)

- publish documentation at mypypi.org website

- offer mailing list and issue collector page based on ???

- add link to www.mypypi.org website


Concept
-------

Write a concept overview with the topics listed below.

- bootstrap PYPISite as application root folder and skip original zope
  RootFolder based on bootstrap from zope.appsetup pacakge


- hierarchie

  site (root)
   |
    - package (local or mirror)
       |
        - release (local or mirror)
           |
            - release file

- indexes

  - http://localhost:8080/simple

  - http://localhost:8080/pypi


- API used by distutils:

  - file_upload page used by distutil command setup.py upload

  - submit page used by distutil command setup.py register

  - list_classifiers page used by distutil command
    setup.py register --list-classifiers

  - verify page used by distutil command setup.py register --dry-run
