Skip to content

Final Submission Report GSoC 2017

Shriyansh Agrawal edited this page Aug 30, 2017 · 8 revisions

I spent this summer developing plone.importexport add-on For Plone Organisation, under Google Summer OF Code 2017 programme.

First of all, I would like to thank my mentors Franco Pellegrini, Alexander Loechel and Dylan Jay, Cris Ewing and the plone community for guiding me through the project helping me rectify my mistakes and most importantly maintaining a friendly and positive atmosphere within the community.

During the course of 3 months, I have learned and interacted with many more people from all over the world on community forum

plone.importexport

Problem Addressed

Currently, webmasters, the primary users of this addon, find it difficult to import/extract data from Plone sites and usually end up with raising requests in community support for the same. So an addon which would ease import/export process and could be added in Plone.core would be appreciated.

Solution Proposed

This Project solved the above-mentioned problem by developing a method to allow an editor to import content, export content or move content securely between sites. The exposed feature of this addon is to provide an easy-to-use UI for nontechnical users as well. In addition, this also checks for designated permission access and log all possible errors. This import/export feature will be applicable to all the Plone 5 default content-types and any regular Dexterity type.

The orginal proposal of the project is here

Pull Request

I worked on a forked repository of collective/plone.importexport. And all my work is under a single merged PR: https://github.com/collective/plone.importexport/pull/1

Tasks completed

  • Basic tab that would allow to export all the folder and tree contents in zipped file with a log report
  • Basic tab that would allow to import all the folder and files with a downloadable report file at the end of process
  • Advanced tab that would allow to do the same as in Basic Tab but it will also allow-
    • to choose the data format (Only csv or only files or both?)(Export)
    • select and include certain fields and not all(import/export)
    • action to take if content already exists (ignore, update) (import)
    • dry run mode (import)
  • Unit test module
  • User guide for non-technical folks

Open Issues and Missing work

This addon has three open issues, which should be closed as part of the project:

  • Critical issue which affects the import functionality:
  1. Missing content after importing - So at current status a full import would not be possible and errors will be logged in an import-log file. This issue demands fix from Plone's plone.restapi module and people are already onto it which means it should be fixed in some time.
  • Following issues are not of high priority and require minimal changes to be done for UI Enhancement:
  1. Improve "Import" functionality - After importing a BrowserView rather than downloadable report file with basic info on what happened, like "1020 items were imported, 30 had errors, 2 were not imported" is preferred
  2. creating new against existing content - A functionality which would allow user to rename the object id while importing if the object with the same id already existing. This functionality is near to completion, all it takes to integrate it into UI using JS script. The Python functions to support this functionality is already in place.

Documentation

Documentation on Usage and installation guide is updated on Project Readme

Tests

During the course of development. I also developed unittests module for this add-on, which has a significant coverage of add-on


Challenges faced

  • Using plone.restapi method calls
  • Analysing Plone site data
  • Integrating JS and mockup patterns into add-on

Learnings from Plone Environment

  • Necessity of use of Adapters, Patterns and Interfaces in programming
  • Extended Python Programming Skills
  • Structure to write Unit test cases to cover each unit functionality
  • Pep8 programming style

Organisational details

Links to minutes of meetings of weekly meetings and progress reports are at https://github.com/Shriyanshagro/plone.importexport/wiki

A few conversations and challenges I faced during the course of project are on this forum: https://community.plone.org/t/content-import-and-export/3789?u=shriyanshagro

What Now?

I plan to contribute to Plone in my free time even after GSoC. Plone is already considered one of the best CMS. If more time and work is put in its development, it can achieve much greater heights.