######## the beginning of the code # -*- coding: utf-8 -*-
from __future__ import unicode_literals import logging from datetime import timedelta from django.db import models from crispy_forms.layout import Div from crispy_forms.helper import FormHelper from crispy_forms.layout import Submit, Layout, Fieldset, ButtonHolder, HTML from django import forms from django.conf import settings from django.urls import reverse from django.db.models import Q from django.utils import timezone from .models import Message, strip_email logger = logging.getLogger(__name__) def validate_email(email): timeframe = timezone.now() - timedelta(hours=24) stripped_email = strip_email(email) recent_message_count = Message.objects.filter(Q(sender_email_stripped=stripped_email) | Q(recipient_email_stripped=stripped_email), created__gte=timeframe).count() if recent_message_count > settings.MAX_MESSAGES: raise forms.ValidationError("We can't send emails to this address at this time. You can try again in 24 hours.") class MessageSendForm(forms.ModelForm): # hp = forms.CharField(label="do not fill", required=False) fasid = forms.CharField(label="FAS Username", required=False) class Meta: model = Message fields = ['recipient_name', 'recipient_email', 'message', 'sender_named', 'sender_approved_public', 'sender_approved_public_named'] def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(MessageSendForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'form-horizontal' self.helper.label_class = 'col-md-3' self.helper.field_class = 'col-md-8' self.fields['recipient_name'].label = 'Name' self.fields['recipient_email'].label = 'Email' self.fields['recipient_email'].validators = [validate_email] self.fields['message'].help_text = 'Writer\'s block? Check out our <a href="%s">message inspiration</a>.' % reverse('messaging:inspiration') self.fields['sender_named'].label = 'I agree to share my name and email address with the recipient.' self.fields['sender_approved_public'].label = "I agree to publish this message and display it publicly in the Happiness Archive." self.fields['sender_approved_public_named'].label = "... and I agree to display our names publicly too." self.fields['sender_approved_public_named'].help_text = "Note: We only publish information if both the sender and the recipients agree." self.helper.layout = Layout( # Fieldset('This Happiness Packet is from...', 'sender_name', 'sender_email', 'hp'), Fieldset("Search for a FAS Username", 'fasid' ), #ButtonHolder( # Submit('submit', 'Submit', css_class='button white') #), I AM TRYING TO INSERT HTML CODE WITH BOOTSTRAP IN MY CRISPY FORM BUT AM GETTING AN ERROR AND THIS IS THE SOURCE OF THE ERROR , can anyone help me where am going wrong because am trying to add a search button in an input field . HTML("<div class="input-group mb-3">" " <input type="text" class="form-control" placeholder="1000" aria-label="Amount (rounded to the nearest dollar)" aria-describedby="basic-addon">" "<div class="input-group-append">" "<span class="input-group-text" id="basic-addon">.00</span>" "</div>" "</div>"), THIS IS THE END OF HTML CODE I HAVE ADDED. Fieldset("Send this Happiness Packet to...", 'recipient_name', 'recipient_email'), Fieldset("Your message is...", 'message'), Fieldset("Privacy and permissions", 'sender_named', 'sender_approved_public', 'sender_approved_public_named'), HTML("<br>"), Submit('submit', 'Send some happiness', css_class='btn-lg centered'), ) def clean(self): super(MessageSendForm, self).clean() # if self.cleaned_data.get('hp'): # raise forms.ValidationError('') if self.cleaned_data.get('sender_approved_public_named') and not self.cleaned_data.get('sender_approved_public'): self.add_error('sender_approved_public_named', "If you want us to publish the message including your names, " "you must also check 'I agree to publish this message and" "display it publicly in the Happiness Archive'") validate_email(self.user.email) class MessageRecipientForm(forms.ModelForm): class Meta: model = Message fields = ['recipient_approved_public', 'recipient_approved_public_named'] def __init__(self, *args, **kwargs): super(MessageRecipientForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'form-horizontal' self.helper.label_class = 'col-md-3' self.helper.field_class = 'col-md-8' self.fields['recipient_approved_public'].label = "I agree to publish this message and display it publicly in the Happiness Archive." self.fields['recipient_approved_public_named'].label = "... and I agree to display our names publicly too." self.fields['recipient_approved_public_named'].help_text = "Note: We only publish information if both the sender and the recipients agree." self.helper.layout = Layout( Fieldset("Privacy and permissions", 'recipient_approved_public', 'recipient_approved_public_named'), HTML("<br>"), Submit('submit', 'Save privacy choices', css_class='btn-lg centered'), ) def clean(self): super(MessageRecipientForm, self).clean() if self.cleaned_data.get('recipient_approved_public_named') and not self.cleaned_data.get('recipient_approved_public'): self.add_error('recipient_approved_public_named', "If you want us to publish the message including your " "names, you must also check 'I agree to publish this " "message and display it publicly in the Happiness " "Archive.'") ##### end of the code. the error i have got after running my docker-compose up is ; -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAHrBrjC6qem_FT8Lg6nPtA43PXvvdm0%2Bw10xR48ak%3D8DRGJj%2BQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.