repos
/ timestrap-django gh-pages

timestrap-django

mirror archived upstream

Time tracking you can host anywhere, built on Django. Full export support in multiple formats and easily extensible.

djangodockerhandcodedpythonself-hostedtime-trackingtimetracker

19.2 KB · 578 lines · HTML Raw History
  1
  2
  3
  4<!doctype html>
  5<html lang="en" class="no-js">
  6  <head>
  7    
  8      <meta charset="utf-8">
  9      <meta name="viewport" content="width=device-width,initial-scale=1">
 10      
 11        <meta name="description" content="Docs for the Timestrap project.">
 12      
 13      
 14        <link rel="canonical" href="https://timestrap.bythewood.me/sites/">
 15      
 16      
 17        <meta name="author" content="Isaac Bythewood">
 18      
 19      <link rel="shortcut icon" href="../assets/images/favicon.png">
 20      <meta name="generator" content="mkdocs-1.2.4, mkdocs-material-5.4.0">
 21    
 22    
 23      
 24        <title>Sites - Timestrap Docs</title>
 25      
 26    
 27    
 28      <link rel="stylesheet" href="../assets/stylesheets/main.fe0cca5b.min.css">
 29      
 30        <link rel="stylesheet" href="../assets/stylesheets/palette.a46bcfb3.min.css">
 31      
 32      
 33        
 34        
 35        <meta name="theme-color" content="#3f51b5">
 36      
 37    
 38    
 39    
 40      
 41        <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
 42        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
 43        <style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
 44      
 45    
 46    
 47    
 48    
 49      
 50    
 51    
 52  </head>
 53  
 54  
 55    
 56    
 57    
 58    <body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="indigo">
 59  
 60    
 61    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
 62    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
 63    <label class="md-overlay" for="__drawer"></label>
 64    <div data-md-component="skip">
 65      
 66        
 67        <a href="#sites" class="md-skip">
 68          Skip to content
 69        </a>
 70      
 71    </div>
 72    <div data-md-component="announce">
 73      
 74    </div>
 75    
 76      <header class="md-header" data-md-component="header">
 77  <nav class="md-header-nav md-grid" aria-label="Header">
 78    <a href="https://timestrap.bythewood.me/" title="Timestrap Docs" class="md-header-nav__button md-logo" aria-label="Timestrap Docs">
 79      
 80  
 81  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
 82
 83    </a>
 84    <label class="md-header-nav__button md-icon" for="__drawer">
 85      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
 86    </label>
 87    <div class="md-header-nav__title" data-md-component="header-title">
 88      
 89        <div class="md-header-nav__ellipsis">
 90          <span class="md-header-nav__topic md-ellipsis">
 91            Timestrap Docs
 92          </span>
 93          <span class="md-header-nav__topic md-ellipsis">
 94            
 95              Sites
 96            
 97          </span>
 98        </div>
 99      
100    </div>
101    
102      <label class="md-header-nav__button md-icon" for="__search">
103        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
104      </label>
105      
106<div class="md-search" data-md-component="search" role="dialog">
107  <label class="md-search__overlay" for="__search"></label>
108  <div class="md-search__inner" role="search">
109    <form class="md-search__form" name="search">
110      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active">
111      <label class="md-search__icon md-icon" for="__search">
112        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
113        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
114      </label>
115      <button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
116        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
117      </button>
118    </form>
119    <div class="md-search__output">
120      <div class="md-search__scrollwrap" data-md-scrollfix>
121        <div class="md-search-result" data-md-component="search-result">
122          <div class="md-search-result__meta">
123            Initializing search
124          </div>
125          <ol class="md-search-result__list"></ol>
126        </div>
127      </div>
128    </div>
129  </div>
130</div>
131    
132    
133      <div class="md-header-nav__source">
134        
135<a href="https://github.com/overshard/timestrap/" title="Go to repository" class="md-source">
136  <div class="md-source__icon md-icon">
137    
138    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
139  </div>
140  <div class="md-source__repository">
141    overshard/timestrap
142  </div>
143</a>
144      </div>
145    
146  </nav>
147</header>
148    
149    <div class="md-container" data-md-component="container">
150      
151        
152      
153      
154        
155      
156      <main class="md-main" data-md-component="main">
157        <div class="md-main__inner md-grid">
158          
159            
160              <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
161                <div class="md-sidebar__scrollwrap">
162                  <div class="md-sidebar__inner">
163                    <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
164  <label class="md-nav__title" for="__drawer">
165    <a href="https://timestrap.bythewood.me/" title="Timestrap Docs" class="md-nav__button md-logo" aria-label="Timestrap Docs">
166      
167  
168  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
169
170    </a>
171    Timestrap Docs
172  </label>
173  
174    <div class="md-nav__source">
175      
176<a href="https://github.com/overshard/timestrap/" title="Go to repository" class="md-source">
177  <div class="md-source__icon md-icon">
178    
179    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
180  </div>
181  <div class="md-source__repository">
182    overshard/timestrap
183  </div>
184</a>
185    </div>
186  
187  <ul class="md-nav__list" data-md-scrollfix>
188    
189      
190      
191      
192
193
194  <li class="md-nav__item">
195    <a href=".." title="Home" class="md-nav__link">
196      Home
197    </a>
198  </li>
199
200    
201      
202      
203      
204
205
206  <li class="md-nav__item">
207    <a href="../screenshots/" title="Screenshots" class="md-nav__link">
208      Screenshots
209    </a>
210  </li>
211
212    
213      
214      
215      
216
217
218  <li class="md-nav__item">
219    <a href="../configuration/" title="Configuration" class="md-nav__link">
220      Configuration
221    </a>
222  </li>
223
224    
225      
226      
227      
228
229
230  <li class="md-nav__item">
231    <a href="../permissions/" title="Permissions" class="md-nav__link">
232      Permissions
233    </a>
234  </li>
235
236    
237      
238      
239      
240
241  
242
243
244  <li class="md-nav__item md-nav__item--active">
245    
246    <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
247    
248      
249    
250    
251      <label class="md-nav__link md-nav__link--active" for="__toc">
252        Sites
253        <span class="md-nav__icon md-icon">
254          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2z"/></svg>
255        </span>
256      </label>
257    
258    <a href="./" title="Sites" class="md-nav__link md-nav__link--active">
259      Sites
260    </a>
261    
262      
263<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
264  
265  
266    
267  
268  
269    <label class="md-nav__title" for="__toc">
270      <span class="md-nav__icon md-icon">
271        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
272      </span>
273      Table of contents
274    </label>
275    <ul class="md-nav__list" data-md-scrollfix>
276      
277        <li class="md-nav__item">
278  <a href="#single-site" class="md-nav__link">
279    Single Site
280  </a>
281  
282</li>
283      
284        <li class="md-nav__item">
285  <a href="#multiple-sites" class="md-nav__link">
286    Multiple Sites
287  </a>
288  
289    <nav class="md-nav" aria-label="Multiple Sites">
290      <ul class="md-nav__list">
291        
292          <li class="md-nav__item">
293  <a href="#data-sharing" class="md-nav__link">
294    Data Sharing
295  </a>
296  
297</li>
298        
299          <li class="md-nav__item">
300  <a href="#example-big-project-builders-inc" class="md-nav__link">
301    Example: Big Project Builders, Inc.
302  </a>
303  
304</li>
305        
306      </ul>
307    </nav>
308  
309</li>
310      
311    </ul>
312  
313</nav>
314    
315  </li>
316
317    
318      
319      
320      
321
322
323  <li class="md-nav__item">
324    <a href="../uses/" title="Uses" class="md-nav__link">
325      Uses
326    </a>
327  </li>
328
329    
330      
331      
332      
333
334
335  <li class="md-nav__item">
336    <a href="../docs/" title="Docs" class="md-nav__link">
337      Docs
338    </a>
339  </li>
340
341    
342      
343      
344      
345
346
347  <li class="md-nav__item">
348    <a href="../contributing/" title="Contributing" class="md-nav__link">
349      Contributing
350    </a>
351  </li>
352
353    
354      
355      
356      
357
358
359  <li class="md-nav__item">
360    <a href="../license/" title="License" class="md-nav__link">
361      License
362    </a>
363  </li>
364
365    
366  </ul>
367</nav>
368                  </div>
369                </div>
370              </div>
371            
372            
373              <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
374                <div class="md-sidebar__scrollwrap">
375                  <div class="md-sidebar__inner">
376                    
377<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
378  
379  
380    
381  
382  
383    <label class="md-nav__title" for="__toc">
384      <span class="md-nav__icon md-icon">
385        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
386      </span>
387      Table of contents
388    </label>
389    <ul class="md-nav__list" data-md-scrollfix>
390      
391        <li class="md-nav__item">
392  <a href="#single-site" class="md-nav__link">
393    Single Site
394  </a>
395  
396</li>
397      
398        <li class="md-nav__item">
399  <a href="#multiple-sites" class="md-nav__link">
400    Multiple Sites
401  </a>
402  
403    <nav class="md-nav" aria-label="Multiple Sites">
404      <ul class="md-nav__list">
405        
406          <li class="md-nav__item">
407  <a href="#data-sharing" class="md-nav__link">
408    Data Sharing
409  </a>
410  
411</li>
412        
413          <li class="md-nav__item">
414  <a href="#example-big-project-builders-inc" class="md-nav__link">
415    Example: Big Project Builders, Inc.
416  </a>
417  
418</li>
419        
420      </ul>
421    </nav>
422  
423</li>
424      
425    </ul>
426  
427</nav>
428                  </div>
429                </div>
430              </div>
431            
432          
433          <div class="md-content">
434            <article class="md-content__inner md-typeset">
435              
436                
437                  <a href="https://github.com/overshard/timestrap/edit/master/docs/src/sites.md" title="Edit this page" class="md-content__button md-icon">
438                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
439                  </a>
440                
441                
442                  
443                
444                
445                <h1 id="sites">Sites<a class="headerlink" href="#sites" title="Permanent link">&para;</a></h1>
446<p>Timestrap takes advantage of <a href="https://docs.djangoproject.com/en/1.11/ref/contrib/sites/">Django's "sites" framework</a>
447to support running multiple Timestrap "sites" from a single instance of the
448application. This an optional enhancement, and the base Timestrap application
449will work fine as a single site without any advanced configuration.</p>
450<h2 id="single-site">Single Site<a class="headerlink" href="#single-site" title="Permanent link">&para;</a></h2>
451<p>Out of the box, Timestrap is a single site using the fake domain <code>time.strap</code>
452and name <code>Timestrap</code>. Both the name and the domain name are configurable on
453the admin.</p>
454<p>Any domain will fall back to the default site, but it is recommended to at
455least set the site domain setting be updated to match the actual site domain
456since emails will use this domain when sending.</p>
457<h2 id="multiple-sites">Multiple Sites<a class="headerlink" href="#multiple-sites" title="Permanent link">&para;</a></h2>
458<p>Timestrap supports setting up multiple sites with configurations options
459available on a per-site basis. This functionality may be useful if, for
460example, there is a need to separate departments or functional teams within a
461larger group of organization.</p>
462<p>Sites can be managed by any user with admin access and appropriate permissions:
463either <code>superuser</code> or the various <code>site</code> and <code>conf</code> permissions. Sites are
464based on domain and use two primary settings, <code>domain</code> and <code>name</code> in addition
465to the various configuration options available.</p>
466<h3 id="data-sharing">Data Sharing<a class="headerlink" href="#data-sharing" title="Permanent link">&para;</a></h3>
467<p>All Timestrap data will be related to either one or multiple sites.</p>
468<ul>
469<li><strong>Clients</strong> and <strong>Tasks</strong> can be related to <em>multiple</em> sites.</li>
470<li><strong>Entries</strong> can be related to a <em>single</em> site.</li>
471</ul>
472<p>Data with a single-site relationship will automatically be related to the site
473it was entered on. This settings can be changed from the admin site.</p>
474<p>Currently, multiple site relationships can only be controlled from the admin
475site. To use a Client or Task on multiple sites, it must be added to one
476site and then modified in the admin site to be related to additional sites.</p>
477<h3 id="example-big-project-builders-inc">Example: Big Project Builders, Inc.<a class="headerlink" href="#example-big-project-builders-inc" title="Permanent link">&para;</a></h3>
478<p>Big Project Builders, Inc. (BPB) uses Timestrap to keep track of its progress
479for various projects &amp; clients. However, with many different teams a single
480Timestrap instance would have <em>a lot</em> of data and it may come difficulty for
481individual employees to keep track of progress. So BPB decides to break the
482instance in to multiple sites -</p>
483<ul>
484<li><strong>timestrap.bpb.io</strong> is the primary instance site, where admin superusers add
485the Clients and Projects that BPB is working on.</li>
486<li><strong>design.timestrap.bpb.io</strong> is used by BPB's designers to assign and track
487graphics and design work for projects.</li>
488<li><strong>development.timestrap.bpb.io</strong> is used by BPB's developers to assign and
489track project development.</li>
490<li><strong>testing.timestrap.bpb.io</strong> is used bu BPB's testing team to record time
491spent executing and reporting on project tests.</li>
492</ul>
493                
494              
495              
496                
497
498
499              
500            </article>
501          </div>
502        </div>
503      </main>
504      
505        
506<footer class="md-footer">
507  
508    <div class="md-footer-nav">
509      <nav class="md-footer-nav__inner md-grid" aria-label="Footer">
510        
511          <a href="../permissions/" title="Permissions" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
512            <div class="md-footer-nav__button md-icon">
513              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
514            </div>
515            <div class="md-footer-nav__title">
516              <div class="md-ellipsis">
517                <span class="md-footer-nav__direction">
518                  Previous
519                </span>
520                Permissions
521              </div>
522            </div>
523          </a>
524        
525        
526          <a href="../uses/" title="Uses" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
527            <div class="md-footer-nav__title">
528              <div class="md-ellipsis">
529                <span class="md-footer-nav__direction">
530                  Next
531                </span>
532                Uses
533              </div>
534            </div>
535            <div class="md-footer-nav__button md-icon">
536              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
537            </div>
538          </a>
539        
540      </nav>
541    </div>
542  
543  <div class="md-footer-meta md-typeset">
544    <div class="md-footer-meta__inner md-grid">
545      <div class="md-footer-copyright">
546        
547          <div class="md-footer-copyright__highlight">
548            Copyright &copy; 2019 Isaac Bythewood
549          </div>
550        
551        Made with
552        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
553          Material for MkDocs
554        </a>
555      </div>
556      
557    </div>
558  </div>
559</footer>
560      
561    </div>
562    
563      <script src="../assets/javascripts/vendor.d710d30a.min.js"></script>
564      <script src="../assets/javascripts/bundle.b39636ac.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents"}</script>
565      
566      <script>
567        app = initialize({
568          base: "..",
569          features: [],
570          search: Object.assign({
571            worker: "../assets/javascripts/worker/search.a68abb33.min.js"
572          }, typeof search !== "undefined" && search)
573        })
574      </script>
575      
576    
577  </body>
578</html>