GSoC Weekly Blog #1

Published: 06/08/2020

The coding phase of GSoC'20 finally began last week. I finished up fixing the existing bugs in mscolab and started my work on the admin window for mscolab. I have 3 major components that I am going to build during GSoC and the admin window is the first one. The admin window will allow flight campaign project admins to quickly add/modify/delete the permissions of the users working on their project.

My aim for last week was to get the UI and the server endpoints setup but I was able to finish up quite a lot more. I started with the UI in QtDesigner and wrote the necessary API endpoints. I got stuck while writing the APIs because it was my first time using the flask-SqlAlchemy library. I had used a "is None" comparison in the query filter which doesn't work in SqlAlchemy. I was stuck for quite some time before I figured out where the issue was. Finally, I realized the error and fixed it by replacing it by the "is_" function in Sql Alchemy.

After completing the APIs and connecting them to PyQt5 UI, I started my work on the search filters for the window. I added a search by username or email filter and a filter based on permission of the user. After adding the filters I added a socket event to refresh the window for other users when the permissions are updated in the admin window.

With all this, my work on the admin dashboard was mostly complete and I made a PR. After some review from my mentor and some slight refactoring, my first GSoC PR was accepted 🎉.

Now, for this week, I am going to start working on the unit tests for the admin window. I have already started working on them and will finish them up in the next couple of days. I don't have much experience in writing unit tests and the QtTest library for PyQt is also lacking some examples so I am learning most of the functions from reading the existing tests. After the tests are done, I will be moving on to the next component in my GSoC project which is the chat window. I aim to finish up the UI of the chat window and work on the markdown support.