예제 #1
0
def create_item_data(category_obj,
                     title=None,
                     price=None,
                     description=None,
                     adm0=None,
                     adm1=None,
                     adm2=None):
    """機能

    高階関数の引数として使うことを予定している
    category_objの引数としてpickUp_category_obj_for_testを使うことができる

    変数countはItemオブジェクトをobjects.getする際にtitleを使って取得するが、単一の値を担保するために使う。
    """

    data = {}
    count = str(Item.objects.all().count())

    data['category'] = category_obj.id
    if title is not None:
        data["title"] = title
    else:
        data["title"] = "テストアイテム" + count
    if price is not None and type(price) == int:
        data["price"] = price
    else:
        data["price"] = 900

    if description is not None:
        data["description"] = description
    else:
        data["description"] = "テストアイテム1の説明"

    if adm0 is not None:
        data["adm0"] = adm0
    else:
        data["adm0"] = "GUATEMALA"

    if adm1 is not None:
        data["adm1"] = adm1
    else:
        data["adm1"] = "Quetzaltenango"

    if adm2 is not None:
        data["adm2"] = adm2
    else:
        data["adm2"] = "Quetzaltenango"

    # フォームのチェック
    form = ItemModelForm(data)
    if form.is_valid() is False:
        for ele in form.errors:
            print(ele)

    return data
예제 #2
0
    def post(self, request, *args, **kwargs):
        """
        収集したデータを送信する
        endpoint:"listing/shuppin/"
        name: ""
        """
        """テスト項目

        """
        user = User.objects.get(email="*****@*****.**")
        new_dict = request.data.copy()

        category = request.data["category_"]
        cate_obj = Category.objects.get(number=category)
        new_dict["category"] = cate_obj.id
        new_dict["point"] = GEOSGeometry(request.data["point_"])
        new_dict["user"] = user
        # print(request.data)
        # print(new_dict)

        title = request.data["title"]
        price = request.data["price"]
        if len(Item.objects.filter(title=title).filter(price=price)) >= 1:
            # print("既に登録済み")
            return HttpResponse("登録済みなので登録しない")

        # print(request.FILES)
        form = ItemModelForm(new_dict)
        # print(form.is_valid())
        # print([ele for ele in form.errors])
        if form.is_valid():
            obj = form.save(commit=False)
            adm1 = request.POST["adm1"]
            adm2 = request.POST["adm2"]
            obj.adm1 = adm1
            obj.adm2 = adm2
            obj.point = new_dict["point"]
            obj.radius = new_dict["radius"]
            obj.user = user
            try:
                obj.image1 = request.FILES["file0"]
            except:
                pass
            try:
                obj.image2 = request.FILES["file1"]
            except:
                pass
            try:
                obj.image3 = request.FILES["file2"]
            except:
                pass
            obj.save()
        return HttpResponse("Response")
예제 #3
0
    def get(self, request, *args, **kwargs):
        """機能

        endpoint: "items/<int:pk>/edit/"
        name: "items:'item_edit'"
        """
        """注意点
        Vueのスクリプトにprofile_objがあるかないかで挙動が変わるロジックがある。
        Profileの編集にも同じスクリプトを使いまわしているからであり、このViewの
        contextにはprofile_objが存在しないことを前提とする。
        したがってcontextにprofile_objを加えないように注意すること。
        """

        # アクセス制限(未認証ユーザー)
        if request.user.is_anonymous:
            return redirect(ViewName.HOME)

        pk = self.kwargs["pk"]
        item_obj = Item.objects.get(id=pk)

        # アクセス制限(記事作成者以外のアクセス)
        if item_obj.user != request.user:
            return redirect(ViewName.HOME)
        # print(item_obj.adm1)
        # print(item_obj.adm2)

        data = {
            "category": item_obj.category,
            "title": item_obj.title,
            "description": item_obj.description,
            "adm0": item_obj.adm0,
            # "adm1" : item_obj.adm1,
            # "adm2" : item_obj.adm2,
            "image1": item_obj.image1,
            "image2": item_obj.image2,
            "image3": item_obj.image3,
            # "image4" : item_obj.image4,
            # "image5" : item_obj.image5,
            # "image6" : item_obj.image6,
            'price': item_obj.price,
            # 'point': item_obj.point,
            # "radius": item_obj.radius
        }

        form = ItemModelForm(data, initial=data)
        context = {}
        context["form"] = form
        context["item_obj"] = item_obj
        context["title"] = "Editar Articulo"
        context["CASE"] = "EDIT"
        context = add_aviso_objects(request, context)
        return render(request, "items/create_item_k.html", context)
예제 #4
0
    def get(self, request, *args, **kwargs):
        context = {}
        # { ユーザー認証されていないときは、ログインページにつなぐ }
        if request.user.is_anonymous is True:
            return redirect('account_login')

        profile_obj_count = Profile.objects.filter(user=request.user).count()
        # { user認証されているけどまだprofileオブジェクトがない場合は、profileオブジェクトの作成ページにつなぐ
        # 基本的にココは通ることがない}
        if profile_obj_count == 0:
            self.request.session["hacer_articulos"] = True
            return redirect('profiles:profile_creating')

        # { profile:profile_settingからリダイレクトされた場合には、追加でメッセージを表示する }
        # session "hacer_articulos"
        if "hacer_articulos" in self.request.session.keys():
            # messages.info(request, 'プロフィール設定ができました。投稿してください。')
            messages.info(
                request,
                'Su perfil está ahora establecido. Por favor, envíalo por correo.'
            )
            del self.request.session["hacer_articulos"]

        profile_obj = Profile.objects.get(user=request.user)
        data = {
            "price": 0,
            "adm0": profile_obj.adm0,
            "adm1": profile_obj.adm1,
            "adm2": profile_obj.adm2,
        }
        form = ItemModelForm(data, initial=data)
        context["form"] = form
        context["title"] = "Crear Articulo"
        context["CASE"] = "CREATE"
        context = add_aviso_objects(request, context)

        return render(request, 'items/create_item_k.html', context)
예제 #5
0
def create_item_data_for_android_test(
    category_obj,
    title=None,
    price=None,
    description=None,
    adm0=None,
    adm1=None,
    adm2=None,
    point=None,
    radius=None,
):
    """機能

    高階関数の引数として使うことを予定している
    category_objの引数としてpickUp_category_obj_for_testを使うことができる

    変数countはItemオブジェクトをobjects.getする際にtitleを使って取得するが、単一の値を担保するために使う。

    androidが送信するデータはCategoryオブジェクトでnumber属性は分かっているがidが不明のデータである。
    したがってそのようなデータを作成しなければならない。
    webappの場合はFormがカテゴリーオブジェクトを受け取る。
    これ違う。。。ModelFormの仕様上、category_objを利用してItemオブジェクト生成する場合には、category_obj.id値を渡さなければならない。

    androidappの場合にはcategoy_objがjson形式に変換されている。したがってcategory_objはjson形式に変更する。またid値は削除する。
    """

    item_data = {}
    count = str(Item.objects.all().count())
    item_data['category'] = {"number": category_obj.number}

    if title is not None:
        item_data["title"] = title
    else:
        item_data["title"] = "テストアイテム" + count
    if price is not None and type(price) == int:
        item_data["price"] = price
    else:
        item_data["price"] = 900

    if description is not None:
        item_data["description"] = description
    else:
        item_data["description"] = "テストアイテム1の説明"

    if adm0 is not None:
        item_data["adm0"] = adm0
    else:
        item_data["adm0"] = "GUATEMALA"

    if adm1 is not None:
        item_data["adm1"] = adm1
    else:
        item_data["adm1"] = "Quetzaltenango"

    if adm2 is not None:
        item_data["adm2"] = adm2
    else:
        item_data["adm2"] = "Quetzaltenango"

    if point is not None:
        item_data["point"] = point
    else:
        item_data["point"] = "SRID=4326;POINT (-91.5910384 14.8390624)"

    if radius is not None:
        item_data["radius"] = radius
    else:
        item_data["radius"] = 100

    # フォームのチェック
    form = ItemModelForm(item_data)
    if form.is_valid() is False:
        for ele in form.errors:
            print(ele)

    data = {"jsonData": json.dumps(item_data, ensure_ascii=False)}

    return data
예제 #6
0
    def post(self, request, *args, **kwargs):
        """
        endpoint:"items/create2/"
        name: "items:item_create2"
        """
        """テスト項目
        categoryを選択しない場合にはItemオブジェクトが作られない
        """

        form = ItemModelForm(request.POST, request.FILES)
        if form.is_valid():
            obj = form.save(commit=False)
            adm1 = request.POST["adm1"]
            adm2 = request.POST["adm2"]
            obj.adm1 = adm1
            obj.adm2 = adm2
            obj.save()

            try:
                wkt = request.POST["point"]
                result = is_in_Guatemala(wkt)
                if result is True:
                    point = GEOSGeometry(wkt)
                    obj.point = point
                elif result is False:
                    messages.warning(request, no_match_guatemala_message)

            except:
                pass
            try:
                obj.radius = int(request.POST["radius"])
            except:
                pass
            try:
                obj.image1 = request.FILES['image1']
            except:
                pass
            try:
                obj.image2 = request.FILES['image2']
            except:
                pass
            try:
                obj.image3 = request.FILES['image3']
            except:
                pass
            # 現状では1つの記事につき画像は3枚まで使う仕様とする
            # try:
            #   obj.image4 = request.FILES['image4']
            # except:
            # 	pass
            # try:
            #   obj.image5 = request.FILES['image5']
            # except:
            #   pass
            # try:
            #   obj.image6 = request.FILES['image6']
            # except:
            #   pass
            obj.user = request.user
            obj.save()

            context = {}
            context["item_obj"] = obj
            return render(request, 'items/created.html', context)

        else:
            for error in form.errors:
                print(error)
            context = {}
            context["form"] = form
            return render(request, 'items/create_item_k.html', context)
예제 #7
0
    def post(self, request, *args, **kwargs):
        """
        画像が追加された場合と追加されない場合で対応できないとこまる
        """
        context = {}
        pk = self.kwargs["pk"]
        item_obj = Item.objects.get(id=pk)
        form = ItemModelForm(request.POST, request.FILES)
        print(request.POST)
        if form.is_valid() is True:

            title = form.cleaned_data["title"]
            # user = form.cleaned_data["user"]
            description = form.cleaned_data["description"]
            price = form.cleaned_data['price']
            category = form.cleaned_data['category']
            print(category)
            # item_obj.user = request.user
            item_obj.title = title
            item_obj.description = description
            item_obj.price = price
            item_obj.category = category

            adm1 = request.POST["adm1"]
            adm2 = request.POST["adm2"]
            item_obj.adm1 = adm1
            item_obj.adm2 = adm2

            try:
                wkt = request.POST["point"]
                result = is_in_Guatemala(wkt)
                if result is True:
                    point = GEOSGeometry(wkt)
                    item_obj.point = point
                elif result is False:
                    messages.warning(request, no_match_guatemala_message)
            except:
                pass
            try:
                item_obj.radius = int(request.POST["radius"])
            except:
                pass

            try:
                item_obj.image1 = request.FILES['image1']
            except:
                pass
            try:
                item_obj.image2 = request.FILES['image2']
            except:
                pass
            try:
                item_obj.image3 = request.FILES['image3']
            except:
                pass
            item_obj.save()
            context["item_obj"] = item_obj
            print("IS_VALID == TRUE")

            return render(request, "items/edited.html", context)

        elif form.is_valid() is False:
            print("IS_VALID == FALSE")
            print(form.errors)
            return redirect('items:item_edit', item_obj.id)