Time tracking you can host anywhere, built on Django. Full export support in multiple formats and easily extensible.
djangodockerhandcodedpythonself-hostedtime-trackingtimetracker
1from django.contrib import admin
2
3from import_export import resources
4
5from .models import Client, Entry, Project, Task
6
7
8@admin.register(Client)
9class ClientAdmin(admin.ModelAdmin):
10 list_display = ("name", "payment_id", "archive")
11 list_editable = ("archive",)
12 list_filter = ("archive", "sites")
13 search_fields = ("name",)
14
15
16@admin.register(Entry)
17class EntryAdmin(admin.ModelAdmin):
18 list_display = ("project", "user", "date", "duration")
19 list_editable = ("date", "duration")
20 list_filter = ("project", "project__client", "user", "date", "site")
21 search_fields = ("project", "project__client", "user", "note")
22 fieldsets = (
23 (None, {"fields": ("project", "user")}),
24 (
25 "Date Completed & Duration of Project",
26 {"fields": ("date", "duration", "datetime_start", "datetime_end")},
27 ),
28 ("Extra", {"fields": ("note", "site")}),
29 )
30
31
32class EntryResource(resources.ModelResource):
33 class Meta:
34 model = Entry
35 fields = ("project__name", "user__username", "date", "duration", "note")
36
37
38@admin.register(Project)
39class ProjectAdmin(admin.ModelAdmin):
40 list_display = ("name", "client", "archive")
41 list_editable = ("archive",)
42 list_filter = ("client", "archive")
43 search_fields = ("name", "client")
44
45
46@admin.register(Task)
47class TaskAdmin(admin.ModelAdmin):
48 list_display = ("name", "hourly_rate")
49 list_filter = ("sites",)
50 search_fields = ("name",)