├── web ├── __init__.py ├── migrations │ ├── __init__.py │ ├── 0021_remove_usersettings_js_entry_form.py │ ├── 0005_rename_notes_note_note.py │ ├── 0011_alter_entry_day.py │ ├── 0013_week_week_date.py │ ├── 0020_usersettings_js_entry_form.py │ ├── 0007_note_year.py │ ├── 0012_rename_note_week.py │ ├── 0016_auto_20211117_1646.py │ ├── 0018_auto_20211117_1908.py │ ├── 0024_usersettings_use_js_btn.py │ ├── 0019_week_unique entry.py │ ├── 0014_entry_week.py │ ├── 0017_auto_20211117_1738.py │ ├── 0003_auto_20210806_1612.py │ ├── 0022_usersettings_view_day_form_and_more.py │ ├── 0010_alter_usersettings_user.py │ ├── 0009_alter_usersettings_user.py │ ├── 0015_auto_20211115_2119.py │ ├── 0004_auto_20210806_1638.py │ ├── 0006_auto_20210808_1819.py │ ├── 0002_auto_20210805_2201.py │ ├── 0008_usersettings.py │ ├── 0001_initial.py │ └── 0023_usermoodcolorsettings_remove_week_unique entry_and_more.py ├── templatetags │ ├── __init__.py │ ├── date_fmt.py │ ├── get_item.py │ └── relative_url.py ├── tests.py ├── templates │ ├── web │ │ ├── graph │ │ │ ├── average.html │ │ │ ├── pie_chart.html │ │ │ ├── scatter.html │ │ │ ├── graph.html │ │ │ └── date_select.html │ │ ├── errors │ │ │ ├── 400.html │ │ │ ├── 403.html │ │ │ ├── 404.html │ │ │ └── 500.html │ │ ├── settings │ │ │ ├── js_btn.html │ │ │ ├── view_forms.html │ │ │ ├── default_view_mode.html │ │ │ ├── language.html │ │ │ ├── mood_colors.html │ │ │ └── settings.html │ │ ├── mood-form │ │ │ ├── standout_data.html │ │ │ ├── entry_posted_toast.html │ │ │ ├── default_btn.html │ │ │ ├── note.html │ │ │ ├── js_btn.html │ │ │ ├── form.html │ │ │ └── entry_list.html │ │ ├── css │ │ │ └── moods.css │ │ ├── calendar │ │ │ └── calendar.html │ │ ├── shared │ │ │ ├── i18n.html │ │ │ └── pagination.html │ │ ├── search │ │ │ └── search.html │ │ └── base.html │ ├── django_registration │ │ ├── registration_closed.html │ │ ├── registration_complete.html │ │ └── registration_form.html │ └── registration │ │ └── login.html ├── static │ ├── favicon.ico │ └── img │ │ ├── loading.gif │ │ ├── transparent.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── apple-touch-icon.png │ │ ├── Icon_External_Link.png │ │ ├── android-chrome-192x192.png │ │ └── android-chrome-512x512.png ├── apps.py ├── query_params.py ├── admin.py ├── mood_colors.py ├── management │ └── commands │ │ ├── clear_django_cache.py │ │ └── generate_random_data.py ├── service │ ├── bar_graph.py │ ├── base_graph.py │ ├── pie_graph.py │ ├── scatter_graph.py │ ├── settings.py │ └── sk.py ├── structs.py ├── context_processors.py ├── serializers.py ├── models.py ├── locale │ ├── en_GB │ │ └── LC_MESSAGES │ │ │ └── django.po │ └── de_DE │ │ └── LC_MESSAGES │ │ └── django.po ├── views.py └── api.py ├── node ├── .prettierrc.json ├── src │ ├── scss │ │ ├── datePicker.scss │ │ ├── stimmungskalender.scss │ │ ├── signin.css │ │ ├── bootstrap.scss │ │ └── main.scss │ └── js │ │ ├── plotly.js │ │ ├── sk.util.js │ │ ├── main.js │ │ ├── sk.theme.js │ │ ├── sk.mood.form.js │ │ ├── sk.calendar.js │ │ └── sk.graph.js ├── package.json └── webpack.config.js ├── assets └── form.png ├── .flake8 ├── scripts ├── node.sh └── quickstart.sh ├── .isort.cfg ├── docs ├── faq.md └── docker.md ├── .dockerignore ├── stimmungskalender ├── asgi.py ├── wsgi.py ├── __init__.py ├── urls.py └── settings.py ├── Makefile ├── docker └── app │ ├── uwsgi.ini │ ├── entrypoint.sh │ └── Dockerfile ├── manage.py ├── _config.yml ├── pyproject.toml ├── README.md ├── docker-compose.yml └── requirements.txt /web/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /node/.prettierrc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /web/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/tests.py: -------------------------------------------------------------------------------- 1 | # Create your tests here. 2 | -------------------------------------------------------------------------------- /web/templates/web/graph/average.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /assets/form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/assets/form.png -------------------------------------------------------------------------------- /node/src/scss/datePicker.scss: -------------------------------------------------------------------------------- 1 | @import "../../node_modules/vanillajs-datepicker/sass/datepicker.scss"; 2 | -------------------------------------------------------------------------------- /web/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/favicon.ico -------------------------------------------------------------------------------- /node/src/js/plotly.js: -------------------------------------------------------------------------------- 1 | const Plotly = require("plotly.js/lib/index-basic"); 2 | 3 | window.Plotly = Plotly; 4 | -------------------------------------------------------------------------------- /web/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/loading.gif -------------------------------------------------------------------------------- /web/static/img/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/transparent.png -------------------------------------------------------------------------------- /web/static/img/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/favicon-16x16.png -------------------------------------------------------------------------------- /web/static/img/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/favicon-32x32.png -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length = 88 3 | # extend-ignore = E203 4 | select = C,E,F,W,B,B950 5 | extend-ignore = E203, E501 6 | -------------------------------------------------------------------------------- /web/static/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/apple-touch-icon.png -------------------------------------------------------------------------------- /web/static/img/Icon_External_Link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/Icon_External_Link.png -------------------------------------------------------------------------------- /web/static/img/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/android-chrome-192x192.png -------------------------------------------------------------------------------- /web/static/img/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rain0r/stimmungskalender/HEAD/web/static/img/android-chrome-512x512.png -------------------------------------------------------------------------------- /scripts/node.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd node 4 | npm install --audit=false --fund=false --loglevel=error --progress=false 5 | npm run build 6 | cd .. 7 | -------------------------------------------------------------------------------- /web/templates/django_registration/registration_closed.html: -------------------------------------------------------------------------------- 1 | {% extends 'web/base.html' %} 2 | {% block content %}Registration closed.{% endblock %} 3 | -------------------------------------------------------------------------------- /web/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class WebConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "web" 7 | -------------------------------------------------------------------------------- /.isort.cfg: -------------------------------------------------------------------------------- 1 | [settings] 2 | multi_line_output = 3 3 | include_trailing_comma = True 4 | force_grid_wrap = 0 5 | use_parentheses = True 6 | ensure_newline_before_comments = True 7 | line_length = 88 8 | -------------------------------------------------------------------------------- /web/query_params.py: -------------------------------------------------------------------------------- 1 | # Use as query param names 2 | QP_START_DT = "start_dt" 3 | QP_END_DT = "end_dt" 4 | QP_MOOD = "mood" 5 | QP_SEARCH_TERM = "search_term" 6 | QP_PAGE = "page" 7 | QP_PERIOD = "period" 8 | -------------------------------------------------------------------------------- /web/templates/web/errors/400.html: -------------------------------------------------------------------------------- 1 | {% extends 'web/base.html' %} 2 | {% block content %} 3 |5 | Start 6 |
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /web/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from web.models import Entry, UserMoodColorSettings, UserSettings, Week 4 | 5 | admin.site.register(Entry) 6 | admin.site.register(Week) 7 | admin.site.register(UserSettings) 8 | admin.site.register(UserMoodColorSettings) 9 | -------------------------------------------------------------------------------- /web/mood_colors.py: -------------------------------------------------------------------------------- 1 | from web.models import Moods 2 | 3 | DEFAULT_COLORS = { 4 | Moods.VERY_BAD: "#dc3545", 5 | Moods.BAD: "#ffc107", 6 | Moods.MEDIUM: "#b2beb5", 7 | Moods.GOOD: "rgba(40,167,69, 0.7)", 8 | Moods.VERY_GOOD: "rgba(40,167,69, 1)", 9 | } 10 | -------------------------------------------------------------------------------- /web/management/commands/clear_django_cache.py: -------------------------------------------------------------------------------- 1 | from django.core.cache import cache 2 | from django.core.management import BaseCommand 3 | 4 | 5 | class Command(BaseCommand): 6 | def handle(self, *args: tuple, **options: dict) -> None: 7 | cache.clear() 8 | print("Cache cleared!") 9 | -------------------------------------------------------------------------------- /web/templates/web/errors/500.html: -------------------------------------------------------------------------------- 1 | {% extends 'web/base.html' %} 2 | {% block content %} 3 |red, #dc3545, rgba(40,167,69, 0.7)
7 | {% if week.note %}{{ week.note }}{% endif %}
81 | ${this.formatDate(e.events[i].day)}
87 |