Пример #1
0
    def test_list_images(self):
        """Test that list_images returns the right list of images"""

        # get the four most recent image entries
        image_list = interface.list_images(self.db, 4)

        self.assertEqual(4, len(image_list))
        # and all entries are four elements long
        self.assertTrue(all([len(i) == 4 for i in image_list]))

        # check that the images are in the right order
        self.assertListEqual([img[0] for img in self.images],
                             [img['filename'] for img in image_list])

        # and the dates are right
        self.assertListEqual([img[1] for img in self.images],
                             [img['timestamp'] for img in image_list])

        # and the owners
        self.assertListEqual([img[2] for img in self.images],
                             [img['user'] for img in image_list])

        # now check the likes
        for image in image_list:
            likes = [
                img[3] for img in self.images if img[0] == image['filename']
            ]
            self.assertEqual(len(likes[0]) + 1, image['likes'])
Пример #2
0
    def test_list_images_user(self):
        """Test that list_images with the extra usernick argument
         returns the right list of images for a user"""

        for password, nick, avatar in self.users:

            # get the three most recent image entries
            image_list = interface.list_images(self.db, 3, nick)

            # image_list should be a list of dictionaries
            for img in image_list:
                self.assertEqual(dict, type(img),
                                 "returned element not a dictionary")

            # check that the images are in the right order
            dates = [img['timestamp'] for img in image_list]
            sorteddates = [img['timestamp'] for img in image_list]
            sorteddates.sort(reverse=True)
            self.assertListEqual(dates, sorteddates)

            # and the owners, dates and like count are correct
            for img in image_list:
                for refimage in self.db.images:
                    if img['filename'] == refimage[0]:
                        self.assertEqual(refimage[1], img['timestamp'])
                        self.assertEqual(refimage[2], img['user'])
                        self.assertEqual(len(refimage[3]) + 1, img['likes'])
Пример #3
0
    def test_add_image(self):
        """Test that add_image updates the database properly"""

        imagename = 'new.jpg'
        usernick = 'carol'
        interface.add_image(self.db, imagename, usernick)

        images = interface.list_images(self.db, 5)
        print images
        self.assertEqual(imagename, images[0]['filename'],
                         'wrong image name after add_image')
        self.assertEqual(usernick, images[0]['user'],
                         'wrong user in first image')
        # date should be today's date in UTC to match SQLite
        today = datetime.datetime.utcnow().strftime("%Y-%m-%d")
        date = images[0]['timestamp']
        self.assertEqual(date[:10], today)
Пример #4
0
def index():
    """Main page; Displays the 3 latest images. Navbar is displayed from all pages.
    Login form is also displayed for user."""
    db = COMP249Db()
    curr_session = None
    curr_user = None
    img_list = interface.list_images(db, 3)
    if request.get_cookie(COOKIE_NAME):
        curr_session = request.get_cookie(COOKIE_NAME)
        curr_user = users.session_user(db)
    return template('index.html',
                    title="FlowTow",
                    images=img_list,
                    session=curr_session,
                    name=curr_user,
                    interface=interface,
                    db=db)
Пример #5
0
def index():
    """
    首页
    :return: 页面渲染元素字典
    """
    imagesNumber = 3
    flowTowDataBase = COMP249Db()
    userNick = users.session_user(db=flowTowDataBase)
    imagesList = interface.list_images(db=flowTowDataBase, n=imagesNumber)
    renderDict = {
        "title": "FlowTow!",
        "homeActive": True,
        "aboutActive": False,
        "imagesList": imagesList,
        "imagesNumber": imagesNumber,
        "userNick": userNick,
        "myActive": False
    }
    return template('index', renderDict)
Пример #6
0
def my():
    """My Images page; Displays images uploaded by the user.
    If there is no user logged in, they are redirected to the Main page."""
    db = COMP249Db()
    curr_session = None
    curr_user = None
    if request.get_cookie(COOKIE_NAME):
        curr_session = request.get_cookie(COOKIE_NAME)
        curr_user = users.session_user(db)
    else:
        redirect('/')
    img_list = interface.list_images(db, 3, curr_user)
    return template('index.html',
                    title="FlowTow",
                    images=img_list,
                    session=curr_session,
                    name=curr_user,
                    interface=interface,
                    db=db)
Пример #7
0
def my():
    """
    My Images页面
    :return:模板渲染网页标题等
    """
    flowTowDataBase = COMP249Db()
    userNick = users.session_user(db=flowTowDataBase)
    if userNick:
        # 此处的n不起作用,因为指定了用户名
        imagesList = interface.list_images(db=flowTowDataBase,
                                           n=0,
                                           usernick=userNick)
        renderDict = {
            "title": "FlowTow!",
            "homeActive": False,
            "aboutActive": False,
            "imagesList": imagesList,
            "imagesNumber": len(imagesList),
            "userNick": userNick,
            "myActive": True
        }
        return template('index', renderDict)
    else:
        return redirect('/')