def test_image_resize_success( self, mock_default_category: Category, INITIAL_SIZE: Tuple[int, int], FILE_EXTENTION: str, ): """ Test that the resizeImage function works as expected when saving a Category object """ mock_default_category.image = f"dummy_image_base_name.{FILE_EXTENTION}" create_dummy_png_image( mock_default_category.image.name, IMAGE_SIZE=INITIAL_SIZE ) check_image_attributes( mock_default_category.image, size_check=INITIAL_SIZE, ext_check=f".{FILE_EXTENTION}", ) mock_default_category.save() check_image_attributes( mock_default_category.image, size_check=BaseModelMixin.CROP_SIZE, ext_check=".jpg", ) shutil.rmtree(Path(MEDIA_URL))
def import_categories(): res = csv_load_file( os.path.dirname(os.path.abspath(__file__)) + "/categories.csv") #print res parent_categories = dict() for r in res: if r[1] == '': continue level = int(r[1]) cat = Category.objects.filter(pk=r[0]) if cat.count() == 0: print cat item = Category() item.id = r[0] item.name = r[2] if level == 1: print item item = Category.add_root(name=r[2], id=r[0]) parent_categories[level] = item else: item = parent_categories[level - 1].add_child(name=r[2], id=r[0]) parent_categories[level] = item else: parent_categories[level] = cat[0]
def import_categories(): res = csv_load_file(os.path.dirname(os.path.abspath (__file__)) + "/categories.csv") #print res parent_categories = dict() for r in res: if r[1] == '': continue level = int(r[1]) cat = Category.objects.filter(pk=r[0]) if cat.count() == 0: print cat item = Category() item.id = r[0] item.name = r[2] if level == 1: print item item = Category.add_root(name=r[2], id=r[0]) parent_categories[level] = item else: item = parent_categories[level-1].add_child(name=r[2], id=r[0]) parent_categories[level] = item else: parent_categories[level] = cat[0]
def setUp(self): ###### create Users ####### users = ['UserA', 'UserB', 'UserC', 'UserD'] for i in range(4): newUser = AUser(password='', last_login=timezone.now(), is_superuser=True, username=users[i], first_name='Firstname', last_name='Lastname', email='*****@*****.**', is_staff=True, is_active=True, date_joined=timezone.now()) newUser.save() testDBModel.testUsers.append(newUser) testDBModel.testUsersID.append(newUser.pk) ###### add Category ###### category1 = Category(name="hats") testDBModel.testCategory.append(category1) category1.save() ###### add product ###### addProducts = ["ProductA", "ProductB", "ProductC", "ProductD"] for i in range(4): # # add products newOne = Product(category=category1, name=addProducts[i], brand='brand', url='url', photo='photo', price=1.0, description='') newOne.save() testDBModel.testProducts.append(newOne) ##### ## add comments ###### for i in range(4): newOne = Comment(product=testDBModel.testProducts[i], owner=testDBModel.testUsers[i], content="null", time = timezone.now()) newOne.save() testDBModel.testComments.append(newOne) # add to wishlist first for i in range(4): newOne = WishList(product=testDBModel.testProducts[i], owner=testDBModel.testUsers[i]) newOne.save()
def feed_data_to_database(self): recipes = self.get_matching_recipes() for recipe in recipes: recipe_obj = Recipe(title=recipe[10], date_published=recipe[2], rating=recipe[8]) recipe_obj.save() for category_name in recipe[1]: category = None try: category = Category.objects.get(name=category_name) except: category = Category(name=category_name) category.save() rc = RecipeCategory(recipe=recipe_obj, category=category) rc.save() for id, direction_item in enumerate(recipe[4]): direction = Direction(content=direction_item, recipe=recipe_obj, order=(id + 1)) direction.save() for detailed_ingredient in recipe[6]: ingr = Ingredient.objects.get(name=detailed_ingredient[0]) dg = DetailedIngredient(recipe=recipe_obj, name=detailed_ingredient[1], ingredient=ingr) dg.save()
def handle(self, *args, **options): print('Loading category') Category.objects.all().delete() Journal.objects.all().delete() names = [ 'ЖЕНСКИЕ', 'МУЖСКИЕ', 'ДЕТСКИЕ', 'ДОМ И СЕМЬЯ', 'АВТО', 'СПОРТ', 'РЕЛИГИЯ', 'ОБЩЕСТВО', 'ПОЛИТИКА', 'БИЗНЕС', 'ФИНАНСЫ', 'НАУЧНО-ПОПУЛЯРНЫЕ' ] for name in names: c = Category() c.name = name c.save() print('Saving %s' % name) journal_list = [ 'Наука и техника', 'Здоровье', 'Моделист-конструктор', 'Лиза', 'Прибой', 'Забой', 'Внуки и правнуки', 'В мире муравья', 'Крышка стола', 'Восемь' ] cnt = 0 for jname in journal_list: cnt += 1 j = Journal() j.name = jname j.save() j.category.add(c) path = os.path.join(settings.BASE_DIR, 'init_data', 'journal', f'{cnt}.jpg') with open(path, 'rb') as doc_file: j.default_cover.save(f'{cnt}.jpeg', File(doc_file), save=True) for ni in range(1, 20): name = f'выпуск {ni}' i = Issue() i.name = name i.journal = j i.save() for pi in range(1, 10): p = IssuePage() p.paper = i p.page = pi p.save() path = os.path.join(settings.BASE_DIR, 'init_data', 'journal', f'{pi}.jpg') with open(path, 'rb') as doc_file: p.file_low.save(f'{pi}.jpeg', File(doc_file), save=True) p.file_middle.save(f'{pi}.jpeg', File(doc_file), save=True) p.file_high.save(f'{pi}.jpeg', File(doc_file), save=True)
def save_mock_category(monkeypatch, category: Category) -> None: """ Mock the resizeImage() function to prevent the need of creating and processing dummy images when saving Category objects. """ mock_resize_image = Mock(return_value=category.image) monkeypatch.setattr(Category, "resizeImage", mock_resize_image) category.save() mock_resize_image.assert_called_once_with(category.image)
def test_image_resize_called( self, monkeypatch, mock_default_category: Category ): """ Ensures the resizeImage function is called when saving a category """ mock_resize_image = Mock(return_value=mock_default_category.image) monkeypatch.setattr(Category, "resizeImage", mock_resize_image) mock_default_category.save() mock_resize_image.assert_called_once_with(mock_default_category.image)
def create_category(self, categoryName): #TODO: Occupation? parent = Category(name=categoryName, occupation=categoryName) parent.save() subcategoryList = subcategories[categoryName] for subcategoryName in subcategoryList: child = Category(name=subcategoryName, occupation=subcategoryName, parent=parent) child.save() parent.children.add(child) parent.save()
def test_metadb_build(self): test_cat = Category(name='Test') test_cat2 = Category(name='Test Posts') db.session.add(test_cat) db.session.add(test_cat2) db.session.commit() test_post = Post(title='One', path='', date=datetime.datetime.now(), categories=[test_cat, test_cat2]) test_post2 = Post(title='Two', path='', date=datetime.datetime.now(), categories=[test_cat]) db.session.add(test_post) db.session.add(test_post2) db.session.commit()
def test_category_list_class_property( self, load_default_categories: List[Category] ): """ Tests __category_list contains a list of saved categories """ assert Category.get_category_list() == load_default_categories
def test_model_return_category(self): response = Category.get_category() self.assertNotIsInstance(response, str) try: for res in response: pass except: self.fail('Response should be iterable')
def test_image_resize_failed( self, mock_default_category: Category, FILE_EXTENTION: str, EXCEPTION: Exception, ): """ Test the expected Exception is raised when an invalid file format is submitted. Clean up created test images """ mock_default_category.image = f"dummy_image_base_name.{FILE_EXTENTION}" create_dummy_file(mock_default_category.image.name) with pytest.raises(EXCEPTION): mock_default_category.save() shutil.rmtree(Path(MEDIA_URL))
def handle(self, *args, **options): fixture = options['fixture'] if path.exists(fixture): root_el = etree.parse(fixture).getroot() self.cleanup() root_record = Category.add_root(title='Каталог') root_record = Category.objects.get(pk=root_record.pk) iter_tree(root_el, root_record, add_book) else: raise CommandError('Fixture file %s does not exist' % fixture)
def get_category(): c1 = {'10': '手机', '11': '手机配件', '12': '数码相机', '13': '相机', '14': '平板'} c2 = {'20': '运动服', '21': '运动鞋', '22': '健身用品', '23': '骑行装备'} c0 = {'1': c1, '2': c2} c_root = {'1': '手机数码', '2': '运动户外', '3': '衣服', '4': '计算机', '5': '零食', '6': '珠宝首饰', '7': '家电办公', '8': '护肤彩妆'} print c0 cMerge = dict(c1, **c2) cc = Category(category=c0, root_category=c_root) return cc, cMerge
def userpanel(request): if request.user.is_authenticated: user = request.user if 'addNewCategoryButton' in request.POST: newCategory = request.POST.get('addcategory', '') if newCategory != "": if not Category.objects.filter( nameOfCategory=newCategory).exists(): categoryNewModel = Category(nameOfCategory=newCategory) categoryNewModel.save() elif 'deleteCategoryButton' in request.POST: newCategory = request.POST.get('addcategory', '') if newCategory != "": Category.objects.filter(nameOfCategory=newCategory).delete() elif 'newUserNameButton' in request.POST: newUserName = request.POST.get('newUserName', '') if newUserName != "": saveNewUserName = User.objects.get(id=user.pk) saveNewUserName.username = newUserName saveNewUserName.save() elif 'newNameButton' in request.POST: newName = request.POST.get('newName', '') if newName != "": saveNewUserName = User.objects.get(id=user.pk) saveNewUserName.first_name = newName saveNewUserName.save() elif 'newUserSurnameButton' in request.POST: newUserSurname = request.POST.get('newUserSurname', '') if newUserSurname != "": saveNewUserName = User.objects.get(id=user.pk) saveNewUserName.last_name = newUserSurname saveNewUserName.save() elif 'changePasswordButton' in request.POST: changePassword = request.POST.get('changePassword', '') if changePassword != "": saveNewPassword = User.objects.get(id=user.pk) saveNewPassword.set_password(changePassword) saveNewPassword.save() return render(request, "main/userpanel.html", {'user': user}) else: return redirect('/home/')
def test_category_json_cast(self, mock_default_category: Category): """ Test category .json() method """ expected_dict = { "category_name": mock_default_category.category_name, "summary": mock_default_category.summary, "image": mock_default_category.image, "category_slug": mock_default_category.category_slug, } assert mock_default_category.to_json() == expected_dict
def each_article(self, category, url_list): main = Category(name=category) main.save() for link in url_list: soup = self.soup(link) div = soup.find("div", {"class": "bdaia-post-content"}) p_list = div.find_all("p") description = [] for p in p_list: description.append(p.get_text()) self.article.append(u''.join(description).encode('utf-8')) full = zip(self.title_list, self.href_list, self.description, self.article) for i in full: item = News(item_title=i[0], item_link=i[1], item_short_descr=i[2], article=i[3], category=main) item.save() i = []
def get(self, request): categories = Category.get_all_categories() categoryID = request.GET.get('category') if categoryID: products = Product.get_all_products_by_category_id(categoryID) else: products = Product.get_all_products() data = {'products': products, 'categories': categories} return render(request, 'index.html', data)
def test_send_notification_is_called_on_save( self, monkeypatch, mock_default_category: Category, mock_email_host_user: str, ): """ Ensures the send_email_notification_to_users function is called when saving a category """ mock_resize_image = Mock(return_value=mock_default_category.image) monkeypatch.setattr(Category, "resizeImage", mock_resize_image) mock_send_email_notification = Mock() monkeypatch.setattr( Category, "send_email_notification_to_users", mock_send_email_notification, ) mock_default_category.save() mock_send_email_notification.assert_called_once()
def handle(self, *args, **options): faker = Faker() file = "book genres.txt" for _ in range(300): Author(name=faker.name(), email=faker.email()).save() with open(file, "r") as file: for line in file: Category(title=line).save() for i in range(1000): author = Author.objects.order_by("?").last() category = Category.objects.order_by("?").last() Book(title=f"Title {i}", author=author, category=category).save()
def handle(self, *args, **options): fake = Faker() for _ in range(10): Author(name=fake.name(), email=fake.email(), age=random.randint(1, 100)).save() categories = ['Adventure', 'Detective', 'Mystery'] for category in categories: Category(name=category).save() for i in range(20): author = Author.objects.order_by('?').last() category = Category.objects.order_by('?').first() Book(title=f'Title {i}', author=author, category=category).save()
def add_category(request): if not request.user.is_superuser and Category.objects.filter( author=request.user).exists(): return render(request, 'main/category_already_exists.html') if request.method == 'POST': category = Category(author=request.user) form = CategoryForm(request.POST, request.FILES, instance=category) if form.is_valid(): form.save(commit=True) return redirect('index') else: form = CategoryForm() return render(request, 'main/add_category.html', {'form': form})
def setUp(self): ###### create Users ####### users = ['UserA', 'UserB', 'UserC', 'UserD'] for i in range(4): newUser = AUser(password='', last_login=timezone.now(), is_superuser=True, username=users[i], first_name='Firstname', last_name='Lastname', email='*****@*****.**', is_staff=True, is_active=True, date_joined=timezone.now()) newUser.save() testDBModel.testUsers.append(newUser) testDBModel.testUsersID.append(newUser.pk) ###### add Category ###### category1 = Category(name="hats") testDBModel.testCategory.append(category1) category1.save() category2 = Category(name="glasses") testDBModel.testCategory.append(category2) category2.save() user = User(id=testDBModel.testUsersID[0],user_id=testDBModel.testUsersID[0], user_image="profile1.jpg") user.save() ###### add product ###### addProducts = ["ProductA", "ProductB", "ProductC", "ProductD"] for i in range(4): # # add products newOne = Product(category=category1, name=addProducts[i], brand='brand', url='url', photo='photo', price=1.0, description='') newOne.save() testDBModel.testProducts.append(newOne) ###### add custom product ##### newAdded = Added(owner = testDBModel.testUsers[0], product = testDBModel.testProducts[0]) newAdded.save() newAdded = Added(owner = testDBModel.testUsers[1], product = testDBModel.testProducts[1]) newAdded.save() ###### add temp product ###### tempP = TempProduct(owner = testDBModel.testUsers[0], overlay = 'overlay1ol.jpg', token = '1', category = testDBModel.testCategory[0]) tempP.save() tempP = TempProduct(owner = testDBModel.testUsers[1], overlay = 'overlay2ol.jpg', token = '2', category = testDBModel.testCategory[0]) tempP.save() testDBModel.testOverlay = ['overlay1ol.jpg', 'overlay2ol.jpg'] ##### ## add comments ###### for i in range(4): newOne = Comment(product=testDBModel.testProducts[i], owner=testDBModel.testUsers[i], content="null", time = timezone.now()) newOne.save() testDBModel.testComments.append(newOne) # add to wishlist first for i in range(4): newOne = WishList(product=testDBModel.testProducts[i], owner=testDBModel.testUsers[i]) newOne.save() # add to FitList: for i in range(4): newOne = FitList(product = testDBModel.testProducts[i], owner = testDBModel.testUsers[i]) newOne.save()
def setUpDb(request): User.objects.all().delete() Category.objects.all().delete() Product.objects.all().delete() WishList.objects.all().delete() FitList.objects.all().delete() Comment.objects.all().delete() Added.objects.all().delete() TempProduct.objects.all().delete() glasses = Category(name='glasses') hats = Category(name='hats') headphones = Category(name='headphones') glasses.save() hats.save() headphones.save() rayban = Product(category = glasses, name='rayban glasses', brand = 'rayban',url='www.rayban.com', price = 129.9, description='stylish rayban', overlay='raybanol.png', photo='rayban.jpg') nike = Product(category = glasses, name='nike glasses', brand = 'nike', url='www.nike.com', photo='nike.jpg',overlay='nikeol.png', price = 99.9, description = 'sporty nike') adidas = Product(category = hats, name='adidas cap', brand = 'adidas', url='www.adidas.com', photo='addidas.jpg', overlay='addidasol.png', price = 56.9, description ='adidas cap!', yoffset = -0.58) levis = Product(category = hats, name='levis hat', brand = 'levis', url='www.levis.com', photo='levis.jpg', overlay='levisol.png', price = 67.9, description ='levis hat!', yoffset = -0.58) beats = Product(category = headphones, name='beats headphones', brand = 'beats', url='www.beats.com', photo='beats.jpg', overlay='beatsol.png', price = 256.9, description='stylish headphones!', yoffset = -0.15) sony = Product(category = headphones, name='sony headphones', brand = 'sony', url='www.sony.com', photo='sony.jpg', overlay="sonyol.png", price = 399.9, description='high quality headphones!', yoffset = -0.15) rayban.save() nike.save() adidas.save() levis.save() beats.save() sony.save() comment = Comment(product = rayban, owner = AUser.objects.get(pk=1), time=timezone.now(), content="Very nice glasses!") comment.save() wish = WishList(owner=AUser.objects.get(pk=1), product=rayban) wish.save() fit = FitList(owner=AUser.objects.get(pk=1), product=adidas) fit.save() return HttpResponse("Success!")
def default_category(_id: int = DEFAULT_ID, **kwargs) -> Category: """ Generates a default mock Category object when calling MockCategory.default_category(). Distincts Category objects can be created: - By providing unique `_id` values. - And/or by providing a number of custom kwargs. Eg. custom_category=MockCategory.default_category( _id=235, category_name="Super Category " category_slug="supercat-" ) will generates a Category object with the following attributes: * id = 235 * category_name = "Super Category 235" * summary = "summary for category 235" * image = "img-url-235.png" * category_slug = "cat-slug-235" """ category_data = { "id": _id, "category_name": kwargs.get("category_name", f"{MockCategory.DEFAULT_CATEGORY_NAME}{_id}"), "summary": kwargs.get("summary", f"{MockCategory.DEFAULT_SUMMARY}{_id}"), "image": kwargs.get( "image", f"{MockCategory.DEFAULT_IMAGE_NAME}{_id}.{MockCategory.DEFAULT_IMAGE_EXTENSION}", ), "category_slug": kwargs.get("category_slug", f"{MockCategory.DEFAULT_CATEGORY_SLUG}{_id}"), } dummy_category = Category.create(category_data) return dummy_category
def tree(self, request): categories = Category.get_tree() result = dict() cid = request.GET.get('cid') #Get's the category ID from the incoming GET request. cat = Category.objects.filter(pk=cid) #Filter the DB and return records matching cid if cat.count() == 1: cat = cat[0] path = [c.id for c in cat.get_ancestors()] result['path'] = path category_tree = self.makeTree(categories) serializer = self.get_serializer(category_tree, many=True) result['tree'] = serializer.data return Response(result)
def handle(self, *args, **kwargs): """Procedure which generate books.""" fake = Faker() for _ in range(100): Author(name=fake.name(), surname=fake.name(), email=fake.email()).save() for cat in open('main/management/commands/categories.txt', 'r'): Category(name=cat.rstrip()).save() authors = list(Author.objects.all()) categories = list(Category.objects.all()) for _ in range(500): author, category = random.choice(authors), random.choice( categories) Book(title=fake.text(max_nb_chars=25).replace('.', ''), author=author, category=category).save()
def tree(self, request): categories = Category.get_tree() result = dict() cid = request.GET.get( 'cid') #Get's the category ID from the incoming GET request. cat = Category.objects.filter( pk=cid) #Filter the DB and return records matching cid if cat.count() == 1: cat = cat[0] path = [c.id for c in cat.get_ancestors()] result['path'] = path category_tree = self.makeTree(categories) serializer = self.get_serializer(category_tree, many=True) result['tree'] = serializer.data return Response(result)
def renderEditResourceList(request, username, listId): if request.user.username == username: if request.method == "POST": updateResourceList(request) jsonResult = {"message": "OK"} return JsonResponse(jsonResult) else: returns = {} resourceList = get_object_or_404(ResourceList, id=listId) returns["resourceList"] = resourceList # jsonResourceList, jsonResources, jsonCategories returns["jsonResourceList"] = serialize( 'json', [resourceList], use_natural_foreign_keys=True) returns["jsonResources"] = serialize( 'json', Resource.objects.filter( resourceList=resourceList).order_by('position'), use_natural_foreign_keys=True) returns["jsonCategories"] = Category.getCategoryTreeJSON(Category) return render(request, 'user/editList.html', returns) else: return redirect('renderIndex')
def create(self, validated_data): category = Category(**validated_data) category.save() return category
def home_page(request): if not request.session.get(CART_ID_SESSION_KEY, None): shopping_cart = ShoppingCart.objects.create() request.session[CART_ID_SESSION_KEY] = shopping_cart.id categories = Category.get_category() return render(request, "home.html", {'categories': categories})
def create_test_category(self, name): category = Category(id=1, name=name) category.save() return category
def create(self, validated_data): category = Category(name=validated_data['name']) category.save() return category
def test_ensure_views_are_positive(self): cat = Category(name='test',views=-1, likes=0, slug='Random Category String') cat.save() self.assertEqual((cat.views >= 0), True) self.assertEqual(cat.slug, 'random-category-string')