Exemple #1
0
    def get_populate_categories(self):
        """
        Method to populate all categories containing
        greater than or equal to 5000 products

        Args:
            url_categories (string): endpoint Open Food Facts Api for categories

        Returns:
            list: all categories selected
        """
        url_categories = "https://fr.openfoodfacts.org/categories.json"
        print("Requesting categories")
        category_response = requests.get(url=url_categories)
        if category_response.status_code != 200:
            self.stdout.write(
                self.style.ERROR(
                    "Searching for category with the Open Food Facts API is not available."
                ))
        categories = json.loads(category_response.content)["tags"]
        categories_selected = [
            categ for categ in categories if categ["products"] >= 3000
        ]
        for category in categories_selected:
            try:
                with transaction.atomic():
                    categ = Category(name=category["name"])
                    categ.save()
            except Exception as exx:
                print(
                    "Une des catégories n'a pu être importée, voici l'erreur:",
                    exx)
        return categories_selected
    def handle(self, *args, **options):
        try:
            products = list()
            with open(settings.MODIFIED_CSV, newline="") as r:
                reader = csv.DictReader(r, delimiter=";")
                products_categories = list()

                for row in reader:
                    product_data = dict()
                    for field in PRODUCT_FIELDS:
                        if field in [
                                "fat_100g",
                                "saturated_fat_100g",
                                "sugars_100g",
                                "salt_100g",
                        ]:
                            if row[field].isdigit():
                                product_data[field] = Decimal(row[field])
                            elif not row[field]:
                                product_data[field] = Decimal("0")
                        elif field == "categories_tags":
                            categories = row[field].split(",")
                            category_obj_lst = list()
                            for category in categories:
                                category = (normalize("NFKD", category).encode(
                                    "ASCII", "ignore").decode().lower()[3:])
                                category_qs = Category.objects.filter(
                                    name=category)
                                if category_qs:
                                    category_obj_lst.append(
                                        category_qs.first())
                                else:
                                    category_obj = Category(name=category)
                                    category_obj.save()
                                    category_obj_lst.append(category_obj)
                        else:
                            product_data[field] = (normalize(
                                "NFKD",
                                row[field]).encode("ASCII",
                                                   "ignore").decode().lower())
                    already_added = [
                        product for product in products
                        if product.product_name == product_data["product_name"]
                    ]
                    if not already_added:
                        products_categories.append(category_obj_lst)
                        products.append(Product(**product_data))
            Product.objects.bulk_create(products)
            products = Product.objects.all().order_by("id")
            for product, category_list in zip(products, products_categories):
                product.categories.set(category_list)
                product.save()
        except Exception as e:
            raise CommandError(f"Something went wrong.\n{e}")

        self.stdout.write(
            self.style.SUCCESS(
                "Successfully imported data from CSV to database."))
Exemple #3
0
def createcategory(request):
	#data = request.GET
	categories =  Category.objects.all()
	if request.method == "POST":
		data=request.POST
		cat = Category(name=data.get("cat_name"))
		cat.save()
		return redirect("/")
	return render(request, "product/createcategory.html",
		{"categories":categories})
def create_category(name, parent_name):
    if parent_name is not None:
        parent_category = Category.objects.get(name=parent_name)
        return parent_category.category_set.create(name=name)
    else:
        # if category has no parent
        new_category = Category()
        new_category.name = name
        new_category.save()
        return new_category
Exemple #5
0
    def insert_category_in_db(self):
        """ Insert category """

        try:
            data = Category(name=self.category)
            data.save()
            if STDOUT:
                self.stdout.write(self.style.SUCCESS(
                    'Category : "%s", Insertion OK' % self.category)
                )
        except IntegrityError:
            if STDOUT:
                self.stdout.write(self.style.WARNING(
                    'Category : "%s", Insertion FAIL (IntegrityError)'
                    % self.category))
Exemple #6
0
    def handle(self, **options):
        categories = [
            ("کلاه", "انواع کلاه ها با رنگبندی های مختلف برای آقایان و بانوان"),
            ("عینک", "عینک های آفتابی متنوع با کیفیت عالی"),
            ("ساعت مچی", "ساعت مچی متناسب برای زیباپسندان"),
            ("انگشتر", "انواع انگشتر های زیبا و جذاب"),
            ("کیف پول", "انواع کیف پول پارچه ای و چرمی "),
        ]

        for category_data in categories:
            c = Category()
            c.title, c.description = category_data
            c.save()
        hat_images_path = path.join(settings.BASE_DIR, "media", "hat")
        pictures = [f for f in os.listdir(hat_images_path) if
                    path.isfile(os.path.join(hat_images_path, f))]
        hat_product_data = [
            ("چنار", "کلاه ساده و زیبا", 12000),
            ("روزگار", "یک کلاه متفاوت و زیبا", 16000),
            ("یادگار", "سازگار با هر نوع تیپ", 20000),
            ("نوین", "شکلی و ساده", 10000),
            ("جوانی", "کلاه مناسب نسل جوان", 22000),
            ("سحاب", "کلاه خاص برای افراد خاص", 18000),
            ("چنار", "کلاه ساده و زیبا", 12000),
            ("روزگار", "یک کلاه متفاوت و زیبا", 16000),
            ("یادگار", "سازگار با هر نوع تیپ", 20000),
            ("نوین", "شکلی و ساده", 10000),
            ("جوانی", "کلاه مناسب نسل جوان", 22000),
            ("سحاب", "کلاه خاص برای افراد خاص", 18000),
            ("چنار", "کلاه ساده و زیبا", 12000),
            ("روزگار", "یک کلاه متفاوت و زیبا", 16000),
            ("یادگار", "سازگار با هر نوع تیپ", 20000),
            ("نوین", "شکلی و ساده", 10000),
            ("جوانی", "کلاه مناسب نسل جوان", 22000),
            ("سحاب", "کلاه خاص برای افراد خاص", 18000),

        ]
        hat_category = Category.objects.filter(pk=1).first()

        for hat in hat_product_data:
            p = Product()
            p.name, p.description, p.price = hat
            p.category = hat_category
            p.save()
            pic = Picture()
            pic.path.name = "hat/" + pictures.pop()
            pic.product = p
            pic.save()
Exemple #7
0
    def setUp(self):
        """ Config """

        data = Level(name="high")
        data.save()
        data = Level(name="moderate")
        data.save()
        data = Level(name="low")
        data.save()

        data = Category(name="Boissons")
        data.save()

        data = Product(name="Thé au jasmin",
                       url="https://the-jasmin.fr",
                       nutriscore="a",
                       category_id=Category.objects.get(name="Boissons"),
                       photo="https://the-jasmin.fr/photo.jpg",
                       salt_100g=1.00,
                       sugars_100g=2.10,
                       fat_100g=3.78,
                       saturate_fat_100g=11.22,
                       level_salt=Level.objects.get(name="low"),
                       level_sugars=Level.objects.get(name="low"),
                       level_saturate_fat=Level.objects.get(name="high"),
                       level_fat=Level.objects.get(name="high"),
                       code="10012020",
                       last_modified_t="1000")
        data.save()
Exemple #8
0
    def handle(self, *args, **options):
        p = Product.objects.all()
        p.delete()

        c = Category.objects.all()
        c.delete()

        categories = [
            {'name': 'Сливочное'},
            {'name': 'Щербет'},
            {'name': 'Фруктовый лёд'},
            {'name': 'Мелорин'}
        ]
        for item in categories:
            item = Category(**item)
            item.save()

        products = [
            {'name': 'Сливочное с апельсиновым джемом и цитрусовой стружкой', 'price': 310, 'photo': 'products/item_1.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочно-кофейное с кусочками шоколада', 'price': 380, 'photo': 'products/item_2.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочно-клубничное с присыпкой из белого шоколада', 'price': 355, 'photo': 'products/item_3.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочное крем-брюле с карамельной подливкой', 'price': 415, 'photo': 'products/item_4.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочное с брусничным джемом', 'price': 325, 'photo': 'products/item_5.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочно-черничное с цельными ягодами черники', 'price': 410, 'photo': 'products/item_6.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочно-лимонное с карамельной присыпкой', 'price': 375, 'photo': 'products/item_7.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочное с шоколадной стружкой', 'price': 320, 'photo': 'products/item_8.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочно ванильное с кусочками шоколада', 'price': 440, 'photo': 'products/item_9.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочное с ментоловым сиропом', 'price': 435, 'photo': 'products/item_10.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочное с кусочками черного шоколада', 'price': 355, 'photo': 'products/item_11.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
            {'name': 'Сливочное с мятным сиропом', 'price': 420, 'photo': 'products/item_12.jpg', 'category_id': Category.objects.get(name='Сливочное'), 'is_hit': 0, 'is_new': 1},
        ]
        for item in products:
            item = Product(**item)
            item.save()
Exemple #9
0
def other_request(request):
    post_data = request.POST
    get_data = request.GET
    # print(post_data)
    # print(get_data)
    if 'name' and 'option' in post_data:
        if post_data['option'] == 'category':
            new_category = Category(name=post_data['name'],
                                    remarks=post_data['remarks'],
                                    isPendingForApproval=False)
            new_category.save()
        elif post_data['option'] == 'type':
            new_type = Type(name=post_data['name'],
                            remarks=post_data['remarks'])
            new_type.save()
        elif post_data['option'] == 'brand':
            new_brand = Brand(name=post_data['name'],
                              remarks=post_data['remarks'],
                              isPendingForApproval=False)
            new_brand.save()

    all_categories = Category.objects.all()
    all_types = Type.objects.all()
    all_brands = Brand.objects.all()
    if 'toggle' and 'item' in get_data:
        package_id = get_data['toggle']
        if get_data['item'] == 'category':
            this_package = Category.objects.get(id=package_id)
        elif get_data['item'] == 'type':
            print('here')
            this_package = Type.objects.get(id=package_id)
        elif get_data['item'] == 'brand':
            this_package = Brand.objects.get(id=package_id)

        if this_package.isActive:
            this_package.isActive = False
        else:
            this_package.isActive = True
        this_package.save()
        return redirect('/other_request')
    else:
        return render(request, 'admin/other_requests.sho', {'all_categories': all_categories,
                                                            'all_types': all_types,
                                                            'all_brands': all_brands})
Exemple #10
0
def category_create(request, root_pk=None):
    ancestor = None
    category = Category()
    if root_pk:
        ancestor = get_object_or_404(Category, pk=root_pk)
    form = CategoryForm(request.POST or None, ancestor=ancestor)
    if form.is_valid():
        form.save()
        if root_pk:
            return redirect('dashboard:category-detail', pk=root_pk)
        return redirect('dashboard:category-list')
    ctx = {'category': category, 'form': form}
    return TemplateResponse(request, 'dashboard/category/form.html', ctx)
Exemple #11
0
    def update_categories(self, product, add=True):
        """
        Helper method for allowing the archive item to decide which categories to
        include the product in.

        Called after the product including price and attributes have been created.

        Must return a list of categories created or added to product.
        """
        try:
            category = Category.objects.get(site=Site.objects.get_current(),
                                            slug=self._get_subtype().lower())
        except Category.DoesNotExist:
            category = Category(site=Site.objects.get_current(),
                                slug=self._get_subtype().lower(),
                                name=unicode(
                                    self._meta.verbose_name_plural).title())
            category.save()

        if add:
            product.category.add(category)

        return [category]
Exemple #12
0
def category_create(request, root_pk=None):
    path = None
    category = Category()
    if root_pk:
        root = get_object_or_404(Category, pk=root_pk)
        path = root.get_ancestors(include_self=True) if root else []
    form = CategoryForm(
        request.POST or None, request.FILES or None, parent_pk=root_pk)
    if form.is_valid():
        category = form.save()
        messages.success(
            request,
            pgettext_lazy(
                'Dashboard message', 'Added category %s') % category)
        if root_pk:
            return redirect('dashboard:category-details', pk=root_pk)
        return redirect('dashboard:category-list')
    ctx = {'category': category, 'form': form, 'path': path}
    return TemplateResponse(request, 'dashboard/category/form.html', ctx)
    def feed_db(self, raw_products):

        style = color.make_style()
        stdout = base.OutputWrapper(sys.stdout)

        self._clear_db()

        # Insert each product in the application's database
        stdout.write("====   Insert products in the database    ====")
        stdout.write("Inserting products in the database...")
        for raw_product in raw_products:
            serialized_product = self._serialize_product(raw_product)

            try:
                product = Product(
                    code=serialized_product["code"],
                    name=serialized_product["name"],
                    url=serialized_product["url"],
                    nutriscore_grade=serialized_product["nutriscore_grade"],
                    image_url=serialized_product["image_url"],
                    image_small_url=serialized_product["image_small_url"],
                    salt_100=serialized_product["salt_100"],
                    sugars_100=serialized_product["sugars_100"],
                    saturated_fat_100=serialized_product["saturated_fat_100"],
                    fat_100=serialized_product["fat_100"],
                )
                product.full_clean()
            except ValidationError:
                # Ignore products with ValidationError
                continue
            product.save()

            # Insert associated categories, stores and brands
            for category in serialized_product["categories"]:
                try:
                    obj = Category.objects.get(name=category)
                except ObjectDoesNotExist:
                    try:
                        obj = Category(name=category)
                        obj.full_clean()
                    except ValidationError:
                        # Ignore categories with ValidationError
                        continue
                    obj.save()

                product.categories.add(obj)
        stdout.write(style.SUCCESS("DONE"))
        stdout.write("==============================================")
Exemple #14
0
def product_listing(request, slug, id):
    return HttpResponseRedirect('/')
    this_category = Category.objects.get(pk=id)
    category_description = this_category.description
    category_image = this_category.category_photo
    breadcum_details = this_category.unique_id

    breadcum_details = breadcum_details.split('-')
    breadcum_list = []
    for i in breadcum_details:
        breadcum = {}
        category = Category.objects.get(pk=i)
        breadcum['slug'] = category.slug
        breadcum['id'] = category.pk
        breadcum['name'] = category.name
        breadcum_list.append(breadcum)

    sub_categories_obj = Category.objects.filter(parent=id, active=True)
    sub_categories_list = []
    for obj in sub_categories_obj:
        sub_category = {}
        sub_category['id'] = obj.pk
        sub_category['slug'] = obj.slug
        sub_category['name'] = obj.name
        sub_categories_list.append(sub_category)
    all_cat_obj = Category.get_all_children(this_category)
    all_products = [
        Product.objects.filter(category=obj, active=True)
        for obj in all_cat_obj
    ]
    products_obj = set(itertools.chain.from_iterable(all_products))

    product_detail_list = []
    for obj in products_obj:
        product_detail = {}
        product_detail['name'] = obj.name

        product_image_obj = ProductImage.objects.filter(
            product=obj).order_by('display_priority')[:1]
        product_detail['product_photo_url'] = [
            i.get_thumbname_url() for i in product_image_obj
        ]

        product_detail['slug'] = obj.slug
        product_detail['price'] = int(obj.price)
        product_detail['id'] = obj.id

        logging.info("====================")
        logging.info(obj.name)
        discount_obj = get_object_or_404(Discount, product=obj)

        # calculate discounted price
        if discount_obj is not None:
            if discount_obj.discount_type.lower() == "flat":
                price_after_discount = obj.price - discount_obj.discount
            elif discount_obj.discount_type.lower() == "percentage":
                price_after_discount = obj.price - \
                    obj.price * (discount_obj.discount / 100)
            else:
                price_after_discount = obj.price
        product_detail['price_after_discount'] = int(price_after_discount)
        product_detail['discount'] = [
            discount_obj.discount, discount_obj.discount_type
        ]
        product_detail_list.append(product_detail)

    paginator = Paginator(product_detail_list, 12)
    page = request.GET.get('page')
    try:
        product_detail_pager_list = paginator.page(page)
    except PageNotAnInteger:
        product_detail_pager_list = paginator.page(1)
    except EmptyPage:
        product_detail_pager_list = paginator.page(paginator.num_pages)

    context = {
        "category": this_category,
        "sub_categories_list": sub_categories_list,
        "category_description": category_description,
        "category_image": category_image,
        "product_detail_list": product_detail_pager_list,
        "breadcum_list": breadcum_list,
        'page': page
    }
    return render(request, "products_001.html", context)
Exemple #15
0
    def handle_noargs(self, **options):
        from satchmo_store.contact.models import (
            AddressBook,
            Contact,
            ContactOrganization,
            ContactOrganizationRole,
            ContactRole,
            Organization,
            PhoneNumber,
        )
        from product.models import (
            Category,
            OptionGroup,
            Option,
            Price,
            Product,
        )
        from product.modules.configurable.models import ConfigurableProduct

        from satchmo_store.shop.models import Config
        from django.conf import settings
        from l10n.models import Country
        from django.contrib.sites.models import Site
        from django.contrib.auth.models import User
        #idempotency test

        print "Checking for existing sample data."
        try:
            p = Product.objects.get(slug="dj-rocks")
            print "It looks like you already have loaded the sample store data, quitting."
            import sys
            sys.exit(1)
        except Product.DoesNotExist:
            pass

        print "Loading sample store data."

        #Load basic configuration information

        print "Creating site..."
        try:
            site = Site.objects.get(id=settings.SITE_ID)
            print "Using existing site #%i" % settings.SITE_ID
        except Site.DoesNotExist:
            print "Creating Example Store Site"
            site = Site(domain="localhost", name="Sample Store")
        site.domain = settings.SITE_DOMAIN
        site.name = settings.SITE_NAME
        site.save()
        try:
            store_country = Country.objects.get(iso3_code='USA')
        except Country.DoesNotExist:
            print "\nError: Country data should be first loaded by:  python manage.py satchmo_load_l10n"
            import sys
            sys.exit(1)
        config = Config(site=site,
                        store_name=settings.SITE_NAME,
                        country=store_country,
                        sales_country=store_country)
        config.save()
        config.shipping_countries.add(store_country)
        config.save()
        print "Creating Customers..."
        # Import some customers

        customer = ContactRole.objects.get(pk='Customer')
        c1 = Contact(first_name="Chris",
                     last_name="Smith",
                     email="*****@*****.**",
                     role=customer,
                     notes="Really cool stuff")
        c1.save()
        p1 = PhoneNumber(contact=c1,
                         phone="601-555-5511",
                         type="Home",
                         primary=True)
        p1.save()
        c2 = Contact(first_name="John",
                     last_name="Smith",
                     email="*****@*****.**",
                     role=customer,
                     notes="Second user")
        c2.save()
        p2 = PhoneNumber(contact=c2,
                         phone="999-555-5111",
                         type="Work",
                         primary=True)
        p2.save()
        # Import some addresses for these customers
        us = Country.objects.get(iso2_code='US')
        a1 = AddressBook(description="Home",
                         street1="8235 Pike Street",
                         city="Anywhere Town",
                         state="TN",
                         postal_code="38138",
                         country=us,
                         is_default_shipping=True,
                         contact=c1)
        a1.save()
        a2 = AddressBook(description="Work",
                         street1="1245 Main Street",
                         city="Stillwater",
                         state="MN",
                         postal_code="55082",
                         country=us,
                         is_default_shipping=True,
                         contact=c2)
        a2.save()
        print "Creating Suppliers..."
        #Import some suppliers

        supplier = ContactOrganizationRole.objects.get(pk='Supplier')
        company = ContactOrganization.objects.get(pk='Company')
        contactsupplier = ContactRole.objects.get(pk='Supplier')
        org1 = Organization(name="Rhinestone Ronny",
                            type=company,
                            role=supplier)
        org1.save()
        c4 = Contact(first_name="Fred",
                     last_name="Jones",
                     email="*****@*****.**",
                     role=contactsupplier,
                     organization=org1)
        c4.save()
        p4 = PhoneNumber(contact=c4,
                         phone="800-188-7611",
                         type="Work",
                         primary=True)
        p4.save()
        p5 = PhoneNumber(contact=c4, phone="755-555-1111", type="Fax")
        p5.save()
        a3 = AddressBook(contact=c4,
                         description="Mailing address",
                         street1="Receiving Dept",
                         street2="918 Funky Town St",
                         city="Fishkill",
                         state="NJ",
                         country=us,
                         postal_code="19010")
        a3.save()
        #s1 = Supplier(name="Rhinestone Ronny", address1="918 Funky Town St", address2="Suite 200",
        #              city="Fishkill", state="NJ", zip="19010", phone1="800-188-7611", fax="900-110-1909", email="*****@*****.**",
        #              notes="My main supplier")
        #s1.save()

        #s2 = Supplier(name="Shirt Sally", address1="9 ABC Lane",
        #    city="Happyville", state="MD", zip="190111", phone1="888-888-1111", fax="999-110-1909", email="*****@*****.**",
        #              notes="Shirt Supplier")
        #s2.save()

        print "Creating Categories..."
        #Create some categories
        cat1 = Category(site=site,
                        name="Shirts",
                        slug="shirts",
                        description="Women's Shirts")
        cat1.save()
        cat2 = Category(site=site,
                        name="Short Sleeve",
                        slug="shortsleeve",
                        description="Short sleeve shirts",
                        parent=cat1)
        cat2.save()
        cat3 = Category(site=site,
                        name="Books",
                        slug="book",
                        description="Books")
        cat3.save()
        cat4 = Category(site=site,
                        name="Fiction",
                        slug="fiction",
                        description="Fiction Books",
                        parent=cat3)
        cat4.save()
        cat5 = Category(site=site,
                        name="Science Fiction",
                        slug="scifi",
                        description="Science Fiction",
                        parent=cat4)
        cat5.save()
        cat6 = Category(site=site,
                        name="Non Fiction",
                        slug="nonfiction",
                        description="Non Fiction",
                        parent=cat3)
        cat6.save()
        cat7 = Category(site=site, name="Software", slug="software")
        cat7.save()

        print "Creating products..."
        #Create some items
        i1 = Product(site=site,
                     name="Django Rocks shirt",
                     slug="dj-rocks",
                     description="Really cool shirt",
                     active=True,
                     featured=True)
        i1.save()
        p1 = Price(price="20.00", product=i1)
        p1.save()
        i1.category.add(cat1)
        i1.save()
        i2 = Product(
            site=site,
            name="Python Rocks shirt",
            slug="PY-Rocks",
            description="Really cool python shirt - One Size Fits All",
            active=True,
            featured=True)
        i2.save()
        p2 = Price(price="19.50", product=i2)
        p2.save()
        i2.category.add(cat2)
        i2.save()
        i3 = Product(site=site,
                     name="A really neat book",
                     slug="neat-book",
                     description="A neat book.  You should buy it.",
                     active=True,
                     featured=True)
        i3.save()
        p3 = Price(price="5.00", product=i3)
        p3.save()
        i3.category.add(cat4)
        i3.save()
        i4 = Product(site=site,
                     name="Robots Attack!",
                     slug="robot-attack",
                     description="Robots try to take over the world.",
                     active=True,
                     featured=True)
        i4.save()
        p4 = Price(price="7.99", product=i4)
        p4.save()
        i4.category.add(cat5)
        i4.save()

        #    i5 = Product(site=site, name="Really Neat Software", slug="neat-software", description="Example Configurable/Downloadable product", active=True, featured=True)
        #    i5.save()
        #    i5.category.add(cat7)
        #    i5.save()

        #Create an attribute set
        optSet1 = OptionGroup(site=site, name="sizes", sort_order=1)
        optSet2 = OptionGroup(site=site, name="colors", sort_order=2)
        optSet1.save()
        optSet2.save()

        optSet3 = OptionGroup(site=site, name="Book type", sort_order=1)
        optSet3.save()

        optSet4 = OptionGroup(site=site, name="Full/Upgrade", sort_order=5)
        optSet4.save()

        optItem1a = Option(name="Small",
                           value="S",
                           sort_order=1,
                           option_group=optSet1)
        optItem1a.save()
        optItem1b = Option(name="Medium",
                           value="M",
                           sort_order=2,
                           option_group=optSet1)
        optItem1b.save()
        optItem1c = Option(name="Large",
                           value="L",
                           sort_order=3,
                           price_change="1.00",
                           option_group=optSet1)
        optItem1c.save()

        optItem2a = Option(name="Black",
                           value="B",
                           sort_order=1,
                           option_group=optSet2)
        optItem2a.save()
        optItem2b = Option(name="White",
                           value="W",
                           sort_order=2,
                           option_group=optSet2)
        optItem2b.save()
        optItem2c = Option(name="Blue",
                           value="BL",
                           sort_order=3,
                           price_change="2.00",
                           option_group=optSet2)
        optItem2c.save()

        optItem3a = Option(name="Hard cover",
                           value="hard",
                           sort_order=1,
                           option_group=optSet3)
        optItem3a.save()
        optItem3b = Option(name="Soft cover",
                           value="soft",
                           sort_order=2,
                           price_change="1.00",
                           option_group=optSet3)
        optItem3b.save()
        optItem3c = Option(name="On tape",
                           value="tape",
                           sort_order=3,
                           option_group=optSet3)
        optItem3c.save()

        optItem4a = Option(name="Full Version",
                           value="full",
                           option_group=optSet4,
                           sort_order=1)
        optItem4a.save()
        optItem4b = Option(name="Upgrade Version",
                           value="upgrade",
                           option_group=optSet4,
                           sort_order=2)
        optItem4b.save()

        #Add the option group to our items
        pg1 = ConfigurableProduct(product=i1)
        pg1.save()
        pg1.option_group.add(optSet1)
        pg1.save()
        pg1.option_group.add(optSet2)
        pg1.save()

        pg3 = ConfigurableProduct(product=i3)
        pg3.save()
        pg3.option_group.add(optSet3)
        pg3.save()

        pg4 = ConfigurableProduct(product=i4)
        pg4.save()
        pg4.option_group.add(optSet3)
        pg4.save()

        #    pg5 = ConfigurableProduct(product=i5)
        #    pg5.option_group.add(optSet4)
        #    pg5.save()

        print "Creating product variations..."
        #Create the required sub_items
        pg1.create_all_variations()
        pg3.create_all_variations()
        pg4.create_all_variations()
        #pg5.create_all_variations()

        #set prices for full and upgrade versions of neat-software, this is an alternative to using the price_change in options, it allows for more flexability when required.
        #    pv1 = pg5.get_product_from_options([optItem4a])
        #    Price(product=pv1, price='5.00').save()
        #    Price(product=pv1, price='2.00', quantity='50.00').save()
        #    DownloadableProduct(product=pv1).save()

        #    pv2 = pg5.get_product_from_options([optItem4b])
        #    Price(product=pv2, price='1.00').save()
        #    DownloadableProduct(product=pv2).save()

        print "Create a test user..."
        #First see if our test user is still there, then use or create that user
        try:
            test_user = User.objects.get(username="******")
        except:
            test_user = User.objects.create_user('csmith',
                                                 '*****@*****.**', 'test')
            test_user.save()
        c1.user = test_user
        c1.save()
Exemple #16
0
def db_init():
    """ setUp Test """
    user = User.objects.create(email='*****@*****.**')
    user.set_password('@unMotdePasse')
    user.save()

    data = Category(name="Sauce")
    data.save()

    data = Level(name="High")
    data.save()

    data = Product(name="Mayonnaise",
                   url="https://mayo.fr",
                   nutriscore="c",
                   category_id=Category.objects.get(name="Sauce"),
                   photo="https://mayo.fr/photo.jpg",
                   salt_100g="1.00",
                   sugars_100g="2.00",
                   fat_100g="3.00",
                   saturate_fat_100g="4.00",
                   level_salt=Level.objects.get(name="High"),
                   level_sugars=Level.objects.get(name="High"),
                   level_saturate_fat=Level.objects.get(name="High"),
                   level_fat=Level.objects.get(name="High"),
                   code="100200300",
                   last_modified_t="1568887200")
    data.save()

    data = Product(name="Sauce tomate",
                   url="https://Sauce-tomate.fr",
                   nutriscore="b",
                   category_id=Category.objects.get(name="Sauce"),
                   photo="https://Sauce-tomate.fr/photo.jpg",
                   salt_100g="1.00",
                   sugars_100g="2.00",
                   fat_100g="3.00",
                   saturate_fat_100g="4.00",
                   level_salt=Level.objects.get(name="High"),
                   level_sugars=Level.objects.get(name="High"),
                   level_saturate_fat=Level.objects.get(name="High"),
                   level_fat=Level.objects.get(name="High"),
                   code="101201301",
                   last_modified_t="10120130111")
    data.save()

    data = Product(name="Ketchup",
                   url="https://Ketchup.fr",
                   nutriscore="c",
                   category_id=Category.objects.get(name="Sauce"),
                   photo="https://Ketchup.fr/photo.jpg",
                   salt_100g="1.00",
                   sugars_100g="2.00",
                   fat_100g="3.00",
                   saturate_fat_100g="4.00",
                   level_salt=Level.objects.get(name="High"),
                   level_sugars=Level.objects.get(name="High"),
                   level_saturate_fat=Level.objects.get(name="High"),
                   level_fat=Level.objects.get(name="High"),
                   code="102202302",
                   last_modified_t="1768894400")
    data.save()
    def handle_noargs(self, **options):
        from satchmo_store.contact.models import (
            AddressBook,
            Contact,
            ContactOrganization,
            ContactOrganizationRole,
            ContactRole,
            Organization,
            PhoneNumber,
        )
        from product.models import (
            Category,
            OptionGroup,
            Option,
            Price,
            Product,
        )
        from product.modules.configurable.models import ConfigurableProduct

        from satchmo_store.shop.models import Config
        from django.conf import settings
        from l10n.models import Country
        from django.contrib.sites.models import Site
        from django.contrib.auth.models import User
        #idempotency test

        print "Checking for existing sample data."
        try:
            p = Product.objects.get(slug="dj-rocks")
            print "It looks like you already have loaded the sample store data, quitting."
            import sys
            sys.exit(1)
        except Product.DoesNotExist:
            pass

        print "Loading sample store data."

        #Load basic configuration information

        print "Creating site..."
        try:
            site = Site.objects.get(id=settings.SITE_ID)
            print "Using existing site #%i" % settings.SITE_ID
        except Site.DoesNotExist:
            print "Creating Example Store Site"
            site = Site(domain="localhost", name="Sample Store")
        site.domain = settings.SITE_DOMAIN
        site.name = settings.SITE_NAME
        site.save()
        try:
            store_country = Country.objects.get(iso3_code='USA')
        except Country.DoesNotExist:
            print "\nError: Country data should be first loaded by:  python manage.py satchmo_load_l10n"
            import sys
            sys.exit(1)
        config = Config(site=site, store_name=settings.SITE_NAME, country=store_country, sales_country=store_country)
        config.save()
        config.shipping_countries.add(store_country)
        config.save()
        print "Creating Customers..."
        # Import some customers

        customer = ContactRole.objects.get(pk='Customer')
        c1 = Contact(first_name="Chris", last_name="Smith", email="*****@*****.**", role=customer, notes="Really cool stuff")
        c1.save()
        p1 = PhoneNumber(contact=c1, phone="601-555-5511", type="Home",primary=True)
        p1.save()
        c2 = Contact(first_name="John", last_name="Smith", email="*****@*****.**", role=customer, notes="Second user")
        c2.save()
        p2 = PhoneNumber(contact=c2, phone="999-555-5111", type="Work",primary=True)
        p2.save()
        # Import some addresses for these customers
        us = Country.objects.get(iso2_code='US');
        a1 = AddressBook(description="Home", street1="8235 Pike Street", city="Anywhere Town", state="TN",
                     postal_code="38138", country=us, is_default_shipping=True, contact=c1)
        a1.save()
        a2 = AddressBook(description="Work", street1="1245 Main Street", city="Stillwater", state="MN",
                     postal_code="55082", country=us, is_default_shipping=True, contact=c2)
        a2.save()
        print "Creating Suppliers..."
        #Import some suppliers

        supplier = ContactOrganizationRole.objects.get(pk='Supplier')
        company = ContactOrganization.objects.get(pk='Company')
        contactsupplier = ContactRole.objects.get(pk='Supplier')
        org1 = Organization(name="Rhinestone Ronny", type=company, role=supplier)
        org1.save()
        c4 = Contact(first_name="Fred", last_name="Jones", email="*****@*****.**",
            role=contactsupplier, organization=org1)
        c4.save()
        p4 = PhoneNumber(contact=c4,phone="800-188-7611", type="Work", primary=True)
        p4.save()
        p5 = PhoneNumber(contact=c4,phone="755-555-1111",type="Fax")
        p5.save()
        a3 = AddressBook(contact=c4, description="Mailing address", street1="Receiving Dept",
            street2="918 Funky Town St", city="Fishkill",
             state="NJ", country=us, postal_code="19010")
        a3.save()
        #s1 = Supplier(name="Rhinestone Ronny", address1="918 Funky Town St", address2="Suite 200",
        #              city="Fishkill", state="NJ", zip="19010", phone1="800-188-7611", fax="900-110-1909", email="*****@*****.**",
        #              notes="My main supplier")
        #s1.save()

        #s2 = Supplier(name="Shirt Sally", address1="9 ABC Lane",
        #    city="Happyville", state="MD", zip="190111", phone1="888-888-1111", fax="999-110-1909", email="*****@*****.**",
        #              notes="Shirt Supplier")
        #s2.save()


        print "Creating Categories..."
        #Create some categories
        '''cat1 = Category(site=site, name="Shirts",slug="shirts",description="Women's Shirts")
        cat1.save()
        cat2 = Category(site=site, name="Short Sleeve",slug="shortsleeve",description="Short sleeve shirts", parent=cat1)
        cat2.save()'''
        cat3 = Category(name="Books",slug="book",description="Books")
        cat3.save()
        cat3.site.add(site)
        
        '''cat4 = Category(site=site, name="Fiction",slug="fiction",description="Fiction Books", parent=cat3)
        cat4.save()
        cat5 = Category(site=site, name="Science Fiction",slug="scifi",description="Science Fiction",parent=cat4)
        cat5.save()
        cat6 = Category(site=site, name="Non Fiction",slug="nonfiction",description="Non Fiction",parent=cat3)
        cat6.save()
        cat7 = Category(site=site, name="Software", slug="software")
        cat7.save()'''


        print "Creating products..."
        #Create some items
        '''i1 = Product(name="Django Rocks shirt", slug="dj-rocks", description="Really cool shirt",
                 active=True, featured=True)
        i1.save()
        p1 = Price(price="20.00", product=i1)
        p1.save()
        i1.category.add(cat1)
        i1.save()
        i2 = Product(name="Python Rocks shirt", slug="PY-Rocks",
            description="Really cool python shirt - One Size Fits All",
            active=True, featured=True)
        i2.save()
        p2 = Price(price="19.50", product=i2)
        p2.save()
        i2.category.add(cat2)
        i2.save()'''
        i3 = Product(name="Purusha Suktam", slug="Advyata",
            description="A neat book.  You should buy it.",
            active=True, featured=True)
        i3.save()
        i3.site.add(site)
        p3 = Price(price="5.00", product=i3)
        p3.save()
        i3.category.add(cat3)
        i3.save()
        i3.site.add(site)


        '''i4 = Product(name="Robots Attack!", slug="robot-attack",
            description="Robots try to take over the world.",
            active=True, featured=True)
        i4.save()
        p4 = Price(price="7.99", product=i4)
        p4.save()
        i4.category.add(cat5)
        i4.save()

    #    i5 = Product(site=site, name="Really Neat Software", slug="neat-software", description="Example Configurable/Downloadable product", active=True, featured=True)
    #    i5.save()
    #    i5.category.add(cat7)
    #    i5.save()

        #Create an attribute set
        optSet1 = OptionGroup(site=site, name="sizes", sort_order=1)
        optSet2 = OptionGroup(site=site, name="colors", sort_order=2)
        optSet1.save()
        optSet2.save()'''

        optSet3 = OptionGroup(name="Book type", sort_order=1)
        optSet3.save()
        optSet3.site.add(site)

        '''optSet4 = OptionGroup(site=site, name="Full/Upgrade", sort_order=5)
        optSet4.save()

        optItem1a = Option(name="Small", value="S", sort_order=1, option_group=optSet1)
        optItem1a.save()
        optItem1b = Option(name="Medium", value="M", sort_order=2, option_group=optSet1)
        optItem1b.save()
        optItem1c = Option(name="Large", value="L", sort_order=3, price_change="1.00", option_group=optSet1)
        optItem1c.save()

        optItem2a = Option(name="Black", value="B", sort_order=1, option_group=optSet2)
        optItem2a.save()
        optItem2b = Option(name="White", value="W", sort_order=2, option_group=optSet2)
        optItem2b.save()
        optItem2c = Option(name="Blue", value="BL", sort_order=3, price_change="2.00", option_group=optSet2)
        optItem2c.save()'''

        optItem3a = Option(name="Hard cover", value="hard", sort_order=1, option_group=optSet3)
        optItem3a.save()
        optItem3b = Option(name="Soft cover", value="soft", sort_order=2, price_change="1.00", option_group=optSet3)
        optItem3b.save()
        optItem3c = Option(name="On tape", value="tape", sort_order=3, option_group=optSet3)
        optItem3c.save()

        '''optItem4a = Option(name="Full Version", value="full", option_group=optSet4, sort_order=1)
        optItem4a.save()
        optItem4b = Option(name="Upgrade Version", value="upgrade", option_group=optSet4, sort_order=2)
        optItem4b.save()'''


        #Add the option group to our items
        '''pg1 = ConfigurableProduct(product=i1)
        pg1.save()
        pg1.option_group.add(optSet1)
        pg1.save()
        pg1.option_group.add(optSet2)
        pg1.save()'''

        pg3 = ConfigurableProduct(product=i3)
        pg3.save()
        pg3.option_group.add(optSet3)
        pg3.save()

        '''pg4 = ConfigurableProduct(product=i4)
        pg4.save()
        pg4.option_group.add(optSet3)
        pg4.save()'''

    #    pg5 = ConfigurableProduct(product=i5)
    #    pg5.option_group.add(optSet4)
    #    pg5.save()

        print "Creating product variations..."
        #Create the required sub_items
        #pg1.create_all_variations()
        pg3.create_all_variations()
        #pg4.create_all_variations()
        #pg5.create_all_variations()

        #set prices for full and upgrade versions of neat-software, this is an alternative to using the price_change in options, it allows for more flexability when required.
    #    pv1 = pg5.get_product_from_options([optItem4a])
    #    Price(product=pv1, price='5.00').save()
    #    Price(product=pv1, price='2.00', quantity='50.00').save()
    #    DownloadableProduct(product=pv1).save()

    #    pv2 = pg5.get_product_from_options([optItem4b])
    #    Price(product=pv2, price='1.00').save()
    #    DownloadableProduct(product=pv2).save()

        print "Create a test user..."
        #First see if our test user is still there, then use or create that user
        try:
            test_user = User.objects.get(username="******")
        except:
            test_user = User.objects.create_user('csmith', '*****@*****.**', 'test')
            test_user.save()
        c1.user = test_user
        c1.save()
Exemple #18
0
class AllCategoryAllProductList(generics.ListAPIView):
    """
    All categories details
    """
    queryset = Category.firstlevelcategory(Category)
    serializer_class = CategorySerializer
Exemple #19
0
from product.models import Category, Product, ExtraImage
from controller.models import Slide
from autofixture import AutoFixture
from django.contrib.auth.models import User

print "Creating categories"

entertainment = Category(title="Entertainment", slug="entertainment")
entertainment.save()

xbox = Category(title="Xbox", parent=entertainment, slug='xbox')
xbox.save()

games = Category(title="Games", parent=xbox, slug='games')
games.save()

joysticks = Category(title="Joysticks", parent=games, slug='joysticks')
joysticks.save()

tv = Category(title="TV", parent=entertainment, slug='tv')
tv.save()

mobile = Category(title="Mobile", slug='mobile')
mobile.save()

smartphones = Category(title="Smartphones", parent=mobile, slug='smartphones')
smartphones.save()

tablets = Category(title="Tablets", parent=mobile, slug='tablets')
tablets.save()
Exemple #20
0
import random,string
from django.contrib.auth.models import User
from random import randint
import re

categories = Category.objects.all()

if categories.count() == 0:
#  generates a dummy account that actions can be performed
	user = User(username="******", password = "******")
	user.save()
# and then saves the user to the db


# Dummy categories and subcategories
	cat1 = Category()
	cat1.title = "Dunki"

	sub1 = Category()
	sub1.title = "Kusi dunki"
	sub1.parent = cat1

	cat2 = Category()
	cat2.title = "Bluzi"

	sub2 = Category()
	sub2.title = "Kusi Bluzi"
	sub2.parent = cat2

	cat3 = Category()
	cat3.title = "Gashti"
def delete_category(name):
    deleting_category = Category.objects.get(name=name)
    Category.delete(deleting_category)
Exemple #22
0
import json
from product.models import Category, SubCategory, Item
# from djnago.contrib.auth.models import User

with open('.json/category.json') as f:
    template = json.load(f)

for newCategory in template:
    newCategory = Category(name=newCategory['name'])
    newCategory.save()

with open('.json/subcat.json') as f:
    template2 = json.load(f)

for new in template2:
    new = SubCategory(
        parent_category=Category.objects.get(name=new['parent_name']),
        subname=new['subname'])
    new.save()

# NOTE: error opening
# with open('.json/items.json') as f:
#     template3 = json.load(f)

# for new in template3:
#     new = Item(category=Category.objects.get(
#         name=new['category']), sub_category=SubCategory.objects.get(subname=new['sub_category']), title=new['title'], price=new['price'], content=new['content'], image=new['image'], condition=new['condition'], item_available_for=new['item_available_for'], author=new['author'], date_posted=new['date_posted'])
#     new.save()