Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • A public search portal for the UC and Jepson herbaria collections. The UCJEPs search portal opens up the herbaria's vast collection of plant specimens to researchers and other interested parties.
  • A point-and-click interface to a variety of "non-CSpace" reports for the UC Botanical Garden. (login required)
  • A quick-and-easy interface for PAHMA to upload images and associate them to collection objects.  (login required)
  • A quick-and-easy generalized search interface (to be used by PAHMA and UCBG initially.)  (NB: login required in both cases)

 

...

John Lowe developed a set of applications in 2012-2013 in Python using CGI for PAHMA in order to meet some rapidly evolving needs related to the major move that museum is conducting.  In about March 2013, the UCB team decided that it was time to select a more enabling framework for web applications and build an environment that would provide an excellent platform for web applications that connect to our CollectionSpace instances.  The framework selected was Django. Richard Millet then built a Django project capable of authenticating to CollectionSpace that can be used generally to connect to CollectionSpace deployments. That code project using Django's "authentication backend" to permit apps to authenticate with CollectionSpace servers. That project is called cspace_django_project.

The cspace_django_project can serve  serves as the starter project for local, custom CSpace-Django projects. Using Git and GitHub, local CollectionSpace instances can fork the code to their own repository, clone it, and create a custom project – containing one or more web applications – by making modifications to the clone. The cspace_django_project, a fork of which will reside unchanged in each deployer's repository, can serve as the conduit for general bug fixes and enhancements.

...

  • Security: Web apps must prevent SQL injection.  Must run under https.
  • Some applications will require login with CSpace credentials.  Others will be public portals that will use a proxy CSpace login with appropriate permissions.
  • Searching
    • Where possible, use REST API to conduct searches, using NXQL queries.  These will guarantee that the same results are produced.  Also, CSpace permissions will be applied.
    • CMIS queries can be developed that will allow some joins.
    • Other searches will require Postgres queries.
    • Performance might determine how queries are done as wellWill be supported using Solr, Postqres, or NXQL queries as appropriate..
    • Performance will certain need to be considered in how queries are done.
    • We will need to allow hierarchical searching (e.g., "find all specimens within the genus Phlox", "find all artifacts from Colombia").
    • Term completion or type-ahead will be needed in some search fields.
  • Images: Because the user will be authenticated with CSpace credentials, images should be available without further workimages may or may not need to be publicly accessible (depending on the webapp). This issue will require some analysis.
  • Save results as data file: Python has the ability to present list results should be available as a text (.csv) file for download.

Open questions

  • Do web apps run on the CollectionSpace application server or on separate VMs?
  • Do we query the Nuxeo database directly or build out a snapshot elsewhere?
  • Django has an ORM.  Should we use it, or write raw SQL?  There seems to be some significant discussion of the advantages and disadvantages (e.g. vs. SQLAlchemy, here, here).
  • If performing SQL queries directly, credentials need to be proxied and secured.  Postgres views can provide some isolation of the data.
  • Do we need to perform pagination of large search results?  What do other sites do?
  • For our first prototype application, should we demonstrate hierarchical searching, or should we start with the simplest scenario
  • When there are multiple images related to a collection object, should we show only the "preferred" image (PAHMA customization?) or show them in some order with a prev-next widget?

...

The following links illustrate some of the efforts to implement Django-based webapps that support CSpace deployments

  • Preliminary wireframes for a prototype UCJEPS portal, with notes about UCBG differences.
  • Design and implementation of the Bulk Media Upload facility, currently used by PAHMA.
  • "Generalized Web Portal" design and implementation.