diff --git a/.gitignore b/.gitignore index 0396a96c..fe553539 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ tags env/ docs/_build/* .DS_Store +.python-version diff --git a/accounts/views.py b/accounts/views.py index b8342525..9010ab18 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -28,12 +28,13 @@ from .models import Officer, ProfilePhoto, UserPreferences -class UserAddView(mixins.HasPermMixin, generic.CreateView): +class UserAddView(mixins.SetFormMsgMixin, mixins.HasPermMixin, generic.CreateView): """Add a new user manually (should rarely be used - LDAP does this for us)""" form_class = forms.UserAddForm model = get_user_model() perms = 'accounts.add_user' template_name = 'form_crispy.html' + msg = "Add User Manually" def get_success_url(self): return reverse('accounts:detail', args=(self.object.id,)) @@ -367,11 +368,12 @@ def shame(request): return render(request, 'users_shame.html', context) -class PasswordSetView(generic.FormView): +class PasswordSetView(mixins.SetFormMsgMixin, generic.FormView): """Set a non-SSO login password""" model = get_user_model() user = None template_name = 'form_crispy.html' + msg = "Set Non-SSO Login Password" def form_valid(self, form): form.save() @@ -445,6 +447,7 @@ def user_preferences(request): def officer_photos(request, pk=None): """Update officer headshot (displayed on the main LNL website about page)""" context = {} + context['msg'] = "Update Officer Photo" if pk is None: pk = request.user.pk officer = get_object_or_404(get_user_model(), pk=pk) diff --git a/devices/forms.py b/devices/forms.py index 8f6bcd90..6bd5ea54 100644 --- a/devices/forms.py +++ b/devices/forms.py @@ -43,7 +43,7 @@ def __init__(self, *args, **kwargs): self.helper.form_class = "form-horizontal col-md-6" self.helper.layout = Layout( Fieldset( - 'New Managed Device', + '', #leaving as empty string so page title can be provided by "msg" context variable in the crispy form Div( HTML('
WARNING: Please read the ' 'following statements carefully. The MDM is designed for use with LNL equipment only. Failure ' @@ -1401,7 +1401,8 @@ def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.form_class = "form-horizontal col-md-6" self.helper.layout = Layout( - Fieldset(title, 'name', 'version', 'developer', 'description', 'developer_website'), + #leaving first arg as empty string so page title can be provided by "msg" context variable in the crispy form: + Fieldset('', 'name', 'version', 'developer', 'description', 'developer_website'), FormActions(Submit('save', "Submit")) ) super(NewAppForm, self).__init__(*args, **kwargs) @@ -1436,7 +1437,7 @@ def __init__(self, *args, **kwargs): self.helper.form_class = "form-horizontal col-md-6" self.helper.layout = Layout( Fieldset( - 'Application Info', + '', #leaving as empty string so page title can be provided by "msg" context variable in the crispy form Div( 'name', 'identifier', @@ -1473,11 +1474,12 @@ class AppMergeForm(forms.Form): def __init__(self, *args, **kwargs): pk = kwargs.pop('pk') - app_name = MacOSApp.objects.get(pk=pk).name + #app_name = MacOSApp.objects.get(pk=pk).name self.helper = FormHelper() self.helper.form_class = "form-horizontal col-md-6" self.helper.layout = Layout( - Fieldset('Merge ' + app_name + ' into...', 'options'), + #leaving first arg as empty string so page title can be provided by "msg" context variable in the crispy form + Fieldset('', 'options'), FormActions(Submit('save', 'Merge')) ) super(AppMergeForm, self).__init__(*args, **kwargs) diff --git a/devices/views.py b/devices/views.py index 47116d9e..64b41b15 100644 --- a/devices/views.py +++ b/devices/views.py @@ -142,6 +142,7 @@ def install_client(request): context['form'] = form else: context['form'] = ClientForm() + context['msg'] = "New Managed Device" return render(request, 'form_crispy.html', context) @@ -697,6 +698,7 @@ def generate_profile(request, pk=0): "if (this.value == 'default') {$('#div_id_removal_date').hide();" \ "$('#div_id_removal_period').hide();}else{$('#div_id_removal_date').show();" \ "$('#div_id_removal_period').show();}});$('#id_auto_remove').change();});" + context['msg'] = "Manage Configuration Profile" return render(request, 'form_crispy.html', context) @@ -917,6 +919,7 @@ def add_app(request): else: form = NewAppForm(title=title, request_user=request.user) context['form'] = form + context['msg'] = title return render(request, 'form_crispy.html', context) @@ -970,6 +973,7 @@ def update_app_info(request, pk): else: form = UpdateAppForm(instance=app) context['form'] = form + context['msg'] = "Application Info" return render(request, 'form_crispy.html', context) @@ -1007,6 +1011,8 @@ def merge_app(request, pk): else: form = AppMergeForm(pk=pk) context['form'] = form + app_name = MacOSApp.objects.get(pk=pk).name + context['msg'] = 'Merge ' + app_name + ' into...' return render(request, 'form_crispy.html', context) diff --git a/events/views/flow.py b/events/views/flow.py index 7d22928c..f87264b5 100644 --- a/events/views/flow.py +++ b/events/views/flow.py @@ -1149,7 +1149,7 @@ class CCRDelete(SetFormMsgMixin, HasPermOrTestMixin, LoginRequiredMixin, DeleteV """ Delete a crew chief report """ model = CCReport template_name = "form_delete_cbv.html" - msg = "Deleted Crew Chief Report" + msg = "Delete Crew Chief Report" perms = 'events.delete_ccreport' def user_passes_test(self, request, *args, **kwargs): @@ -1244,10 +1244,10 @@ def get_success_url(self): return reverse("events:detail", args=(self.kwargs['event'],)) + "#billing" -class BillingDelete(HasPermMixin, LoginRequiredMixin, DeleteView): +class BillingDelete(SetFormMsgMixin, HasPermMixin, LoginRequiredMixin, DeleteView): model = Billing template_name = "form_delete_cbv.html" - msg = "Deleted Bill" + msg = "Delete Bill" perms = 'events.bill_event' def dispatch(self, request, *args, **kwargs): @@ -1317,7 +1317,7 @@ def get_success_url(self): return reverse("events:multibillings:list") -class MultiBillingDelete(HasPermMixin, LoginRequiredMixin, DeleteView): +class MultiBillingDelete(SetFormMsgMixin, HasPermMixin, LoginRequiredMixin, DeleteView): model = MultiBilling template_name = "form_delete_cbv.html" msg = "Delete MultiBill" diff --git a/events/views/list.py b/events/views/list.py index e1c94ce4..f2bbe7d1 100644 --- a/events/views/list.py +++ b/events/views/list.py @@ -13,7 +13,7 @@ from django.utils.http import urlencode from django.utils.timezone import make_aware -from helpers.mixins import HasPermMixin, LoginRequiredMixin +from helpers.mixins import HasPermMixin, LoginRequiredMixin, SetFormMsgMixin from events.models import BaseEvent, Event2019, Category, MultiBilling, Workshop, WorkshopDate from events.forms import WorkshopForm, WorkshopDatesForm @@ -963,6 +963,7 @@ def workshop_dates(request, pk): formset.save() return HttpResponseRedirect(reverse("events:workshops:list")) context['formset'] = formset + context['msg'] = "Workshop Dates for \"" + workshop.name + "\"" return render(request, 'formset_workshop_dates.html', context) @@ -974,7 +975,7 @@ def workshops_list(request): return render(request, 'workshops_list.html', {'workshops': workshops}) -class DeleteWorkshop(LoginRequiredMixin, HasPermMixin, DeleteView): +class DeleteWorkshop(SetFormMsgMixin, LoginRequiredMixin, HasPermMixin, DeleteView): """ Delete a series of workshops """ model = Workshop template_name = "form_delete_cbv.html" diff --git a/meetings/views.py b/meetings/views.py index 267b064c..38878097 100644 --- a/meetings/views.py +++ b/meetings/views.py @@ -16,7 +16,7 @@ from email.encoders import encode_base64 from helpers.util import curry_class -from helpers.mixins import HasPermMixin, LoginRequiredMixin +from helpers.mixins import HasPermMixin, LoginRequiredMixin, SetFormMsgMixin from data.views import serve_file from emails.generators import generate_notice_cc_email, generate_notice_email, DefaultLNLEmailGenerator from events.forms import CCIForm @@ -240,7 +240,7 @@ def newattendance(request): return render(request, 'form_crispy_meetings.html', context) -class DeleteMeeting(LoginRequiredMixin, HasPermMixin, DeleteView): +class DeleteMeeting(SetFormMsgMixin, LoginRequiredMixin, HasPermMixin, DeleteView): """ Delete a meeting """ model = Meeting template_name = "form_delete_cbv.html" diff --git a/members/forms.py b/members/forms.py index 055df5cb..8c3d6eda 100644 --- a/members/forms.py +++ b/members/forms.py @@ -15,7 +15,6 @@ def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.help_text_inline = True self.helper.layout = Layout( - HTML('