From 7ff8071be90c27301dd14a056e5b9acb1bcb0181 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Fri, 1 Nov 2024 20:32:08 +0100 Subject: [PATCH] Adaptions to changed simplified user profile additions in users module --- __init__.py | 4 -- context.py | 16 ----- forms.py | 8 ++- ...lter_historicalcomment_options_and_more.py | 71 +++++++++++++++++++ models.py | 2 +- urls.py | 1 - views.py | 42 +---------- 7 files changed, 80 insertions(+), 64 deletions(-) create mode 100644 migrations/0014_alter_historicalcomment_options_and_more.py diff --git a/__init__.py b/__init__.py index c811f0d..953c3e9 100644 --- a/__init__.py +++ b/__init__.py @@ -21,10 +21,6 @@ def url_tasklist(request, user_filter_id=None, search_txt=None, common_filter_id return reverse('patt-tasklist') -def url_profile(request): - return reverse('patt-profile') - - def url_projectlist(request): return reverse('patt-projectlist') diff --git a/context.py b/context.py index e5bca32..c18c547 100644 --- a/context.py +++ b/context.py @@ -49,7 +49,6 @@ def navigationbar(context, request, caller_name, **kwargs): def menubar(context, request, caller_name, **kwargs): bar = context[context.MENUBAR] menubar_users(bar, request) - replace_profile(request, bar) add_help_menu(request, bar) add_tasklist_menu(request, bar) add_filter_submenu(request, bar, VIEW_TASKLIST_UID) @@ -83,21 +82,6 @@ def finalise_bar(request, bar): bar.append_entry(*empty_entry_parameters(request)) -def replace_profile(request, bar): - try: - bar.replace_entry( - PROFILE_ENTRY_UID, - PROFILE_ENTRY_UID, # uid - request.user.username, # name - color_icon_url(request, 'user.png'), # icon - patt.url_profile(request), # url - False, # left - False # active - ) - except ValueError: - pass # Profile entry does not exist, so exchange is not needed (e.g. no user is logged in) - - def add_help_menu(request, bar): bar.append_entry( HELP_UID, # uid diff --git a/forms.py b/forms.py index 94a5938..282b441 100644 --- a/forms.py +++ b/forms.py @@ -2,7 +2,7 @@ from django import forms from django.contrib.auth.models import User from django.db.models import Q from django.utils.translation import gettext as _ -from .models import Task, Project, Comment, Search, TASKSTATE_CHOICES, PROJECTSTATE_OPEN, ModelList, PattUserProfile +from .models import Task, Project, Comment, Search, TASKSTATE_CHOICES, PROJECTSTATE_OPEN, ModelList, PattUserProfile, get_pattuserprofile from .search import INDEX_STATES @@ -14,7 +14,11 @@ class PattUserProfileForm(forms.ModelForm): 'threshold_very_soon': _('Period to targetdate for warning Group "very soon"'), 'threshold_soon': _('Period to targetdate for warning Group "soon"'), } - + def __init__(self, request): + if request.POST: + super().__init__(data=request.POST, instance=get_pattuserprofile(request.user)) + else: + super().__init__(instance=get_pattuserprofile(request.user)) class TaskForm(forms.ModelForm): diff --git a/migrations/0014_alter_historicalcomment_options_and_more.py b/migrations/0014_alter_historicalcomment_options_and_more.py new file mode 100644 index 0000000..691050e --- /dev/null +++ b/migrations/0014_alter_historicalcomment_options_and_more.py @@ -0,0 +1,71 @@ +# Generated by Django 5.1.2 on 2024-11-01 19:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('patt', '0013_auto_20210117_1332'), + ] + + operations = [ + migrations.AlterModelOptions( + name='historicalcomment', + options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical comment', 'verbose_name_plural': 'historical comments'}, + ), + migrations.AlterModelOptions( + name='historicaltask', + options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical task', 'verbose_name_plural': 'historical tasks'}, + ), + migrations.AlterField( + model_name='comment', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='historicalcomment', + name='history_date', + field=models.DateTimeField(db_index=True), + ), + migrations.AlterField( + model_name='historicalcomment', + name='id', + field=models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID'), + ), + migrations.AlterField( + model_name='historicaltask', + name='history_date', + field=models.DateTimeField(db_index=True), + ), + migrations.AlterField( + model_name='historicaltask', + name='id', + field=models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID'), + ), + migrations.AlterField( + model_name='pattuserprofile', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='pattuserprofile', + name='threshold_soon', + field=models.IntegerField(choices=[(1, '1 day'), (2, '2 days'), (3, '3 days'), (5, '5 days'), (7, '7 days'), (10, '10 days'), (14, '14 days'), (21, ' 21 days')], default=10), + ), + migrations.AlterField( + model_name='project', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='search', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='task', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/models.py b/models.py index 9fd5809..38673ba 100644 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ from simple_history.models import HistoricalRecords THRESHOLD_VERY_SOON_CHOICES = ((1, '1 day'), (2, '2 days'), (3, '3 days'), (4, '4 days'), (5, '5 days'), (7, '7 days'), (9, '9 days'), (12, '12 days'), ) # REQ-38 -THRESHOLD_SOON_CHOICES = ((1, '1 day'), (2, '2 days'), (3, '3 days'), (5, '5 days'), (7, '7 days'), (10, '10 days'), (14, '14 days'), (21, ' days'), ) # REQ-39 +THRESHOLD_SOON_CHOICES = ((1, '1 day'), (2, '2 days'), (3, '3 days'), (5, '5 days'), (7, '7 days'), (10, '10 days'), (14, '14 days'), (21, ' 21 days'), ) # REQ-39 # PROJECTSTATE (REQ-??) diff --git a/urls.py b/urls.py index c38ca0c..5d0c9d3 100644 --- a/urls.py +++ b/urls.py @@ -6,7 +6,6 @@ from . import views urlpatterns = [ path('', lambda request: redirect(reverse('patt-commonfilter', kwargs={'common_filter_id': SEARCH_MY_OPEN_TASKS}), permanent=False)), - path('profile', views.patt_profile, name='patt-profile'), # # views and urls # diff --git a/views.py b/views.py index 6c0e0df..231f69e 100644 --- a/views.py +++ b/views.py @@ -7,14 +7,12 @@ from django.shortcuts import render, redirect from django.urls.base import reverse from django.utils import timezone from django.utils.translation import gettext as _ -from .forms import TaskForm, TaskFormLimited, ProjectForm, CommentForm, TaskCommentForm, SearchForm, EasySearchForm, PattUserProfileForm +from .forms import TaskForm, TaskFormLimited, ProjectForm, CommentForm, TaskCommentForm, SearchForm, EasySearchForm from .help import help_pages from .models import Task, ModelList, Comment, TASKSTATE_CHOICES, PRIO_CHOICES, TASKS_IN_WORK -from .models import Project, Search, get_pattuserprofile +from .models import Project, Search import patt from .search import load_index, search, mk_search_pattern, get_project_ids_from_search_pattern, common_searches -from users.forms import UserProfileForm -from users.models import get_userprofile from themes import Context @@ -144,42 +142,6 @@ def get_next(request): return request.POST.get('next', '/') -def profile_post_actions(request, context): - if request.POST: - form = context.get('form_userprofile') - if form.is_valid(): - form.save() - form = context.get('form_pattprofile') - if form.is_valid(): - form.save() - return redirect(request.GET.get('next') or '/') - - -def profile_pre_actions(request, context, form_to_be_used=UserProfileForm): - user_profile = get_userprofile(request.user) - patt_user_profile = get_pattuserprofile(request.user) - if request.POST: - userprofile_form = UserProfileForm(request.POST, instance=user_profile) - pattprofile_form = PattUserProfileForm(request.POST, instance=patt_user_profile) - else: - userprofile_form = UserProfileForm(instance=user_profile) - pattprofile_form = PattUserProfileForm(instance=patt_user_profile) - context['form_userprofile'] = userprofile_form - context['form_pattprofile'] = pattprofile_form - - -@login_required -def patt_profile(request): - context = Context(request) # needs to be executed first because of time mesurement - profile_pre_actions(request, context) - response = profile_post_actions(request, context) - if response is not None: - return response - else: - context_adaption(context, request, title=_('Profile for %(username)s') % {'username': request.user.username}) - return render(request, 'patt/profile.html', context=context) - - @login_required def patt_tasklist(request, user_filter_id=None, common_filter_id=None): context = Context(request) # needs to be executed first because of time mesurement