Skip to content

Google Summer of Code Project Report

Kumar Akshay edited this page Aug 14, 2018 · 48 revisions

1_iaxnlarxipnwdwm19ogvyq

This page gives a detailed report on the "Command Line Plone Tools" project under GSoC 2018.

Blogs for a weekly break-up of my progress and core details on few of the improvements.

About me:

I'm Kumar Akshay, senior undergrad, studying Electronics and Telecommunication Engineering at Shri G.S. Institute of Technology and Science, India.

Goal of the project:

This project is about improving plonecli and bobtemplates.plone by adding sub-templates like view, viewlet, portlets as well as improving existing sub-templates. Also improving the current scenario of creating/updating the locale of packages, making plonecli more accessible by adding useful commands. The scope of this project also includes increasing test coverage and working on fixing bugs which comes along the way.

Weekly breakdown of tasks

Week # Issues/Features/Bug Fixes PR Links
Week I Hide filter options in FTI settings, when dexterity_type_base_class is 'Item' #289
Week II If global_allow is False, ask for parent containter content_type #284
Week III Add version option #24
Week IV Add conditional test for content_type sub-template #290
Week IV Create custom to_boolean jinja filter #292
Week IV Prepare package for mockup pattern development #291
Week V Add configure command to set user defaults for mrbob #26
Week V shift changes from buildout to addon #297
Week VI Add buildout script to create/update locales #304
Week VII-VIII Add sub-template "view" to create views #299
Week IX Add latest commands in README.md #18
Week IX Add a sub-template "viewlet" #281
Week X Replace stringcase library by case_conversion library #312
Week X Create portlet #308
Week XI Add -t and -s option to the test command #31
Week XI ConfigParser.NoOptionError: No option 'package.git.init' in section: 'variables' #35
Week XI UnicodeDecodeError on plonecli config #35
Week XII Write proper unit tests, aim for 100% unit test coverage --

Work progress during different phases of GSoC

Community Bonding Period

During this period, we mainly discussed the scope of the project and added doable tasks, arranged in order of difficulty/time involved, in the Progress Board. I learned more about Plone development, existing subtemplates in bobtemplates.plone.

Link to the blog about this phase.

First Evaluation Phase

During this period, I mainly worked on content_type subtemplate to have the following improvements

  • Hide filter options in FTI settings, when dexterity_type_base_class is 'Item'
  • If global_allow is False, ask for parent container content_type
  • Improved the generated tests by making the generation process more intelligent and robust.

we made a release of these new features in bobtemplates.plone v3.3.0

Blog on these features.

Second Evaluation Phase

During this phase, I worked on a variety of tasks from plonecli as well as bobtemplates.plone

  • Added plonecli -V command in plonecli.
    $ plonecli -V
    Available packages:
       plonecli : 0.2.2
       bobtemplates.plone: 3.4.2
    
  • Added few conditional tests for content_type in bobtemplates.plone.
    Thus increased the skeleton tests coverage for content_type.
  • Added custom filter in jinja environment for tests.
    This feature added flexibility in skeleton tests for range of user inputs (True, 1,y, n, 0).
  • extended .gitignore and buildout.cfg in addon subtemplate.
  • worked on implementing a cross-platform script to add/update locale.
    This feature ease the developer workflow to create or update locale.
    For instance to add locale for german language, run these commands -
    $ mkdir src/collective/todo/locales/de
    $ ./bin/update_locale
    
  • started to work on adding view subtemplate to bobtemplates.plone.

Blog on these features

Third Evaluation Phase

During this phase, I majorly worked on bobtemplates.plone

  • Continued work on view subtemplate.
  • Added viewlet subtemplate.

we made a release of both plonecli v0.2.1 and bobtemplates.plone v3.4.1

  • worked on adding portlet subtemplate.
    Added a simple portlet which takes in city, country code and presents weather report of that city from yahoo API.
  • worked on fixing few bugs which went unnoticed in the release
    • ConfigParser.NoOptionError: No option 'package.git.init' in section: 'variables'
      added a fix to preserve user commented settings along with the fix of above error.
    • UnicodeDecodeError on plonecli config
  • worked on adding test specific commands like plonecli test -a, plonecli test -t, plonecli test -s or multiple combinations of these three.

we made a release of plonecli v0.2.2 and bobtemplates.plone v3.4.2

Things that were planned but not finished during GSoC:

  • write proper unit tests, aim for 100% unit test coverage
    Unit tests for all new features are already at 92% but there is some work required for other parts that were introduced before the GSoC period.

Overall there is 6.66% rise in unit test coverage in plonecli.
2% rise in unittest test coverage in bobtemplates.plone.
Also there are significant improvements in skeleton test coverage in both of the packages.

Conclusion:

I am grateful to work with my mentors Maik Derstappen, Encolpe Degoute and Alexander Loechel for this project. They helped me throughout summers in every possible way. I am also thankful to the Plone community for giving me this opportunity to work on this project.

References:

Daily LogBook : https://github.com/plone/plonecli/wiki/Logbook
Weekly Blog : https://medium.com/@k.akshay9721/
Project Progress Board : https://github.com/orgs/plone/projects/2
Discussions : https://gitter.im/plone/plonecli