diff --git a/.env.example b/.env.example index 79f6f0ff..881d616e 100644 --- a/.env.example +++ b/.env.example @@ -32,4 +32,5 @@ DJANGO_LOG_LEVEL=INFO JOB_MIN_INTERVAL=15 JOB_MAX_INTERVAL=30 COMPOSE_PROJECT_NAME=tribal_wars_planer -UWSGI_PROCESSES=1 \ No newline at end of file +UWSGI_PROCESSES=1 +DEBUG_TOOLBAR=1 \ No newline at end of file diff --git a/.gitignore b/.gitignore index be65e492..761beae7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# perf +perf.data +perf.data.old # mkdocs docs/generated/en/* docs/generated/pl/* diff --git a/base/static/base.js b/base/static/base.js index f98eee41..fa689826 100644 --- a/base/static/base.js +++ b/base/static/base.js @@ -178,6 +178,9 @@ const menu_toggle = () => { $("#id_date").addClass("data-picker"); $(".data-picker").datepicker({ format: "yyyy-mm-dd", + weekStart: 1, + language: getLanguage(), + todayHighlight: true, }); }); }; diff --git a/base/static/min.base.js b/base/static/min.base.js index 88f1f1ef..f374227d 100644 --- a/base/static/min.base.js +++ b/base/static/min.base.js @@ -1 +1 @@ -var bg_color_img_box="rgba(0,0,0,0.9)",allow_hide_scroll_img_box="yes",use_fade_inout_img_box="yes",speed_img_box=.08,z_index_dv_img_box=999,vopa_img_box,idpopup_img_box;const DOCS_RE=/\!\[\]\([a-zA-Z0-9.\/_-]*\)/g,modal=()=>{document.addEventListener("DOMContentLoaded",function(e){$("#form-modal").on("show.bs.modal",function(a){var t=$(a.relatedTarget),i=t.data("attacknumber"),r=t.data("start"),o=parseInt(t.data("off")),n=parseInt(t.data("leftoff")),l=parseInt(t.data("nobleman")),s=parseInt(t.data("leftnobleman")),m=parseInt(t.data("catapult")),c=parseInt(t.data("leftcatapult")),u=t.data("id"),d=$(this),f=o-m*8,p=m,b=n-c*8,h=c,v=f+b,y=p+h;d.find(".modal-title").text(r),d.find("#attack-number").text(i),d.find("#id_weight_id").val(u),d.find("#id_off").val(o),d.find("#id_off_no_catapult").val(f),d.find("#id_off_no_catapult").attr("max",v),d.find("#hint_id_off_no_catapult").text(`0-${v}`),d.find("#id_off_no_catapult").change(function(){var _=parseInt(d.find("#id_catapult").val()),g=parseInt(d.find("#id_off_no_catapult").val());d.find("#id_off").val(g+_*8)}),d.find("#id_catapult").val(p),d.find("#id_catapult").attr("max",y),d.find("#hint_id_catapult").text(`0-${y}`),d.find("#id_catapult").change(function(){var _=parseInt(d.find("#id_catapult").val()),g=parseInt(d.find("#id_off_no_catapult").val());d.find("#id_off").val(g+_*8)}),d.find("#id_nobleman").val(l),d.find("#id_nobleman").attr("max",l+s),d.find("#hint_id_nobleman").text(`0-${l+s}`)}),$(".popoverData").popover(),$(".popoverOption").popover({trigger:"hover"})})},isLocalhost=()=>location.hostname==="localhost"||location.hostname==="127.0.0.1",getLanguage=()=>{const e=location.pathname.split("/");try{return e[1]}catch(a){return console.error(a),"en"}},loadDocsPage=(e,a,t,i=!1)=>{const r=document.getElementById(a),o=`/static/markdown/${getLanguage()}`;localStorage.getItem(t)!==null&&!isLocalhost()?r.innerHTML=marked.parse(localStorage.getItem(t)):fetch(t).then(n=>n.text()).then(n=>{const l=[...n.matchAll(DOCS_RE)];for(const s of l){const m=s[0];let c=m.slice(4,-1);c=`${o}/${c}`;const u=``;n=n.replaceAll(m,u)}return n}).then(n=>{localStorage.getItem(String(e))!=null&&localStorage.removeItem(localStorage.getItem(String(e))),document.getElementById(a).innerHTML=marked.parse(n),isLocalhost()||(localStorage.setItem(t,n),localStorage.setItem(String(e),t))}).then(()=>{const n=new URLSearchParams(location.search);location.hash!==""?setTimeout(()=>{localStorage.setItem(`${e}-scroll-id`,String(document.getElementById(location.hash.slice(1)).offsetTop)),location.search=""},300):i&&wholePageContentScroll(`${e}-scroll-id`)})},wholePageContentScroll=e=>{localStorage.getItem(e)!=null&&$(window).scrollTop(localStorage.getItem(e)),$(window).on("scroll",function(){localStorage.setItem(e,$(window).scrollTop())})},scroll_content_outline=()=>{$(window).on("load",function(){localStorage.getItem("my_app_name_here-quote-scroll")!=null&&$(window).scrollTop(localStorage.getItem("my_app_name_here-quote-scroll")),localStorage.getItem("my_app_name_here-left-scroll")!=null&&$("#leftscroll").scrollTop(localStorage.getItem("my_app_name_here-left-scroll")),$(window).on("scroll",function(){localStorage.setItem("my_app_name_here-quote-scroll",$(window).scrollTop())}),$("#leftscroll").on("scroll",function(){var e=$("#leftscroll").scrollTop();localStorage.setItem("my_app_name_here-left-scroll",e)})})},menu_toggle=()=>{$("#menu-toggle").click(function(e){e.preventDefault(),$("#sidebar-wrapper").toggleClass("toggled")}),$(document).ready(function(){$("#id_date").addClass("data-picker"),$(".data-picker").datepicker({format:"yyyy-mm-dd"})})},prettifyTimeDistance=e=>{e=Math.round(e);const a=Math.floor(e/3600);e%=3600;const t=Math.floor(e/60),i=e%60;let r=a.toString(),o=t.toString(),n=i.toString();return o.length<2&&(o="0"+o),n.length<2&&(n="0"+n),`${r}:${o}:${n}`},calculate_distance=e=>{const a=parseFloat(String(document.getElementById("speed_world").value).replace(",",".")),t=parseFloat(String(document.getElementById("speed_units").value).replace(",","."));if(e.clicked)e.innerHTML=String(e.distance).replace(".",","),e.clicked=!1,e.style.cursor="zoom-in";else{e.distance=parseFloat(e.innerHTML.replace(",","."));let i=e.distance/t/a*30*60,r=e.distance/t/a*35*60;e.innerHTML=`${prettifyTimeDistance(i)} /
${prettifyTimeDistance(r)}
`,e.clicked=!0,e.style.cursor="zoom-out"}},activateTooltips=()=>{document.addEventListener("DOMContentLoaded",function(e){$(".popoverData").popover()}),$(function(){$('[data-toggle="tooltip"]').tooltip()})},onPlanerLinkClick=e=>{setTimeout(()=>{const a=document.getElementById("planer-link");a.innerHTML=`${e}`},800)},handleAllFormsetSelect=()=>{document.addEventListener("DOMContentLoaded",function(e){val=$("#id_form-0-status").val(),val==="all"?($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").val(""),$("#id_form-0-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").prop("disabled",!1)),val=$("#id_form-1-status").val(),val==="all"?($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").val(""),$("#id_form-1-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").prop("disabled",!1)),val=$("#id_form-2-status").val(),val==="all"?($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").val(""),$("#id_form-2-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").prop("disabled",!1)),val=$("#id_form-3-status").val(),val==="all"?($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").val(""),$("#id_form-3-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").prop("disabled",!1)),val=$("#id_form-4-status").val(),val==="all"?($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").val(""),$("#id_form-4-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").prop("disabled",!1)),val=$("#id_form-5-status").val(),val==="all"?($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").val(""),$("#id_form-5-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").prop("disabled",!1))}),document.addEventListener("DOMContentLoaded",function(e){$(".time-timepicker").each(function(){$(this).timepicker({minuteStep:1,secondStep:1,showSeconds:!0,showMeridian:!1,defaultTime:!1,icons:{up:"fa fa-angle-up",down:"fa fa-angle-down"}})}),$("#id_form-0-status").change(function(){val=$("#id_form-0-status").val(),val==="all"?($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").val(""),$("#id_form-0-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").prop("disabled",!1)):($("#id_form-0-from_number").prop("disabled",!1),$("#id_form-0-to_number").prop("disabled",!1))}),$("#id_form-1-status").change(function(){val=$("#id_form-1-status").val(),val==="all"?($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").val(""),$("#id_form-1-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").prop("disabled",!1)):($("#id_form-1-from_number").prop("disabled",!1),$("#id_form-1-to_number").prop("disabled",!1))}),$("#id_form-2-status").change(function(){val=$("#id_form-2-status").val(),val==="all"?($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").val(""),$("#id_form-2-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").prop("disabled",!1)):($("#id_form-2-from_number").prop("disabled",!1),$("#id_form-2-to_number").prop("disabled",!1))}),$("#id_form-3-status").change(function(){val=$("#id_form-3-status").val(),val==="all"?($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").val(""),$("#id_form-3-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").prop("disabled",!1)):($("#id_form-3-from_number").prop("disabled",!1),$("#id_form-3-to_number").prop("disabled",!1))}),$("#id_form-4-status").change(function(){val=$("#id_form-4-status").val(),val==="all"?($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").val(""),$("#id_form-4-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").prop("disabled",!1)):($("#id_form-4-from_number").prop("disabled",!1),$("#id_form-4-to_number").prop("disabled",!1))}),$("#id_form-5-status").change(function(){val=$("#id_form-5-status").val(),val==="all"?($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").val(""),$("#id_form-5-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").prop("disabled",!1)):($("#id_form-5-from_number").prop("disabled",!1),$("#id_form-5-to_number").prop("disabled",!1))})})},handleClickButton=(e,a,t,i="",r=!1)=>{const o=document.getElementsByTagName("button"),n=document.getElementsByTagName("a");if(r){for(const l of o)l.disabled=!0;for(const l of n)l.classList.add("disabled-link")}e.disabled=!0,e.innerHTML=` ${a} `;try{document.getElementById(t).submit()}catch(l){if(console.error(l),e.disabled=!1,r){for(const s of o)s.disabled=!1;for(const s of n)s.classList.remove("disabled-link")}}};function getCookie(e){var a=null;if(document.cookie&&document.cookie!="")for(var t=document.cookie.split(";"),i=0;i{const t=parseInt(e),i=parseInt(a),r=String(e)+"-time-"+String(a),o=document.getElementById(r),n=o.innerHTML;o.innerHTML='
';const l=await fetch("/api/target-time-update/",{method:"PUT",credentials:"same-origin",body:JSON.stringify({target_id:t,time_id:i}),headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}});if(l.status!==200){o.innerHTML='';const s=o.className;o.className="btn btn-lg btn-danger my-1 py-0 px-1 mr-1",setTimeout(()=>{o.className=s,o.innerHTML=n,o.blur()},2e3)}else{const s=await l.json();if(o.className="btn btn-lg btn-primary my-1 py-0 px-1 mr-1",o.innerHTML=n,o.blur(),s.old!=="none"&&s.old!==s.new){const m=document.getElementById(s.old);m.className="btn btn-lg btn-light my-1 py-0 px-1 mr-1"}}},deleteTarget=async e=>{const a=parseInt(e),t="target-btn-"+String(e),i="target-row-"+String(e),r=document.getElementById(t),o=document.getElementById(i),n=r.innerHTML;r.disabled=!0,r.innerHTML='
',(await fetch("/api/target-delete/",{method:"DELETE",credentials:"same-origin",body:JSON.stringify({target_id:a}),headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}})).status!==204?(r.innerHTML='',setTimeout(()=>{r.innerHTML=n,r.blur()},2e3)):o.style.display="none"},handlePlanerMenuVisibilityChange=()=>{document.hidden?tabPlanerMenuHasBeenHidden=!0:tabPlanerMenuHasBeenHidden&&window.location.reload()},changeIsHiddenState=async(e,a)=>{const t=document.getElementById(a),i=t.innerHTML;t.disabled=!0,t.innerHTML='
';const r=await fetch("/api/overview-hide-state-update/",{method:"PUT",credentials:"same-origin",body:JSON.stringify({outline_id:e,token:a}),headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}});if(r.status!==200)t.innerHTML='',setTimeout(()=>{t.innerHTML=i,t.blur()},2e3);else{const o=await r.json();t.innerHTML=o.name,t.className=o.class,t.disabled=!1,t.blur()}},changeBuildingsArray=async(e,a)=>{const t=document.getElementById("multi-select-spinner");t.innerHTML='
';const i={buildings:a,outline_id:e};await fetch("/api/change-buildings-array/",{method:"PUT",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(i)}).then(r=>{r.status===200?(t.innerHTML='',setTimeout(()=>{t.innerHTML=""},400)):(t.innerHTML=' (Error in connection!)',setTimeout(()=>{t.innerHTML=""},2e3))}).catch(()=>{t.innerHTML=' (Error in connection!)',setTimeout(()=>{t.innerHTML=""},2e3)})},resetUserMessages=async()=>{const e=document.getElementById("reset-svg"),a=document.getElementById("reset-span");await fetch("/api/reset-user-messages/",{method:"PUT",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}}).then(t=>{t.status===200&&(e.style.fill="rgba(0,0,0,.5)",a.style.color="rgba(0,0,0,.5)",a.innerHTML="0")})},codemirrorValidation=(e,a)=>{document.addEventListener("DOMContentLoaded",function(t){$(a).addClass("CodeMirror-Invalid");const r=$(a)[0].CodeMirror,o=JSON.parse(e);Object.entries(o).forEach(([n,l],s)=>{s===0&&r.scrollIntoView(parseInt(l.message)),r.addLineClass(parseInt(l.message),"wrap","line-error")})})},handleButtonClipboardUpdate=(e,a,t,i,r)=>{const o=document.getElementById(a),n=e.innerHTML;setTimeout(()=>{e.blur()},100);try{const l=o.textContent;navigator.clipboard.writeText(l),e.innerHTML=` ${t}`,setTimeout(()=>{e.innerHTML=` ${i}`},1800)}catch(l){e.innerHTML=` ${r} (${l})`,setTimeout(()=>{e.innerHTML=n},5e3)}},copyDataToClipboard=(e,a,t)=>{const i=t?document.getElementById(a).value:document.getElementById(a).textContent;navigator.clipboard.writeText(i),e.blur();const r=e.innerHTML;e.innerHTML='',setTimeout(()=>{e.innerHTML=r},600)},removeOutline=(e,a,t,i)=>{const r=document.getElementById(a),o=document.getElementById(t);e.disabled=!0,e.innerHTML=` ${i}`,r.disabled=!0,o.submit()},imagePopupActivate=()=>{window.onload=function(){var e=document.createElement("div");e.id="img_box",document.getElementsByTagName("body")[0].appendChild(e),idpopup_img_box=document.getElementById("img_box"),idpopup_img_box.style.top=0,idpopup_img_box.style.left=0,idpopup_img_box.style.opacity=0,idpopup_img_box.style.width="100%",idpopup_img_box.style.height="100%",idpopup_img_box.style.display="none",idpopup_img_box.style.position="fixed",idpopup_img_box.style.cursor="pointer",idpopup_img_box.style.textAlign="center",idpopup_img_box.style.zIndex=z_index_dv_img_box,idpopup_img_box.style.backgroundColor=bg_color_img_box}},img_box=e=>{var a=typeof e=="string"?e:e.src;vopa_img_box=0;var t=window.innerHeight,i=window.innerWidth,r,o,n,l=new Image;l.src=a,l.onload=function(){r=l.height,wimg_img_box=l.width,idpopup_img_box.innerHTML="",wimg_img_box>i?idpopup_img_box.getElementsByTagName("img")[0].style.width="90%":r>t&&(idpopup_img_box.getElementsByTagName("img")[0].style.height="90%",r=t*90/100),r=0?(idpopup_img_box.style.opacity=vopa_img_box,vopa_img_box-=speed_img_box):(idpopup_img_box.style.opacity=0,clearInterval(m),idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible",vopa_img_box=0)},10);else idpopup_img_box.style.opacity=0,idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible"},idpopup_img_box.onclick=function(){if(use_fade_inout_img_box=="yes")var s=setInterval(function(){vopa_img_box>=0?(idpopup_img_box.style.opacity=vopa_img_box,vopa_img_box-=speed_img_box):(idpopup_img_box.style.opacity=0,clearInterval(s),idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible",vopa_img_box=0)},10);else idpopup_img_box.style.opacity=0,idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible"}},updateClipboard=e=>{const a=document.getElementById(e).textContent;navigator.clipboard.writeText(a)},updateAfterClick=async(e,a,t)=>{const i=Number.parseFloat(a)/100;let r=0;const o=setInterval(()=>{r+=1,e.innerHTML=t+` ${r}%`,r===99&&clearInterval(o)},i)},createBuildingsOptions=(e,a,t,i,r,o,n,l,s,m,c,u,d,f,p,b)=>[{label:e,value:"headquarters"},{label:a,value:"barracks"},{label:t,value:"stable"},{label:i,value:"workshop"},{label:r,value:"academy"},{label:o,value:"smithy"},{label:n,value:"rally_point"},{label:l,value:"statue"},{label:s,value:"market"},{label:m,value:"timber_camp"},{label:c,value:"clay_pit"},{label:u,value:"iron_mine"},{label:d,value:"farm"},{label:f,value:"warehouse"},{label:p,value:"wall"},{label:b,value:"watchtower"}],changeTextToSent=(e,a)=>{e.innerHTML=`${a}`},fillAndSubmit=e=>{const a=document.getElementById("create-form"),t=document.getElementsByName("target_type")[0];t.value=e,a.submit()},initializePaymentProcess=async e=>{const a=document.getElementById("payment-button");a.disabled=!0;const t=await(await fetch("/api/stripe-key/")).json(),i=Stripe(t.publicKey);a.onclick=()=>{const r=a.innerHTML;a.innerHTML="",fetch("/api/stripe-session/",{method:"POST",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({amount:parseInt(e)})}).then(o=>{if(o.status===200)return o.json();if(o.status===400)a.innerHTML=r,o.json().then(n=>{throw console.error(n),alert(`Something went wrong. Message: ${n.error}`),n.error});else throw a.innerHTML=r,console.error(o),alert("Something went wrong. unknown error"),"unknown error"}).then(o=>(console.log(o),i.redirectToCheckout({sessionId:o.sessionId})))},a.disabled=!1},resetBackgroundBuildingsColors=e=>{document.getElementById("headquarters-"+e).classList.remove("fancy-building-True"),document.getElementById("smithy-"+e).classList.remove("fancy-building-True"),document.getElementById("timber_camp-"+e).classList.remove("fancy-building-True"),document.getElementById("clay_pit-"+e).classList.remove("fancy-building-True"),document.getElementById("farm-"+e).classList.remove("fancy-building-True"),document.getElementById("warehouse-"+e).classList.remove("fancy-building-True")},changeWeightBuildingDirect=async(e,a)=>{const t=e.id,[i,r]=t.split("-");resetBackgroundBuildingsColors(r),e.classList.add("fancy-building-True");const o=document.getElementById("building-name-"+r);o.innerHTML='
';const n=await fetch("/api/change-weight-building/",{method:"PUT",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({building:i,outline_id:a,weight_id:r})});if(n.status!==200)o.innerHTML='',setTimeout(()=>{o.innerHTML="Try again"},2e3);else{const l=await n.json();o.innerHTML=`${l.name}`}}; +var bg_color_img_box="rgba(0,0,0,0.9)",allow_hide_scroll_img_box="yes",use_fade_inout_img_box="yes",speed_img_box=.08,z_index_dv_img_box=999,vopa_img_box,idpopup_img_box;const DOCS_RE=/\!\[\]\([a-zA-Z0-9.\/_-]*\)/g,modal=()=>{document.addEventListener("DOMContentLoaded",function(e){$("#form-modal").on("show.bs.modal",function(a){var t=$(a.relatedTarget),i=t.data("attacknumber"),r=t.data("start"),o=parseInt(t.data("off")),n=parseInt(t.data("leftoff")),l=parseInt(t.data("nobleman")),s=parseInt(t.data("leftnobleman")),m=parseInt(t.data("catapult")),c=parseInt(t.data("leftcatapult")),u=t.data("id"),d=$(this),f=o-m*8,p=m,b=n-c*8,y=c,v=f+b,h=p+y;d.find(".modal-title").text(r),d.find("#attack-number").text(i),d.find("#id_weight_id").val(u),d.find("#id_off").val(o),d.find("#id_off_no_catapult").val(f),d.find("#id_off_no_catapult").attr("max",v),d.find("#hint_id_off_no_catapult").text(`0-${v}`),d.find("#id_off_no_catapult").change(function(){var _=parseInt(d.find("#id_catapult").val()),g=parseInt(d.find("#id_off_no_catapult").val());d.find("#id_off").val(g+_*8)}),d.find("#id_catapult").val(p),d.find("#id_catapult").attr("max",h),d.find("#hint_id_catapult").text(`0-${h}`),d.find("#id_catapult").change(function(){var _=parseInt(d.find("#id_catapult").val()),g=parseInt(d.find("#id_off_no_catapult").val());d.find("#id_off").val(g+_*8)}),d.find("#id_nobleman").val(l),d.find("#id_nobleman").attr("max",l+s),d.find("#hint_id_nobleman").text(`0-${l+s}`)}),$(".popoverData").popover(),$(".popoverOption").popover({trigger:"hover"})})},isLocalhost=()=>location.hostname==="localhost"||location.hostname==="127.0.0.1",getLanguage=()=>{const e=location.pathname.split("/");try{return e[1]}catch(a){return console.error(a),"en"}},loadDocsPage=(e,a,t,i=!1)=>{const r=document.getElementById(a),o=`/static/markdown/${getLanguage()}`;localStorage.getItem(t)!==null&&!isLocalhost()?r.innerHTML=marked.parse(localStorage.getItem(t)):fetch(t).then(n=>n.text()).then(n=>{const l=[...n.matchAll(DOCS_RE)];for(const s of l){const m=s[0];let c=m.slice(4,-1);c=`${o}/${c}`;const u=``;n=n.replaceAll(m,u)}return n}).then(n=>{localStorage.getItem(String(e))!=null&&localStorage.removeItem(localStorage.getItem(String(e))),document.getElementById(a).innerHTML=marked.parse(n),isLocalhost()||(localStorage.setItem(t,n),localStorage.setItem(String(e),t))}).then(()=>{const n=new URLSearchParams(location.search);location.hash!==""?setTimeout(()=>{localStorage.setItem(`${e}-scroll-id`,String(document.getElementById(location.hash.slice(1)).offsetTop)),location.search=""},300):i&&wholePageContentScroll(`${e}-scroll-id`)})},wholePageContentScroll=e=>{localStorage.getItem(e)!=null&&$(window).scrollTop(localStorage.getItem(e)),$(window).on("scroll",function(){localStorage.setItem(e,$(window).scrollTop())})},scroll_content_outline=()=>{$(window).on("load",function(){localStorage.getItem("my_app_name_here-quote-scroll")!=null&&$(window).scrollTop(localStorage.getItem("my_app_name_here-quote-scroll")),localStorage.getItem("my_app_name_here-left-scroll")!=null&&$("#leftscroll").scrollTop(localStorage.getItem("my_app_name_here-left-scroll")),$(window).on("scroll",function(){localStorage.setItem("my_app_name_here-quote-scroll",$(window).scrollTop())}),$("#leftscroll").on("scroll",function(){var e=$("#leftscroll").scrollTop();localStorage.setItem("my_app_name_here-left-scroll",e)})})},menu_toggle=()=>{$("#menu-toggle").click(function(e){e.preventDefault(),$("#sidebar-wrapper").toggleClass("toggled")}),$(document).ready(function(){$("#id_date").addClass("data-picker"),$(".data-picker").datepicker({format:"yyyy-mm-dd",weekStart:1,language:getLanguage(),todayHighlight:!0})})},prettifyTimeDistance=e=>{e=Math.round(e);const a=Math.floor(e/3600);e%=3600;const t=Math.floor(e/60),i=e%60;let r=a.toString(),o=t.toString(),n=i.toString();return o.length<2&&(o="0"+o),n.length<2&&(n="0"+n),`${r}:${o}:${n}`},calculate_distance=e=>{const a=parseFloat(String(document.getElementById("speed_world").value).replace(",",".")),t=parseFloat(String(document.getElementById("speed_units").value).replace(",","."));if(e.clicked)e.innerHTML=String(e.distance).replace(".",","),e.clicked=!1,e.style.cursor="zoom-in";else{e.distance=parseFloat(e.innerHTML.replace(",","."));let i=e.distance/t/a*30*60,r=e.distance/t/a*35*60;e.innerHTML=`${prettifyTimeDistance(i)} /
${prettifyTimeDistance(r)}
`,e.clicked=!0,e.style.cursor="zoom-out"}},activateTooltips=()=>{document.addEventListener("DOMContentLoaded",function(e){$(".popoverData").popover()}),$(function(){$('[data-toggle="tooltip"]').tooltip()})},onPlanerLinkClick=e=>{setTimeout(()=>{const a=document.getElementById("planer-link");a.innerHTML=`${e}`},800)},handleAllFormsetSelect=()=>{document.addEventListener("DOMContentLoaded",function(e){val=$("#id_form-0-status").val(),val==="all"?($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").val(""),$("#id_form-0-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").prop("disabled",!1)),val=$("#id_form-1-status").val(),val==="all"?($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").val(""),$("#id_form-1-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").prop("disabled",!1)),val=$("#id_form-2-status").val(),val==="all"?($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").val(""),$("#id_form-2-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").prop("disabled",!1)),val=$("#id_form-3-status").val(),val==="all"?($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").val(""),$("#id_form-3-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").prop("disabled",!1)),val=$("#id_form-4-status").val(),val==="all"?($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").val(""),$("#id_form-4-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").prop("disabled",!1)),val=$("#id_form-5-status").val(),val==="all"?($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").val(""),$("#id_form-5-to_number").prop("disabled",!0)):val==="exact"&&($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").prop("disabled",!1))}),document.addEventListener("DOMContentLoaded",function(e){$(".time-timepicker").each(function(){$(this).timepicker({minuteStep:1,secondStep:1,showSeconds:!0,showMeridian:!1,defaultTime:!1,icons:{up:"fa fa-angle-up",down:"fa fa-angle-down"}})}),$("#id_form-0-status").change(function(){val=$("#id_form-0-status").val(),val==="all"?($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").val(""),$("#id_form-0-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-0-from_number").val(""),$("#id_form-0-from_number").prop("disabled",!0),$("#id_form-0-to_number").prop("disabled",!1)):($("#id_form-0-from_number").prop("disabled",!1),$("#id_form-0-to_number").prop("disabled",!1))}),$("#id_form-1-status").change(function(){val=$("#id_form-1-status").val(),val==="all"?($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").val(""),$("#id_form-1-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-1-from_number").val(""),$("#id_form-1-from_number").prop("disabled",!0),$("#id_form-1-to_number").prop("disabled",!1)):($("#id_form-1-from_number").prop("disabled",!1),$("#id_form-1-to_number").prop("disabled",!1))}),$("#id_form-2-status").change(function(){val=$("#id_form-2-status").val(),val==="all"?($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").val(""),$("#id_form-2-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-2-from_number").val(""),$("#id_form-2-from_number").prop("disabled",!0),$("#id_form-2-to_number").prop("disabled",!1)):($("#id_form-2-from_number").prop("disabled",!1),$("#id_form-2-to_number").prop("disabled",!1))}),$("#id_form-3-status").change(function(){val=$("#id_form-3-status").val(),val==="all"?($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").val(""),$("#id_form-3-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-3-from_number").val(""),$("#id_form-3-from_number").prop("disabled",!0),$("#id_form-3-to_number").prop("disabled",!1)):($("#id_form-3-from_number").prop("disabled",!1),$("#id_form-3-to_number").prop("disabled",!1))}),$("#id_form-4-status").change(function(){val=$("#id_form-4-status").val(),val==="all"?($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").val(""),$("#id_form-4-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-4-from_number").val(""),$("#id_form-4-from_number").prop("disabled",!0),$("#id_form-4-to_number").prop("disabled",!1)):($("#id_form-4-from_number").prop("disabled",!1),$("#id_form-4-to_number").prop("disabled",!1))}),$("#id_form-5-status").change(function(){val=$("#id_form-5-status").val(),val==="all"?($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").val(""),$("#id_form-5-to_number").prop("disabled",!0)):val==="exact"?($("#id_form-5-from_number").val(""),$("#id_form-5-from_number").prop("disabled",!0),$("#id_form-5-to_number").prop("disabled",!1)):($("#id_form-5-from_number").prop("disabled",!1),$("#id_form-5-to_number").prop("disabled",!1))})})},handleClickButton=(e,a,t,i="",r=!1)=>{const o=document.getElementsByTagName("button"),n=document.getElementsByTagName("a");if(r){for(const l of o)l.disabled=!0;for(const l of n)l.classList.add("disabled-link")}e.disabled=!0,e.innerHTML=` ${a} `;try{document.getElementById(t).submit()}catch(l){if(console.error(l),e.disabled=!1,r){for(const s of o)s.disabled=!1;for(const s of n)s.classList.remove("disabled-link")}}};function getCookie(e){var a=null;if(document.cookie&&document.cookie!="")for(var t=document.cookie.split(";"),i=0;i{const t=parseInt(e),i=parseInt(a),r=String(e)+"-time-"+String(a),o=document.getElementById(r),n=o.innerHTML;o.innerHTML='
';const l=await fetch("/api/target-time-update/",{method:"PUT",credentials:"same-origin",body:JSON.stringify({target_id:t,time_id:i}),headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}});if(l.status!==200){o.innerHTML='';const s=o.className;o.className="btn btn-lg btn-danger my-1 py-0 px-1 mr-1",setTimeout(()=>{o.className=s,o.innerHTML=n,o.blur()},2e3)}else{const s=await l.json();if(o.className="btn btn-lg btn-primary my-1 py-0 px-1 mr-1",o.innerHTML=n,o.blur(),s.old!=="none"&&s.old!==s.new){const m=document.getElementById(s.old);m.className="btn btn-lg btn-light my-1 py-0 px-1 mr-1"}}},deleteTarget=async e=>{const a=parseInt(e),t="target-btn-"+String(e),i="target-row-"+String(e),r=document.getElementById(t),o=document.getElementById(i),n=r.innerHTML;r.disabled=!0,r.innerHTML='
',(await fetch("/api/target-delete/",{method:"DELETE",credentials:"same-origin",body:JSON.stringify({target_id:a}),headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}})).status!==204?(r.innerHTML='',setTimeout(()=>{r.innerHTML=n,r.blur()},2e3)):o.style.display="none"},handlePlanerMenuVisibilityChange=()=>{document.hidden?tabPlanerMenuHasBeenHidden=!0:tabPlanerMenuHasBeenHidden&&window.location.reload()},changeIsHiddenState=async(e,a)=>{const t=document.getElementById(a),i=t.innerHTML;t.disabled=!0,t.innerHTML='
';const r=await fetch("/api/overview-hide-state-update/",{method:"PUT",credentials:"same-origin",body:JSON.stringify({outline_id:e,token:a}),headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}});if(r.status!==200)t.innerHTML='',setTimeout(()=>{t.innerHTML=i,t.blur()},2e3);else{const o=await r.json();t.innerHTML=o.name,t.className=o.class,t.disabled=!1,t.blur()}},changeBuildingsArray=async(e,a)=>{const t=document.getElementById("multi-select-spinner");t.innerHTML='
';const i={buildings:a,outline_id:e};await fetch("/api/change-buildings-array/",{method:"PUT",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(i)}).then(r=>{r.status===200?(t.innerHTML='',setTimeout(()=>{t.innerHTML=""},400)):(t.innerHTML=' (Error in connection!)',setTimeout(()=>{t.innerHTML=""},2e3))}).catch(()=>{t.innerHTML=' (Error in connection!)',setTimeout(()=>{t.innerHTML=""},2e3)})},resetUserMessages=async()=>{const e=document.getElementById("reset-svg"),a=document.getElementById("reset-span");await fetch("/api/reset-user-messages/",{method:"PUT",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"}}).then(t=>{t.status===200&&(e.style.fill="rgba(0,0,0,.5)",a.style.color="rgba(0,0,0,.5)",a.innerHTML="0")})},codemirrorValidation=(e,a)=>{document.addEventListener("DOMContentLoaded",function(t){$(a).addClass("CodeMirror-Invalid");const r=$(a)[0].CodeMirror,o=JSON.parse(e);Object.entries(o).forEach(([n,l],s)=>{s===0&&r.scrollIntoView(parseInt(l.message)),r.addLineClass(parseInt(l.message),"wrap","line-error")})})},handleButtonClipboardUpdate=(e,a,t,i,r)=>{const o=document.getElementById(a),n=e.innerHTML;setTimeout(()=>{e.blur()},100);try{const l=o.textContent;navigator.clipboard.writeText(l),e.innerHTML=` ${t}`,setTimeout(()=>{e.innerHTML=` ${i}`},1800)}catch(l){e.innerHTML=` ${r} (${l})`,setTimeout(()=>{e.innerHTML=n},5e3)}},copyDataToClipboard=(e,a,t)=>{const i=t?document.getElementById(a).value:document.getElementById(a).textContent;navigator.clipboard.writeText(i),e.blur();const r=e.innerHTML;e.innerHTML='',setTimeout(()=>{e.innerHTML=r},600)},removeOutline=(e,a,t,i)=>{const r=document.getElementById(a),o=document.getElementById(t);e.disabled=!0,e.innerHTML=` ${i}`,r.disabled=!0,o.submit()},imagePopupActivate=()=>{window.onload=function(){var e=document.createElement("div");e.id="img_box",document.getElementsByTagName("body")[0].appendChild(e),idpopup_img_box=document.getElementById("img_box"),idpopup_img_box.style.top=0,idpopup_img_box.style.left=0,idpopup_img_box.style.opacity=0,idpopup_img_box.style.width="100%",idpopup_img_box.style.height="100%",idpopup_img_box.style.display="none",idpopup_img_box.style.position="fixed",idpopup_img_box.style.cursor="pointer",idpopup_img_box.style.textAlign="center",idpopup_img_box.style.zIndex=z_index_dv_img_box,idpopup_img_box.style.backgroundColor=bg_color_img_box}},img_box=e=>{var a=typeof e=="string"?e:e.src;vopa_img_box=0;var t=window.innerHeight,i=window.innerWidth,r,o,n,l=new Image;l.src=a,l.onload=function(){r=l.height,wimg_img_box=l.width,idpopup_img_box.innerHTML="",wimg_img_box>i?idpopup_img_box.getElementsByTagName("img")[0].style.width="90%":r>t&&(idpopup_img_box.getElementsByTagName("img")[0].style.height="90%",r=t*90/100),r=0?(idpopup_img_box.style.opacity=vopa_img_box,vopa_img_box-=speed_img_box):(idpopup_img_box.style.opacity=0,clearInterval(m),idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible",vopa_img_box=0)},10);else idpopup_img_box.style.opacity=0,idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible"},idpopup_img_box.onclick=function(){if(use_fade_inout_img_box=="yes")var s=setInterval(function(){vopa_img_box>=0?(idpopup_img_box.style.opacity=vopa_img_box,vopa_img_box-=speed_img_box):(idpopup_img_box.style.opacity=0,clearInterval(s),idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible",vopa_img_box=0)},10);else idpopup_img_box.style.opacity=0,idpopup_img_box.style.display="none",idpopup_img_box.innerHTML="",document.body.style.overflow="visible"}},updateClipboard=e=>{const a=document.getElementById(e).textContent;navigator.clipboard.writeText(a)},updateAfterClick=async(e,a,t)=>{const i=Number.parseFloat(a)/100;let r=0;const o=setInterval(()=>{r+=1,e.innerHTML=t+` ${r}%`,r===99&&clearInterval(o)},i)},createBuildingsOptions=(e,a,t,i,r,o,n,l,s,m,c,u,d,f,p,b)=>[{label:e,value:"headquarters"},{label:a,value:"barracks"},{label:t,value:"stable"},{label:i,value:"workshop"},{label:r,value:"academy"},{label:o,value:"smithy"},{label:n,value:"rally_point"},{label:l,value:"statue"},{label:s,value:"market"},{label:m,value:"timber_camp"},{label:c,value:"clay_pit"},{label:u,value:"iron_mine"},{label:d,value:"farm"},{label:f,value:"warehouse"},{label:p,value:"wall"},{label:b,value:"watchtower"}],changeTextToSent=(e,a)=>{e.innerHTML=`${a}`},fillAndSubmit=e=>{const a=document.getElementById("create-form"),t=document.getElementsByName("target_type")[0];t.value=e,a.submit()},initializePaymentProcess=async e=>{const a=document.getElementById("payment-button");a.disabled=!0;const t=await(await fetch("/api/stripe-key/")).json(),i=Stripe(t.publicKey);a.onclick=()=>{const r=a.innerHTML;a.innerHTML="",fetch("/api/stripe-session/",{method:"POST",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({amount:parseInt(e)})}).then(o=>{if(o.status===200)return o.json();if(o.status===400)a.innerHTML=r,o.json().then(n=>{throw console.error(n),alert(`Something went wrong. Message: ${n.error}`),n.error});else throw a.innerHTML=r,console.error(o),alert("Something went wrong. unknown error"),"unknown error"}).then(o=>(console.log(o),i.redirectToCheckout({sessionId:o.sessionId})))},a.disabled=!1},resetBackgroundBuildingsColors=e=>{document.getElementById("headquarters-"+e).classList.remove("fancy-building-True"),document.getElementById("smithy-"+e).classList.remove("fancy-building-True"),document.getElementById("timber_camp-"+e).classList.remove("fancy-building-True"),document.getElementById("clay_pit-"+e).classList.remove("fancy-building-True"),document.getElementById("farm-"+e).classList.remove("fancy-building-True"),document.getElementById("warehouse-"+e).classList.remove("fancy-building-True")},changeWeightBuildingDirect=async(e,a)=>{const t=e.id,[i,r]=t.split("-");resetBackgroundBuildingsColors(r),e.classList.add("fancy-building-True");const o=document.getElementById("building-name-"+r);o.innerHTML='
';const n=await fetch("/api/change-weight-building/",{method:"PUT",credentials:"same-origin",headers:{"X-CSRFToken":getCookie("csrftoken"),Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({building:i,outline_id:a,weight_id:r})});if(n.status!==200)o.innerHTML='',setTimeout(()=>{o.innerHTML="Try again"},2e3);else{const l=await n.json();o.innerHTML=`${l.name}`}}; diff --git a/base/templates/base/base.html b/base/templates/base/base.html index 7c66bcfb..c30a6832 100644 --- a/base/templates/base/base.html +++ b/base/templates/base/base.html @@ -358,6 +358,7 @@

{% trans 'Planer in numbers' %}

+ diff --git a/pyproject.toml b/pyproject.toml index 5203faee..18971af5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ authors = ["rafsaf "] description = "Tribal Wars Planer django app, professional tool for creating outlines for off-game coordinators." name = "tribal_wars_planer" -version = "5.1.4" +version = "5.2.0" [tool.poetry.dependencies] python = ">=3.12,<3.13" diff --git a/tribal_wars_planer/settings.py b/tribal_wars_planer/settings.py index e33fd1b7..bbf9e1ac 100644 --- a/tribal_wars_planer/settings.py +++ b/tribal_wars_planer/settings.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================== - import os +import sys import tomllib from pathlib import Path from typing import Any @@ -36,6 +36,8 @@ else: DEBUG = False +TESTING = "pytest" in sys.modules +DEBUG_TOOLBAR = DEBUG and int(os.environ.get("DEBUG_TOOLBAR", 0)) == 1 and not TESTING MAIN_DOMAIN = os.environ.get("MAIN_DOMAIN", "localhost") SUB_DOMAIN = os.environ.get("SUB_DOMAIN", "") ALLOWED_HOSTS = [MAIN_DOMAIN] @@ -114,6 +116,10 @@ "tribal_wars_planer.middlewares.PrometheusAfterMiddleware", ] +if DEBUG_TOOLBAR: + MIDDLEWARE.insert(0, "debug_toolbar.middleware.DebugToolbarMiddleware") + INSTALLED_APPS.append("debug_toolbar") + ROOT_URLCONF = "tribal_wars_planer.urls" TEMPLATES = [ diff --git a/tribal_wars_planer/test_urls.py b/tribal_wars_planer/test_urls.py index 5571b7fd..2015f8bc 100644 --- a/tribal_wars_planer/test_urls.py +++ b/tribal_wars_planer/test_urls.py @@ -1,5 +1,5 @@ -from tribal_wars_planer.urls import TESTING +from django.conf import settings def test_testing_is_true(): - assert TESTING + assert settings.TESTING diff --git a/tribal_wars_planer/urls.py b/tribal_wars_planer/urls.py index e6e15824..2f02efe2 100644 --- a/tribal_wars_planer/urls.py +++ b/tribal_wars_planer/urls.py @@ -29,8 +29,6 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ -import sys - from django.conf import settings from django.conf.urls.i18n import i18n_patterns from django.conf.urls.static import static @@ -40,8 +38,6 @@ from django_registration.backends.one_step.views import RegistrationView from django_registration.forms import RegistrationFormUniqueEmail -TESTING = "pytest" in sys.modules - urlpatterns = [ path("api/", include("rest_api.urls")), ] @@ -74,7 +70,7 @@ if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # type: ignore -# if settings.DEBUG and not TESTING: -# from debug_toolbar.toolbar import debug_toolbar_urls +if settings.DEBUG_TOOLBAR: + from debug_toolbar.toolbar import debug_toolbar_urls -# urlpatterns += debug_toolbar_urls() + urlpatterns += debug_toolbar_urls() diff --git a/utils/outline_complete.py b/utils/outline_complete.py index d2e84066..8a780b10 100644 --- a/utils/outline_complete.py +++ b/utils/outline_complete.py @@ -95,8 +95,24 @@ def complete_outline_write(outline: Outline, salt: bytes | str | None = None): fakes = get_targets(outline, True, False) ruins = get_targets(outline, False, True) weight_max_lst = list( - WeightMaximum.objects.select_related("outline").filter( - outline=outline, too_far_away=False + WeightMaximum.objects.select_related("outline") + .filter(outline=outline, too_far_away=False) + .only( + "player", + "start", + "points", + "x_coord", + "y_coord", + "off_state", + "off_left", + "catapult_state", + "catapult_left", + "nobleman_state", + "nobleman_left", + "fake_limit", + "nobles_limit", + "first_line", + "outline__initial_outline_minimum_noble_troops", ) )