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})
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, object_id): # contractor info contractor = self.get_object(object_id) # contractor background image contractor.bgimage = self.get_background_image('contractor', object_id) contractor.bond_history = self.get_bond_history(object_id) contractor.worker_compensation_history = self.get_worker_compensation_history(object_id) hscore = Hscore.objects.get(contractor_id=object_id) letter_grade = convert_hscore_to_rank(hscore) full_state_name = get_state_full_name(contractor.state) lic_type = contractor.lic_type.split('&') review = self.get_review(object_id) if review is not None: contractor.review = self.get_review(object_id) complaint = self.get_compalint(object_id) if complaint is not None: contractor.complaint = self.get_compalint(object_id) contractor.project_photos = self.get_project_photos('contractor', object_id) contractor.length = self.calc_length(contractor) # if self.get_overview('contractor',contractor_id) is None: # data_source = 'California Contractors State License Board' # overview = _("""{lic_name} is a contractor company located in {csp} . The company holds a license number # according to {data_source}. According to real-time data analysis, this licensed contractor's hoome score # is {score} and is rated as {rank}. The License 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 # contractor to you.""").format(lic_name=contractor.lic_name, csp=contractor.csp, # data_source=data_source, # score=hscore.score, rank=letter_grade, full_state_name=full_state_name) # #this part is not finished. Need to consider how send the overview info # overview_form = OverviewForm(initial={'overview': overview}) # rating # RATING_STAR_MAX = 10 # contractor_ratings = Rating.objects.filter(content_type=ContentType.objects.get(model='contractor'), # object_id=contractor_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 # # # 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')}) serializer = ContractorSerializer(contractor) return Response(serializer.data)