Issue tracker
Universiteit Antwerpen
A redeveloped issuetracker for Anet, with enhanced database integration and search functionality, powered by Django.
Introduction
The Anet issuetracker system faced the challenge of being offline and inaccessible. To overcome this problem and enable effective issue tracking and resolution, a project was undertaken to revive and restore the issuetracker. By reviving the system, users regained access to an efficient issue management platform, fostering improved communication and streamlined issue resolution within the Anet organization.
Diving into Django and Database Structure Analysis
Initially, I had to delve into Django, given my limited experience using ORM models in relatively large projects. Following that, I analyzed the current database structure which, at first glance, seemed fairly standard and translatable into tables and associative tables.
Challenges and Solutions
However, using the database within Django’s ORM system turned out to be not as straightforward, due to peculiar field names and redundant tables. The solution was to write a script that extracts necessary data from the old database using simple SQL operations and inserts it into the Django ORM model.
Implementation of Data Structure
Next, I created functions to make this task as easy as possible. The data structure was as follows: "Issue", which housed "Keywords" and "Messages". Each message also contained relevant keywords. For every issue, the corresponding messages and their keywords needed to be fetched.
Fig 1. Overview of the datastructure
Interface and Search Functionality
After solving the database issues, I started working on the templates. I created a simple interface that searches for issues matching entered search terms in real-time. The search process has been significantly simplified, allowing for multiple attributes to be entered into a single search field.
Future Plans
While the project currently utilizes standard Django templates, the intention is to eventually migrate this to Jinja2 templates.