예제 #1
0
def least_picked_number(request):
    """최소 당첨 숫자."""
    render_dict = get_render_dict("lotto")

    object_list = models.Lotto.objects.all()

    number_dict = {k: 0 for k in range(1, 46)}

    for obj in object_list:
        multiple = int(obj.numbers["firstPrzwnerCo"])
        for i in range(1, 7):
            data = obj.numbers[f"drwtNo{i}"]
            number_dict[data] = number_dict.get(data, 0) + multiple
    render_dict["object_list"] = object_list
    number_dict = sorted([(k, v) for k, v in number_dict.items()],
                         key=lambda x: x[1])
    render_dict["number_dict"] = number_dict

    number = [
        (0, 1, 2, 3, 4, 5),
        (0, 1, 2, 3, 4, 6),
        (0, 1, 2, 3, 5, 6),
        (0, 1, 2, 4, 5, 6),
        (0, 1, 3, 4, 5, 6),
    ]
    selected_number = []
    for number_set in number:
        selected_number.append(sorted([number_dict[k] for k in number_set]))
    render_dict["selected_number"] = selected_number

    return render(request, "book/investment/least_picked_number.html",
                  render_dict)
예제 #2
0
def pokemon_result(request, page=1):
    """포켓몬 분류 결과."""
    classified = request.GET.get("arg", "yes")
    render_dict = get_render_dict("pokemon_result_{}".format(classified))

    query = request.GET.get("query", "")
    image_list = models.PokemonImage.objects.filter(classified=classified)

    distinct = (
        image_list.order_by().values("original_label").distinct().annotate(
            Count("id")).order_by("id__count"))
    distinct = utils.to_table(distinct, 5)

    if query:
        image_list = image_list.filter(original_label=query)
    p, page_info = utils.get_page_info(image_list, page, 100)

    render_dict["distinct"] = distinct
    render_dict["image_list"] = p
    render_dict["page_info"] = page_info
    render_dict["arg"] = classified

    verified_count = image_list.count()
    row_count = 10
    verified_table = utils.to_table(p, row_count)
    render_dict["query"] = query
    render_dict["verified_table"] = verified_table
    render_dict["verified_count"] = verified_count

    return render(request, "book/pokemon/pokemon_result.html", render_dict)
예제 #3
0
def pokemon(request, page=1):
    """포켓몬 분류 페이지."""
    render_dict = get_render_dict("pokemon_classification")

    query = request.GET.get("query", "")

    distinct = (models.PokemonImage.objects.filter(classified="yes").order_by(
    ).values("original_label").distinct().annotate(
        Count("id")).order_by("id__count"))
    distinct = utils.to_table(distinct, 5)
    render_dict["distinct"] = distinct

    if query:
        image_list = (models.PokemonImage.objects.filter(
            original_label__icontains=query).filter(
                classified=None).order_by("?")[:400])
    else:
        image_list = models.PokemonImage.objects.filter(
            classified=None).order_by("?")

    p, page_info = utils.get_page_info(image_list, page, 20)
    render_dict["image_list"] = p
    render_dict["page_info"] = page_info
    render_dict["query"] = query

    return render(request, "book/pokemon/pokemon.html", render_dict)
예제 #4
0
def people_high_expectation(request):
    """우선순위 순으로 보여줌."""
    render_dict = get_render_dict("people_high_expectation")

    query = request.GET.get("query", "")
    order = request.GET.get("order", "decreasing")

    selected_list = models.Rating.objects.filter(
        image__selected=None, deep_model__latest=True).select_related("image")
    render_dict["unclassified_count"] = selected_list.count()

    if query:
        queried_list = selected_list.filter(image__url__contains=query)[:100]
        selected_list = (
            queried_list
            | selected_list.filter(image__title__contains=query)[:100])

    render_dict["query_count"] = selected_list.count()

    if order == "decreasing":
        selected_list = selected_list.order_by("-positive")[:100]
    elif order == "increasing":
        selected_list = selected_list.order_by("positive")[:100]
    else:
        selected_list = selected_list.order_by("?")[:100]

    unclassified = [rating.image for rating in selected_list]

    render_dict["rating"] = selected_list

    render_dict["image_list"] = unclassified
    render_dict["query"] = query

    return render(request, "book/people/people.html", render_dict)
예제 #5
0
def people_result(request, page=1):
    """분류 결과 선택."""
    selected = request.GET.get("arg", "True")
    render_dict = get_render_dict("people_result_{}".format(selected))
    render_dict["arg"] = selected

    selected = selected == "True"
    query = request.GET.get("query", "")
    selected_list = models.PeopleImage.objects.filter(selected=selected)

    distinct = (selected_list.order_by().values("user_id").distinct().annotate(
        Count("id")).order_by("-id__count"))
    distinct = utils.to_table(distinct, 5)
    render_dict["distinct"] = distinct

    if query:
        queried_list = selected_list.filter(url__contains=query)
        selected_list = queried_list | selected_list.filter(
            title__contains=query)
    else:
        selected_list = models.PeopleImage.objects.filter(selected=selected)
    selected_list = selected_list.order_by("-id")
    p, page_info = utils.get_page_info(selected_list, page, 120)

    row_count = 6
    people_table = utils.to_table(p, row_count)

    render_dict["people_table"] = people_table
    render_dict["page_info"] = page_info
    render_dict["query"] = query

    return render(request, "book/people/people_result.html", render_dict)
예제 #6
0
파일: krx.py 프로젝트: paryoja/dashboard
def krx_price_query(request):
    """
    가격 정보.

    :param request:
    :return:
    """
    render_dict = get_render_dict("krx_price_query")
    if request.POST:
        query = request.POST["query"]
        render_dict["query"] = query

        realtime_result = get_xml_request(krx_price_query_url.format(query))
        if realtime_result:
            krx_realtime(realtime_result, query, render_dict)

        statement_result = get_xml_request(
            krx_statement_query_url.format(query))
        if statement_result:
            krx_statement(statement_result, render_dict)

        # df = stock.get_market_ohlcv_by_date("20200426", "20200426", query)
        # render_dict["market"] = df

        ticker_name = stock.get_market_ticker_name(query)
        render_dict["ticker_name"] = ticker_name

    stocks = models.Stock.objects.all().order_by("code")
    render_dict["stocks"] = stocks
    return render(request, "book/investment/krx_price_query.html", render_dict)
예제 #7
0
def people_links(request):
    """링크 제공."""
    render_dict = get_render_dict("people_result")

    get_new_people_links.delay()
    verified = models.User.objects.filter(checked=None)

    render_dict["user_names"] = verified
    return render(request, "book/people/people_links.html", render_dict)
예제 #8
0
def relabel(request):
    """레이블 수정."""
    render_dict = get_render_dict("people_relabel")
    query = request.GET.get("query", "")

    if query:
        objects = models.PeopleImage.objects.filter(url__endswith=query)
        render_dict["objects"] = objects
    render_dict["query"] = query

    return render(request, "book/people/people_relabel.html", render_dict)
예제 #9
0
def corona(request):
    """코로나 그래프."""
    render_dict = get_render_dict("corona")

    corona_list = models.Corona.objects.order_by("date")
    if not corona_list:
        return render(request, "book/corona.html", render_dict)

    start_date = corona_list[0].date
    end_date = datetime.date.today() + datetime.timedelta(days=10)

    labels = []

    for date in range_date(start_date, end_date):
        labels.append(date)

    render_dict["labels"] = labels

    country_list = []
    for country in ["China", "Korea"]:
        counts = models.Corona.objects.filter(country=country).order_by("date")

        actual_start_date = counts[0].date

        count_list = []
        for count_type in ["confirmed", "death"]:
            actual = []
            for _ in range_date(start_date, actual_start_date):
                actual.append("NaN")

            for count in counts:
                actual.append(getattr(count, count_type))

            expected = []
            param = corona_constant[country][count_type]

            # for _ in range_date(start_date, actual_end_date):
            #     expected.append("NaN")

            for date in range_date(start_date, end_date):
                off = (date - start_date).days + 1
                if country == "Korea":
                    off = off - 3
                value = compute_expectation(off, param)
                expected.append(value)

            count_list.append((count_type, actual, expected))
        country_list.append((country, count_list))

    render_dict["country_list"] = country_list
    return render(request, "book/corona.html", render_dict)
예제 #10
0
def law_search(request):
    """법률 검색."""
    render_dict = get_render_dict("law_search")

    if request.POST:
        query = request.POST["query"]
        render_dict["query"] = query

        result, tree = get_xml_request(law_query_url.format(query))

        law_list = [XmlDictConfig(node) for node in tree.findall("law")]
        render_dict["result"] = result
        render_dict["law_list"] = law_list

    return render(request, "book/law_search.html", render_dict)
예제 #11
0
def pokemon_relabel(request):
    """포켓몬 분류 결과 수정."""
    render_dict = get_render_dict("pokemon_relabel")
    query = request.GET.get("query", "")

    if query:
        objects = models.PokemonImage.objects.filter(url__endswith=query)

        rating_list = []
        for obj in objects:
            rating_list.append(models.PokemonRating.objects.filter(image=obj))
        render_dict["objects"] = zip(objects, rating_list)

    render_dict["query"] = query

    return render(request, "book/pokemon/pokemon_relabel.html", render_dict)
예제 #12
0
def image(request, data_type="pokemon"):
    """이미지 등록."""
    render_dict = get_render_dict(data_type)
    if data_type != "pokemon" and data_type != "people":
        raise KeyError("{} is not valid data_type".format(data_type))

    if request.POST:
        try:
            url = request.POST["url"]
            category_id = request.POST["category"]

            if data_type == "pokemon":
                result = requests.get(url)
                render_dict["result"] = result.text

                bs = BeautifulSoup(result.text, "html.parser")
                # directory list
                all_a = bs.findAll("a", text=True)

                for a in all_a:
                    views_api.add_image_client.delay("{}".format(a), url,
                                                     category_id, data_type)
                render_dict["parsed"] = all_a

            elif data_type == "people":
                result = requests.get(url)
                render_dict["result"] = result.text

                bs = BeautifulSoup(result.text, "html.parser")
                all_a = bs.findAll("a", text=True)
                render_dict["parsed"] = all_a

                for a in all_a:
                    views_api.add_image_client.delay("{}".format(a), url,
                                                     category_id, data_type)

        except KeyError:
            if "parsed" in render_dict:
                render_dict["parsed"] += traceback.format_exc()
            else:
                render_dict["parsed"] = traceback.format_exc()

    category_list = models.Category.objects.all()
    render_dict["data_type"] = data_type
    render_dict["category_list"] = category_list
    return render(request, "book/add_image.html", render_dict)
예제 #13
0
def pokemon_sorted(request):
    """Yes 순 정렬 페이지."""
    render_dict = get_render_dict("pokemon_sorted")

    query = request.GET.get("query", "")

    image_list = models.PokemonRating.objects.filter(
        deep_model__latest=True).filter(image__classified=None)
    if query:
        image_list = image_list.filter(image__original_label__icontains=query)

    image_list = image_list.order_by("-positive")[:50]

    render_dict["image_list"] = [rating.image for rating in image_list]
    render_dict["query"] = query

    return render(request, "book/pokemon/pokemon.html", render_dict)
예제 #14
0
def food(request):
    """맛집 정보."""
    render_dict = get_render_dict("food")

    restaurant_list = [
        {
            "name": "고기리막국수",
            "famous_for": "막국수",
            "cuisine_type": "한식",
            "address": "고기리",
            "visited": False,
        },
        {
            "name": "명동교자",
            "famous_for": "칼국수",
            "cuisine_type": "한식",
            "history": "칼국수, 만두",
            "visited": True,
        },
        {
            "name": "라모라",
            "famous_for": "파스타",
            "cuisine_type": "양식",
            "history": "트러플 파스타",
            "visited": True,
        },
        {
            "name": "필동면옥",
            "famous_for": "평양냉면",
            "cuisine_type": "한식",
            "history": "평양냉면",
            "visited": True,
        },
        {
            "name": "임병주산동손칼국수",
            "famous_for": "칼국수",
            "cuisine_type": "한식",
            "history": "칼국수, 콩국수, 만두",
            "visited": True,
        },
    ]

    render_dict["restaurant_list"] = restaurant_list

    return render(request, "book/food.html", render_dict)
예제 #15
0
def real_estate(request):
    """부동산 유용 정보."""
    render_dict = get_render_dict("real_estate")

    price_link = models.Link.objects.filter(content_type="부동산 시세")
    useful_link = models.Link.objects.filter(content_type="부동산")

    check_list = [
        "햇빛은 잘 들어오는가?",
        "물이 샌(누수) 흔적은 없는가?",
        "천장이나 벽, 장판 아래 곰팡이가 핀 곳은 없는가?",
        "전기콘센트는 파손된 곳이 없는가?",
        "수도는 잘 나오는가?",
        "배수는 잘되는가?",
        "싱크대, 후드, 수납장 등 파손된 주방시설은 없는가?",
        "냉장고를 놓을 수 있는 공간이 있는가?",
        "욕실의 변기나 샤워기, 거울 등 파손된 시설은 없는가?",
        "세탁기를 놓을 수 있는 공간이 있는가?",
        "발코니가 있는가?",
        "빨래를 건조할 수 있는 공간이 있는가?",
        "방의 높이가 장롱이 들어갈 수 있을 만큼 높은가",
        "다용도실 같은 별도의 서비스 공간이 있는가?",
        "방충망이나 방범창이 있는가?",
        "환기가 잘 되는가?",
        "외풍이 심하지 않은가?",
        "전기와 수도 계량기는 별도로 사용하는가?",
        "주 출입구에 방범시설이 되어 있는가?",
        "주차장은 있는가?",
        "집 주변에 고물상, 공장 등 혐오시설은 없는가?",
        "집 주변에 시장이나 할인마트가 있는가?",
        "집 주변에 공원이나 놀이터 등이 있는가?",
        "집에서 학교, 어린이집, 학원 등이 가까운가?",
        "집에서 병원은 가까운가?",
        "지하철역과 버스정류장이 도보로 10분 이내에 있는가?",
        "집이 너무 외진 곳에 있지 않은가?",
        "저당금액과 총 보증금의 합이 집값의 80%를 넘는가?",
        "공부서류들의 내용이 서로 일치하는가?",
        "집을 내놓았을 때 잘 나갈 수 있겠는가?",
    ]

    render_dict["price_link"] = price_link
    render_dict["useful_link"] = useful_link
    render_dict["check_list"] = check_list
    return render(request, "book/real_estate.html", render_dict)
예제 #16
0
def lotto(request):
    """
    Lotto 정보 제공.

    :param request:
    :return:
    """
    render_dict = get_render_dict("lotto")

    result = ""
    if request.POST:
        draw_number = request.POST["draw_number"]
        render_dict["draw_number"] = draw_number

        result, _ = utils.new_lotto(draw_number)
    all_objects = models.Lotto.objects.order_by("-draw_number")[:30]
    render_dict["result"] = result
    render_dict["all_objects"] = all_objects

    return render(request, "book/investment/lotto.html", render_dict)
예제 #17
0
def people(request):
    """
    이미지 제공.

    :param request:
    :return:
    """
    render_dict = get_render_dict("people")

    query = request.GET.get("query", "")

    unclassified = models.PeopleImage.objects.filter(selected=None,
                                                     rating=None)
    unclassified_count = unclassified.count()

    distinct = (unclassified.order_by().values("user_id").distinct().annotate(
        Count("id")).order_by("id__count"))
    distinct = utils.to_table(distinct, 5)

    render_dict["distinct"] = distinct

    query_count = unclassified.filter(title__contains=query).count()
    image_list = unclassified.filter(title__contains=query).order_by("?")[:100]

    render_dict["unclassified_count"] = unclassified_count
    render_dict["query_count"] = query_count
    render_dict["distinct"] = distinct

    if query:
        id_select = unclassified.filter(url__contains=query)
        render_dict["query_count"] += id_select.count()
        render_dict["image_list"] = id_select[:50].values(
        ) | image_list.values()
    else:
        render_dict["image_list"] = image_list.values()
    render_dict["query"] = query

    return render(request, "book/people/people.html", render_dict)
예제 #18
0
def currency_change(request):
    """
    환전 내용.

    :param request:
    :return:
    """
    render_dict = get_render_dict("currency_change")
    currency_list = bank_models.Currency.objects.all().order_by("-date")

    total_from = 0.0
    total_to = 0.0

    chart_data = {}
    chart_amount = {}

    for currency in currency_list:
        total_from += currency.from_amount
        total_to += currency.to_amount

        chart_data[currency.date] = currency.currency_rate
        chart_amount[currency.date] = (
            chart_amount.get(currency.date, 0) + currency.to_amount
        )
    if total_to != 0.0:
        total = {"from": total_from, "to": total_to, "rate": total_from / total_to}
    else:
        total = {"from": total_from, "to": total_to, "rate": 0.0}

    render_dict["currency_list"] = currency_list
    render_dict["total"] = total

    chart_label = sorted([label for label in chart_data])
    render_dict["chart_label"] = [label.strftime("%Y-%m-%d") for label in chart_label]
    render_dict["chart_data"] = [chart_data[label] for label in chart_label]
    render_dict["chart_amount"] = [chart_amount[label] for label in chart_label]

    return render(request, "book/investment/currency_change.html", render_dict)
예제 #19
0
def research(request):
    """연구."""
    render_dict = get_render_dict("research")
    return render(request, "book/research.html", render_dict)