Skip to content

Commit

Permalink
Improve error display for required star ratings in reviews
Browse files Browse the repository at this point in the history
  • Loading branch information
ed741 committed Jun 18, 2018
1 parent c8593fa commit cc13ecf
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 28 deletions.
7 changes: 3 additions & 4 deletions homerate/core/ratings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
class RatingField(models.CharField):
description = ""


def __init__(self, mandatory=False, weighting=False, *args, min_rating = 1,
max_rating = 5, **kwargs):
if weighting:
Expand All @@ -22,6 +21,8 @@ def __init__(self, mandatory=False, weighting=False, *args, min_rating = 1,
kwargs['blank'] = True
kwargs['null'] = True
else:
if not weighting:
self.choices = [("", 0)] + self.choices
if not 'default' in kwargs:
kwargs['default'] = (max_rating + min_rating) / 2

Expand All @@ -44,9 +45,7 @@ def formfield(self, form_class=None, choices_form_class=None, **kwargs):
class_string = "weighting"
else:
class_string = "starRating"

if self.mandatory:
class_string += "Mandatory"
kwargs['required'] = False

return forms.ChoiceField(widget=forms.Select(attrs={'class': class_string}), **kwargs)

11 changes: 1 addition & 10 deletions homerate/profiles/static/js/profiles.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
(function ($) {

/* Set the mandatory bar ratings. */
$('.weightingMandatory').barrating({
theme: 'bars-square',
showValues: true,
showSelectedRating: false
});

/* Set the optional bar ratings. */
$('.weighting').barrating({
theme: 'bars-square',
allowEmpty: true,
initialRating: 0,
deselectable: true,
showValues: true,
showSelectedRating: false
});


/* After a key is typed in the postcode box try and valdate */
$('.postcode').keyup(function (event) {
validatePostcode()
Expand Down
19 changes: 19 additions & 0 deletions homerate/reviews/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class Meta:
model = HouseReport
exclude = ['house_filed', 'author']


def __init__(self, *args, **kwargs):
super(HouseReportForm, self).__init__(*args, **kwargs)
self.fields['repair_quality'].required = False
Expand Down Expand Up @@ -81,4 +82,22 @@ def __init__(self, *args, **kwargs):
}
)

def is_valid(self):
self.fields['landlord_responsiveness'].required = True
self.fields['water_pressure'].required = True
self.fields['utilities'].required = True
self.fields['quietness'].required = True
self.fields['pest_free'].required = True

valid = super(HouseReportForm, self).is_valid()

self.fields['landlord_responsiveness'].required = False
self.fields['water_pressure'].required = False
self.fields['utilities'].required = False
self.fields['quietness'].required = False
self.fields['pest_free'].required = False

return valid



15 changes: 10 additions & 5 deletions homerate/reviews/templates/reviews/newreport.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,16 @@ <h1>Add New Review</h1>
<p><i class="fa fa-warning"></i> Please do not add images or information that may affect the house's security. </p>
</div>

{% for field in new_report_form %}
{% if field.errors %}
{% for reason in field.errors %}
<div class="warningMessage">
<p><i class="fa fa-warning"></i> {{ field.label }} - {{ reason }} </p>
</div>
{% endfor %}
{% endif %}
{% endfor %}

<section class="roomInfo formSection">
<div class="reviewItem rooms">
<div class="label">
Expand Down Expand Up @@ -301,11 +311,6 @@ <h3><i class="far fa-images"></i>Upload Images</h3>
showSelectedRating: true,
deselectable: true
});

$('.starRatingMandatory').barrating({
theme: 'fontawesome-stars',
});

$('[data-toggle="datepicker"]').datepicker({
format: 'yyyy-mm-dd'
});
Expand Down
16 changes: 7 additions & 9 deletions homerate/reviews/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,10 +183,10 @@ def new_report(request, id):
print(review_form.errors)
print(house_details_form.errors)
print(image_formset.errors)

house_details_form = HouseDetailsForm(instance=house)
review_form = HouseReportForm()
image_formset = image_formset_factory(queryset=ReviewImage.objects.none())
else:
house_details_form = HouseDetailsForm(instance=house)
review_form = HouseReportForm()
image_formset = image_formset_factory(queryset=ReviewImage.objects.none())

return render(request, 'reviews/newreport.html', {
'house_details_form': house_details_form,
Expand Down Expand Up @@ -229,19 +229,17 @@ def edit_report(request, id):
report.save()

return redirect('house', id=house.id)
else:
print("Form Error")
print(review_form.errors)

else:
house_details_form = HouseDetailsForm(instance=house)
review_form = HouseReportForm(instance=report)

return render(request, 'reviews/newreport.html', {
return render(request, 'reviews/newreport.html', {
'house_details_form': house_details_form,
'new_report_form': review_form,
'house': house,
'edit_page': True,
'is_suspicious': Profile.objects.get(user=request.user).is_suspicious
'is_suspicious': Profile.objects.get(user=request.user).is_suspicious,
})

@login_required
Expand Down

0 comments on commit cc13ecf

Please sign in to comment.