Skip to content

Commit

Permalink
Merge pull request #1189 from tommygonzaleza/joined-cohort-activity
Browse files Browse the repository at this point in the history
Add Joined cohort activity registration
  • Loading branch information
tommygonzaleza authored Dec 14, 2023
2 parents 6aed1f3 + 31d56f8 commit 0ef0832
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 7 deletions.
38 changes: 38 additions & 0 deletions breathecode/activity/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
'auth.User': [
'login',
],
'admissions.CohortUser': [
'joined_cohort',
],
'assignments.Task': [
'open_syllabus_module',
'read_assignment',
Expand Down Expand Up @@ -233,6 +236,41 @@ def cohort(cls,

return obj

@classmethod
def cohort_user(cls,
kind: str,
related_id: Optional[str | int] = None,
related_slug: Optional[str] = None) -> dict[str, Any]:
from breathecode.admissions.models import CohortUser

kwargs = cls._get_query(related_id, related_slug)
instance = CohortUser.objects.filter(**kwargs).first()

if not instance:
raise RetryTask(f'CohortUser {related_id or related_slug} not found')

syllabus = (
f'{instance.cohort.syllabus_version.syllabus.slug}.v{instance.cohort.syllabus_version.version}'
if instance.cohort.syllabus_version else None)
obj = {
'id': instance.id,
'user_id': instance.user.id,
'first_name': instance.user.first_name,
'last_name': instance.user.last_name,
'cohort': instance.cohort.slug,
'watching': instance.watching,
'finantial_status': instance.finantial_status,
'educational_status': instance.educational_status,
'created_at': instance.created_at,
'updated_at': instance.updated_at,
'is_cohort_available_as_saas': instance.cohort.available_as_saas,
}

if instance.cohort.academy:
obj['academy'] = instance.cohort.academy.id

return obj

@classmethod
def task(cls,
kind: str,
Expand Down
20 changes: 13 additions & 7 deletions breathecode/admissions/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from .actions import test_syllabus
from django.utils import timezone
from django.contrib.auth.models import User
import breathecode.activity.tasks as tasks_activity

API_URL = os.getenv('API_URL', '')

Expand Down Expand Up @@ -51,13 +52,13 @@ def build_cohort_user(cohort_id: int, user_id: int, role: str = 'STUDENT', **_:
if not (user := User.objects.filter(id=user_id, is_active=True).first()):
raise AbortTask(f'User with id {user_id} not found')

_, created = CohortUser.objects.get_or_create(cohort=cohort,
user=user,
role=role,
defaults={
'finantial_status': 'UP_TO_DATE',
'educational_status': 'ACTIVE',
})
cohort_user, created = CohortUser.objects.get_or_create(cohort=cohort,
user=user,
role=role,
defaults={
'finantial_status': 'UP_TO_DATE',
'educational_status': 'ACTIVE',
})

if created:
logger.info('User added to cohort')
Expand Down Expand Up @@ -94,6 +95,11 @@ def build_cohort_user(cohort_id: int, user_id: int, role: str = 'STUDENT', **_:
if created:
logger.info('ProfileAcademy added')

tasks_activity.add_activity.delay(user_id,
'joined_cohort',
related_type='admissions.CohortUser',
related_id=cohort_user.id)


@task(priority=TaskPriority.STUDENT.value)
def build_profile_academy(academy_id: int, user_id: int, role: str = 'student', **_: Any) -> None:
Expand Down

0 comments on commit 0ef0832

Please sign in to comment.