Skip to content

Commit

Permalink
feat: simplify Task actions
Browse files Browse the repository at this point in the history
  • Loading branch information
trebidav committed Nov 30, 2024
1 parent aab7f7f commit f687622
Showing 1 changed file with 24 additions and 19 deletions.
43 changes: 24 additions & 19 deletions comrade/comrade_core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,13 @@ def __str__(self) -> str:
datetime_finish = models.DateTimeField(auto_now_add=False, blank=True, null=True)

def start(self, user: User):
if user == self.owner:
raise ValidationError("Owner cannot start the task")

has_required_skills = user.skills.filter(
id__in=self.skill_execute.all()
).exists()

if not has_required_skills:
raise ValidationError("User does not have required skills")

Expand All @@ -109,48 +113,49 @@ def start(self, user: User):
self.save()

def pause(self, user: User):
if user != self.owner or user != self.assignee:
raise ValidationError("Only owner and assignee can pause the task")
if user != self.assignee:
raise ValidationError("Only assignee can pause the task")

if self.state != Task.State.IN_PROGRESS:
return False

self.state = Task.State.WAITING
self.save()

def resume(self, user: User):
if user != self.owner or user != self.assignee:
raise ValidationError("Only owner and assignee can resume the task")

if self.state != Task.State.WAITING:
return False

if user != self.assignee:
raise ValidationError("Only assignee can resume the task")

self.state = Task.State.IN_PROGRESS
self.save()

def finish(self, user: User):
if self.state != Task.State.IN_PROGRESS:
return False

if user != self.owner or user != self.assignee:
raise ValidationError("Only owner and assignee can finish the task")

self.datetime_finish = now()
self.save()

def rate(self, user: User):
if user != self.owner or user != self.assignee:
raise ValidationError("Only owner and assignee can rate the task")

if self.state != Task.State.IN_PROGRESS:
return False
r = Rating()
r.task = self
r.save()
self.state = Task.State.IN_REVIEW
self.save()

def review(self, user: User):
if user != self.owner:
raise ValidationError("Only owner can review the task")

if self.state != Task.State.IN_REVIEW:
return False

if user == self.owner:
raise ValidationError("Owner cannot review the task")

has_required_skills = user.skills.filter(
id__in=self.skill_write.all()
).exists()
if not has_required_skills:
raise ValidationError("User does not have required skills")

r = Review(done=1)
r.task = self
r.save()
Expand Down

0 comments on commit f687622

Please sign in to comment.