Пример #1
0
    def test_liking_image(self):
        """
        admin creates a sharedfile.  Joe (authenticated) likes it.
        
        Response should be successful and include following fields:
        
            {
             'response' : 'ok',
             'count' : 1,
             'share_key', 1
            }
        
        A new entry should be present in favorites table.  like_count on the sharedfile
        should be incremented.
        """
        sharedfile = self._create_sharedfile(self.admin)
        self.sign_in('joe', 'asdfasdf')
        favorite = Favorite.get('user_id = %s and sharedfile_id = %s' %
                                (self.joe.id, sharedfile.id))
        self.assertEqual(None, favorite)
        self.assertEqual(0, sharedfile.like_count)

        response = self.post_url('/p/%s/like?json=1' % sharedfile.share_key)
        json_response = json.loads(response.body)
        self.assertEqual(json_response['response'], 'ok')
        self.assertEqual(json_response['count'], 1)
        self.assertEqual(json_response['share_key'], sharedfile.share_key)
        favorite = Favorite.get('user_id = %s and sharedfile_id = %s' %
                                (self.joe.id, sharedfile.id))
        self.assertTrue(favorite)
        sharedfile_fetched = Sharedfile.get("id = %s", sharedfile.id)
        self.assertEqual(1, sharedfile_fetched.like_count)
Пример #2
0
def favorite():
    """Favorite a song."""

    user = g.user

    if not user:
        flash('Sign in or sign up to favorite', 'dark')
        return redirect('/sign-up')

    song_key = request.json['key']
    song_fav = Favorite(user_id=user.id, song_key=song_key)

    add_to_songs(song_key)

    user.favorites.append(song_fav)

    try:
        db.session.commit()

        return jsonify(action='favorited')

    except (IntegrityError, FlushError):
        db.session.rollback()

        song_fav = Favorite.query.filter_by(user_id=user.id, song_key=song_key)
        song_fav.delete()

        db.session.commit()

        return jsonify(action='unfavorited')
Пример #3
0
 def setup_fav(self):
     f1 = Favorite(rest_id=self.testrest.id,
                   rest_name='Yummy',
                   user_id=8989)
     f2 = Favorite(rest_id=self.r1_id, rest_name="Sushi", user_id=8989)
     db.session.add_all([f1, f2])
     db.session.commit()
Пример #4
0
    def favorites_action(self, product, action):
        actions = ["add", "remove"]
        if action not in actions:
            abort(404)

        found_product = self.retrieve_product(product)
        if type(found_product) is not str:
            db_name = found_product.db_name
            api_call = getattr(g.db, db_name).find_one({"_id": ObjectId(request.json.get("call_id"))})
            if not api_call:
                abort(404)

            user_favorites = g.db.favorites.find_one({"username": session.get("username")})
            if not user_favorites and action == "add":
                user_favorites = {"username": session.get("username")}
            elif user_favorites is None:
                return jsonify(code=200)

            favorite = Favorite(user_favorites)
            if action == "add":
                favorite.add_to_favorites(
                    request.json.get("call_id"), db_name, found_product.app_url, session.get("username")
                )
            elif action == "remove":
                favorite.remove_favorite(request.json.get("call_id"), session.get("username"))

            return jsonify(code=200)
        abort(404)
Пример #5
0
def favorite_creator(num_favorites):
    for i in range(num_favorites):
        Favorite.create(
            uuid=fake.uuid4(),
            item=Item.select().order_by(fn.Random()).get(),
            user=User.select().order_by(fn.Random()).get(),
        )
Пример #6
0
def create_tables():
    User.create_table(fail_silently=True)
    Item.create_table(fail_silently=True)
    Address.create_table(fail_silently=True)
    Order.create_table(fail_silently=True)
    OrderItem.create_table(fail_silently=True)
    Picture.create_table(fail_silently=True)
    Favorite.create_table(fail_silently=True)
Пример #7
0
 def favorite_insert(self, favorite):
     if favorite.from_datastore:
         favorite_with_parent = favorite
     else:
         favorite_with_parent = Favorite(parent=main.get_parent_key(endpoints.get_current_user()),
                                 company_entity_key = favorite.company_entity_key)
          
     favorite_with_parent.put()
     return favorite_with_parent
Пример #8
0
    def favorite_insert(self, favorite):
        if favorite.from_datastore:
            favorite_with_parent = favorite
        else:
            favorite_with_parent = Favorite(
                parent=main.get_parent_key(endpoints.get_current_user()),
                company_entity_key=favorite.company_entity_key)

        favorite_with_parent.put()
        return favorite_with_parent
Пример #9
0
    def favorite_for_company(self, request):
        user = endpoints.get_current_user()
        query = Favorite.query(ancestor=main.get_parent_key(user)).filter(
            Favorite.company_entity_key == request.company_entity_key)

        returnFavorite = Favorite(message="null")

        for favorite in query:
            returnFavorite = favorite
            break

        return returnFavorite
Пример #10
0
def delete_user(id):

    User.delete().where(User.id == id).execute()
    Media.delete().where(Media.user_id == id).execute()
    Favorite.delete().where(Favorite.user_id == id).execute()
    Comment.delete().where(Comment.user_id == id).execute()

    return jsonify(data={},
                   status={
                       'code': 200,
                       'message': 'User deleted from all resources'
                   })
Пример #11
0
    def setUp(self):
        """Add sample user/post/fav"""
        User.query.delete()
        Post.query.delete()
        Favorite.query.delete()

        # create test user
        u1 = User.signup(display_name='test1',
                username='******',
                password="******",
                caption="i am test user 1")

        u2 = User.signup(display_name='test2',
                            username='******',
                            password="******",
                            caption="test2")

        u3 = User.signup(display_name='test3',
                            username='******',
                            password="******",
                            caption="im tester 3")

        db.session.add(u1)
        db.session.add(u2)
        db.session.add(u3)
        db.session.commit()

        self.u1 = u1
        self.u1_id = u1.id
        self.u2_id = u2.id
        self.u3_id = u3.id

        # create test post for test user
        p1 = Post(title="test title", image="https://images.unsplash.com/photo-1509840841025-9088ba78a826?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80", description="This is a test2", lat=38.9196, lng=-2.0507, created_dt="2021-03-16 10:45:53.875247", place_name="Testopia", user_id=self.u1.id)

        db.session.add(p1)
        db.session.commit()
        self.p1_id = p1.id
        self.p1_title = p1.title
        self.p1_user = p1.user_id

        f1 = Favorite(post_id=self.p1_id, user_id=self.u1_id)
        f2 = Favorite(post_id=self.p1_id, user_id=self.u2_id)
        f3 = Favorite(post_id=self.p1_id, user_id=self.u3_id)

        db.session.add(f1)
        db.session.add(f2)
        db.session.add(f3)
        db.session.commit()
Пример #12
0
def post_favorite():
    if not request.json or not 'user_id' in request.json or not 'article_id' in request.json:
        abort(400)
    user_id = request.json['user_id']
    article_id = request.json['article_id']
    from models import Favorite
    obj = Favorite.objects(user_id=user_id)
    if obj:
        favorite = obj.get()
    else:
        favorite = Favorite(user_id=user_id)
    favorite.article_list.append(article_id)
    favorite.article_list.sort(reverse=True)
    favorite.save()
    return jsonify({"response_msg": "success", "response_code": 201}), 201
Пример #13
0
def add_favorite(user, item, id=None):
    """Link the favorite item to user."""
    return Favorite.create(
        uuid=id or uuid.uuid4(),
        item=item,
        user=user,
    )
def add_favorite(bot, update, item: Bot, callback_alert=None):
    user = User.from_update(update)
    uid = util.uid_from_update(update)
    mid = util.mid_from_update(update)
    from components.basic import main_menu_buttons
    main_menu_markup = ReplyKeyboardMarkup(main_menu_buttons(uid in settings.MODERATORS))

    fav, created = Favorite.add(user=user, item=item)
    if created:
        Statistic.of(user, 'add-favorite', item.username)
        text = mdformat.love("{} added to your {}favorites.".format(fav.bot, '' if callback_alert else '/'))
        if callback_alert:
            update.callback_query.answer(text=text, show_alert=False)
        else:
            msg = util.send_md_message(bot, uid, text, to_edit=mid, reply_markup=main_menu_markup)
            mid = msg.message_id
            util.wait(bot, update)
            send_favorites_list(bot, update, to_edit=mid)
    else:
        text = mdformat.none_action(
            "{} is already a favorite of yours.{}".format(fav.bot, '' if callback_alert else ' /favorites'))
        if callback_alert:
            update.callback_query.answer(text=text, show_alert=False)
        else:
            util.send_md_message(bot, uid, text, reply_markup=main_menu_markup)
    return ConversationHandler.END
Пример #15
0
    def test_unliking_image(self):
        """
        admin creates a sharedfile. Joe likes it. Then, joe decides to unlike it.

        Unliking an already liked image, should result in following response:

            {
             'response' : 'ok',
             'count' : 0,
             'share_key', 1
            }

        An entry should still be present in Favorites table, with deleted = 1.
        Like count should be reset on the sharedfile.
        """
        sharedfile = self._create_sharedfile(self.admin)
        self.joe.add_favorite(sharedfile)
        sharedfile_fetched = Sharedfile.get("id = %s", sharedfile.id)
        self.assertEqual(1, sharedfile_fetched.like_count)

        self.sign_in('joe', 'asdfasdf')
        response = self.post_url('/p/%s/unlike?json=1' % sharedfile.share_key)
        json_response = json.loads(response.body)
        self.assertEqual(json_response['response'], 'ok')
        self.assertEqual(json_response['count'], 0)
        self.assertEqual(json_response['share_key'], sharedfile.share_key)

        favorite = Favorite.get('user_id= %s and sharedfile_id = 1' %
                                self.joe.id)
        self.assertTrue(favorite)
        self.assertTrue(favorite.deleted)
        sharedfile_fetched = Sharedfile.get("id = %s", sharedfile.id)
        self.assertEqual(0, sharedfile_fetched.like_count)
Пример #16
0
def fav_post(post_id):
    """Handle likes for a post"""

    if g.user:
        user = g.user.id

        post_favs = msg = Favorite.query.filter(
            Favorite.post_id == post_id).all()
        user_faved = [f.user_id for f in post_favs]

        # check if user id is in the users that favorited the post
        if user in user_faved:
            msg = Favorite.query.filter(Favorite.post_id == post_id,
                                        Favorite.user_id == user).delete()
            db.session.commit()
        # if user has not favorited
        else:
            f = Favorite(post_id=post_id, user_id=user)
            db.session.add(f)
            db.session.commit()

        return redirect(f"/post/{post_id}")
    # Throw warning if there is no user
    else:
        flash("Please login or create an account to favorite this post!",
              "danger")
        return redirect(f"/post/{post_id}")
Пример #17
0
def add_favorite(drink_id):
    """Favorite drink with current user."""

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")

    user = g.user
    new_drink = Drink(id=drink_id)
    db.session.add(new_drink)
    db.session.commit()

    favorited = [f.id for f in user.favorites]
    favorited_drinks = Drink.query.filter(Drink.id.in_(favorited)).all()

    if drink_id in favorited:
        favorite = Favorite.query.filter(
            Favorite.user_id == user.id,
            Favorite.drink_id == drink_id).first()
        db.session.delete(favorite)
        db.session.commit()
        return redirect("/")

    new_favorite = Favorite(user_id=g.user.id, drink_id=drink_id)
    db.session.add(new_favorite)
    db.session.commit()

    return redirect(f"/users/{user.id}")
Пример #18
0
    def test_favorites_for_user(self):
        """
        Returns favorites for user, sorted in reverse order of when they were added.

        TODO: test the before_id & after_id parameters.
        """
        new_user = User(name='new_user',
                        email='*****@*****.**',
                        verify_email_token='created',
                        email_confirmed=0,
                        is_paid=1)
        new_user.save()
        another_sharedfile = Sharedfile(source_id=self.sourcefile.id, name="my shared file",user_id=self.user.id, \
            content_type="image/png", share_key="ok", description="some\ndescription\nhere", source_url="https://www.mltshp.com/?hi")
        another_sharedfile.save()

        #one favorite shared file
        new_user.add_favorite(self.sharedfile)
        new_user.add_favorite(another_sharedfile)

        #this should only return one, since we don't dupe source_ids
        sfs = Sharedfile.favorites_for_user(new_user.id)
        self.assertEqual(sfs[0].id, self.sharedfile.id)

        #but really, underneath we should have two favorites
        fs = Favorite.where('user_id = %s', new_user.id)

        self.assertEqual(2, len(fs))
Пример #19
0
    def test_favorite_page_with_favorite(self):
        with self.client as client:
            with client.session_transaction() as sess:
                sess[KEY]=999

            new_fav = Favorite(id=1, user_id=999, drink_id=1)
            db.session.add(new_fav)

            resp = client.get('/user/favorites')

            self.assertIn('<div class="carousel-inner">', str(resp.data))       
            self.assertIn('<div class="card ', str(resp.data))       
            self.assertIn('<h5 class="card-title">A1</h5>', str(resp.data))       
            self.assertIn('<a href="/drinks/1"', str(resp.data))

            self.assertIn('<table ', str(resp.data))  
            self.assertIn('<thead>', str(resp.data))  
            self.assertIn('<tr ', str(resp.data))  
            self.assertIn('id</th>', str(resp.data))  
            self.assertIn('Name</th>', str(resp.data))  
            self.assertIn('Ingredients</th>', str(resp.data))  
            self.assertIn('<tbody>', str(resp.data))  
            self.assertIn('<tr>', str(resp.data))  
            self.assertIn('1</th>', str(resp.data))  
            self.assertIn('<td>', str(resp.data))  
            self.assertIn('<a href="/drinks/1">A1</a>', str(resp.data))  
            self.assertIn('Recommend</button>', str(resp.data))  
            self.assertIn('Remove</button>', str(resp.data))
Пример #20
0
def add_planet(username):
    """Adds a planet to a user list and redirects to search results page"""

    if not g.user or g.user.username != username:
        flash("Unauthorized access.")
        return redirect("/")

    messages = []
    list_id = request.json["list_id"]
    planets = request.json["planets"]
    user_list = List.query.get(list_id)
    user = user_list.user

    for planet in planets:
        if Favorite.query.filter_by(list_id=list_id,
                                    planet_name=planet).first() == None:
            favorite = (Favorite(planet_name=planet, list_id=list_id))
            db.session.add(favorite)
            messages.append(f"{planet} added to {user_list.name}")
        else:
            messages.append(f"{planet} already exists in {user_list.name}")

    db.session.commit()

    resp = {"messages": messages}

    return (jsonify(resp), 201)
Пример #21
0
    def test_show_favorites(self):
        """Test favorite page."""

        with app.test_client() as client:
            with client.session_transaction() as session:
                session["USER_ID"] = self.user_id
        
        # Without favorites
        res = client.get("/favorites")
        html = res.get_data(as_text=True)

        self.assertEqual(res.status_code, 200)
        self.assertIn("You have <b>no</b> favorite songs.", html)
        
        # With favorites
        favorite = Favorite(user_id=self.user_id, song_key=SONG_JSON["key"])
        song = Song(playlist_id=None, external_song_key=SONG_JSON["key"], song_title=SONG_JSON["title"], song_artist=SONG_JSON["subtitle"])

        db.session.add_all((favorite, song))
        db.session.commit()
        
        res = client.get("/favorites")
        html = res.get_data(as_text=True)

        self.assertEqual(res.status_code, 200)
        self.assertIn(SONG_JSON["title"], html)
    def setUp(self):
        """Create test client, add sample data."""

        User.query.delete()
        List.query.delete()
        Favorite.query.delete()

        self.client = app.test_client()

        user = User(username="******",
                    first_name="Test",
                    last_name="User",
                    email="*****@*****.**",
                    password="******")
        db.session.add(user)
        self.user = User.query.filter_by(username="******").first()

        user_list = List(name="testplanets",
                         description="my testplanets",
                         user_id=self.user.id)
        db.session.add(user_list)
        self.list = List.query.filter_by(name="testplanets").first()

        favorite = Favorite(list_id=self.list.id, planet_name="GJ 876 c")
        db.session.add(favorite)
        self.favorite = Favorite.query.filter_by(list_id=self.list.id).first()

        db.session.commit()
Пример #23
0
def favorite_recipe(recipe_id):
    """Add or remove favorite recipe"""

    if not g.user:
        flash("Login/Signup To Save Recipes.", "danger")
        return redirect(f"/recipe/{recipe_id}")

    user = User.query.get_or_404(g.user.id)
    recipe = Recipe.query.get_or_404(recipe_id)
    fav_recipes = Favorite.query.filter_by(user_id=user.id).all()

    # check to see if recipe in favorite recipes already. If already a favorite, remove from favorite recipes. If not, add to favorite recipes.
    fav_recipe_ids = [fav_recipe.recipe_id for fav_recipe in fav_recipes]

    if recipe.id in fav_recipe_ids:  # If this recipe id is already in current user's favorites, delete it

        for fav in fav_recipes:  # loop through user's favorite recipes
            if recipe.id == fav.recipe_id:  # when it gets to the recipe we are trying to delete
                f = Favorite.query.get(
                    fav.id
                )  # get the Favorite object that relates this user this recipe by the Favorite's id
                db.session.delete(f)
                db.session.commit()
            else:
                pass

        flash(f"Removed {recipe.title} from favorites", "danger")
        return redirect(f"/recipe/{recipe.id}")

    else:
        g.user.recipes.append(Favorite(user_id=user.id, recipe_id=recipe_id))
        db.session.commit()

        flash(f"Added {recipe.title} to favorites", "success")
        return redirect(f"/recipe/{recipe.id}")
Пример #24
0
def favorites(user_id=None):
    if request.method == 'GET':
        if user_id is not None:
            users = User.query.all()
            if user_id > len(users):
                return jsonify({ "fail": "user does not exist" }), 404
            user = User.query.get(user_id)
            if not user.favorites:
                return jsonify({ "fail": "user does not have favorites" }), 404
            
            return jsonify({
                "success": "Favorites found",
                "favorites": user.favorites.serialize()
                }),200
        else:
            users= User.query.all()
            users = list(
                map(lambda user_favs: user.serialize(), users)
            )

    if request.method == 'POST':
      
        id_vehicle = request.json.get('id_vehicle',)
        id_character = request.json.get('id_character')
        id_planet = request.json.get('id_planet')

        user = User.query.filter_by(id = user_id).first()
        if not user:
            return jsonify({"fail": "the indicated user does not exist"})
            
        vehicle = Vehicle.query.filter_by(id= id_vehicle).first()
        character = Character.query.filter_by(id=id_character).first()
        planet = Planet.query.filter_by(id=id_planet).first()

        favorite = Favorite()
        user.favorites = favorite
        favorite.vehicles.append(vehicle)
        favorite.characters.append(character)
        favorite.planets.append(planet)

        favorite.save()
        user.update()

        return jsonify({
            "success": "favorites added",
            "favorites": favorite.serialize()
        })
Пример #25
0
    def test_add_favorite(self):
        """
        A user should be able to favorite a sharedfile if:
         - it belongs to another user
         - it's not already favorited
         - if it's been favorited, but favorite was "deleted"

        A user shouldn't be able to favorite a sharedfile if they own it.
        """
        # Create new user with their own sharedfile.
        new_user = User(name='newuser',email='*****@*****.**', \
            verify_email_token = 'created', password='******', email_confirmed=1, is_paid=1)
        new_user.save()
        new_sharedfile = Sharedfile(source_id=self.sourcefile.id, name="my shared file", \
            user_id=new_user.id, content_type="image/png", share_key="ok")
        new_sharedfile.save()

        # One should be able to favorite another user's sharedfile
        self.assertTrue(self.user.add_favorite(new_sharedfile))
        favorites = Favorite.all("where user_id = %s and sharedfile_id = %s and deleted = 0", \
            self.user.id, new_sharedfile.id)
        self.assertEqual(1, len(favorites))

        # Can't favorite an already favorited sharedfile.
        self.assertFalse(self.user.add_favorite(new_sharedfile))
        favorites = Favorite.all("where user_id = %s and sharedfile_id = %s and deleted = 0", \
            self.user.id, new_sharedfile.id)
        self.assertEqual(1, len(favorites))

        # A favorite with "deleted" flag set, should have flag unset and
        # return True when add_favorite called
        favorite = Favorite.get("user_id = %s and sharedfile_id = %s and deleted = 0", \
            self.user.id, new_sharedfile.id)
        favorite.deleted = True
        favorite.save()
        self.assertTrue(self.user.add_favorite(new_sharedfile))
        favorites = Favorite.all("where user_id = %s and sharedfile_id = %s and deleted = 0", \
            self.user.id, new_sharedfile.id)
        self.assertEqual(1, len(favorites))

        # Can't favorite one's own sharedfile.
        self.assertTrue(self.sharedfile.user_id, self.user.id)
        self.assertFalse(self.user.add_favorite(self.sharedfile))
        favorites = Favorite.all("where user_id = %s and sharedfile_id = %s and deleted = 0", \
            self.user.id, self.sharedfile.id)
        self.assertEqual(0, len(favorites))
Пример #26
0
 def test_post_favorites2__fail(self):
     user = add_user(USER1, PASS1)
     data = {"data": {"type": "favorite", "attributes": {"item_uuid": ""}}}
     resp = open_with_auth(self.app, API_ENDPOINT.format('favorites/'),
                           'POST', user.email, PASS1, 'application/json',
                           json.dumps(data))
     assert resp.status_code == BAD_REQUEST
     assert Favorite.select().count() == 0
Пример #27
0
def favorite_applicant(request, event_name, name):
  try:
    applicant = Applicant.objects.get(norm_name=normalize_name(name), event__name=event_name)
  except Applicant.DoesNotExist:
    raise Http404('Applicant does not exist.')
  if request.method == 'POST':
    try:
      fav = Favorite.objects.get(applicant=applicant, scholar=request.user.mcuser)
      fav.delete()
      return JsonResponse({'msg': 'unstarred'})
    except Favorite.DoesNotExist:
      favs = Favorite.objects.filter(scholar=request.user.mcuser, applicant__event__name=event_name)
      if favs.count() < 5:
        fav = Favorite(applicant=applicant, scholar=request.user.mcuser)
        fav.save()
        return JsonResponse({'msg': 'starred'})
      return JsonResponse({'msg': 'max stars given'})
  return HttpResponse('Please POST')
Пример #28
0
    def test_add_remove_fav(self):

        new_fav = Favorite(user_id=11111, drink_id=1)
        new_fav.id = 10000
        db.session.add(new_fav)

        fav = Favorite.query.get(10000)

        self.assertEqual(fav.id, 10000)
        self.assertEqual(fav.user_id, 11111)
        self.assertEqual(fav.drink_id, 1)

        db.session.delete(fav)
        db.session.commit()

        check_fav = Favorite.query.get(10000)

        self.assertEqual(check_fav, None)
Пример #29
0
    def test_favorite_keys(self):
        """Test that user's favorite song keys are returned"""

        favorite = Favorite(user_id=self.user_id, song_key=SONG_JSON["key"])

        db.session.add(favorite)
        db.session.commit()

        self.assertIn(int(SONG_JSON['key']), self.user.favorites_keys())
Пример #30
0
def set_tweet_as_favorite(user, id_):
    try:
        check_tweet_existence(id_)
        new_fav = Favorite(user_id=user['id'], tweet_id=id_)
        db.session.add(new_fav)
        db.session.commit()
        return jsonify(success=True), 201
    except Exception as e:
        return str(e)
Пример #31
0
def create_favorite():
    current_user = get_jwt_identity()
    body = request.get_json()
    new_favorite = Favorite(item_id=new_favorite["item_id"], item_type=new_favorite["item_type"], user_id=new_favorite["user_id"])

    db.session.add(new_favorite)
    db.session.commit()

    return jsonify({"new favorite": body}), 200
Пример #32
0
def drops_all_tables(database):
    """Doesn't drop unknown tables."""
    tables = database.get_tables()
    for table in tables:
        if table == 'item':
            Item.drop_table()
        if table == 'order':
            Order.drop_table()
        if table == 'user':
            User.drop_table()
        if table == 'orderitem':
            OrderItem.drop_table()
        if table == 'address':
            Address.drop_table()
        if table == 'picture':
            Picture.drop_table()
        if table == 'favorite':
            Favorite.drop_table()
Пример #33
0
def create_favorite():

    body = request.get_json()
    new_favorite = Favorite(name=body["name"], category=body["category"], user_id=body["user_id"])
    db.session.add(new_favorite)
    db.session.commit()
    favorites = Favorite.query.all()
    all_favorites = list(map(lambda x: x.serialize(), favorites))
    return jsonify(all_favorites), 200
Пример #34
0
    def show_favorite(self):
        ###############################
        #        SHOW Favorite        #
        ###############################

        # Show user's Favorite product and substitute
        self.get_data(Favorite())

        self.choosing_option()
Пример #35
0
def get_favorite(id):
    from models import Favorite, Item
    favorite_items = []
    obj = Favorite.objects(user_id=id)
    if obj:
        favorite = obj.get()
        for article_id in favorite.article_list:
            item = Item.objects(artical_id=article_id).get()
            favorite_items.append(item)
    return dumps(convert_items_to_list(favorite_items))
Пример #36
0
def del_favorite(user_id, article_id):
    from models import Favorite
    obj = Favorite.objects(user_id=user_id)
    if obj:
        favorite = obj.get()
        if article_id in favorite.article_list:
            obj.update_one(pull__article_list=article_id)
            return jsonify({"response_msg": "success",
                            "response_code": 200}), 200
    return jsonify({"response_msg": "Not Found", "response_code": 404}), 404
Пример #37
0
def favorite_action(request,vidnum):
	try:
		venue = Venue.objects.get(id=vidnum)
		old_favorite = get_or_none(Favorite,venue=venue, user=request.user)
		status = 0
		if old_favorite:
			old_favorite.delete()
			status = 0
		else:
			fav = Favorite()
			fav.user = request.user
			fav.venue = venue
			fav.save()
			status = 1
		return HttpResponse(json.dumps({"is_fav": status}) ,content_type="applcation/json")
	except Exception, e:
		print e
		res = HttpResponse()
		res.status_code = 404
		return res
Пример #38
0
 def favorite_for_company(self, request):
     user = endpoints.get_current_user()
     query = Favorite.query(ancestor=main.get_parent_key(user)).filter(Favorite.company_entity_key == request.company_entity_key)
     
     returnFavorite = Favorite(message="null")
     
     for favorite in query:
         returnFavorite = favorite
         break
     
     return returnFavorite
Пример #39
0
 def company_list_favorite(self, query):
     # list of companies with favorite boolean attached to favorites
     user = endpoints.get_current_user()
     
     for company in query:
         company.favorite = False
         
         key = ndb.Key(urlsafe=company.entityKey)
         favQuery = Favorite.query(ancestor=main.get_parent_key(user)).filter(Favorite.company_entity_key == key)
         
         for favorite in favQuery:
             company.favorite = True
        
     return query
Пример #40
0
def article_with_user(article_id):
    if not request.json:
        abort(400)
    if not 'user_id' in request.json:
        abort(400)
    user_id = request.json['user_id']
    from models import Artical, Favorite
    article = Artical.objects(artical_id=article_id).get()
    obj = Favorite.objects(user_id=user_id)
    if obj:
        favorite = obj.get()
        article_list = favorite.article_list
        if article_id in article_list:
            return dumps(convert_artical_to_dict(article, True))
    return dumps(convert_artical_to_dict(article, False))
Пример #41
0
    def company_insert_favorite(self, request):
        user = endpoints.get_current_user()
        favBool = request.favorite
        key = ndb.Key(urlsafe=request.entityKey)
        
        query_favorite = Favorite.query(ancestor=main.get_parent_key(user)).filter(Favorite.company_entity_key == key)
        
        my_favorite = Favorite(parent=main.get_parent_key(user), company_entity_key=key)
        
        found = False
        
        logging.info(favBool)
        
        for item in query_favorite:
            logging.info("favorite logged")
            my_favorite = item
            found = True
        
        logging.info(my_favorite)
        
        if favBool:
            
            logging.info("favorite bool = True")
            
            if not found:
                
                logging.info("creating favorite")
#                 my_favorite = Favorite(parent=main.get_parent_key(user), company_entity_key=key)
                my_favorite.put()
        else:
            
            if found:
                logging.info("delete")
                my_favorite.key.delete()
            
        return request
Пример #42
0
def favorites(request):
    """
    Method which handles favorites request
    """
    if request.GET:
        g = request.GET
        action = g.get('a', None)
        fromS = g.get('fromS', None)
        viaS = g.get('viaS', None)
        ftype = g.get('type', DEPARTURES)
        
        # Check if we are trying to delete an existing favorite
        if action == 'd':
            id = g.get('id', None)
            if not id:
                return _redirect_home_with_msg(request, "ID missing. Cannot delete favorite.")
            try:
                fav = Favorite.objects.get(id=id, user=request.user)
                fav.delete()
                return _redirect_home_with_msg(request, "Favorite removed successfully.")
            except Favorite.DoesNotExist:
                return _redirect_home_with_msg(request, "Invalid favorite id.")
        
        if not fromS:
            return _redirect_home_with_msg(request, "location missing. cannot save favorite!")
        
        crslist = _getCRS(fromS)
        filterCrslist = _getCRS(viaS)
        if not crslist:
            return _redirect_home_with_msg(request, "Invalid station name")
        if len(crslist) > 1 or (filterCrslist and len(filterCrslist) > 1):
            return _redirect_home_with_msg(request, "Multiple station names retrieved.")
        
        fsn, crs = crslist[0]
        vsn = filterCrs = None
        if filterCrslist:
            vsn, filterCrs = filterCrslist[0]
        
        # Construct a good favorite name
        fname = fsn + ' ' + ftype
        desc = ''
        if vsn:
            desc = 'Via ' + vsn
        
        # See if the user is logged in.
        loggedIn = _checkLoggedIn(request)
        return render_to_response('fav.html', {'fname' : fname,
                                'fromS' : fromS,
                                'viaS' : viaS,
                                'ftype' : ftype,
                                'desc' : desc,
                                'loggedIn' : loggedIn,
                                },
                                context_instance=RequestContext(request))
    
    if request.POST:
        p = request.POST
        fromS = p.get('fromS', None)
        viaS = p.get('viaS', None)
        ftype = p.get('type', 'Departures')
        fname = p.get('fname', None)
        desc = p.get('desc', '')
        if not fname or not fromS:
            return _redirect_home_with_msg(request, "Missing values. Favorite not saved.")
        
        # Retrieve or create the user.
        username = p.get('username', None)
        password = p.get('password', None)
        loggedIn = _checkLoggedIn(request)
        
        if not loggedIn:
            if not username or not password or username.strip() == '' or password.strip() == '':
                return _redirect_home_with_msg(request, "Cannot save favorite without registering.")
        
        user = None
        if getattr(request, 'user'):
            user = request.user
        if not user or user.is_anonymous():
            try:
                user = User.objects.get(username=username, password=password)
            except User.DoesNotExist:
                # Create the user and login
                user = create_user(request, username, password)
                user = authenticate(username=username, password=password)
                login(request, user)
        
        # Go ahead and save the favorite
        fav = Favorite(user=user, fname=fname, desc=desc,
                       ftype=ftype, fromS=fromS, viaS=viaS)
        fav.save()
        return _redirect_home_with_msg(request, "Favorite saved.")