This is part of a recurring series between May – August 2019 on the Community Blog about Fedora Happiness Packets. These posts are published as part of a series of prompts from the Outreachy program.

From The theme for this week is “Modifying Expectations”. Outreachy mentors and interns start the internship with a specific set of project goals. However, usually those goals need to be modified, and that’s perfectly fine! Delays to projects happen. Maybe your project turned out to be more complicated than you or your mentor anticipated. Maybe you needed to learn some concepts before you could tackle project tasks. Maybe the community documention wasn’t up-to-date or was wrong. These are all perfectly valid reasons for projects to be a bit behind schedule, as long as you’ve been working full-time on the project. In fact, free and open source contributors have to deal with these kinds of issues all the time. Projects often seem simple until you start working on them. Project timelines are ususally a very optimistic view of what could happen if everything goes exactly as planned. It often doesn’t, but people still make optimistic plans. Modifying your project timeline to set more realistic goals is a skill all contributors need to learn.

Your goal for this week’s blog post is to write a report about your progress on your project. Talk about what you accomplished so far. Talk about what goals too more time than expected. The blog post should also detail what your modified goals for the second half of the internship is.

Accomplishments so far

Make admin portal easier to discover: It aims to change the admin portal URL and provide easier navigation to admin settings for admin users.

Migration of TestCases to Pytest: Earlier testing was was performed by Django Unit test which was migrated to Pytest since its more cleaner, made the code more compact and provides better error handling.

Testing FHP: Writing robust, reusable and accurate test cases for the entire application.

Enhance navigation: This includes providing better user navigation across the navbar, removing static messages and integrating search page into the archive.

Search option to send Happiness Packet to specific FAS account: Integrate FAS System in Fedora Happiness Packet so as to send a happiness packet to a person with only knowledge of their FAS username.

What I learned so far

I was a beginner in Django when I started working on this project. Earlier I worked on JavaScript-based framework, and switching to Python was a big change for me. So, it was always learning and implementing on my part. Since Django was new to me, I had to learn it fast, at least the core concept. I found some good resources but they were so detailed that at the end of the document, I would have lost interest in some of the topics. Then I found this tutorial, which turned out to be the perfect platform to have an overall grasp of the widely used python framework.

I learned about containers, their importance and concept of virtualization. How Docker can also be used when we want to deploy an application to an environment. Understood the concept behind it, learned the basic commands and how to deal with multiple Docker containers.

In the second half of my internship, I improved and wrote tests of the project without having any prior knowledge of the concept at the beginning.

I was introduced to testing for the first time and the overall learning experience was enriching. My task included shifting the testing framework( from Django Unit Test to Pytest), migrate already written test cases and test the new features added. I learned the concept of Test-Driven Development which ensures the software is well functioning as well as its internals are well designed and reusable.

Challenges from timeline

The second phase of the internship was quite difficult for me. Figuring out one of the failing test cases while migrating tests was driving me crazy. It took a couple of weeks to figure out what was happening at the backend which caused the problem. This exactly happened with 2-3 test cases and since Django does a lot of work implicitly, getting the root cause was troublesome and time-consuming. But after following the documentation many a time, figuring out seemed less painstaking. And when all those test cases passed finally, happiness found no boundaries.

What’s next for the internship

In the second half of the internship, I plan to work on the UI of Fedora Happiness Packets. The front-end of FHP is not flexible and robust and differs a lot from the rest of Fedora Applications, so I aim to incorporate Fedora-Bootstrap into the project. I will also be working on the test coverage of the project and testing FAS-Search. I also aim to prepare for the project showcase at Flock to Fedora 2019. As a stretch goal, I aim to work on integrating different social media platforms on the website and also work on the auto-completion in FAS-Search.

Detailed information of my updated timeline is here.

Tips for future interns

Many times things do not go according to plans and it’s fine too. The best we could do from our part is to have enough room and time for us to acknowledge it, learn and grow through the entire process. Try to look for blogs and articles for help, they give relatable and close insight where official documentation might not come handy.

P.S – If I was given a chance to start the project over, I would surely take enough time to read the Django Docs thoroughly and have a deep idea of the whole framework. 

For more information, you can contact me at and can follow on twitter for blog updates.