Beispiel #1
0
    def find_or_create_thumbnail(self, width=None, height=None):
        """
        Creates a thumbnail image from the original if one of the same size
        does not already exist. Width OR height must be provided. It is not
        necessary to provide both.

        Default Image (We should act on this in the future)
        http://affimg.tfaw.com/covers_tfaw/400/no/nocover.jpg

        :param issue: :class:`Issue` object class
        :param width: Width of desired thumbnail image
        :param height: Height of desired thumbnail image
        """
        assert width is not None or height is not None
        image = None
        if self.cover_image:
            with store_context(store):
                try:
                    image = self.cover_image.find_thumbnail(
                                                width=width,
                                                height=height)
                except NoResultFound:
                    image = self.cover_image.generate_thumbnail(
                                                width=width,
                                                height=height)
                    self.save()
        return image
Beispiel #2
0
def delete_category(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    delete_me = db_session.query(
        Category).filter_by(id=category_id).one()
    if delete_me.user_id != login_session['user_id']:
        return """<script>function myFunction() {
            alert('You are not authorized to edit this category.
            Please create your own category in order to edit.');
            } </script><body onload='myFunction()''>"""
    if request.method == 'POST':
        with store_context(local_storage):
            db_session.delete(delete_me)
            flash('%s Successfully Deleted' % delete_me.name)
            db_session.commit()
            return redirect(url_for('show_categories',
                            category_id=category_id,
                            username=login_session["username"],
                            categories=db_session.
                            query(Category).order_by(asc(Category.name))))
    else:
        return render_template('delete_category.html',
                               category=delete_me,
                               username=login_session["username"],
                               categories=db_session.
                               query(Category).order_by(asc(Category.name)))
Beispiel #3
0
 def to_dict(self):
     with store_context(fs_store):
         return dict(
             created_time = self.created_time.isoformat(),
             updated_time = self.updated_time.isoformat(),
             id = self.id
         )
Beispiel #4
0
def create_news():
    entity = news.News(
        title = request.json['title']
        , content = request.json['content']
        , news_language = request.json['news_language']
    )
    entity.is_draft = False
    entity.update_time = datetime.datetime.now()
    entity.create_time = datetime.datetime.now()
    entity.author = '管理员'
    entity.view_count = 0
    entity.awesome_count = 0
    if(len(request.json['video_link']) != 0):
        entity.has_video = True
        entity.video_link = request.json['video_link']
    else:
        entity.has_video = False
    try:
        with store_context(fs_store):
            if(request.json['temp_image'] is not None):
                with open(files.path(request.json['temp_image'])) as f:
                    entity.icon.from_file(f)
                    db.session.add(entity)
                    db.session.commit()
                    return jsonify(entity.to_dict()), 201
            else:
                abort(500)
    except Exception, e:
        raise e
        abort(500)
Beispiel #5
0
def make_test_data():
    categories = ['Popular', 'Health Diet', 'Train plans', 'Habits', 'Learning']
    for cat in categories:
        db.session.add(Category(cat, ''))
    goals = [
            ['Drink water','description','Popular'],
            ['Make love Every Day','description','Popular'],
            ['Write article ','description','Popular'],
            ['Do fitness','description','Health Diet'],
            ['Watch Movie','description','Train plans']
        ]
    db.session.commit()
    c = Category.query.filter(Category.category_name=='Popular').first()

    g_list = []
    with store_context(fs_store):
        for g in goals:
            goal = Goal(g[0], g[1])
            with open('pic1.jpg','rb') as f:
                goal.image.from_blob(f.read())
            g_list.append(goal)
            db.session.add(goal)
        c.goals = g_list
        db.session.add(c)
        db.session.commit()
Beispiel #6
0
def new_item(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    category = db_session.query(Category).filter_by(id=category_id).one()
    all_categories = db_session.query(Category).order_by(asc(Category.name))
    if request.method == 'POST':
        try:
                photo = request.files.get('photo')
                new_item = CategoryItem(name=request.form['name'],
                                        description=request.
                                        form['description'],
                                        category_id=category_id)
                with store_context(local_storage):
                    new_item.picture.from_file(photo)
                    new_item.picture.generate_thumbnail(width=300)
                    db_session.add(new_item)
                    db_session.commit()
        except:
            flash("Item creation failed")
            return redirect(url_for('show_items',
                                    category_id=category_id,
                                    categories=all_categories))
        flash('New %s Item Successfully Created' % (new_item.name))
        return redirect(url_for('show_items',
                                category_id=category_id,
                                categories=all_categories))
    else:
        return render_template('new_item.html',
                               category_id=category_id,
                               categories=all_categories)
Beispiel #7
0
def update_news(id):
    entity = news.News.query.get(id)
    if not entity:
        abort(404)
    entity.title = request.json['title']
    entity.content = request.json['content']
    entity.news_language = request.json['news_language']
    if(request.json['video_link'] is not None and len(request.json['video_link']) > 0):
        entity.has_video = True
        entity.video_link = request.json['video_link']
    else:
        entity.has_video = False
        entity.video_link = None
    entity.update_time = datetime.datetime.now()
    try:
        with store_context(fs_store):
            if('temp_image' in request.json.keys() and request.json['temp_image'] is not None):
                with open(files.path(request.json['temp_image'])) as f:
                    entity.icon.from_file(f)
                    db.session.merge(entity)
                    db.session.commit()
            else:
                db.session.merge(entity)
                db.session.commit()
            return jsonify(entity.to_dict()), 200
    except Exception, e:
        raise e
        abort(500)
Beispiel #8
0
	def get(self, goal_id):
		g = Goal.query.filter(Goal.goal_id==goal_id).first()
		if g:
			with store_context(fs_store):
				return {'image': g.image.locate()}, 200
		else:
			abort(404, message="Image not found")
Beispiel #9
0
def delete(goal_id):
	goal = Goal.query.filter(Goal.goal_id==goal_id).first()
	if goal:
		with store_context(fs_store):
			db.session.delete(goal)
			db.session.commit()
	return redirect('/backend/goal')
Beispiel #10
0
def register():
    """
        User registeration
        #TODO duplicative code 
    """
    if user.User.query.filter(user.User.name == request.json['name']).count() > 0:
        abort(500)
    if user.User.query.filter(user.User.account == request.json['account']).count() > 0:
        abort(500)
    entity = user.User(
        account = request.json['account']
        , password = request.json['password']
        , name = request.json['name']
        , company = request.json['company']
        , nickname = request.json['company']
        , phone_number = request.json['phone_number']
        , email = request.json['email']
        , title = request.json['title']
    )
    entity.registered_time = datetime.datetime.now().date();
    entity.lastlogin_time = datetime.datetime.now().date();
    entity.myattr = ''  #无用字段
    entity.is_active = True
    entity.is_vip = False
    entity.role = 'user'
    try:
        with store_context(fs_store):
            with open('app/static/image/default_header.png') as f:
                entity.generate_token()
                entity.header_icon.from_file(f)
                db.session.add(entity)
                db.session.commit()
                return jsonify(entity.to_dict()), 201
    except Exception, e:
        abort(500)
Beispiel #11
0
 def to_dict(self):
     with store_context(fs_store):
         header_large_url = ''
         header_small_url = ''
         try:
             header_large_url = find_or_create_thumbnail(self, self.header_icon, HEADER_SIZE_LARGE).locate()
             header_small_url = find_or_create_thumbnail(self, self.header_icon, HEADER_SIZE_SMALL).locate()
         except Exception, e:
             pass
         return dict(
             account = self.account,
             name = self.name,
             role = self.role,
             email = self.email,
             password = '',
             nickname=self.nickname,
             registered_time = self.registered_time.isoformat(),
             is_active = self.is_active,
             phone_number = self.phone_number,
             description = self.description,
             lastlogin_time = self.lastlogin_time.isoformat(),
             myattr = self.myattr,
             token = self.token,
             id = self.id,
             is_vip = self.is_vip,
             zone = self.zone,
             work_phone = self.work_phone,
             title = self.title,
             department = self.department,
             company = self.company,
             header_large = header_large_url,
             header_small = header_small_url
         )
Beispiel #12
0
	def header_json(self):
		with store_context(fs_store):
			return {
				'user_id' : self.user_id,
				'header' : _find_or_create_thumbnail(self, self.header_icon,48).locate(),
				'user_name' : self.name
			}
Beispiel #13
0
def create_user():
    if user.User.query.filter(user.User.name == request.json['name']).count() > 0:
        abort(500)
    if user.User.query.filter(user.User.account == request.json['account']).count() > 0:
        abort(500)
    entity = user.User(
        account = request.json['account']
        , password = request.json['password']
        , name = request.json['name']
        , is_vip = request.json['is_vip']
        , nickname = request.json['nickname']
        , company = request.json['nickname']
        , description = request.json['description']
    )
    entity.registered_time = datetime.datetime.now().date();
    entity.lastlogin_time = datetime.datetime.now().date();
    entity.myattr = ''
    entity.is_active = True
    entity.role = 'user'
    entity.company = ''
    #header = get('http://ww3.sinaimg.cn/mw690/63ea4d33gw1ejhpwui71sj20u00k045s.jpg').content
    try:
        with store_context(fs_store):
            with open('app/static/image/default_header.png') as f:
                entity.generate_token()
                entity.header_icon.from_file(f)
                db.session.add(entity)
                db.session.commit()
                return jsonify(entity.to_dict()), 201
    except Exception, e:
        abort(500)
Beispiel #14
0
def edit(goal_id):
	if request.method == 'POST':
		gf = GoalForm()
		names = gf.category_name.data.split(",")
		g = Goal.query.filter(Goal.goal_id==goal_id).first()
		g = gf.to_goal(g)
		for c in g.categories:
			g.categories.remove(c)
		categorys = Category.query.filter(Category.category_name.in_(names)).all()
		if len(categorys) > 0:
			for c in categorys:
				g.categories.append(c)

		with store_context(fs_store):
			if gf.validate():
				g.image.from_file(request.files['image'])
			db.session.add(g)
			db.session.commit()
		return redirect(url_for('goal.edit', goal_id=goal_id))
	elif request.method == 'GET':
		form = GoalForm()
		categorys = Category.query.all()
		names = ",".join([c.category_name for c in categorys])
		goal = Goal.query.filter(Goal.goal_id==goal_id).first()
		form.set_by_goal(goal)
		return render_template('backend/goal-edit.html', goal=goal, category_names=names, form=form)
Beispiel #15
0
def show_items(category_id):
    if 'username' in login_session:
        username = login_session["username"]
    else:
        username = None
    category = db_session.query(Category).filter_by(id=category_id).one()
    items = db_session.query(CategoryItem).filter_by(
        category_id=category_id).all()
    with store_context(local_storage):
        if username is not None and \
                category.user_id == login_session['user_id']:
            return render_template('owner_items.html',
                                   items=items,
                                   category=category,
                                   username=username,
                                   categories=db_session.
                                   query(Category).
                                   order_by(asc(Category.name)))
        else:
            return render_template('items.html',
                                   items=items,
                                   category=category,
                                   username=username,
                                   categories=db_session.
                                   query(Category).
                                   order_by(asc(Category.name)))
Beispiel #16
0
    def set_cover_image_from_url(self, url, overwrite=False, comparison=None,
            timeout=5):
        """
        Downloads a jpeg file from a url and stores it in the image store.

        :param issue: :class:`Issue` object class
        :param url: URL to download the jpeg cover image format
        :param overwrite: Boolean flag that overwrites an existing image
        """
        created_flag = False
        try:
            if not self.cover_image.original or overwrite:
                r = requests.get(url, timeout=timeout)
                if r.status_code==200 and r.headers['content-type']=='image/jpeg':
                    if comparison:
                        with open(comparison) as f:
                            comparison_byte_string = f.read()
                        if compare_images(r.content, comparison_byte_string):
                            message = '%s is missing a cover image' % self.complete_title
                            raise MissingCoverImageError(message)
                        else:
                            print 'Unique Image found for %s' % self.complete_title
                    with store_context(store):
                        self.cover_image.from_blob(r.content)
                        self.save()
                        self.cover_image.generate_thumbnail(height=600)
                        self.save()
                        created_flag = True
        except Exception, err:
            print 'Exception caught in set_cover_image_from_url', err
Beispiel #17
0
def delete_news(id):
    entity = news.News.query.get(id)
    if not entity:
        abort(404)
    with store_context(fs_store):
        db.session.delete(entity)
        db.session.commit()
        return '', 204
Beispiel #18
0
def delete_user(id):
    entity = user.User.query.get(id)
    if not entity:
        abort(404)
    with store_context(fs_store):
        entity.is_active = False
        db.session.merge(entity)
        db.session.commit()
        return '', 204
Beispiel #19
0
 def set_splash(self, image, overwrite=False):
     if not self.splash.original or overwrite:
         try:
             print 'Setting splash image for %s...' % self.name
             with store_context(store):
                 self.splash.from_file(image)
                 self.save()
         except Exception:
             print 'Could not set %s splash rolling back session' % self.name
             db.session.rollback()
Beispiel #20
0
	def to_json(self):
		with store_context(fs_store):
			return {
				'goal_id' : self.goal_id,
				'goal_name' : self.goal_name,
				'description' : self.description + '',
				'joins' : self.goal_joins.count(),
				'image' : self.image.locate(),
				'joins' : self.participation
			}
Beispiel #21
0
 def serialize(self):
     """Return object data in easily serializable format"""
     with store_context(local_storage):
         return {
             'name': self.name,
             'description': self.description,
             'id': self.id,
             'picture': self.picture.locate(),
             'thumbnail': self.picture.find_thumbnail(width=300).locate()
         }
Beispiel #22
0
def add_topic_image(id):
    image = get('http://ww3.sinaimg.cn/mw690/63ea4d33gw1ejhpwui71sj20u00k045s.jpg').content
    with store_context(fs_store):
        t_image = news.TopicImage(
            topic_id=entity.id
            )
        t_image.image.from_blob(image)
        db.session.add(t_image)
        db.session.commit()
    return jsonify(dict(result='success'))
Beispiel #23
0
	def to_json(self):
		with store_context(fs_store):
			return {
				'goal_id' : self.goal_id,
				'goal_name' : self.goal_name,
				'description' : self.description + '',
				'joins' : self.goal_joins.count(),
				'image' : self.image.locate(),
				'joins' : self.goal_joins.count() + random.randint(1000,2000)
			}
Beispiel #24
0
 def to_dict(self):
     with store_context(fs_store):
         return dict(
             id=self.id,
             order=self.order,
             name=self.name,
             link=self.link,
             news_id=self.news_id,
             visiable = self.visiable
             )
Beispiel #25
0
	def to_json_with_header(self):
		with store_context(fs_store):
			return {
				'goal_id' : self.goal_id,
				'goal_name' : self.goal_name,
				'description' : self.description + '',
				'joins' : self.goal_joins.count(),
				'image' : self.image.locate(),
				'joins' : self.participation,
				'joined_users' : [ghj.user.header_json() for ghj in self.goal_history_joins.limit(5)]
			}
Beispiel #26
0
	def to_details_json(self):
		with store_context(fs_store):
			return {
				'goal_id' : self.goal_id,
				'goal_name' : self.goal_name,
				'description' : self.description + '',
				'joins' : self.goal_joins.count(),
				'goal_records': [gr.to_preview_json() for gr in self.goal_records.limit(5)],
				'image' : self.image.locate(),
				'joins' : self.goal_history_joins.count() 
			}
Beispiel #27
0
	def to_details_json(self):
		with store_context(fs_store):
			return {
				'goal_id' : self.goal_id,
				'goal_name' : self.goal_name,
				'description' : self.description + '',
				'joins' : self.goal_joins.count(),
				'goal_records': [gr.to_preview_json() for gr in self.goal_records],
				'image' : self.image.locate(),
				'joins' : self.goal_joins.count() + random.randint(1000,2000)
			}
Beispiel #28
0
	def to_preview_json(self, user=None):
		with store_context(fs_store):
			return {
				'goal_record_id': self.goal_record_id,
				'goal_id' : self.goal_id,
				'content' : self.content,
				'comments' : [c.to_json() for c in self.comments.limit(5)],
				'awesomes' : [a.to_preview_json() for a in self.awesomes.limit(5)],
				'goal_name' : self.parent_goal.goal_name,
				"publisher" : self.publisher.header_json(),
				'create_time': stime.mktime(self.create_time.timetuple())
			}
Beispiel #29
0
	def to_json(self, user):
		with store_context(fs_store):
			return {
				'goal_record_id': self.goal_record_id,
				'goal_id' : self.goal_id,
				'content' : self.content,
				#'image' : self.image.locate(),
				'comments' : [c.to_json() for c in self.comments.all()],
				'awesomes' : [a.to_json() for a in self.awesomes.all()],
				'can_awesome' : self.__can_awesome(user),
				'create_time': stime.mktime(self.create_time.timetuple())
			}
Beispiel #30
0
 def check_cover_image(self, image1, image2=None):
     if not image2:
         try:
             with store_context(store):
                 if self.cover_image.original:
                     return compare_images(image1, self.cover_image.make_blob())
                 else:
                     return False
         except IOError:
             print 'IOError: Missing image - deleting...'
             self.cover_image.delete()
             self.save()
     else:
         return compare_images(image1, image2)
Beispiel #31
0
 def remove_cover_image(self, thumb_dimensions=[]):
     with store_context(store):
         for width in thumb_dimensions:
             try:
                 print 'Removing %i thumbnail' % width
                 image = self.cover_image.find_thumbnail(width=width)
                 store.delete(image)
             except NoResultFound:
                 print 'Failed to remove %i image, no thumbnail found...' % width
         try:
             print "Removing original image..."
             store.delete(self.cover_image.original)
             self.cover_image.delete()
             self.save()
         except NoResultFound:
             print 'Failed to remove cover image, no original image...'
     return
Beispiel #32
0
 def set_logo_bw(self, image, thumb_dimensions=[512, 256], overwrite=False):
     if not self.logo_bw.original or overwrite:
         try:
             print 'Setting b&w logo image for %s...' % self.name
             with store_context(store):
                 self.logo_bw.from_file(image)
                 self.save()
                 if self.logo_bw.original.height > self.logo_bw.original.width:
                     for height in thumb_dimensions:
                         print '    Generating h%i px thumbnail...' % height
                         self.logo_bw.generate_thumbnail(height=height)
                 else:
                     for width in thumb_dimensions:
                         print '    Generating w%i px thumbnail...' % width
                         self.logo_bw.generate_thumbnail(width=width)
                 self.save()
         except Exception, err:
             print 'Could not set %s logo, rolling back session' % self.name
             print '    Error: %s' % err
             db.session.rollback()
Beispiel #33
0
 def get_cover_image_file(self):
     f = None
     if self.cover_image.original:
         with store_context(store):
             f = self.cover_image.open_file()
     return f