a #e @sddlmZmZddlmZddlmZmZmZm Z m Z ddl m Z ddl mZddlmZddlmZddlmZdd lmZGd d d ejZGd d d ejZGdddejZGdddejZGdddejZGdddejZdS))UserGroup)Profile) serializersviewsetsgenericsstatus exceptions)action) IsAdminUser)Response)ObjectDoesNotExist) make_password)modelsc@seZdZGdddZdS)UserSerializerc@seZdZeZdZdS)zUserSerializer.Meta__all__N)__name__ __module__ __qualname__rmodelfieldsrr/webodm/app/api/admin.pyMeta srNrrrrrrrrr src@s&eZdZeZegZddZddZdS)AdminUserViewSetcCs2tj}|jjdd}|dur.|j|d}|S)Nemail)r)robjectsallrequest query_paramsgetfilter)selfquerysetrrrr get_querysets   zAdminUserViewSet.get_querysetcCsN|j}|d}t||d<t|d}|jdd|t|jtj dS)Npassword)dataT)raise_exceptionr) r'copyr!rris_validsaver rHTTP_201_CREATED)r#rr'r&userrrrcreates     zAdminUserViewSet.createN) rrrrserializer_classr permission_classesr%r/rrrrrsrc@seZdZGdddZdS)GroupSerializerc@seZdZeZdZdS)zGroupSerializer.MetarN)rrrrrrrrrrr%srNrrrrrr2$sr2c@seZdZeZegZddZdS)AdminGroupViewSetcCs2tj}|jjdd}|dur.|j|d}|S)Nname)r4)rrrrr r!r")r#r$r4rrrr%-s   zAdminGroupViewSet.get_querysetN)rrrr2r0r r1r%rrrrr3)sr3c@seZdZGdddZdS)ProfileSerializerc@seZdZeZdZdZdS)zProfileSerializer.Meta)idr.N)rrrrrexcluderead_only_fieldsrrrrr6srNrrrrrr55sr5c@s>eZdZdZeZegZdZddZ e ddgdd dd Z dS) AdminProfileViewSetNr.cCs tjS)N)rrr)r#rrrr%Bsz AdminProfileViewSet.get_querysetTpost)detailmethodsc Csz&t|jdd}|dkr$tdWn2tyX}ztt|WYd}~n d}~00ztjj|d}Wnt yt Yn0t d| |it jdS)Nhoursrzhours must be >= 0r7deadliner))floatr'r! ValueErrorr ValidationErrorstrrrr NotFoundr set_quota_deadliner HTTP_200_OK)r#rr.r>eprrrupdate_quota_deadlineFs $ z)AdminProfileViewSet.update_quota_deadline)N) rrrpagination_classr5r0r r1 lookup_fieldr%r rJrrrrr:<s r:N)django.contrib.auth.modelsrrZ app.modelsrrest_frameworkrrrrr rest_framework.decoratorsr Zrest_framework.permissionsr rest_framework.responser django.core.exceptionsr django.contrib.auth.hashersrapprModelSerializerr ModelViewSetrr2r3r5r:rrrrs