Exemple #1
0
def image(image_id):
    if request.method == 'GET':
        img = session.query(Image).get(image_id)
        img.Tags.sort(key=lambda x: x.TagName)
        return render_template('images/editImage.jade', title='Edit Image', img=img)

    if request.method == 'DELETE':
        img = session.query(Image).get(image_id)
        img_path = os.path.join(config.STORAGE_CONTAINER, img.Image_Name)
        # Delete file
        if os.path.exists(img_path):
            os.remove(img_path)

        # Delete record from database
        session.query(Image).filter(Image.ImageId == image_id).delete()
        session.commit()

        engine.execute('DELETE FROM images_tags WHERE ImageId = {0}'.format(image_id))
        engine.execute('DELETE FROM images_people WHERE ImageId = {0}'.format(image_id))
        # Delete from images albums
        # Delete from images collections

        return jsonify(AjaxResult(True, 'Image was deleted successfully').to_json())
Exemple #2
0
    def get_person_ranking(person_id):
        rankings = engine.execute('SELECT person.PersonId, COUNT(image.ImageId) AS [NumImages] '
                                  'FROM image '
                                  '  INNER JOIN images_people ON image.ImageId = images_people.ImageId '
                                  '  INNER JOIN person ON images_people.PersonId = person.PersonId '
                                  'GROUP BY person.PersonId '
                                  'ORDER BY NumImages DESC')

        ranking = Ranking(1, Stats.get_total_people())
        for row in rankings:
            if row[0] == person_id:
                return ranking
            ranking.Rank += 1

        return ranking
Exemple #3
0
    def get_stats_images_tags():
        query = 'SELECT tag.TagId, tag.TagName, COUNT(image.ImageId) AS [NumImages],' \
                ' (COUNT(tag.TagId) * 1.0/' \
                '  (SELECT COUNT(*) FROM tag INNER JOIN images_tags ON tag.TagId = images_tags.TagId)' \
                '  ) * 100 AS Percentage' \
                ' FROM tag' \
                ' INNER JOIN images_tags ON tag.TagId = images_tags.TagId' \
                ' INNER JOIN image ON images_tags.ImageId = image.ImageId' \
                ' GROUP BY tag.TagId' \
                ' ORDER BY NumImages DESC, tag.TagName'

        result = engine.execute(query)

        counts = []
        tags = []
        max = 0
        for row in result:
            if max < 25:
                t = TagStat()
                t.TagId = row[0]
                t.TagName = row[1]
                t.Images = row[2]
                t.Percentage = row[3]
                tags.append(t)

            counts.append(int(row[2]))
            max += 1

        stats = TagStats()

        if max > 0:
            stats.Average = statistics.mean(counts)
            stats.Median = statistics.median(counts)

            try:
                stats.Mode = statistics.mode(counts)
            except statistics.StatisticsError:
                stats.Mode = 'N/A'

            stats.StdDev = statistics.pstdev(counts)
            stats.Variance = statistics.pvariance(counts)
            stats.Lower = stats.Average - (2 * stats.StdDev)
            stats.Higher = stats.Average + (2 * stats.StdDev)

        stats.TopTags = tags
        return stats
Exemple #4
0
    def get_images_with_person_percent(person_id):
        query = 'SELECT images_people.PersonId, COUNT(image.ImageId) AS [NumImages],' \
                ' (COUNT(image.ImageId)*1.0/ (' \
                '    SELECT COUNT(*) FROM image INNER JOIN images_people ON image.ImageId = images_people.ImageId)' \
                ' ) * 100 AS Percentage' \
                ' FROM image' \
                ' INNER JOIN images_people ON image.ImageId = images_people.ImageId ' \
                ' WHERE images_people.PersonId = ' + str(person_id) + ' ' \
                ' GROUP BY images_people.PersonId ' \
                ' ORDER BY NumImages DESC, images_people.PersonId'

        result = engine.execute(query)

        percentage = 0
        for row in result:
            percentage = Decimal(row[2]).quantize(PLACES)

        return percentage
Exemple #5
0
    def get_stats_images_people():
        query = 'SELECT images_people.PersonId, COUNT(image.ImageId) AS [NumImages]' \
                ' FROM image' \
                ' INNER JOIN images_people ON image.ImageId = images_people.ImageId' \
                ' INNER JOIN person ON images_people.PersonId = person.PersonId' \
                ' GROUP BY images_people.PersonId' \
                ' ORDER BY NumImages DESC, person.Name'

        result = engine.execute(query)

        counts = []
        people = []
        max = 0
        for row in result:
            if max < 25:
                p = PeopleStats()
                rp = session.query(Person).get(int(row[0]))
                p.PersonId = rp.PersonId
                p.Name = rp.Name
                p.Images = (int(row[1]))
                p.Percentage = Stats.get_images_with_person_percent(int(row[0]))
                people.append(p)

            counts.append(int(row[1]))
            max += 1

        stats = ImageStats()

        if max > 0:
            stats.Average = statistics.mean(counts)
            stats.Median = statistics.median(counts)

            try:
                stats.Mode = statistics.mode(counts)
            except statistics.StatisticsError:
                stats.Mode = 'N/A'

            stats.StdDev = statistics.pstdev(counts)
            stats.Variance = statistics.pvariance(counts)
            stats.Lower = stats.Average - (2 * stats.StdDev)
            stats.Higher = stats.Average + (2 * stats.StdDev)

        stats.TopPeople = people
        return stats