This commit is contained in:
Oliver committed 2025-06-26 19:39:49 -03:00
1 parent afbad86c88
commit afee1c5cac
43 files changed
+10672 -321

No files matched your search

@@ -0,0 +1,27 @@
---
title: "Staging Server on ODOO4projects with Git"
description: "Learn how to seamlessly stage, test, and deploy your ODOO modules using Git and ODOO4projects."
images:
- "images/blog/staging_git.svg"
date: "2025-05-29"
draft: false
tags: ["odoo", "git", "academy"]
categories: ["projects"]
---
<a href="https://youtu.be/KVKpBfXM1To">📺 Watch on Youtube click</a>
<p>This <strong>ODOO4projects Academy</strong> video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.</p>
<ul>
<li>Learn how Git tracks changes, allowing safe testing without affecting your production.</li>
<li>Understand how to set up a local testing environment using Docker to mirror your live setup.</li>
<li>Discover how to push tested features to a dedicated staging branch securely.</li>
<li>Easily merge your validated changes into production for smooth deployment.</li>
<li>Gain valuable insights into best practices—like clearly organizing custom modules and leveraging powerful community-developed OCA modules.</li>
</ul>
<p>Follow this streamlined process with ODOO4projects to ensure safe, efficient, and conflict-free deployments.</p>
<p>For additional resources visit <a href="https://ODOO4projects.com" target="_blank">ODOO4projects.com</a>, explore more training videos at <a href="https://blog.odoo4projects.com/tags/academy/" target="_blank">ODOO Academy</a>, or read inspiring stories at <a href="https://odoo4startups.org/" target="_blank">ODOO Success Stories</a>.</p>
+5 -1
View File
@@ -389,7 +389,7 @@ Even if you’re sitting in the last row… we see you. 😉</p>
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -405,12 +405,16 @@ Even if you’re sitting in the last row… we see you. 😉</p>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+5 -1
View File
@@ -414,7 +414,7 @@ Built for startups. Loved by last-row geniuses. 😎</p>
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -430,12 +430,16 @@ Built for startups. Loved by last-row geniuses. 😎</p>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+67 -58
View File
@@ -350,6 +350,22 @@ Built for startups. Loved by last-row geniuses. 😎</p>
<ul class="sidebar-recent-post list-unstyled">
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
<h5><a href="https://blog.ODOO4projects.com/blogs/staging_server_git/">Staging Server on ODOO4projects with Git</a></h5>
<span class="card-meta">
<span class="card-meta-date">May 29, 2025</span>
</span>
</div>
<a href="https://blog.ODOO4projects.com/blogs/staging_server_git/" class="recent-post-image">
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg">
</a>
</div>
</li>
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
@@ -382,22 +398,6 @@ Built for startups. Loved by last-row geniuses. 😎</p>
</div>
</li>
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
<h5><a href="https://blog.ODOO4projects.com/blogs/youre-probably-hosting-odoo-wrong-heres-a-smarter-way/">You’re Probably Hosting ODOO Wrong (Here’s a Smarter Way)</a></h5>
<span class="card-meta">
<span class="card-meta-date">Jun 17, 2025</span>
</span>
</div>
<a href="https://blog.ODOO4projects.com/blogs/youre-probably-hosting-odoo-wrong-heres-a-smarter-way/" class="recent-post-image">
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/tricks.webp">
</a>
</div>
</li>
</ul>
</div><!-- categories -->
<div class="widget">
@@ -415,7 +415,7 @@ Built for startups. Loved by last-row geniuses. 😎</p>
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -431,12 +431,16 @@ Built for startups. Loved by last-row geniuses. 😎</p>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -457,6 +461,52 @@ Built for startups. Loved by last-row geniuses. 😎</p>
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/git.svg" alt=""></div>
</div>
@@ -536,47 +586,6 @@ How to Add an AI Chatbot to Your Odoo …</p>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/tricks.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">knowledge</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/youre-probably-hosting-odoo-wrong-heres-a-smarter-way/" title="You’re Probably Hosting ODOO Wrong (Here’s a Smarter Way)">You’re Probably Hosting ODOO Wrong (Here’s a Smarter Way)</a>
</h3>
<p class="mb-0">Curious about the tech powering our #ODOO4Projects journey? 🚀 Here’s a …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">Jun 17, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
</div>
</div>
+5 -1
View File
@@ -360,7 +360,7 @@ We are please to announce, that in Brazil and Boston, we have created our own tr
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -376,12 +376,16 @@ We are please to announce, that in Brazil and Boston, we have created our own tr
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -359,7 +359,7 @@
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -375,12 +375,16 @@
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -363,7 +363,7 @@ Bonus: With the hosting from ODOO4projects you do not have to fight with the co
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -379,12 +379,16 @@ Bonus: With the hosting from ODOO4projects you do not have to fight with the co
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -359,7 +359,7 @@ If you want rapid simplicity and full control over design, Hugo shines. But if y
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -375,12 +375,16 @@ If you want rapid simplicity and full control over design, Hugo shines. But if y
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+14
View File
@@ -548,6 +548,20 @@
<li class="page-item">
<a href="/blogs/page/4/" class="page-link">
4
</a>
</li>
<li class="page-item"><a class="page-link arrow" href="/blogs/page/2/" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
+7
View File
@@ -58,6 +58,13 @@
<guid>https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/</guid>
<description>&lt;p&gt;We have some fantastic news to share! 🎉&lt;/p&gt;&#xA;&lt;p&gt;Please join us in welcoming Mark Gutmann as our new partner in Germany. Mark&amp;rsquo;s expertise in AI processes and sales is a real game-changer for our team and will help us drive innovation further than ever before!&lt;/p&gt;</description>
</item>
<item>
<title>Staging Server on ODOO4projects with Git</title>
<link>https://blog.ODOO4projects.com/blogs/staging_server_git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/blogs/staging_server_git/</guid>
<description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/KVKpBfXM1To&#34;&gt;📺 Watch on Youtube click&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This &lt;strong&gt;ODOO4projects Academy&lt;/strong&gt; video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.&lt;/p&gt;</description>
</item>
<item>
<title>Brazil online!</title>
<link>https://blog.ODOO4projects.com/blogs/brazil-online/</link>
@@ -359,7 +359,7 @@ We have setup a mail adress, that is alanyzed by our AI. If it detects a new lea
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -375,12 +375,16 @@ We have setup a mail adress, that is alanyzed by our AI. If it detects a new lea
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -357,7 +357,7 @@
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -373,12 +373,16 @@
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -375,7 +375,7 @@ When to use customized modules Whenever we need to change or add modells we will
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -391,12 +391,16 @@ When to use customized modules Whenever we need to change or add modells we will
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+5 -1
View File
@@ -353,7 +353,7 @@
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -369,12 +369,16 @@
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+60 -41
View File
@@ -277,6 +277,52 @@ Please join us in welcoming …</p>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/news.png" alt=""></div>
@@ -440,47 +486,6 @@ How to Add an AI Chatbot to Your Odoo …</p>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/tricks.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">knowledge</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/odoo-studio-vs-python-modules/" title=" ODOO Studio vs Python Modules"> ODOO Studio vs Python Modules</a>
</h3>
<p class="mb-0">At #ODOO4projects, we’ve seen it time and again: mixing customization …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 13, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
<div class="row mb-4">
@@ -551,6 +556,20 @@ How to Add an AI Chatbot to Your Odoo …</p>
<li class="page-item">
<a href="/blogs/page/4/" class="page-link">
4
</a>
</li>
<li class="page-item"><a class="page-link arrow" href="/blogs/page/3/" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
+59 -41
View File
@@ -235,6 +235,47 @@
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/tricks.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">knowledge</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/odoo-studio-vs-python-modules/" title=" ODOO Studio vs Python Modules"> ODOO Studio vs Python Modules</a>
</h3>
<p class="mb-0">At #ODOO4projects, we’ve seen it time and again: mixing customization …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 13, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/hugo.svg" alt=""></div>
@@ -437,47 +478,6 @@
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/company.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">corporate</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/smart-tables/" title="Smart Tables?">Smart Tables?</a>
</h3>
<p class="mb-0">Ever wished you could simply talk to your database and get things …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">Apr 25, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
<div class="row mb-4">
@@ -548,6 +548,24 @@
<li class="page-item">
<a href="/blogs/page/4/" class="page-link">
4
</a>
</li>
<li class="page-item"><a class="page-link arrow" href="/blogs/page/4/" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
</ul>
</nav>
+64 -38
View File
@@ -1,9 +1,9 @@
<!DOCTYPE html>
<html lang="en-us">
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<head>
<meta charset="utf-8">
<title>All Blogs</title>
@@ -16,18 +16,18 @@
<meta name="theme-name" content="editor-hugo" />
<link rel="shortcut icon" href="http://localhost:1313/images/4.svg" type="image/x-icon">
<link rel="icon" href="http://localhost:1313/images/4.svg" type="image/x-icon">
<link rel="shortcut icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<link rel="icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<meta property="og:url" content="http://localhost:1313/blogs/">
<meta property="og:site_name" content="ODOO Community Hosting Blog - Your source for ODOO Communtiy Tips & Tricks">
<meta property="og:url" content="https://blog.ODOO4projects.com/blogs/">
<meta property="og:site_name" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
<meta property="og:title" content="All Blogs">
<meta property="og:description" content="meta description">
<meta property="og:locale" content="en_us">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
@@ -46,6 +46,10 @@
}
</script>
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com">
@@ -60,10 +64,10 @@
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-MKz3udXEUgQRWMnvjDmNvnppiBMhbEB53XpilJtOzgiN5siGqgyke6FC&#43;fW7nhwLZ3D/io0nSSZjw5fusI4npA==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-XrwIQJluVcwMevCzmiGhhTQRuLvLu8sZALVTqNh7oGWjma&#43;mr9ifNP0F7hfqlHL3Y3GEQ/PF5J1UiOq5blQuYQ==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}Line truncated
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8eLine truncated
<style>
blockquote::before {
@@ -109,7 +113,6 @@
<body>
<header class="sidenav">
<div class="is-top">
<div>
@@ -122,19 +125,18 @@
<button class="sidenav-toggler d-inline-block " data-toggle="sidenav-menu">
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
</button>
</button>
</div>
<a class="navbar-brand mr-0" href="/">
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
<img height="30px" src="http://localhost:1313/images/logo.svg"
<img height="30px" src="https://blog.ODOO4projects.com/images/logo.svg"
alt="ODOO4projects">
</a>
</div>
</div>
<div class="d-none d-md-block">
<ul class="social-links list-unstyled">
@@ -183,10 +185,14 @@
<ul class="social-links list-unstyled list-inline mt-5">
<li class="list-inline-item"><a href="https://facebook.com" title="Linkedin">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="fab fa-linkedin"></i>
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="fas fa-globe"></i>
</a></li>
</ul>
</nav>
@@ -202,6 +208,7 @@
</div>
<section class="page-content section" style="border-left:1px solid #eee">
@@ -230,7 +237,7 @@
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100" src="http://localhost:1313/images/post/15.png" alt=""></div>
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/company.webp" alt=""></div>
</div>
@@ -239,30 +246,31 @@
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="http://localhost:1313/tags/book/">Book</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">corporate</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="http://localhost:1313/blogs/post-14/" title="Optio expedita praesentium est adipisci dolorem ut eius.">Optio expedita praesentium est adipisci dolorem ut eius.</a>
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/smart-tables/" title="Smart Tables?">Smart Tables?</a>
</h3>
<p class="mb-0">Nemo vel ad consectetur namut rutrum ex, venenatis sollicitudin urna. …</p>
<p class="mb-0">Ever wished you could simply talk to your database and get things …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="http://localhost:1313/about/" class="card-meta-author">Matthew</a>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">Dec 05, 2020</span>
<span class="card-meta-date">Apr 25, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
@@ -374,11 +382,27 @@
<div class="col-12 text-center mb-5">
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
<li class="list-inline-item"><a href="https://facebook.com" title="Linkedin">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="icon fab fa-linkedin"></i> Linkedin
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="icon fas fa-globe"></i> Website
</a></li>
</ul>
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
</div>
@@ -393,6 +417,7 @@
</div>
</div>
</footer>
</div>
</div>
</div>
@@ -404,16 +429,16 @@
<script>
WebFont.load({
google: {
api: 'https://fonts.googleapis.com/css2',
families: ['Fira\u002bSans:ital,wght@500;600','Fira\u002bSans:ital,wght@400;500;600&display=swap'],
version: 2
},
active: () => {
sessionStorage.fontsLoaded = true
}
});
WebFont.load({
google: {
families: [
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
]
}
});
</script>
@@ -449,7 +474,7 @@
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-aeLjj8FoLI7Hj2YsgFPVuaEE798O9/cnfdEWhTaqg2F0qVpMBLQluydTo54Wp&#43;uC72tLcKSoUR9jbcXOBJxtQg==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-Yz/YSPyKMckGEMMQ1yybtrsvcFiryJxYzQ&#43;leCBVaB9zptlhmftcVDBVaYtwyFf1fIj0Tunj&#43;Aqcg0eUp&#43;ROsQ==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@@ -465,10 +490,10 @@
* https://markjs.io/
* Copyright (c) 2014–2018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):void 0!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegLine truncated
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):0[0]!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegExLine truncated
`)}}):{name:t.name,value:s.replace(_t,`\r
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):void 0:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)void 0!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=void 0),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=void 0,w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),void 0===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFiltLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:void 0,n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=void 0===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=void 0===T?[]:T,x=t.fullSearcher,F=void 0===x?[]:x,M=t.resultMap,m=void 0===M?{}:M,S=t.results,A=void 0===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):0[0]:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)0[0]!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=0[0]),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=0[0],w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),0[0]===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFilter&&(t=e.dLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:0[0],n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=0[0]===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=0[0]===T?[]:T,x=t.fullSearcher,F=0[0]===x?[]:x,M=t.resultMap,m=0[0]===M?{}:M,S=t.results,A=0[0]===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
Key: `.concat(""===a?"-":a)),s=F.search(n),this._log('Full text: "'.concat(n,'", score: ').concat(s.score)),this.options.tokenize){for(var C=n.split(this.options.tokenSeparator),l=[],O=0;O<f.length;O+=1){j=f[O],this._log(`
Pattern: "`.concat(j.pattern,'"'));for(_=!1,p=0;p<C.length;p+=1){var d=C[p],b=j.search(d),v={};b.isMatch?(v[d]=b.score,k=!0,_=!0,l.push(b.score)):(v[d]=1,this.options.matchAllTokens||l.push(1)),this._log('Token: "'.concat(d,'", score: ').concat(v[d]))}_&&(E+=1)}o=l[0];for(g=l.length,h=1;h<g;h+=1)o+=l[h];o/=g,this._log("Token score average:",o)}i=s.score,o>-1&&(i=(i+o)/2),this._log("Score average:",i),y=!this.options.tokenize||!this.options.matchAllTokens||E>=f.length,(this._log(`
Check Matches: `.concat(y)),(k||s.isMatch)&&y)&&(w=m[u],w?w.output.push({key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}):(m[u]={item:z,output:[{key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}]},A.push(m[u])))}else if(r(n))for(c=0,L=n.length;c<L;c+=1)this._analyze({key:a,arrayIndex:c,value:n[c],record:z,index:u},{resultMap:m,results:A,tokenSearchers:f,fullSearcher:F})}}},{key:"_computeScore",value:function(e,t){this._log(`
@@ -480,7 +505,8 @@ Sorting....`),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){o=[
Output:
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=void 0===h?0:h,i=n.distance,b=void 0===i?100:i,c=n.threshold,g=void 0===c?.6:c,d=n.maxPatternLength,u=void 0===d?32:d,s=n.isCaseSensitive,m=void 0!==s&&s,o=n.tokenSeparator,p=void 0===o?/ +/g:o,l=n.findAllMatches,v=void 0!==l&&l,r=n.minMatchCharLength,j=void 0===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=void 0===M?0:M,F=i.distance,p=void 0===F?100:F,C=i.threshold,L=void 0===C?.6:C,k=i.findAllMatches,N=void 0!==k&&k,E=i.minMatchCharLength,z=void 0===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=void 0===n?0:n,s=t.currentLocation,d=void 0===s?0:s,o=t.expectedLocation,u=void 0===o?0:o,i=t.distance,a=void 0===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"=Line truncated
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=0[0]===h?0:h,i=n.distance,b=0[0]===i?100:i,c=n.threshold,g=0[0]===c?.6:c,d=n.maxPatternLength,u=0[0]===d?32:d,s=n.isCaseSensitive,m=0[0]!==s&&s,o=n.tokenSeparator,p=0[0]===o?/ +/g:o,l=n.findAllMatches,v=0[0]!==l&&l,r=n.minMatchCharLength,j=0[0]===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&0[0]!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=0[0]===M?0:M,F=i.distance,p=0[0]===F?100:F,C=i.threshold,L=0[0]===C?.6:C,k=i.findAllMatches,N=0[0]!==k&&k,E=i.minMatchCharLength,z=0[0]===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=0[0]===n?0:n,s=t.currentLocation,d=0[0]===s?0:s,o=t.expectedLocation,u=0[0]===o?0:o,i=t.distance,a=0[0]===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],i=arguments.length>1&&0[0]!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jqueLine truncated
@@ -369,7 +369,7 @@ or use our hassle free service ;)">
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -385,12 +385,16 @@ or use our hassle free service ;)">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+5 -1
View File
@@ -360,7 +360,7 @@ We have implemented this tool for our clients. Just tell the AI to batch add a t
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -376,12 +376,16 @@ We have implemented this tool for our clients. Just tell the AI to batch add a t
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+691
View File
@@ -0,0 +1,691 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Staging Server on ODOO4projects with Git</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
<meta name="description" content="Learn how to seamlessly stage, test, and deploy your ODOO modules using Git and ODOO4projects.">
<meta name="author" content="Oliver Arnold">
<meta name="theme-name" content="editor-hugo" />
<link rel="shortcut icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<link rel="icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<meta property="og:url" content="https://blog.ODOO4projects.com/blogs/staging_server_git/">
<meta property="og:site_name" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
<meta property="og:title" content="Staging Server on ODOO4projects with Git">
<meta property="og:description" content="Learn how to seamlessly stage, test, and deploy your ODOO modules using Git and ODOO4projects.">
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="blogs">
<meta property="article:published_time" content="2025-05-29T00:00:00-04:00">
<meta property="article:modified_time" content="2025-05-29T00:00:00-04:00">
<meta property="article:tag" content="Odoo">
<meta property="article:tag" content="Git">
<meta property="article:tag" content="Academy">
<meta property="og:image" content="https://blog.ODOO4projects.com/images/blog/staging_git.svg">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MEASUREMENT_ID"></script>
<script>
var doNotTrack = false;
if ( false ) {
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
}
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-MEASUREMENT_ID');
}
</script>
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com">
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-XrwIQJluVcwMevCzmiGhhTQRuLvLu8sZALVTqNh7oGWjma&#43;mr9ifNP0F7hfqlHL3Y3GEQ/PF5J1UiOq5blQuYQ==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8eLine truncated
<style>
blockquote::before {
display: none;
font-family: " Font Awesome 5 Free ";
}
.content ul li:not(.nav-item) {
position: relative;
margin-bottom: 5px;
list-style-type: none;
}
.content ul li:not(.nav-item) svg {
margin-right: 6px;
transform: scale(0.8);
color: #c98664 ;
}
.content ul li:not(.nav-item)::before {
font-size: 14px;
font-family: " Font Awesome 5 Free ";
font-weight: 900;
content: "\f069";
display: none;
}
.notices p::before {
position: absolute;
top: 2px;
font-family: " Font Awesome 5 Free ";
font-weight: 900;
content: "\f05a";
left: 10px;
display: none;
}
.notices p svg {
position: absolute;
top: 7px;
left: 10px;
color: #ffffff ;
}
</style>
</head>
<body>
<header class="sidenav">
<div class="is-top">
<div>
<button class="search-toggle d-inline-block d-md-none" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
<button class="sidenav-toggler d-inline-block " data-toggle="sidenav-menu">
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
</button>
</div>
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
<img height="30px" src="https://blog.ODOO4projects.com/images/logo.svg"
alt="ODOO4projects">
</a>
</div>
<div class="d-none d-md-block">
<ul class="social-links list-unstyled">
<li class="mb-3">
<button class="search-toggle" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
</li>
<li>
<a href="mailto:blog@odoo4projects.com">
<svg width="1.15em" height="1.15em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383l-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/></svg>
</a>
</li>
</ul>
</div>
</header>
<div class="sidenav-overlay" data-toggle="sidenav-menu" onclick="document.getElementById('toggler-icon').classList.remove('active')"></div>
<nav class="sidenav-menu flex-column justify-content-between">
<ul class="w-100 accordion" id="accordionMenu">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://ODOO4projects.com">ODOO4projects Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contact/">Contact</a>
</li>
</ul>
<ul class="social-links list-unstyled list-inline mt-5">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="fab fa-linkedin"></i>
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="fas fa-globe"></i>
</a></li>
</ul>
</nav>
<div class="search-block">
<div data-toggle="search-close">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="text-primary" viewBox="0 0 16 16"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>
</div>
<form action="/search" method="GET">
<input id="search-field" name="s" type="search" placeholder="Type &amp; Hit Enter..." class="text-center" aria-label="search-query">
</form>
</div>
<section class="page-content section" style="border-left:1px solid #eee">
<div class="container px-3 px-lg-4">
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="mb-4 mt-4 mt-md-0">
<div class="post-slider">
<div><img loading="lazy" class="w-100" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<ul class="card-meta-tag list-inline mt-3">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h2 class="h3 mt-2 mb-3 post-title">Staging Server on ODOO4projects with Git</h2>
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver Arnold</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
<div class="content">
<p><a href="https://youtu.be/KVKpBfXM1To">📺 Watch on Youtube click</a></p>
<p>This <strong>ODOO4projects Academy</strong> video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.</p>
<ul>
<li>Learn how Git tracks changes, allowing safe testing without affecting your production.</li>
<li>Understand how to set up a local testing environment using Docker to mirror your live setup.</li>
<li>Discover how to push tested features to a dedicated staging branch securely.</li>
<li>Easily merge your validated changes into production for smooth deployment.</li>
<li>Gain valuable insights into best practices—like clearly organizing custom modules and leveraging powerful community-developed OCA modules.</li>
</ul>
<p>Follow this streamlined process with ODOO4projects to ensure safe, efficient, and conflict-free deployments.</p>
<p>For additional resources visit <a href="https://ODOO4projects.com" target="_blank">ODOO4projects.com</a>, explore more training videos at <a href="https://blog.odoo4projects.com/tags/academy/" target="_blank">ODOO Academy</a>, or read inspiring stories at <a href="https://odoo4startups.org/" target="_blank">ODOO Success Stories</a>.</p>
</div>
</div>
<div class="col-lg-4 mt-5 mt-lg-0">
<div class="pl-0 pl-lg-3">
<!-- about me -->
<div class="widget text-center">
<span class="widget-title">About Me</span>
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:150px" src="https://blog.ODOO4projects.com/images/author.webp" alt="Author">
<p class="text-uppercase small mb-2">My name is</p>
<h1 class="h4 text-primary font-primary mb-3">Oliver Arnold</h1>
<div class="mb-0 mx-auto" style="max-width:460px">Founder of ODOO4projects. ODOO hosting like it should be. <a href="https://blog.ODOO4projects.com/about/" aria-label="About me" class="text-underline d-inline-block">Read More</a></div>
</div>
<!-- latest post -->
<div class="widget">
<span class="widget-title">Recent Post</span>
<ul class="sidebar-recent-post list-unstyled">
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
<h5><a href="https://blog.ODOO4projects.com/blogs/academy_git/">ACADEMY: Use git with ODOO4projects</a></h5>
<span class="card-meta">
<span class="card-meta-date">May 15, 2025</span>
</span>
</div>
<a href="https://blog.ODOO4projects.com/blogs/academy_git/" class="recent-post-image">
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/git.svg">
</a>
</div>
</li>
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
<h5><a href="https://blog.ODOO4projects.com/blogs/academy_chatbot/">ACADEMY: Use our ODOO AI integration</a></h5>
<span class="card-meta">
<span class="card-meta-date">May 14, 2025</span>
</span>
</div>
<a href="https://blog.ODOO4projects.com/blogs/academy_chatbot/" class="recent-post-image">
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/chatbot.svg">
</a>
</div>
</li>
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
<h5><a href="https://blog.ODOO4projects.com/blogs/academy_staging_restore/">ACADEMY: Use Staging with ODOO4projects</a></h5>
<span class="card-meta">
<span class="card-meta-date">Jun 25, 2025</span>
</span>
</div>
<a href="https://blog.ODOO4projects.com/blogs/academy_staging_restore/" class="recent-post-image">
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/staging.svg">
</a>
</div>
</li>
</ul>
</div><!-- categories -->
<div class="widget">
<span class="widget-title">Categories</span>
<ul class="sidebar-post-categories list-unstyled">
<li><a href="https://blog.ODOO4projects.com/categories/academy/">Academy <span>3</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/corporate/">Corporate <span>6</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/hugo/">Hugo <span>3</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
</div><!-- tags -->
<div class="widget">
<span class="widget-title">Tags</span>
<ul class="sidebar-post-tags list-unstyled list-inline">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">Academy</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
</div></div>
</div>
<div class="col-lg-12">
<div class="single-post-similer">
<div class="row">
<div class="col-12">
<h3 class="text-dark font-weight-bold mb-4 pb-2">You May Also Like</h3>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/academy_git/" title="ACADEMY: Use git with ODOO4projects">ACADEMY: Use git with ODOO4projects</a>
</h3>
<p class="mb-0"> 📺 Watch on Youtube click
From Community to Enterprise: Upgrading Your …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 15, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/chatbot.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/academy_chatbot/" title="ACADEMY: Use our ODOO AI integration">ACADEMY: Use our ODOO AI integration</a>
</h3>
<p class="mb-0"> 📺 Watch on Youtube click
How to Add an AI Chatbot to Your Odoo …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 14, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">staging</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/academy_staging_restore/" title="ACADEMY: Use Staging with ODOO4projects">ACADEMY: Use Staging with ODOO4projects</a>
</h3>
<p class="mb-0"> 📺 Watch on YouTube
🧪 Test Without Fear: How to Use Staging Servers on …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">Jun 25, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid px-3 px-lg-4">
<div class="row justify-content-center">
<div class="col-12 mt-4 pt-2">
<footer class="bg-primary-light py-5">
<div class="container">
<div class="row">
<div class="col-12 text-center mb-5">
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="icon fab fa-linkedin"></i> Linkedin
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="icon fas fa-globe"></i> Website
</a></li>
</ul>
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
</div>
<div class="col-12 text-center">
<p class="mb-0 font-weight-500"></p>
</div>
</div>
</div>
</footer>
</div>
</div>
</div>
</section>
<script src="https://cdn.jsdelivr.net/gh/theprojectsomething/webfontloader@feature/google-fonts-v2/webfontloader.js"></script>
<script>
WebFont.load({
google: {
families: [
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
]
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/js/all.min.js" type="application/javascript" crossorigin='anonymous' defer='defer' data-search-pseudo-elements></script>
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-Yz/YSPyKMckGEMMQ1yybtrsvcFiryJxYzQ&#43;leCBVaB9zptlhmftcVDBVaYtwyFf1fIj0Tunj&#43;Aqcg0eUp&#43;ROsQ==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*!
* Fuse.js v3.4.6 - Lightweight fuzzy-search (http://fusejs.io)
*
* Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
* All Rights Reserved. Apache Software License 2.0
*
* http://www.apache.org/licenses/LICENSE-2.0
*//*!***************************************************
* mark.js v8.11.1
* https://markjs.io/
* Copyright (c) 2014–2018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):0[0]!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegExLine truncated
`)}}):{name:t.name,value:s.replace(_t,`\r
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):0[0]:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)0[0]!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=0[0]),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=0[0],w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),0[0]===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFilter&&(t=e.dLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:0[0],n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=0[0]===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=0[0]===T?[]:T,x=t.fullSearcher,F=0[0]===x?[]:x,M=t.resultMap,m=0[0]===M?{}:M,S=t.results,A=0[0]===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
Key: `.concat(""===a?"-":a)),s=F.search(n),this._log('Full text: "'.concat(n,'", score: ').concat(s.score)),this.options.tokenize){for(var C=n.split(this.options.tokenSeparator),l=[],O=0;O<f.length;O+=1){j=f[O],this._log(`
Pattern: "`.concat(j.pattern,'"'));for(_=!1,p=0;p<C.length;p+=1){var d=C[p],b=j.search(d),v={};b.isMatch?(v[d]=b.score,k=!0,_=!0,l.push(b.score)):(v[d]=1,this.options.matchAllTokens||l.push(1)),this._log('Token: "'.concat(d,'", score: ').concat(v[d]))}_&&(E+=1)}o=l[0];for(g=l.length,h=1;h<g;h+=1)o+=l[h];o/=g,this._log("Token score average:",o)}i=s.score,o>-1&&(i=(i+o)/2),this._log("Score average:",i),y=!this.options.tokenize||!this.options.matchAllTokens||E>=f.length,(this._log(`
Check Matches: `.concat(y)),(k||s.isMatch)&&y)&&(w=m[u],w?w.output.push({key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}):(m[u]={item:z,output:[{key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}]},A.push(m[u])))}else if(r(n))for(c=0,L=n.length;c<L;c+=1)this._analyze({key:a,arrayIndex:c,value:n[c],record:z,index:u},{resultMap:m,results:A,tokenSearchers:f,fullSearcher:F})}}},{key:"_computeScore",value:function(e,t){this._log(`
Computing score:
`);for(n=0,c=t.length;n<c;n+=1){for(var n,a,r,c,o=t[n].output,d=o.length,l=1,i=1,s=0;s<d;s+=1)a=e?e[o[s].key].weight:1,r=(1===a?o[s].score:o[s].score||.001)*a,1!==a?i=Math.min(i,r):(o[s].nScore=r,l*=r);t[n].score=1===i?l:i,this._log(t[n])}}},{key:"_sort",value:function(e){this._log(`
Sorting....`),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){o=[],this.options.verbose&&(i=[],this._log(`
Output:
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=0[0]===h?0:h,i=n.distance,b=0[0]===i?100:i,c=n.threshold,g=0[0]===c?.6:c,d=n.maxPatternLength,u=0[0]===d?32:d,s=n.isCaseSensitive,m=0[0]!==s&&s,o=n.tokenSeparator,p=0[0]===o?/ +/g:o,l=n.findAllMatches,v=0[0]!==l&&l,r=n.minMatchCharLength,j=0[0]===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&0[0]!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=0[0]===M?0:M,F=i.distance,p=0[0]===F?100:F,C=i.threshold,L=0[0]===C?.6:C,k=i.findAllMatches,N=0[0]!==k&&k,E=i.minMatchCharLength,z=0[0]===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=0[0]===n?0:n,s=t.currentLocation,d=0[0]===s?0:s,o=t.expectedLocation,u=0[0]===o?0:o,i=t.distance,a=0[0]===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],i=arguments.length>1&&0[0]!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jqueLine truncated
</body>
</html>
+5 -1
View File
@@ -353,7 +353,7 @@
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -369,12 +369,16 @@
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -360,7 +360,7 @@ if you never hearded of the spreadsheet app, you need to check it out!">
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -376,12 +376,16 @@ if you never hearded of the spreadsheet app, you need to check it out!">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -363,7 +363,7 @@ When we customize big modules, we need to keep in mind, that we need to support
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -379,12 +379,16 @@ When we customize big modules, we need to keep in mind, that we need to support
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -353,7 +353,7 @@
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -369,12 +369,16 @@
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
@@ -360,7 +360,7 @@
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>5</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>2</span></a></li>
</ul>
@@ -376,12 +376,16 @@
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">Git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">Odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/staging/">Staging</a></li>
</ul>
+46
View File
@@ -278,6 +278,52 @@ Please join us in welcoming …</p>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
</div>
+7
View File
@@ -16,5 +16,12 @@
<guid>https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/</guid>
<description>&lt;p&gt;We have some fantastic news to share! 🎉&lt;/p&gt;&#xA;&lt;p&gt;Please join us in welcoming Mark Gutmann as our new partner in Germany. Mark&amp;rsquo;s expertise in AI processes and sales is a real game-changer for our team and will help us drive innovation further than ever before!&lt;/p&gt;</description>
</item>
<item>
<title>Staging Server on ODOO4projects with Git</title>
<link>https://blog.ODOO4projects.com/blogs/staging_server_git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/blogs/staging_server_git/</guid>
<description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/KVKpBfXM1To&#34;&gt;📺 Watch on Youtube click&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This &lt;strong&gt;ODOO4projects Academy&lt;/strong&gt; video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.&lt;/p&gt;</description>
</item>
</channel>
</rss>
File diff suppressed because it is too large. Load diff

After

Width:  |  Height:  |  Size: 311 KiB

+14
View File
@@ -565,6 +565,20 @@
<li class="page-item">
<a href="/page/4/" class="page-link">
4
</a>
</li>
<li class="page-item"><a class="page-link arrow" href="/page/2/" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
+6 -1
View File
@@ -88,4 +88,9 @@
[{"categories":["academy"],"contents":" 📺 Watch on YouTube\n🧪 Test Without Fear: How to Use Staging Servers on Odoo 4 Projects\nWelcome back to the Odoo 4 Projects Academy!\nToday’s mission: understanding and using staging servers. If you\u0026rsquo;ve ever wished for a “sandbox” version of your business app where you can click, test, and tinker without consequences — you\u0026rsquo;re in the right place.\nWe’ll walk through how to use the staging feature that comes with every Odoo 4 Projects server. It works a little differently than Odoo.sh, but don’t worry — it’s simple and startup-friendly.\n🚀 Why Staging Matters\nStaging servers let you test changes in a copy of your live environment — without touching your real data. You can try out modules, train your team, and even break things (on purpose!) without fear.\n🧰 What You’ll Learn\nWhere to find your staging server in the 4 Server menu How to copy your live database with the “Restore on Staging” button What the CSRF token error means and how to fix it Why staging has a different password than production (on purpose!) How to know you're in staging — hint: look for the orange banner How to test modules safely without touching production How to roll back and refresh your staging environment in one click 🧠 Bonus: The Last Row Strikes Again\nAs always, our brilliant crew in the last row were busy multitasking — eating snacks and somehow still dropping genius tips. Keep an eye out.\n💡 Pro Tips from the Video\nThe staging URL is easily copied from your dashboard “Restore on Staging” copies your production database in minutes The orange banner = staging = safe zone Modules must be pushed via Git — we’ll cover that in the next video Staging disables sensitive features like real emails — no embarrassing test emails to clients! You can restore staging as often as you like to test new changes 👨‍💻 Too Busy? Let Us Handle It.\nNot sure where to start? No worries. Our servers are built for non-tech teams. Whether you\u0026rsquo;re a solo founder or growing startup, we’ve got tools that make Odoo easy — no dev team required.\n📺 Watch the Full Video\n👉 Watch the tutorial on YouTube https://www.youtube.com/watch?v=your-staging-video-link\n🎓 Odoo 4 Projects Academy – “Use Staging with Confidence”\n📦 Ready to Launch?\nGet a secure, staging-ready Odoo instance with:\n✅ One-click backups\n✅ Git module support\n✅ Built-in staging tools\n✅ Friendly support from real humans\n👉 Set up your instance at odoo4projects.com\nOdoo 4 Projects\nBuilt for startups. Loved by last-row geniuses. 😎\n","image":"https://blog.ODOO4projects.com/images/blog/staging.svg","permalink":"https://blog.ODOO4projects.com/blogs/academy_staging_restore/","tags":["academy","staging"],"title":"ACADEMY: Use Staging with ODOO4projects"},{"categories":["knowledge"],"contents":"Curious about the tech powering our #ODOO4Projects journey? 🚀 Here’s a sneak peek at what’s under the hood: 🐳 Docker – lightning-fast deployments, anywhere 🗄️ Shared Postgres DB – reliable, scalable, and rock-solid for growing projects 🛡️ CrowdSec – open-source and proactive security that keeps our environments safe 🔄 Git-for-module installation – seamless updates, easy rollbacks, and robust version control\nWith this stack, we’re able to automate, secure, and scale your Odoo-powered projects like never before! It’s all about efficiency, transparency, and delivering results you can trust.\nCurious how it could accelerate your next big idea? Follow #ODOO4projects for tips, case studies, and insider know-how.\n💡 Want to chat? Get in touch with us via our homepage—we love connecting with forward-thinking project leaders!\n","image":"https://blog.ODOO4projects.com/images/blog/tricks.webp","permalink":"https://blog.ODOO4projects.com/blogs/youre-probably-hosting-odoo-wrong-heres-a-smarter-way/","tags":["knowledge"],"title":"You’re Probably Hosting ODOO Wrong (Here’s a Smarter Way)"},{"categories":["corporate"],"contents":"\n","image":"https://blog.ODOO4projects.com/images/blog/knowledge.webp","permalink":"https://blog.ODOO4projects.com/blogs/struggling/","tags":["corporate"],"title":"Struggling?"},{"categories":["knowledge"],"contents":"As your business grows, your ERP system often becomes like your favorite shirt 👕—comfortable, familiar, maybe even lucky. You don’t want to let it go! But here’s the thing: the shirt (or the ERP) you wear today will also be your go-to outfit for the coming years. With the unstoppable pace of change in tech (hello, AI! 🤖), only the systems truly built for the future can keep you on trend—and ahead.\nThat’s why it’s crucial to invest in a solution with a clear upgrade path and ongoing innovation. ODOO delivers on this, providing regular updates and fresh features so your ERP grows with your business—without locking you in out-of-date processes.\nCustomiLine truncated
[{"categories":["academy"],"contents":" 📺 Watch on YouTube\n🧪 Test Without Fear: How to Use Staging Servers on Odoo 4 Projects\nWelcome back to the Odoo 4 Projects Academy!\nToday’s mission: understanding and using staging servers. If you\u0026rsquo;ve ever wished for a “sandbox” version of your business app where you can click, test, and tinker without consequences — you\u0026rsquo;re in the right place.\nWe’ll walk through how to use the staging feature that comes with every Odoo 4 Projects server. It works a little differently than Odoo.sh, but don’t worry — it’s simple and startup-friendly.\n🚀 Why Staging Matters\nStaging servers let you test changes in a copy of your live environment — without touching your real data. You can try out modules, train your team, and even break things (on purpose!) without fear.\n🧰 What You’ll Learn\nWhere to find your staging server in the 4 Server menu How to copy your live database with the “Restore on Staging” button What the CSRF token error means and how to fix it Why staging has a different password than production (on purpose!) How to know you're in staging — hint: look for the orange banner How to test modules safely without touching production How to roll back and refresh your staging environment in one click 🧠 Bonus: The Last Row Strikes Again\nAs always, our brilliant crew in the last row were busy multitasking — eating snacks and somehow still dropping genius tips. Keep an eye out.\n💡 Pro Tips from the Video\nThe staging URL is easily copied from your dashboard “Restore on Staging” copies your production database in minutes The orange banner = staging = safe zone Modules must be pushed via Git — we’ll cover that in the next video Staging disables sensitive features like real emails — no embarrassing test emails to clients! You can restore staging as often as you like to test new changes 👨‍💻 Too Busy? Let Us Handle It.\nNot sure where to start? No worries. Our servers are built for non-tech teams. Whether you\u0026rsquo;re a solo founder or growing startup, we’ve got tools that make Odoo easy — no dev team required.\n📺 Watch the Full Video\n👉 Watch the tutorial on YouTube https://www.youtube.com/watch?v=your-staging-video-link\n🎓 Odoo 4 Projects Academy – “Use Staging with Confidence”\n📦 Ready to Launch?\nGet a secure, staging-ready Odoo instance with:\n✅ One-click backups\n✅ Git module support\n✅ Built-in staging tools\n✅ Friendly support from real humans\n👉 Set up your instance at odoo4projects.com\nOdoo 4 Projects\nBuilt for startups. Loved by last-row geniuses. 😎\n","image":"https://blog.ODOO4projects.com/images/blog/staging.svg","permalink":"https://blog.ODOO4projects.com/blogs/academy_staging_restore/","tags":["academy","staging"],"title":"ACADEMY: Use Staging with ODOO4projects"},{"categories":["knowledge"],"contents":"Curious about the tech powering our #ODOO4Projects journey? 🚀 Here’s a sneak peek at what’s under the hood: 🐳 Docker – lightning-fast deployments, anywhere 🗄️ Shared Postgres DB – reliable, scalable, and rock-solid for growing projects 🛡️ CrowdSec – open-source and proactive security that keeps our environments safe 🔄 Git-for-module installation – seamless updates, easy rollbacks, and robust version control\nWith this stack, we’re able to automate, secure, and scale your Odoo-powered projects like never before! It’s all about efficiency, transparency, and delivering results you can trust.\nCurious how it could accelerate your next big idea? Follow #ODOO4projects for tips, case studies, and insider know-how.\n💡 Want to chat? Get in touch with us via our homepage—we love connecting with forward-thinking project leaders!\n","image":"https://blog.ODOO4projects.com/images/blog/tricks.webp","permalink":"https://blog.ODOO4projects.com/blogs/youre-probably-hosting-odoo-wrong-heres-a-smarter-way/","tags":["knowledge"],"title":"You’re Probably Hosting ODOO Wrong (Here’s a Smarter Way)"},{"categories":["corporate"],"contents":"\n","image":"https://blog.ODOO4projects.com/images/blog/knowledge.webp","permalink":"https://blog.ODOO4projects.com/blogs/struggling/","tags":["corporate"],"title":"Struggling?"},{"categories":["knowledge"],"contents":"As your business grows, your ERP system often becomes like your favorite shirt 👕—comfortable, familiar, maybe even lucky. You don’t want to let it go! But here’s the thing: the shirt (or the ERP) you wear today will also be your go-to outfit for the coming years. With the unstoppable pace of change in tech (hello, AI! 🤖), only the systems truly built for the future can keep you on trend—and ahead.\nThat’s why it’s crucial to invest in a solution with a clear upgrade path and ongoing innovation. ODOO delivers on this, providing regular updates and fresh features so your ERP grows with your business—without locking you in out-of-date processes.\nCustomiLine truncated
+7
View File
@@ -58,6 +58,13 @@
<guid>https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/</guid>
<description>&lt;p&gt;We have some fantastic news to share! 🎉&lt;/p&gt;&#xA;&lt;p&gt;Please join us in welcoming Mark Gutmann as our new partner in Germany. Mark&amp;rsquo;s expertise in AI processes and sales is a real game-changer for our team and will help us drive innovation further than ever before!&lt;/p&gt;</description>
</item>
<item>
<title>Staging Server on ODOO4projects with Git</title>
<link>https://blog.ODOO4projects.com/blogs/staging_server_git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/blogs/staging_server_git/</guid>
<description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/KVKpBfXM1To&#34;&gt;📺 Watch on Youtube click&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This &lt;strong&gt;ODOO4projects Academy&lt;/strong&gt; video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.&lt;/p&gt;</description>
</item>
<item>
<title>Brazil online!</title>
<link>https://blog.ODOO4projects.com/blogs/brazil-online/</link>
+60 -41
View File
@@ -294,6 +294,52 @@ Please join us in welcoming …</p>
<div class="col-xl-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-xl-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/news.png" alt=""></div>
@@ -457,47 +503,6 @@ How to Add an AI Chatbot to Your Odoo …</p>
</div>
<div class="col-xl-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/tricks.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">knowledge</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/odoo-studio-vs-python-modules/" title=" ODOO Studio vs Python Modules"> ODOO Studio vs Python Modules</a>
</h3>
<p class="mb-0">At #ODOO4projects, we’ve seen it time and again: mixing customization …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 13, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
<div class="row">
@@ -568,6 +573,20 @@ How to Add an AI Chatbot to Your Odoo …</p>
<li class="page-item">
<a href="/page/4/" class="page-link">
4
</a>
</li>
<li class="page-item"><a class="page-link arrow" href="/page/3/" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
+59 -41
View File
@@ -252,6 +252,47 @@
<div class="col-xl-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/tricks.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">knowledge</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/odoo-studio-vs-python-modules/" title=" ODOO Studio vs Python Modules"> ODOO Studio vs Python Modules</a>
</h3>
<p class="mb-0">At #ODOO4projects, we’ve seen it time and again: mixing customization …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 13, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-xl-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/hugo.svg" alt=""></div>
@@ -454,47 +495,6 @@
</div>
<div class="col-xl-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/company.webp" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">corporate</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/smart-tables/" title="Smart Tables?">Smart Tables?</a>
</h3>
<p class="mb-0">Ever wished you could simply talk to your database and get things …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">Apr 25, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
<div class="row">
@@ -565,6 +565,24 @@
<li class="page-item">
<a href="/page/4/" class="page-link">
4
</a>
</li>
<li class="page-item"><a class="page-link arrow" href="/page/4/" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
</ul>
</nav>
+85 -43
View File
@@ -1,12 +1,12 @@
<!DOCTYPE html>
<html lang="en-us">
<html lang="en">
<head>
<meta name="generator" content="Hugo 0.147.0"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta name="generator" content="Hugo 0.147.8">
<meta charset="utf-8">
<title>ODOO Community Hosting Blog - Your source for ODOO Communtiy Tips &amp; Tricks</title>
<title>Founder of ODOO4projects. ODOO hosting like it should be. </title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
@@ -17,18 +17,18 @@
<meta name="theme-name" content="editor-hugo" />
<link rel="shortcut icon" href="http://localhost:1313/images/4.svg" type="image/x-icon">
<link rel="icon" href="http://localhost:1313/images/4.svg" type="image/x-icon">
<link rel="shortcut icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<link rel="icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<meta property="og:url" content="http://localhost:1313/">
<meta property="og:site_name" content="ODOO Community Hosting Blog - Your source for ODOO Communtiy Tips & Tricks">
<meta property="og:title" content="ODOO Community Hosting Blog - Your source for ODOO Communtiy Tips & Tricks">
<meta property="og:url" content="https://blog.ODOO4projects.com/">
<meta property="og:site_name" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
<meta property="og:title" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
<meta property="og:description" content="ODOO4projetcs - We hook you up with brilliant ODOO Communtiy and Enterprise hosting">
<meta property="og:locale" content="en_us">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
@@ -47,6 +47,10 @@
}
</script>
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com">
@@ -61,10 +65,10 @@
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-MKz3udXEUgQRWMnvjDmNvnppiBMhbEB53XpilJtOzgiN5siGqgyke6FC&#43;fW7nhwLZ3D/io0nSSZjw5fusI4npA==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-XrwIQJluVcwMevCzmiGhhTQRuLvLu8sZALVTqNh7oGWjma&#43;mr9ifNP0F7hfqlHL3Y3GEQ/PF5J1UiOq5blQuYQ==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}Line truncated
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8eLine truncated
<style>
blockquote::before {
@@ -110,7 +114,6 @@
<body>
<header class="sidenav">
<div class="is-top">
<div>
@@ -123,19 +126,18 @@
<button class="sidenav-toggler d-inline-block " data-toggle="sidenav-menu">
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
</button>
</button>
</div>
<a class="navbar-brand mr-0" href="/">
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
<img height="30px" src="http://localhost:1313/images/logo.svg"
<img height="30px" src="https://blog.ODOO4projects.com/images/logo.svg"
alt="ODOO4projects">
</a>
</div>
</div>
<div class="d-none d-md-block">
<ul class="social-links list-unstyled">
@@ -184,10 +186,14 @@
<ul class="social-links list-unstyled list-inline mt-5">
<li class="list-inline-item"><a href="https://facebook.com" title="Linkedin">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="fab fa-linkedin"></i>
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="fas fa-globe"></i>
</a></li>
</ul>
</nav>
@@ -203,6 +209,7 @@
</div>
<section class="page-content">
<div class="container-fluid pl-3 pl-md-0 pr-3 pr-lg-4">
@@ -210,15 +217,31 @@
<div class="col-lg-4 col-xl-3">
<div class="author-banner bg-primary-light text-center d-flex flex-column align-items-center justify-content-center">
<h1 class="h5">Odoo Community Hosting Tips, Tutorials & Best Practices </h1>
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:280px" src="http://localhost:1313/images/author.png" alt="Author">
<img class="mb-4 rounded-circle w-100" style="max-width:280px" src="https://blog.ODOO4projects.com/images/author.webp" alt="Author">
<p class="text-uppercase small mb-2">My name is</p>
<h1 class="h3 text-primary font-primary mb-3">Matthew Atkins</h1>
<div class="mb-0 mx-auto" style="max-width:460px">A Writer to your favorite topic assistants, currently Head of Content at Editor. <a href="http://localhost:1313/about/" aria-label="About me" class="text-underline d-inline-block">Read More</a></div>
<h2 class="h3 text-primary font-primary mb-3">Oliver Arnold</h2>
<div class="mb-0 mx-auto" style="max-width:460px">Founder of ODOO4projects. ODOO hosting like it should be. <a href="https://blog.ODOO4projects.com/about/" aria-label="About me" class="text-underline d-inline-block">Read More</a></div>
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="icon fab fa-linkedin"></i> Linkedin
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="icon fas fa-globe"></i> Website
</a></li>
</ul>
</div>
</div>
<div class="col-lg-8 col-xl-9">
@@ -231,7 +254,7 @@
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100" src="http://localhost:1313/images/post/15.png" alt=""></div>
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/company.webp" alt=""></div>
</div>
@@ -240,30 +263,31 @@
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="http://localhost:1313/tags/book/">Book</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">corporate</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="http://localhost:1313/blogs/post-14/" title="Optio expedita praesentium est adipisci dolorem ut eius.">Optio expedita praesentium est adipisci dolorem ut eius.</a>
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/smart-tables/" title="Smart Tables?">Smart Tables?</a>
</h3>
<p class="mb-0">Nemo vel ad consectetur namut rutrum ex, venenatis sollicitudin urna. …</p>
<p class="mb-0">Ever wished you could simply talk to your database and get things …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="http://localhost:1313/about/" class="card-meta-author">Matthew</a>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">Dec 05, 2020</span>
<span class="card-meta-date">Apr 25, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
@@ -367,11 +391,27 @@
<div class="col-12 text-center mb-5">
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
<li class="list-inline-item"><a href="https://facebook.com" title="Linkedin">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="icon fab fa-linkedin"></i> Linkedin
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="icon fas fa-globe"></i> Website
</a></li>
</ul>
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
</div>
@@ -384,6 +424,7 @@
</div>
</div>
</footer>
</div>
</div>
@@ -401,16 +442,16 @@
<script>
WebFont.load({
google: {
api: 'https://fonts.googleapis.com/css2',
families: ['Fira\u002bSans:ital,wght@500;600','Fira\u002bSans:ital,wght@400;500;600&display=swap'],
version: 2
},
active: () => {
sessionStorage.fontsLoaded = true
}
});
WebFont.load({
google: {
families: [
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
]
}
});
</script>
@@ -446,7 +487,7 @@
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-aeLjj8FoLI7Hj2YsgFPVuaEE798O9/cnfdEWhTaqg2F0qVpMBLQluydTo54Wp&#43;uC72tLcKSoUR9jbcXOBJxtQg==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-Yz/YSPyKMckGEMMQ1yybtrsvcFiryJxYzQ&#43;leCBVaB9zptlhmftcVDBVaYtwyFf1fIj0Tunj&#43;Aqcg0eUp&#43;ROsQ==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@@ -462,10 +503,10 @@
* https://markjs.io/
* Copyright (c) 2014–2018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):void 0!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegLine truncated
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):0[0]!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegExLine truncated
`)}}):{name:t.name,value:s.replace(_t,`\r
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):void 0:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)void 0!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=void 0),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=void 0,w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),void 0===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFiltLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:void 0,n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=void 0===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=void 0===T?[]:T,x=t.fullSearcher,F=void 0===x?[]:x,M=t.resultMap,m=void 0===M?{}:M,S=t.results,A=void 0===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):0[0]:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)0[0]!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=0[0]),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=0[0],w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),0[0]===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFilter&&(t=e.dLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:0[0],n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=0[0]===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=0[0]===T?[]:T,x=t.fullSearcher,F=0[0]===x?[]:x,M=t.resultMap,m=0[0]===M?{}:M,S=t.results,A=0[0]===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
Key: `.concat(""===a?"-":a)),s=F.search(n),this._log('Full text: "'.concat(n,'", score: ').concat(s.score)),this.options.tokenize){for(var C=n.split(this.options.tokenSeparator),l=[],O=0;O<f.length;O+=1){j=f[O],this._log(`
Pattern: "`.concat(j.pattern,'"'));for(_=!1,p=0;p<C.length;p+=1){var d=C[p],b=j.search(d),v={};b.isMatch?(v[d]=b.score,k=!0,_=!0,l.push(b.score)):(v[d]=1,this.options.matchAllTokens||l.push(1)),this._log('Token: "'.concat(d,'", score: ').concat(v[d]))}_&&(E+=1)}o=l[0];for(g=l.length,h=1;h<g;h+=1)o+=l[h];o/=g,this._log("Token score average:",o)}i=s.score,o>-1&&(i=(i+o)/2),this._log("Score average:",i),y=!this.options.tokenize||!this.options.matchAllTokens||E>=f.length,(this._log(`
Check Matches: `.concat(y)),(k||s.isMatch)&&y)&&(w=m[u],w?w.output.push({key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}):(m[u]={item:z,output:[{key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}]},A.push(m[u])))}else if(r(n))for(c=0,L=n.length;c<L;c+=1)this._analyze({key:a,arrayIndex:c,value:n[c],record:z,index:u},{resultMap:m,results:A,tokenSearchers:f,fullSearcher:F})}}},{key:"_computeScore",value:function(e,t){this._log(`
@@ -477,7 +518,8 @@ Sorting....`),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){o=[
Output:
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=void 0===h?0:h,i=n.distance,b=void 0===i?100:i,c=n.threshold,g=void 0===c?.6:c,d=n.maxPatternLength,u=void 0===d?32:d,s=n.isCaseSensitive,m=void 0!==s&&s,o=n.tokenSeparator,p=void 0===o?/ +/g:o,l=n.findAllMatches,v=void 0!==l&&l,r=n.minMatchCharLength,j=void 0===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=void 0===M?0:M,F=i.distance,p=void 0===F?100:F,C=i.threshold,L=void 0===C?.6:C,k=i.findAllMatches,N=void 0!==k&&k,E=i.minMatchCharLength,z=void 0===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=void 0===n?0:n,s=t.currentLocation,d=void 0===s?0:s,o=t.expectedLocation,u=void 0===o?0:o,i=t.distance,a=void 0===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"=Line truncated
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=0[0]===h?0:h,i=n.distance,b=0[0]===i?100:i,c=n.threshold,g=0[0]===c?.6:c,d=n.maxPatternLength,u=0[0]===d?32:d,s=n.isCaseSensitive,m=0[0]!==s&&s,o=n.tokenSeparator,p=0[0]===o?/ +/g:o,l=n.findAllMatches,v=0[0]!==l&&l,r=n.minMatchCharLength,j=0[0]===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&0[0]!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=0[0]===M?0:M,F=i.distance,p=0[0]===F?100:F,C=i.threshold,L=0[0]===C?.6:C,k=i.findAllMatches,N=0[0]!==k&&k,E=i.minMatchCharLength,z=0[0]===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=0[0]===n?0:n,s=t.currentLocation,d=0[0]===s?0:s,o=t.expectedLocation,u=0[0]===o?0:o,i=t.distance,a=0[0]===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],i=arguments.length>1&&0[0]!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jqueLine truncated
+9
View File
@@ -58,15 +58,24 @@
</url><url>
<loc>https://blog.ODOO4projects.com/blogs/hugo-vs-odoo-which-website-framework-fits-your-needs/</loc>
<lastmod>2025-06-02T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/tags/git/</loc>
<lastmod>2025-05-29T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/</loc>
<lastmod>2025-05-29T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/tags/news/</loc>
<lastmod>2025-05-29T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/tags/odoo/</loc>
<lastmod>2025-05-29T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/categories/projects/</loc>
<lastmod>2025-05-29T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/blogs/staging_server_git/</loc>
<lastmod>2025-05-29T00:00:00-04:00</lastmod>
</url><url>
<loc>https://blog.ODOO4projects.com/blogs/brazil-online/</loc>
<lastmod>2025-05-22T00:00:00-04:00</lastmod>
+46
View File
@@ -283,6 +283,52 @@
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/git.svg" alt=""></div>
+7
View File
@@ -16,6 +16,13 @@
<guid>https://blog.ODOO4projects.com/blogs/academy_staging_restore/</guid>
<description>&lt;p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://youtu.be/AxGUzhDUcCs&#34;&gt;📺 Watch on YouTube&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;🧪 Test Without Fear: How to Use Staging Servers on Odoo 4 Projects&lt;/p&gt;</description>
</item>
<item>
<title>Staging Server on ODOO4projects with Git</title>
<link>https://blog.ODOO4projects.com/blogs/staging_server_git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/blogs/staging_server_git/</guid>
<description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/KVKpBfXM1To&#34;&gt;📺 Watch on Youtube click&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This &lt;strong&gt;ODOO4projects Academy&lt;/strong&gt; video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.&lt;/p&gt;</description>
</item>
<item>
<title>ACADEMY: Use git with ODOO4projects</title>
<link>https://blog.ODOO4projects.com/blogs/academy_git/</link>
+434
View File
@@ -0,0 +1,434 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Git</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
<meta name="description" content="ODOO4projetcs - We hook you up with brilliant ODOO Communtiy and Enterprise hosting">
<meta name="author" content="Oliver Arnold">
<meta name="theme-name" content="editor-hugo" />
<link rel="shortcut icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<link rel="icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<meta property="og:url" content="https://blog.ODOO4projects.com/tags/git/">
<meta property="og:site_name" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
<meta property="og:title" content="Git">
<meta property="og:description" content="ODOO4projetcs - We hook you up with brilliant ODOO Communtiy and Enterprise hosting">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MEASUREMENT_ID"></script>
<script>
var doNotTrack = false;
if ( false ) {
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
}
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-MEASUREMENT_ID');
}
</script>
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com">
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-XrwIQJluVcwMevCzmiGhhTQRuLvLu8sZALVTqNh7oGWjma&#43;mr9ifNP0F7hfqlHL3Y3GEQ/PF5J1UiOq5blQuYQ==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8eLine truncated
<style>
blockquote::before {
display: none;
font-family: " Font Awesome 5 Free ";
}
.content ul li:not(.nav-item) {
position: relative;
margin-bottom: 5px;
list-style-type: none;
}
.content ul li:not(.nav-item) svg {
margin-right: 6px;
transform: scale(0.8);
color: #c98664 ;
}
.content ul li:not(.nav-item)::before {
font-size: 14px;
font-family: " Font Awesome 5 Free ";
font-weight: 900;
content: "\f069";
display: none;
}
.notices p::before {
position: absolute;
top: 2px;
font-family: " Font Awesome 5 Free ";
font-weight: 900;
content: "\f05a";
left: 10px;
display: none;
}
.notices p svg {
position: absolute;
top: 7px;
left: 10px;
color: #ffffff ;
}
</style>
</head>
<body>
<header class="sidenav">
<div class="is-top">
<div>
<button class="search-toggle d-inline-block d-md-none" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
<button class="sidenav-toggler d-inline-block " data-toggle="sidenav-menu">
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
</button>
</div>
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
<img height="30px" src="https://blog.ODOO4projects.com/images/logo.svg"
alt="ODOO4projects">
</a>
</div>
<div class="d-none d-md-block">
<ul class="social-links list-unstyled">
<li class="mb-3">
<button class="search-toggle" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
</li>
<li>
<a href="mailto:blog@odoo4projects.com">
<svg width="1.15em" height="1.15em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383l-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/></svg>
</a>
</li>
</ul>
</div>
</header>
<div class="sidenav-overlay" data-toggle="sidenav-menu" onclick="document.getElementById('toggler-icon').classList.remove('active')"></div>
<nav class="sidenav-menu flex-column justify-content-between">
<ul class="w-100 accordion" id="accordionMenu">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://ODOO4projects.com">ODOO4projects Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contact/">Contact</a>
</li>
</ul>
<ul class="social-links list-unstyled list-inline mt-5">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="fab fa-linkedin"></i>
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="fas fa-globe"></i>
</a></li>
</ul>
</nav>
<div class="search-block">
<div data-toggle="search-close">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="text-primary" viewBox="0 0 16 16"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>
</div>
<form action="/search" method="GET">
<input id="search-field" name="s" type="search" placeholder="Type &amp; Hit Enter..." class="text-center" aria-label="search-query">
</form>
</div>
<section class="page-content section" style="border-left:1px solid #eee">
<div class="container px-3 px-lg-4">
<div class="row justify-content-center">
<section class="col-12 page-header">
<div class="section my-4 py-5">
<h2 class="h4 title">Showing posts from <mark>Git</mark> tag</h2>
</div>
</section>
<div class="col-12">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid px-3 px-lg-4">
<div class="row justify-content-center">
<div class="col-12 mt-4 pt-2">
<footer class="bg-primary-light py-5">
<div class="container">
<div class="row">
<div class="col-12 text-center mb-5">
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="icon fab fa-linkedin"></i> Linkedin
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="icon fas fa-globe"></i> Website
</a></li>
</ul>
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
</div>
<div class="col-12 text-center">
<p class="mb-0 font-weight-500"></p>
</div>
</div>
</div>
</footer>
</div>
</div>
</div>
</section>
<script src="https://cdn.jsdelivr.net/gh/theprojectsomething/webfontloader@feature/google-fonts-v2/webfontloader.js"></script>
<script>
WebFont.load({
google: {
families: [
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
]
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/js/all.min.js" type="application/javascript" crossorigin='anonymous' defer='defer' data-search-pseudo-elements></script>
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-Yz/YSPyKMckGEMMQ1yybtrsvcFiryJxYzQ&#43;leCBVaB9zptlhmftcVDBVaYtwyFf1fIj0Tunj&#43;Aqcg0eUp&#43;ROsQ==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*!
* Fuse.js v3.4.6 - Lightweight fuzzy-search (http://fusejs.io)
*
* Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
* All Rights Reserved. Apache Software License 2.0
*
* http://www.apache.org/licenses/LICENSE-2.0
*//*!***************************************************
* mark.js v8.11.1
* https://markjs.io/
* Copyright (c) 2014–2018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):0[0]!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegExLine truncated
`)}}):{name:t.name,value:s.replace(_t,`\r
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):0[0]:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)0[0]!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=0[0]),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=0[0],w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),0[0]===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFilter&&(t=e.dLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:0[0],n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=0[0]===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=0[0]===T?[]:T,x=t.fullSearcher,F=0[0]===x?[]:x,M=t.resultMap,m=0[0]===M?{}:M,S=t.results,A=0[0]===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
Key: `.concat(""===a?"-":a)),s=F.search(n),this._log('Full text: "'.concat(n,'", score: ').concat(s.score)),this.options.tokenize){for(var C=n.split(this.options.tokenSeparator),l=[],O=0;O<f.length;O+=1){j=f[O],this._log(`
Pattern: "`.concat(j.pattern,'"'));for(_=!1,p=0;p<C.length;p+=1){var d=C[p],b=j.search(d),v={};b.isMatch?(v[d]=b.score,k=!0,_=!0,l.push(b.score)):(v[d]=1,this.options.matchAllTokens||l.push(1)),this._log('Token: "'.concat(d,'", score: ').concat(v[d]))}_&&(E+=1)}o=l[0];for(g=l.length,h=1;h<g;h+=1)o+=l[h];o/=g,this._log("Token score average:",o)}i=s.score,o>-1&&(i=(i+o)/2),this._log("Score average:",i),y=!this.options.tokenize||!this.options.matchAllTokens||E>=f.length,(this._log(`
Check Matches: `.concat(y)),(k||s.isMatch)&&y)&&(w=m[u],w?w.output.push({key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}):(m[u]={item:z,output:[{key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}]},A.push(m[u])))}else if(r(n))for(c=0,L=n.length;c<L;c+=1)this._analyze({key:a,arrayIndex:c,value:n[c],record:z,index:u},{resultMap:m,results:A,tokenSearchers:f,fullSearcher:F})}}},{key:"_computeScore",value:function(e,t){this._log(`
Computing score:
`);for(n=0,c=t.length;n<c;n+=1){for(var n,a,r,c,o=t[n].output,d=o.length,l=1,i=1,s=0;s<d;s+=1)a=e?e[o[s].key].weight:1,r=(1===a?o[s].score:o[s].score||.001)*a,1!==a?i=Math.min(i,r):(o[s].nScore=r,l*=r);t[n].score=1===i?l:i,this._log(t[n])}}},{key:"_sort",value:function(e){this._log(`
Sorting....`),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){o=[],this.options.verbose&&(i=[],this._log(`
Output:
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=0[0]===h?0:h,i=n.distance,b=0[0]===i?100:i,c=n.threshold,g=0[0]===c?.6:c,d=n.maxPatternLength,u=0[0]===d?32:d,s=n.isCaseSensitive,m=0[0]!==s&&s,o=n.tokenSeparator,p=0[0]===o?/ +/g:o,l=n.findAllMatches,v=0[0]!==l&&l,r=n.minMatchCharLength,j=0[0]===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&0[0]!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=0[0]===M?0:M,F=i.distance,p=0[0]===F?100:F,C=i.threshold,L=0[0]===C?.6:C,k=i.findAllMatches,N=0[0]!==k&&k,E=i.minMatchCharLength,z=0[0]===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=0[0]===n?0:n,s=t.currentLocation,d=0[0]===s?0:s,o=t.expectedLocation,u=0[0]===o?0:o,i=t.distance,a=0[0]===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],i=arguments.length>1&&0[0]!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jqueLine truncated
</body>
</html>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Git on Founder of ODOO4projects. ODOO hosting like it should be. </title>
<link>https://blog.ODOO4projects.com/tags/git/</link>
<description>Recent content in Git on Founder of ODOO4projects. ODOO hosting like it should be. </description>
<generator>Hugo</generator>
<language>en</language>
<copyright>Copyright &amp;copy;2025 Oliver Arnold</copyright>
<lastBuildDate>Thu, 29 May 2025 00:00:00 -0400</lastBuildDate>
<atom:link href="https://blog.ODOO4projects.com/tags/git/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Staging Server on ODOO4projects with Git</title>
<link>https://blog.ODOO4projects.com/blogs/staging_server_git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/blogs/staging_server_git/</guid>
<description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/KVKpBfXM1To&#34;&gt;📺 Watch on Youtube click&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This &lt;strong&gt;ODOO4projects Academy&lt;/strong&gt; video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.&lt;/p&gt;</description>
</item>
</channel>
</rss>
+14
View File
@@ -44,6 +44,13 @@
<guid>https://blog.ODOO4projects.com/tags/hugo/</guid>
<description></description>
</item>
<item>
<title>Git</title>
<link>https://blog.ODOO4projects.com/tags/git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/tags/git/</guid>
<description></description>
</item>
<item>
<title>News</title>
<link>https://blog.ODOO4projects.com/tags/news/</link>
@@ -51,5 +58,12 @@
<guid>https://blog.ODOO4projects.com/tags/news/</guid>
<description></description>
</item>
<item>
<title>Odoo</title>
<link>https://blog.ODOO4projects.com/tags/odoo/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/tags/odoo/</guid>
<description></description>
</item>
</channel>
</rss>
+434
View File
@@ -0,0 +1,434 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Odoo</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
<meta name="description" content="ODOO4projetcs - We hook you up with brilliant ODOO Communtiy and Enterprise hosting">
<meta name="author" content="Oliver Arnold">
<meta name="theme-name" content="editor-hugo" />
<link rel="shortcut icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<link rel="icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
<meta property="og:url" content="https://blog.ODOO4projects.com/tags/odoo/">
<meta property="og:site_name" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
<meta property="og:title" content="Odoo">
<meta property="og:description" content="ODOO4projetcs - We hook you up with brilliant ODOO Communtiy and Enterprise hosting">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MEASUREMENT_ID"></script>
<script>
var doNotTrack = false;
if ( false ) {
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
}
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-MEASUREMENT_ID');
}
</script>
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com">
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-XrwIQJluVcwMevCzmiGhhTQRuLvLu8sZALVTqNh7oGWjma&#43;mr9ifNP0F7hfqlHL3Y3GEQ/PF5J1UiOq5blQuYQ==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8eLine truncated
<style>
blockquote::before {
display: none;
font-family: " Font Awesome 5 Free ";
}
.content ul li:not(.nav-item) {
position: relative;
margin-bottom: 5px;
list-style-type: none;
}
.content ul li:not(.nav-item) svg {
margin-right: 6px;
transform: scale(0.8);
color: #c98664 ;
}
.content ul li:not(.nav-item)::before {
font-size: 14px;
font-family: " Font Awesome 5 Free ";
font-weight: 900;
content: "\f069";
display: none;
}
.notices p::before {
position: absolute;
top: 2px;
font-family: " Font Awesome 5 Free ";
font-weight: 900;
content: "\f05a";
left: 10px;
display: none;
}
.notices p svg {
position: absolute;
top: 7px;
left: 10px;
color: #ffffff ;
}
</style>
</head>
<body>
<header class="sidenav">
<div class="is-top">
<div>
<button class="search-toggle d-inline-block d-md-none" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
<button class="sidenav-toggler d-inline-block " data-toggle="sidenav-menu">
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
</button>
</div>
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
<img height="30px" src="https://blog.ODOO4projects.com/images/logo.svg"
alt="ODOO4projects">
</a>
</div>
<div class="d-none d-md-block">
<ul class="social-links list-unstyled">
<li class="mb-3">
<button class="search-toggle" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
</li>
<li>
<a href="mailto:blog@odoo4projects.com">
<svg width="1.15em" height="1.15em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383l-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/></svg>
</a>
</li>
</ul>
</div>
</header>
<div class="sidenav-overlay" data-toggle="sidenav-menu" onclick="document.getElementById('toggler-icon').classList.remove('active')"></div>
<nav class="sidenav-menu flex-column justify-content-between">
<ul class="w-100 accordion" id="accordionMenu">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://ODOO4projects.com">ODOO4projects Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contact/">Contact</a>
</li>
</ul>
<ul class="social-links list-unstyled list-inline mt-5">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="fab fa-linkedin"></i>
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="fas fa-globe"></i>
</a></li>
</ul>
</nav>
<div class="search-block">
<div data-toggle="search-close">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="text-primary" viewBox="0 0 16 16"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>
</div>
<form action="/search" method="GET">
<input id="search-field" name="s" type="search" placeholder="Type &amp; Hit Enter..." class="text-center" aria-label="search-query">
</form>
</div>
<section class="page-content section" style="border-left:1px solid #eee">
<div class="container px-3 px-lg-4">
<div class="row justify-content-center">
<section class="col-12 page-header">
<div class="section my-4 py-5">
<h2 class="h4 title">Showing posts from <mark>Odoo</mark> tag</h2>
</div>
</section>
<div class="col-12">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card">
<div class="post-slider slider-sm">
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/staging_git.svg" alt=""></div>
</div>
<div class="card-body mb-3">
<ul class="card-meta-tag list-inline mb-1">
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/odoo/">odoo</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/git/">git</a></li>
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
</ul>
<h3 class="h4 mb-2">
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/staging_server_git/" title="Staging Server on ODOO4projects with Git">Staging Server on ODOO4projects with Git</a>
</h3>
<p class="mb-0">📺 Watch on Youtube click
This ODOO4projects Academy video introduces …</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
</li>
<li class="list-inline-item">
<span class="card-meta-date">May 29, 2025</span>
</li>
</ul>
</div>
</article>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid px-3 px-lg-4">
<div class="row justify-content-center">
<div class="col-12 mt-4 pt-2">
<footer class="bg-primary-light py-5">
<div class="container">
<div class="row">
<div class="col-12 text-center mb-5">
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
<i class="icon fab fa-linkedin"></i> Linkedin
</a></li>
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
<i class="icon fas fa-globe"></i> Website
</a></li>
</ul>
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
</div>
<div class="col-12 text-center">
<p class="mb-0 font-weight-500"></p>
</div>
</div>
</div>
</footer>
</div>
</div>
</div>
</section>
<script src="https://cdn.jsdelivr.net/gh/theprojectsomething/webfontloader@feature/google-fonts-v2/webfontloader.js"></script>
<script>
WebFont.load({
google: {
families: [
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
]
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/js/all.min.js" type="application/javascript" crossorigin='anonymous' defer='defer' data-search-pseudo-elements></script>
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-Yz/YSPyKMckGEMMQ1yybtrsvcFiryJxYzQ&#43;leCBVaB9zptlhmftcVDBVaYtwyFf1fIj0Tunj&#43;Aqcg0eUp&#43;ROsQ==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*!
* Fuse.js v3.4.6 - Lightweight fuzzy-search (http://fusejs.io)
*
* Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
* All Rights Reserved. Apache Software License 2.0
*
* http://www.apache.org/licenses/LICENSE-2.0
*//*!***************************************************
* mark.js v8.11.1
* https://markjs.io/
* Copyright (c) 2014–2018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):0[0]!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&&gt.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegExLine truncated
`)}}):{name:t.name,value:s.replace(_t,`\r
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):0[0]:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)0[0]!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=0[0]),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=0[0],w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),0[0]===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFilter&&(t=e.dLine truncated
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:0[0],n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=0[0]===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=0[0]===T?[]:T,x=t.fullSearcher,F=0[0]===x?[]:x,M=t.resultMap,m=0[0]===M?{}:M,S=t.results,A=0[0]===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
Key: `.concat(""===a?"-":a)),s=F.search(n),this._log('Full text: "'.concat(n,'", score: ').concat(s.score)),this.options.tokenize){for(var C=n.split(this.options.tokenSeparator),l=[],O=0;O<f.length;O+=1){j=f[O],this._log(`
Pattern: "`.concat(j.pattern,'"'));for(_=!1,p=0;p<C.length;p+=1){var d=C[p],b=j.search(d),v={};b.isMatch?(v[d]=b.score,k=!0,_=!0,l.push(b.score)):(v[d]=1,this.options.matchAllTokens||l.push(1)),this._log('Token: "'.concat(d,'", score: ').concat(v[d]))}_&&(E+=1)}o=l[0];for(g=l.length,h=1;h<g;h+=1)o+=l[h];o/=g,this._log("Token score average:",o)}i=s.score,o>-1&&(i=(i+o)/2),this._log("Score average:",i),y=!this.options.tokenize||!this.options.matchAllTokens||E>=f.length,(this._log(`
Check Matches: `.concat(y)),(k||s.isMatch)&&y)&&(w=m[u],w?w.output.push({key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}):(m[u]={item:z,output:[{key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}]},A.push(m[u])))}else if(r(n))for(c=0,L=n.length;c<L;c+=1)this._analyze({key:a,arrayIndex:c,value:n[c],record:z,index:u},{resultMap:m,results:A,tokenSearchers:f,fullSearcher:F})}}},{key:"_computeScore",value:function(e,t){this._log(`
Computing score:
`);for(n=0,c=t.length;n<c;n+=1){for(var n,a,r,c,o=t[n].output,d=o.length,l=1,i=1,s=0;s<d;s+=1)a=e?e[o[s].key].weight:1,r=(1===a?o[s].score:o[s].score||.001)*a,1!==a?i=Math.min(i,r):(o[s].nScore=r,l*=r);t[n].score=1===i?l:i,this._log(t[n])}}},{key:"_sort",value:function(e){this._log(`
Sorting....`),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){o=[],this.options.verbose&&(i=[],this._log(`
Output:
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=0[0]===h?0:h,i=n.distance,b=0[0]===i?100:i,c=n.threshold,g=0[0]===c?.6:c,d=n.maxPatternLength,u=0[0]===d?32:d,s=n.isCaseSensitive,m=0[0]!==s&&s,o=n.tokenSeparator,p=0[0]===o?/ +/g:o,l=n.findAllMatches,v=0[0]!==l&&l,r=n.minMatchCharLength,j=0[0]===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&0[0]!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=0[0]===M?0:M,F=i.distance,p=0[0]===F?100:F,C=i.threshold,L=0[0]===C?.6:C,k=i.findAllMatches,N=0[0]!==k&&k,E=i.minMatchCharLength,z=0[0]===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=0[0]===n?0:n,s=t.currentLocation,d=0[0]===s?0:s,o=t.expectedLocation,u=0[0]===o?0:o,i=t.distance,a=0[0]===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],i=arguments.length>1&&0[0]!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jqueLine truncated
</body>
</html>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Odoo on Founder of ODOO4projects. ODOO hosting like it should be. </title>
<link>https://blog.ODOO4projects.com/tags/odoo/</link>
<description>Recent content in Odoo on Founder of ODOO4projects. ODOO hosting like it should be. </description>
<generator>Hugo</generator>
<language>en</language>
<copyright>Copyright &amp;copy;2025 Oliver Arnold</copyright>
<lastBuildDate>Thu, 29 May 2025 00:00:00 -0400</lastBuildDate>
<atom:link href="https://blog.ODOO4projects.com/tags/odoo/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Staging Server on ODOO4projects with Git</title>
<link>https://blog.ODOO4projects.com/blogs/staging_server_git/</link>
<pubDate>Thu, 29 May 2025 00:00:00 -0400</pubDate>
<guid>https://blog.ODOO4projects.com/blogs/staging_server_git/</guid>
<description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/KVKpBfXM1To&#34;&gt;📺 Watch on Youtube click&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This &lt;strong&gt;ODOO4projects Academy&lt;/strong&gt; video introduces an efficient workflow for safely managing and deploying your ODOO modules using Git and staging servers.&lt;/p&gt;</description>
</item>
</channel>
</rss>
File diff suppressed because it is too large. Load diff

After

Width:  |  Height:  |  Size: 311 KiB