コード例 #1
0
ファイル: views.py プロジェクト: HackerWithData/BackEnd
    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})
コード例 #2
0
    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})
コード例 #3
0
ファイル: views.py プロジェクト: HackerWithData/BackEnd
    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!"))
コード例 #4
0
    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)