Ejemplo n.º 1
0
    def test_delete_root_node(self):
        # Add a few other roots to verify that they aren't affected
        Category(name='Preceding root').insert_at(Category.objects.get(id=1),
                                                  'left',
                                                  save=True)
        Category(name='Following root').insert_at(Category.objects.get(id=1),
                                                  'right',
                                                  save=True)
        self.assertEqual(
            get_tree_details(Category.tree.all()),
            tree_details("""11 - 1 0 1 2
                                         1 - 2 0 1 20
                                         2 1 2 1 2 7
                                         3 2 2 2 3 4
                                         4 2 2 2 5 6
                                         5 1 2 1 8 13
                                         6 5 2 2 9 10
                                         7 5 2 2 11 12
                                         8 1 2 1 14 19
                                         9 8 2 2 15 16
                                         10 8 2 2 17 18
                                         12 - 3 0 1 2"""),
            'Setup for test produced unexpected result')

        Category.objects.get(id=1).delete()
        self.assertEqual(
            get_tree_details(Category.tree.all()),
            tree_details("""11 - 1 0 1 2
                                         12 - 3 0 1 2"""))
Ejemplo n.º 2
0
    def test_delete_root_node(self):
        # Add a few other roots to verify that they aren't affected
        Category(name='Preceding root').insert_at(Category.objects.get(id=1),
                                                  'left',
                                                  save=True)
        Category(name='Following root').insert_at(Category.objects.get(id=1),
                                                  'right',
                                                  save=True)
        self.assertTreeEqual(
            Category.objects.all(), """
            11 - 1 0 1 2
            1 - 2 0 1 20
            2 1 2 1 2 7
            3 2 2 2 3 4
            4 2 2 2 5 6
            5 1 2 1 8 13
            6 5 2 2 9 10
            7 5 2 2 11 12
            8 1 2 1 14 19
            9 8 2 2 15 16
            10 8 2 2 17 18
            12 - 3 0 1 2
        """)

        Category.objects.get(id=1).delete()
        self.assertTreeEqual(
            Category.objects.all(), """
            11 - 1 0 1 2
            12 - 3 0 1 2
        """)
Ejemplo n.º 3
0
    def test_delete_root_node(self, uuid4_mock):
        uuid4_mock.side_effect = iter(
            [char * 32 for char in string.hexdigits[2:16]])
        # Add a few other roots to verify that they aren't affected
        Category(name='Another root').save()
        Category(name='Yet another root').save()
        self.assertTreeEqual(
            Category.objects.all(), """
            1 - 0
            2 1 1
            3 2 2
            4 2 2
            5 1 1
            6 5 2
            7 5 2
            8 1 1
            9 8 2
            10 8 2
            11 - 0
            12 - 0
        """)

        Category.objects.get(id=1).delete()
        self.assertTreeEqual(
            Category.objects.all(), """
            11 - 0
            12 - 0
        """)
Ejemplo n.º 4
0
def load_products():
    '''Import products from API and add them in the database'''
    nbr = 0
    for category in CATS:
        cat = Category(name=category)
        cat.save()
        payload = {
            'action': 'process',
            'tagtype_0': 'categories',
            'tag_contains_0': 'contains',
            'tag_0': category,
            'countries': 'France',
            'page_size': '250',
            'json': 1
        }
        reponse = requests.get('https://fr.openfoodfacts.org/cgi/search.pl', \
                               params=payload)
        data = reponse.json()
        try:
            for product in data['products']:
                try:
                    name = product['product_name_fr']
                except KeyError:
                    try:
                        name = product['product_name']
                    except KeyError:
                        pass
                try:
                    nutrition_grade = product['nutrition_grade_fr']
                except KeyError:
                    try:
                        nutrition_grade = product['nutrition_grade']
                    except KeyError:
                        pass
                url = product['url']
                image = product['image_front_url']
                try:
                    nutrition_image = product["image_nutrition_small_url"]
                except KeyError:
                    pass
                name = name.replace("\n", " ")
                name = name.replace("'", "'")
                product = Product(name=name, category=cat, \
                                  nutrition_grade=nutrition_grade, url=url,\
                                  img_url=image, nut_url=nutrition_image)
                nbr += 1
                product.save()
        except KeyError:
            pass
Ejemplo n.º 5
0
 def test_product_model(self):
     product = Product(name="Nokia",
                       price=45.0,
                       category=Category(name="smartphone"))
     db.session.add(product)
     db.session.commit()
     self.assertEqual(Product.query.count(), 1)
Ejemplo n.º 6
0
def create_app(config):
    app = Flask(__name__)
    app.config.from_object(config)

    CORS(app, supports_credentials=True)

    #load blueprints
    for bp_name in blueprints:
        bp = import_string(bp_name)
        app.register_blueprint(bp)

    #flask拓展
    db.init_app(app)
    login_manager.init_app(app)
    bootstrap.init_app(app)

    with app.app_context():
        db.create_all()
        #输入设备类别
        from myapp.models import Category

        if Category.query.first() is None:
            for x in category_set:
                db.session.add(Category(type=x))
            db.session.commit()

    return app
Ejemplo n.º 7
0
def newCategory():
    ''' Add a new category'''
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCat = Category(name=request.form['name'],
                          user_id=login_session['user_id'])
        session.add(newCat)
        session.commit()
        return redirect(url_for('showCategories'))
    else:
        return render_template('newCategory.html')
Ejemplo n.º 8
0
def category_create(request):
    alreadycreated = False
    created = False
    context = RequestContext(request)
    if request.method == 'POST':
        category_form = CategoryForm(data=request.POST)
        user = request.user

        if category_form.is_valid():
            category_name = category_form.cleaned_data['name']
            category_ex = Category.objects.filter(name=category_name)
            if category_ex.exists():
                alreadycreated = True
            else:
                category = Category(name=category_name,
                                    user=user,
                                    pub_date=timezone.now())
                category.save()
                created = True

        else:
            create = False
            alreadycreated = True
    else:
        category_form = CategoryForm()
        #Search bar methods
        if request.method == 'GET' and 'search_category_button' in request.GET:
            search_category = request.GET.get('search_category')
            category_name = request.GET.get('search_name_c')
            if (category_name is not None) and (search_category is not None):
                return search_bar(request, search_category, category_name)
        if request.method == 'GET' and 'search_user_button' in request.GET:
            user_name = request.GET.get('search_name')
            if user_name is not None:
                return user_search(request, user_name)
    return render_to_response('myapp/base_category_create.html', {
        'alreadycreated': alreadycreated,
        'created': created
    }, context)
Ejemplo n.º 9
0
    def test_tree_id(self):

        opts = Category()._mptt_meta
        newtree = Category()
        setattr(newtree, opts.tree_id_attr, 234)
        newtree.save()
        self.assertEqual(getattr(newtree, opts.tree_id_attr), 234)

        newtree = Category()
        setattr(newtree, opts.tree_id_attr, 134)
        newtree.save()
        self.assertEqual(getattr(newtree, opts.tree_id_attr), 134)


        newtree = Category()
        setattr(newtree, opts.tree_id_attr, 135)
        newtree.save()
        self.assertEqual(getattr(newtree, opts.tree_id_attr), 135)

        newtree = Category()
        setattr(newtree, opts.tree_id_attr, 0)
        newtree.save()
        self.assertEqual(getattr(newtree, opts.tree_id_attr), 0)
Ejemplo n.º 10
0
def delete_categories():
  db.delete(Category.all().fetch(100))
  print_status("Categories are deleted succesfully.")
Ejemplo n.º 11
0
def index(request):
	lisUserProfile = {}
# 	listParentCategory = Category.objects(parentCategory = None)
	lisCategory =Category.objects()
# 	print('begin')
# 	for user in listCategory:
# 		if user.parentCategory is not None :
# 			print(user.parentCategory.categoryName)
# 	print('finish')
	
	if len(lisCategory) > 0:
		category=lisCategory[0]
		c = {'lisUserProfile':lisUserProfile,'listCategory':lisCategory,'category':category}
	else:
		c = {'lisUserProfile':lisUserProfile,'listCategory':lisCategory}
	if request.method == 'GET':
		return render(request, 'myapp/search-mentor.html', c)
	elif request.method == 'POST':
		
		try:
			lisUserProfile={}
			listCurriculumn={}
			lisCategory =Category.objects()
			user=User.objects.get(username=str(request.user))
			mentor=Mentor.objects(user=user.id)
			
			keyword = request.POST['search']
			parentCategory = request.POST['parentCategory'];
			childrenCategory =request.POST['childrenCategory'];
			#search data
# 			users = User.objects(Q(first_name__icontains=keyword) | Q(last_name__icontains=keyword))
# 			lisUserProfile = UserProfile.objects(user_id__in=users,is_mentor=True)
			
# 			categoryObject =Category.objects.get(id=childrenCategory)
			if len(mentor)>0:
				mt=mentor[0]
				listCurriculumn =Curriculumn.objects(category=childrenCategory ,name__icontains=keyword).order_by('published_date')
			else:
				listCurriculumn =Curriculumn.objects(category=childrenCategory ,name__icontains=keyword).order_by('published_date')
# 			listCurriculumn =Curriculumn.objects(name__icontains=keyword)
			c = {'lisUserProfile':lisUserProfile,'listCurriculumn':listCurriculumn,'listCategory':lisCategory,'search':keyword,'parentCategory':parentCategory,'childrenCategory':childrenCategory}
			#get data from mongodb
			c.update(csrf(request))
			c.update(context_processors.user(request))
			return render_to_response("myapp/search-mentor.html", c)
		except Exception:
			lisUserProfile={}
			listCurriculumn={}
			lisCategory =Category.objects()
			user=User.objects.get(username=str(request.user))
			mentor=Mentor.objects(user=user.id)
			keyword = request.POST['search']
			parentCategory = request.POST['parentCategory'];
			if len(mentor)>0:
				mt=mentor[0]
				listCurriculumn =Curriculumn.objects(name__icontains=keyword).order_by('published_date')
			else:
				listCurriculumn =Curriculumn.objects(name__icontains=keyword).order_by('published_date')
			c = {'lisUserProfile':lisUserProfile,'listCurriculumn':listCurriculumn,'listCategory':lisCategory,'search':keyword,'parentCategory':parentCategory}
			c.update(csrf(request))
			c.update(context_processors.user(request))
			return render_to_response("myapp/search-mentor.html", c)
	return render(request, 'myapp/search-mentor.html', c)
Ejemplo n.º 12
0
 def test_string_representation(self):
     expected = "A category"
     c1 = Category(name=expected)
     actual = str(c1)
     self.assertEqual(expected, actual)
Ejemplo n.º 13
0
 def test_category_model(self):
     category = Category(name="smartphone")
     db.session.add(category)
     db.session.commit()
     self.assertEqual(Category.query.count(), 1)
Ejemplo n.º 14
0
def import_reviews_restaurants():
    print('Indexing restaurants... look at progress:')
    aux = find_url_reviews_from_user()
    reviews = []
    restaurants = []
    categories = []

    for line in aux:
        try:
            types = line[4]
            restaurantName = line[0]
            types = types.split(',')
            for food_type in types:
                name = food_type.strip()
                categories.append(Category(name=name))

        except:
            e = sys.exc_info()[0]
            print("Error when creating a categpory: {0}".format(e))
    categoriesnew = []
    names = []
    categories = Category.objects.filter()
    for category in categories:
        names.append(category.name)

    for category in categories:
        if category.name in names:
            names = names
        else:
            names.append(category.name)
            categoriesnew.append(category)
    Category.objects.bulk_create(categoriesnew)

    for line in aux:
        try:
            name = line[0]
            town = line[1]
            address = line[2]
            phone = line[3]
            food_types = line[4]
            special_diets = line[5]
            link = line[6]

            restaurants.append(
                Restaurant(name=name,
                           town=town,
                           address=address,
                           phone=phone,
                           special_diets=special_diets,
                           link=link))

        except:
            e = sys.exc_info()[0]
            print("Error when creating a restaurant: {0}".format(e))
    names = []
    restaurantsAll = Restaurant.objects.filter()
    for restaurant in restaurantsAll:
        names.append(restaurant.name)

    restaurantsNew = []
    for restaurant in restaurants:
        if restaurant.name in names:
            names = names
        else:
            names.append(restaurant.name)
            restaurantsNew.append(restaurant)
    Restaurant.objects.bulk_create(restaurantsNew)

    for line in aux:
        types_food = line[4]
        types_food = types_food.split(',')
        for type_food in types_food:
            categories = Category.objects.filter()
            for category in categories:
                if type_food.strip() == category.name:
                    if len(Restaurant.objects.filter(name=line[0])) > 0:
                        Restaurant.objects.filter(
                            name=line[0])[0].categories.add(category)

    for line in aux:
        try:
            rate = line[9]
            visit_date = line[10]
            title = line[7]
            description = line[8]
            restaurant_name = line[0]
            user_name = line[11]

            restaurant_id = find_db_restaurant(restaurant_name)[0][0]
            user_id = find_db_user(user_name)[0][0]

            reviews.append(
                Review(user_id=user_id,
                       restaurant_id=restaurant_id,
                       rate=rate,
                       visit_date=visit_date,
                       title=title,
                       description=description))

        except:
            e = sys.exc_info()
            print("Error when creating a review or user: {0}".format(e))
    Review.objects.bulk_create(reviews)
Ejemplo n.º 15
0
def import_restaurants():
    print('Indexing restaurants... look at progress:')
    restaurantsAux = find_url_restaurant()
    Restaurant.objects.all().delete()
    Category.objects.all().delete()
    restaurants = []
    categories = []

    for restaurantAux in restaurantsAux:
        try:
            types = restaurantAux[4]
            restaurantName = restaurantAux[0]
            types = types.split(',')
            for food_type in types:
                name = food_type.strip()
                categories.append(Category(name=name))

        except:
            e = sys.exc_info()[0]
            print("Error when creating a categpory: {0}".format(e))
    names = []
    categoriesnew = []
    for category in categories:
        if category.name in names:
            names = names
        else:
            names.append(category.name)
            categoriesnew.append(category)
    Category.objects.bulk_create(categoriesnew)

    for restaurantAux in restaurantsAux:
        try:
            name = restaurantAux[0]
            town = restaurantAux[1]
            address = restaurantAux[2]
            phone = restaurantAux[3]
            special_diets = restaurantAux[5]
            link = restaurantAux[6]

            restaurants.append(
                Restaurant(name=name,
                           town=town,
                           address=address,
                           phone=phone,
                           special_diets=special_diets,
                           link=link))

        except:
            e = sys.exc_info()[0]
            print("Error when creating a restaurant: {0}".format(e))
    names = []
    restaurantsNew = []
    for restaurant in restaurants:
        if restaurant.name in names:
            names = names
        else:
            names.append(restaurant.name)
            restaurantsNew.append(restaurant)
    Restaurant.objects.bulk_create(restaurantsNew)

    for restaurantAux in restaurantsAux:
        types_food = restaurantAux[4]
        types_food = types_food.split(',')
        for type_food in types_food:
            categories = Category.objects.filter()
            for category in categories:
                if type_food.strip() == category.name:
                    Restaurant.objects.filter(
                        name=restaurantAux[0])[0].categories.add(category)