|
67 | 67 | AppletSubmission,
|
68 | 68 | FilesCopyCheckResult,
|
69 | 69 | RespondentAnswerData,
|
70 |
| - SubmissionsActivityCountBySubject, |
| 70 | + SubmissionsActivityMetadataBySubject, |
71 | 71 | SubmissionsSubjectCounters,
|
72 | 72 | )
|
73 | 73 | from apps.answers.errors import (
|
@@ -1979,37 +1979,55 @@ async def _filter_out_soft_deleted_subjects(self, submissions: list[dict]) -> se
|
1979 | 1979 |
|
1980 | 1980 | return existing_subject_ids
|
1981 | 1981 |
|
1982 |
| - async def get_submissions_by_subject(self, subject_id: uuid.UUID) -> SubmissionsActivityCountBySubject: |
1983 |
| - submissions_target_coro = AnswersCRUD(self.answer_session).get_submissions_by_target_subject(subject_id) |
1984 |
| - submissions_respondent_coro = AnswersCRUD(self.answer_session).get_submissions_by_respondent_subject(subject_id) |
| 1982 | + async def get_submissions_metadata_by_subject(self, subject_id: uuid.UUID) -> SubmissionsActivityMetadataBySubject: |
| 1983 | + submissions_target_coro = AnswersCRUD(self.answer_session).get_submissions_metadata_by_target_subject( |
| 1984 | + subject_id |
| 1985 | + ) |
| 1986 | + submissions_respondent_coro = AnswersCRUD(self.answer_session).get_submissions_metadata_by_respondent_subject( |
| 1987 | + subject_id |
| 1988 | + ) |
1985 | 1989 |
|
1986 | 1990 | submissions_target, submissions_respondent = await asyncio.gather(
|
1987 | 1991 | submissions_target_coro, submissions_respondent_coro
|
1988 | 1992 | )
|
1989 | 1993 |
|
1990 | 1994 | existing_subject_ids = await self._filter_out_soft_deleted_subjects(submissions_target + submissions_respondent)
|
1991 | 1995 |
|
1992 |
| - submissions_activity_count = SubmissionsActivityCountBySubject(subject_id=subject_id) |
| 1996 | + submissions_activity_metadata = SubmissionsActivityMetadataBySubject(subject_id=subject_id) |
1993 | 1997 |
|
1994 | 1998 | for activity_submissions in submissions_target:
|
1995 |
| - activity_counters = submissions_activity_count.activities.setdefault( |
| 1999 | + activity_metadata = submissions_activity_metadata.activities.setdefault( |
1996 | 2000 | uuid.UUID(activity_submissions["activity_id"]), SubmissionsSubjectCounters()
|
1997 | 2001 | )
|
1998 | 2002 | respondent_subject_id = activity_submissions["subject_id"]
|
1999 | 2003 | if respondent_subject_id in existing_subject_ids:
|
2000 |
| - activity_counters.respondents.add(respondent_subject_id) |
2001 |
| - activity_counters.subject_submissions_count += activity_submissions["submission_count"] |
| 2004 | + activity_metadata.respondents.add(respondent_subject_id) |
| 2005 | + activity_metadata.subject_submissions_count += activity_submissions["submission_count"] |
| 2006 | + activity_metadata.subject_last_submission_date = ( |
| 2007 | + activity_submissions["last_submission_date"] |
| 2008 | + if not activity_metadata.subject_last_submission_date |
| 2009 | + else max( |
| 2010 | + activity_metadata.subject_last_submission_date, activity_submissions["last_submission_date"] |
| 2011 | + ) |
| 2012 | + ) |
2002 | 2013 |
|
2003 | 2014 | for activity_submissions in submissions_respondent:
|
2004 |
| - activity_counters = submissions_activity_count.activities.setdefault( |
| 2015 | + activity_metadata = submissions_activity_metadata.activities.setdefault( |
2005 | 2016 | uuid.UUID(activity_submissions["activity_id"]), SubmissionsSubjectCounters()
|
2006 | 2017 | )
|
2007 | 2018 | target_subject_id = activity_submissions["subject_id"]
|
2008 | 2019 | if target_subject_id in existing_subject_ids:
|
2009 |
| - activity_counters.subjects.add(target_subject_id) |
2010 |
| - activity_counters.respondent_submissions_count += activity_submissions["submission_count"] |
| 2020 | + activity_metadata.subjects.add(target_subject_id) |
| 2021 | + activity_metadata.respondent_submissions_count += activity_submissions["submission_count"] |
| 2022 | + activity_metadata.respondent_last_submission_date = ( |
| 2023 | + activity_submissions["last_submission_date"] |
| 2024 | + if not activity_metadata.respondent_last_submission_date |
| 2025 | + else max( |
| 2026 | + activity_metadata.respondent_last_submission_date, activity_submissions["last_submission_date"] |
| 2027 | + ) |
| 2028 | + ) |
2011 | 2029 |
|
2012 |
| - return submissions_activity_count |
| 2030 | + return submissions_activity_metadata |
2013 | 2031 |
|
2014 | 2032 |
|
2015 | 2033 | class ReportServerService:
|
|
0 commit comments