Ë
    æ!jZ  ã            
       ó<  — d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZmZ  edg¬«      Zdedz  dedz  fd„ZejA                  ded¬«       edd¬«       ee	«       ee«      fdedz  dedefd„«       Z!ejA                  ded¬«       edd¬«       edd¬«       ee	«       ee«      fdedz  dedz  dedefd„«       Z"ejG                  ded ¬«       ed«       ed«       ee	«       ee«      fdedz  dedz  dedefd!„«       Z$ejG                  d"ed#¬«       ee	«       ee«      fd$ededefd%„«       Z%ejA                  d&ed'¬«       ed(d)d*¬+«       ee	«       ee«      fd,e&dedefd-„«       Z'y).é    )Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚstatus)ÚSession)Úget_db)Úrequire_user_token)ÚUser)Únormalize_programme_level_slug)Úserialize_programme_catalog)ÚProgrammeCatalogResponseÚProgrammeTrackResponseÚTrackCompleteRequestÚUserTrackTraceListResponse)Úreseed_track_from_register_step)Úcomplete_track_itemÚget_programme_trackÚlist_user_track_traceszuser-programme)ÚtagsÚlevelNÚreturnc                 ó¬   — | �| j                  «       sy 	 t        | «      S # t        $ r*}t        t        j
                  t        |«      ¬«      |‚d }~ww xY w)N)Ústatus_codeÚdetail)Ústripr   Ú
ValueErrorr   r   ÚHTTP_400_BAD_REQUESTÚstr)r   Úes     úE/var/www/html/kelly/kelly-backend/app/routers/user_panel/programme.pyÚ_parse_level_slugr"      sP   € Ø€}˜EŸK™KœMØð[Ü-¨eÓ4Ð4øÜò [Ü¬×(CÑ(CÌCÐPQËFÔSÐYZÐZûð[ús   •
   	A©%AÁAz/programme/catalogz-Get programme hierarchy for the user frontend)Úresponse_modelÚsummaryz4Optional level slug filter (any admin-created level))ÚdescriptionÚdbÚ_c                 ó.   — t        |t        | «      ¬«      S )N)Ú
level_slug)r   r"   )r   r&   r'   s      r!   Úget_programme_catalogr*      s   € ô ' rÔ6GÈÓ6NÔOÐOó    z/programme/trackzDGet programme track with open/locked/completed items for the user UIz;Optional module kind filter (any admin-created module type)Úmodule_kindÚuserc                 ó    — t        ||| |¬«      S ©N)r   r,   )r   ©r   r,   r&   r-   s       r!   Ú	get_trackr1   .   s   € ô" ˜r 4¨uÀ+ÔNÐNr+   z/programme/track/reseedz4Re-apply auto-done progress from registration anchorc                 óX   — t        ||«       |j                  «        t        ||| |¬«      S r/   )r   Úcommitr   r0   s       r!   Úreseed_trackr4   B   s(   € ô $ B¨Ô-Ø‡I�I„KÜ˜r 4¨uÀ+ÔNÐNr+   z/programme/track/completez:Mark the currently open assessment or session as completedÚbodyc                 ó   — t        ||| «      S )N)r   )r5   r&   r-   s      r!   Úcomplete_trackr7   R   s   € ô ˜r 4¨Ó.Ð.r+   z/programme/track/tracesz?List saved track clicks (user_track_traces table) for dashboardéd   é   iô  )ÚgeÚleÚlimitc                 ó^   — t        ||j                  | ¬«      }t        t        |«      |¬«      S )N)r<   )ÚtotalÚtraces)r   Úidr   Úlen)r<   r&   r-   Úrowss       r!   Úlist_track_tracesrC   _   s'   € ô " " d§g¡g°UÔ;€DÜ%¬C°«I¸dÔCÐCr+   )(Úfastapir   r   r   r   r   Úsqlalchemy.ormr   Úapp.databaser	   Úapp.dependenciesr
   Ú
app.modelsr   Úapp.programme.models_programmer   Ú(app.programme.services.programme_servicer   Úapp.schemasr   r   r   r   Ú'app.services.user_register_step_servicer   Úapp.services.user_track_servicer   r   r   Úrouterr   r"   Úgetr*   r1   Úpostr4   r7   ÚintrC   © r+   r!   Ú<module>rS      sž  ðß DÕ DÝ "å Ý /Ý Ý IÝ P÷ó õ Tß lÑ lá	Ð)Ð*Ô	+€ð[˜S 4™Zð [¨C°$©Jó [ð ‡�ØØ+Ø;ð ó ñ ØØJôñ ˜&“/ÙÐ(Ó)ñPØ�‰:ðPð
 	ðPð òPóð
Pð ‡�ØØ)ØRð ó ñ ØØJôñ $ØØQôñ ˜&“/ÙÐ+Ó,ñOØ�‰:ðOð
 �t‘ðOð 	ðOð òOóð
Oð ‡�ØØ)ØBð ó ñ ˜d›Ù# D›kÙ˜&“/ÙÐ+Ó,ñ	OØ�‰:ðOà�t‘ðOð 	ðOð ò	Oóð
Oð ‡�ØØ)ØHð ó ñ ˜&“/ÙÐ+Ó,ñ/Ø
ð/àð/ð ò/óð
/ð ‡�ØØ-ØMð ó ñ �s˜q SÔ)Ù˜&“/ÙÐ+Ó,ñDØðDàðDð òDóñ
Dr+   