def post(self, request, o_id): template_name = 'meister/meister.html' meister = Meister.objects.get(lic_num=o_id) try: bgimage = BackgroundPhoto.objects.get( content_type=ContentType.objects.get(model='meister'), object_id=o_id) except BackgroundPhoto.DoesNotExist: bgimage = None #data_source = 'California Contractors State License Board' try: review = Review.objects.filter( content_type=ContentType.objects.get(model='meister'), object_id=o_id, review_status='A') except: review = None # rating RATING_STAR_MAX = 10 meister_ratings = Rating.objects.filter( content_type=ContentType.objects.get(model='meister'), object_id=o_id).order_by('ratings_average') ratings = {} ratings['stars'] = range(RATING_STAR_MAX, 0, -1) # TODO:NEED TO CHANGE HERE ratings['overall'] = (avg_rating(review, 'Q') + avg_rating( review, 'E') + avg_rating(review, 'L')) / 3 try: ratings['rate'] = [(item.average, round(item.average * 1.0 / RATING_STAR_MAX, 2)) for item in meister_ratings] except: pass project_photos = Photo.objects.filter( content_type=ContentType.objects.get(model='meister'), object_id=o_id) if request.user.is_anonymous(): p_lic_num = None else: try: p_lic_num = str(request.user.professional_profiles.first(). professional.lic_num) except: p_lic_num = -1 # other situation user_rating_form = UserRatingForm() if request.user.is_authenticated: review_form = ReviewForm( initial={ 'first_name': request.user.first_name, 'last_name': request.user.last_name, 'project_date': datetime.datetime.today().strftime( '%Y-%m-%d') }) else: review_form = ReviewForm(initial={ 'project_date': datetime.datetime.today().strftime('%Y-%m-%d') }) try: overview = Overview.objects.get( content_type=ContentType.objects.get(model='meister'), object_id=o_id).overview except Overview.DoesNotExist: overview = _( """{lic_name} is a professional located in {full_state_name}. The professional is verified as active when we checked last time. If you would like to know {lic_name} more, please contact us and we will share more information and data about this meister to you.""" ).format(lic_name=meister.lic_name, full_state_name=get_state_full_name(meister.state)) overview_form = OverviewForm(initial={'overview': overview}) info_dict = { "meister": meister, "bg_image": bgimage, "overview": overview, 'review': review, "ratings": ratings, 'project_photos': project_photos, 'review_form': review_form, "user_rating_form": user_rating_form, 'p_lic_num': p_lic_num, 'overview_form': overview_form } if request.POST.get('review'): user_rating_form = UserRatingForm(request.POST) review_form = ReviewForm(request.POST) # TODO: assign a random password # TODO: validator doesn't work if review_form.is_valid() and user_rating_form.is_valid(): model_type = check_professional_type(request) review = review_form.save(commit=False) if request.user.is_authenticated(): review.user = request.user review.content_type = ContentType.objects.get(model=model_type) review.object_id = o_id review.save() for field in user_rating_form.cleaned_data: user_rating = UserRating( review=review, rating_type=field[0].upper(), rating_score=int(user_rating_form.cleaned_data[field])) user_rating.save() # direct to the page to upload photos # TODO: ADD PHOTOFORM VALIDATION FOR SECURITY content_type = ContentType.objects.get(model='review') object_id = int(review.id) files = request.FILES.getlist('project photos') if len(files) > 0: for f in files: instance = Photo.objects.create( img=f, title=f.name, content_type=content_type, object_id=object_id) instance.save() else: pass # request.session.pop('review_form', None) # TODO: redirect the sucess url and add bootstrap messages: success return redirect(request.path) else: # request.session.update({'review_form': review_form.data}) info_dict['review_form'] = review_form info_dict["user_rating_form"] = user_rating_form messages.warning( request, _('Submit Failed. Please verify your content is correct.')) return render(request, template_name, {"info_dict": info_dict}) elif request.POST.get('overview'): edit_overview(request, o_id) return redirect(request.path) else: raise Http404(_("Error Pages!"))
def get(self, request, o_id): meister = Meister.objects.get(lic_num=o_id) try: bgimage = BackgroundPhoto.objects.get( content_type=ContentType.objects.get(model='meister'), object_id=o_id) except BackgroundPhoto.DoesNotExist: bgimage = None #data_source = 'California Contractors State License Board' try: review = Review.objects.filter( content_type=ContentType.objects.get(model='meister'), object_id=o_id, review_status='A') except: review = None # rating RATING_STAR_MAX = 10 meister_ratings = Rating.objects.filter( content_type=ContentType.objects.get(model='meister'), object_id=o_id).order_by('ratings_average') ratings = {} ratings['stars'] = range(RATING_STAR_MAX, 0, -1) # TODO:NEED TO CHANGE HERE ratings['overall'] = (avg_rating(review, 'Q') + avg_rating( review, 'E') + avg_rating(review, 'L')) / 3 try: ratings['rate'] = [(item.average, round(item.average * 1.0 / RATING_STAR_MAX, 2)) for item in meister_ratings] except: pass project_photos = Photo.objects.filter( content_type=ContentType.objects.get(model='meister'), object_id=o_id) if request.user.is_anonymous(): p_lic_num = None else: try: p_lic_num = str(request.user.professional_profiles.first(). professional.lic_num) except: p_lic_num = -1 # other situation user_rating_form = UserRatingForm() if request.user.is_authenticated: review_form = ReviewForm( initial={ 'first_name': request.user.first_name, 'last_name': request.user.last_name, 'project_date': datetime.datetime.today().strftime( '%Y-%m-%d') }) else: review_form = ReviewForm(initial={ 'project_date': datetime.datetime.today().strftime('%Y-%m-%d') }) try: overview = Overview.objects.get( content_type=ContentType.objects.get(model='meister'), object_id=o_id).overview except Overview.DoesNotExist: overview = _( """{lic_name} is a professional located in {full_state_name}. The professional is verified as active when we checked last time. If you would like to know {lic_name} more, please contact us and we will share more information and data about this meister to you.""" ).format(lic_name=meister.lic_name, full_state_name=get_state_full_name(meister.state)) overview_form = OverviewForm(initial={'overview': overview}) info_dict = { "meister": meister, "bg_image": bgimage, "overview": overview, 'review': review, "ratings": ratings, 'project_photos': project_photos, 'review_form': review_form, "user_rating_form": user_rating_form, 'p_lic_num': p_lic_num, 'overview_form': overview_form } template_name = 'meister/meister.html' return render(request, template_name, {"info_dict": info_dict})
def get(self, request, designer_id): designer = Designer.objects.get(lic_num=str(designer_id)) o_id = designer.lic_id try: bgimage = BackgroundPhoto.objects.get( content_type=ContentType.objects.get(model='designer'), object_id=o_id) except: bgimage = None data_source = 'NCIQ' score = None rank = None full_state_name = get_state_full_name(designer.state) # preferred_project_type = 'house remodel' # if preferred_project_type: # specialization = 'with many year experiences in ' + preferred_project_type # else: # specialization = None # Lic Type lic_type = designer.lic_type.split('&') try: review = Review.objects.filter( content_type=ContentType.objects.get(model='designer'), object_id=o_id, review_status='A') except: review = None RATING_STAR_MAX = 10 contractor_ratings = Rating.objects.filter( content_type=ContentType.objects.get(model='designer'), object_id=o_id).order_by('ratings_average') ratings = {} ratings['stars'] = range(RATING_STAR_MAX, 0, -1) # TODO:NEED TO CHANGE HERE ratings['overall'] = (avg_rating(review, 'Q') + avg_rating( review, 'E') + avg_rating(review, 'L')) / 3 try: ratings['rate'] = [(item.average, round(item.average * 1.0 / RATING_STAR_MAX, 2)) for item in contractor_ratings] except: pass if request.user.is_anonymous(): p_lic_num = None else: try: p_lic_num = str(request.user.professional_profiles.first(). professional.lic_num) except: p_lic_num = None project_photos = Photo.objects.filter( content_type=ContentType.objects.get(model='designer'), object_id=o_id) user_rating_form = UserRatingForm() if request.user.is_authenticated: review_form = ReviewForm( initial={ 'first_name': request.user.first_name, 'last_name': request.user.last_name, 'project_date': datetime.datetime.today().strftime( '%Y-%m-%d') }) else: review_form = ReviewForm(initial={ 'project_date': datetime.datetime.today().strftime('%Y-%m-%d') }) try: overview = Overview.objects.get( content_type=ContentType.objects.get(model='designer'), object_id=o_id).overview except Overview.DoesNotExist: overview = _( """{bus_name} is a designer based on {city} {state} . The company holds a license number according to {data_source}. The License is verified as active when we checked last time. If you would like to know {bus_name} more, please contact us and we will share more information about this designer to you. """).format(bus_name=designer.lic_name, city=designer.city, state=designer.state, data_source=data_source, rank=rank, full_state_name=full_state_name) overview_form = OverviewForm(initial={'overview': overview}) info_dict = { "designer": designer, "bg_image": bgimage, "overview": overview, "score": score, "lic_type": lic_type, 'review': review, "ratings": ratings, 'project_photos': project_photos, 'review_form': review_form, "user_rating_form": user_rating_form, 'overview_form': overview_form, 'p_lic_num': p_lic_num } return render(request, 'designer/designer.html', {"info_dict": info_dict})