a #e8@s"ddlZddlmZddlmZddlmZddlmZddl m Z m Z m Z ddl mZddlmZdd lmZmZdd lmZdd lmZdd lmZdd lmZddlmZddZeddZ ed#ddZ!ed$ddZ"ddZ#eddZ$Gdddej%Z&ddZ'dd Z(d!d"Z)dS)%N)login) make_password)User)Http404)renderredirectget_object_or_404)get_objects_for_user)ProcessingNode)ProjectTask)messages)login_required)ugettext)forms)settingscCsrtjjdddkr6tjr.tjdddntdStjrZ|jj sZt |tjj dddt|jj rjtj ntj S) NT is_superuserradminzadmin@localhostwelcome)username)django.contrib.auth.backends.ModelBackend)robjectsfiltercountrSINGLE_USER_MODEcreate_superuserruseris_authenticatedrgetLOGIN_REDIRECT_URL LOGIN_URLrequestr$/webodm/app/views/app.pyindexsr&cCstjdk}|r&tjdur&ttjStjj|jddk}t jj|jddk}|r||j dr|t jj |jt ddt |dt d||d S) Nr)project__owner)ownerzapp.add_projectz First Project)r(namezapp/dashboard.htmlZ Dashboard)titleno_processingnodesno_tasks)r rrrPROCESSING_NODES_ONBOARDINGrr rrr has_permcreate_r)r#r+r,Z no_projectsr$r$r% dashboard"s  r1c Cstd}|dur~tt|d}|jd|s0t|durjttjddd||d}|j p\|j }| g}n|j pt|j }| }t |d|t ||d tjrd nd d d S) NZMappkapp.view_projectorthophoto_extent dsm_extent dtm_extentr3projectz app/map.htmlfalsetrue)z map-itemsr*public share-buttonsr*params)r0rr rr.rr rdeferr)id get_map_itemsrjsondumpsr DESKTOP_MODEitems)r# project_pktask_pkr*r9taskZmapItemsr$r$r%map5s&     rJcCstd}|durftt|d}|jd|s0t|dur`ttjddd||d}|j p\|j }ntt |d|t |d tjrd nd d d S) Nz3D Model Displayr2r4r5r6r7r8zapp/3d_model_display.htmlr:r;)rIr<r=r>)r0rr rr.rr rr@r)rArrCrDget_model_display_paramsrrErF)r#rGrHr*r9rIr$r$r% model_displayQs    rLcCst|dtdtjdS)Nzapp/about.htmlZAbout)r*version)rr0rVERSIONr"r$r$r%aboutisrOcCsRtt|d}|s2t|tjjtdd|it|dtd||j dddS) Nr2z%(node)s seems to be offline.nodezapp/processing_node.htmlzProcessing NodeT)pretty)r*processing_nodeZavailable_options_json) rr update_node_infor add_message constantsWARNINGr0rget_available_options_json)r#processing_node_idZpnr$r$r%rRls  rRc@seZdZGdddZdS) FirstUserFormc@s eZdZeZdZdeiZdS)zFirstUserForm.Meta)rpasswordrZN) __name__ __module__ __qualname__rmodelfieldsr PasswordInputwidgetsr$r$r$r%MetazsrbN)r[r\r]rbr$r$r$r%rYysrYcCstjjdddkrtdSt}|jdkrt|j}|r|j dd}t |j d|_ d|_ |_| t||d td St|d td |d S)NTrrr&POSTF)commitrZrr1zapp/welcome.htmlZWelcome)r*Z firstuserform)rrrrrrYmethodrcis_validsaver cleaned_datarZris_staffrrr0)r#ZfufZ admin_userr$r$r%rs"     rcCst|dddS)Nz404.htmlistatusr)r# exceptionr$r$r% handler404srncCst|dddS)Nz500.htmlirjrlr"r$r$r% handler500sro)NN)NN)*rCdjango.contrib.authrdjango.contrib.auth.hashersrdjango.contrib.auth.modelsr django.httprdjango.shortcutsrrrguardian.shortcutsr nodeodm.modelsr Z app.modelsr r django.contribr django.contrib.auth.decoratorsrdjango.utils.translationrr0djangorwebodmrr&r1rJrLrOrR ModelFormrYrrnror$r$r$r%s6