The Workgroup Manager is a Python application designed to address the needs of a university student who frequently collaborates on group projects. Coordinating schedules with a large number of group members can be challenging. This application allows each group member to input their availability for project work, and it displays a visual representation of all members' available days. This simplifies the process of determining the days with the most available group members for collaborative work.
- Cross-platform accessibility: The application can be used on various operating systems.
- User accounts: Users can create unique accounts with usernames and passwords to log in.
- Group creation: Users can create groups with unique names, passwords, and deadlines.
- Group administration: Group administrators can modify group properties, including the group administrator, password, and deadline.
- Group joining: Any user can join a group if they know the group's name and password.
- User invitations: Group administrators can invite users to join their groups.
- Availability input: Users can input their available days into the application.
- Visual availability display: The application visually represents the availability of all group members.
- Important change notifications: Users receive external notifications for significant group changes.
- Data integrity: User-entered data is accurately transmitted to the database, and vice versa.
The project is organized into three main files:
- gestor.py: Contains the graphical user interface (GUI) and most of the program's logic.
- db.py: Defines functions for executing SQL queries.
- clases.py: Defines the User and Group classes with their attributes and functions.
The GUI is created using the tkinter library, allowing the application to create screens, frames, buttons, labels, entries, and more. It provides flexibility in customizing GUI elements, such as changing background colors, fonts, and hover effects.
A visual calendar is incorporated to display the availability of group members. Days change color based on member availability. The tkcalendar library is used for this purpose.
The messagebox library from tkinter is used to display user-friendly messages, such as username availability when creating an account.
To display group information, the Treeview library from tkinter is used. It helps create and display tables of group information.
Tables are updated automatically to reflect changes, such as when a new group is created.
A separate file, "db.py," is dedicated to database interaction. It defines a MySQL connector and functions to create, retrieve, and modify data in the database.
A function is implemented to ensure that user-entered dates have the correct format.
- Cross-Platform Compatibility: Achieved.
- User Account Creation: Achieved, with username uniqueness verification.
- Group Creation: Achieved, with required name, password, and deadline.
- Group Administration: Achieved, limited to group administrators.
- Group Joining: Achieved with the group name and password.
- User Invitations: Achieved with notifications.
- Availability Input: Achieved, allowing users to input their availability.
- Visual Availability Display: Achieved, visually representing group member availability.
- External Notifications: Partially achieved. Internal notifications are implemented, but external notifications can be explored in future development.
- Data Integrity: Achieved. Data is accurately transmitted to and from the database.
- External Notifications: Implement notifications outside the application, such as desktop notifications or automated emails, to keep users informed.
- Alternative Availability Input Method: Explore alternative methods for users to input their availability to make the process less tedious.
- Visual Deadline Display: Display group deadlines graphically on the calendar and restrict availability modifications after the deadline to maintain data integrity.




