feat(project_management): Calculate project completion percentage and display
ref: #293 #301
This commit is contained in:
@ -11,6 +11,10 @@ class ProjectSerializer(
|
||||
serializers.ModelSerializer,
|
||||
):
|
||||
|
||||
percent_completed = serializers.CharField(
|
||||
read_only = True,
|
||||
)
|
||||
|
||||
url = serializers.SerializerMethodField('get_url')
|
||||
|
||||
|
||||
@ -58,6 +62,7 @@ class ProjectSerializer(
|
||||
'manager_team',
|
||||
'team_members',
|
||||
'project_tasks_url',
|
||||
'percent_completed',
|
||||
'created',
|
||||
'modified',
|
||||
'external_ref',
|
||||
|
@ -136,10 +136,11 @@ class DetailForm(ProjectForm):
|
||||
initial = to_duration(self.instance.duration_project),
|
||||
)
|
||||
|
||||
self.fields['resources'] = forms.CharField(
|
||||
label = 'Available Resources',
|
||||
self.fields['completed'] = forms.CharField(
|
||||
disabled = True,
|
||||
initial = 'xx/yy CPU, xx/yy RAM, xx/yy Storage',
|
||||
help_text = 'Project completion percentage.',
|
||||
initial = self.instance.percent_completed,
|
||||
label = 'Completed',
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
|
@ -202,5 +202,36 @@ class Project(ProjectCommonFieldsName):
|
||||
str: Calculated percentage of project completion.
|
||||
"""
|
||||
|
||||
return 'xx %'
|
||||
from core.models.ticket.ticket import Ticket
|
||||
|
||||
ticket_status_closed = [
|
||||
TicketValues._CANCELLED_INT,
|
||||
TicketValues._CLOSED_INT,
|
||||
TicketValues._SOLVED_INT,
|
||||
]
|
||||
|
||||
all_tickets = Ticket.objects.filter(
|
||||
project = self.id,
|
||||
).exclude(
|
||||
status__in = ticket_status_closed
|
||||
)
|
||||
|
||||
closed_tickets = Ticket.objects.filter(
|
||||
project = self.id,
|
||||
status__in = ticket_status_closed
|
||||
)
|
||||
|
||||
calculation: int = 0
|
||||
|
||||
if len(all_tickets) > 0:
|
||||
|
||||
if len(closed_tickets) > 0:
|
||||
|
||||
calculation: int = int(
|
||||
(
|
||||
len(closed_tickets) / len(all_tickets)
|
||||
) * 100
|
||||
)
|
||||
|
||||
return str(calculation) + '%'
|
||||
|
||||
|
Reference in New Issue
Block a user