Esempio n. 1
0
def folders():
    folders = Folder.get_all(True)
    folder = None

    if request.args.get('edit') and request.args.get('edit') != 1:
        folder = Folder.get(Folder.id == request.args.get('edit'))
        form = FolderForm(obj=folder)
        if form.validate_on_submit():
            form.populate_obj(folder)
            folder.modified = datetime.datetime.now()
            folder.save()
            flash(messages['updated'] + ' (' + str(folder) + ')')
            return redirect(url_for('admin.folders'))
    else:
        form = FolderForm()
        if form.validate_on_submit():
            Folder.add(form)
            flash(messages['added'] + ' (' + str(folder) + ')')
            return redirect(url_for('admin.folders'))

    return render_template('admin/folders.html',
                           folders=folders,
                           folder=folder,
                           title=gettext('Categories'),
                           form=form)
Esempio n. 2
0
 def breadcrumb(item=False):
     if request.path == '/articles/':
         folder = Folder()
         folder.name = 'Articles'
         folder.guid = 'articles'
         return [folder]
     elif item:
         if isinstance(item, Folder):
             return item.get_path(item)
         elif isinstance(item, Post):
             return item.folder.get_path(item.folder)
     return []
Esempio n. 3
0
 def breadcrumb(item=False):
     if request.path == '/articles/':
         folder = Folder()
         folder.name = 'Articles'
         folder.guid = 'articles'
         return [folder]
     elif item:
         if isinstance(item, Folder):
             return item.get_path(item)
         elif isinstance(item, Post):
             return item.folder.get_path(item.folder)
     return []
Esempio n. 4
0
def posts():
    folder = Folder()
    folder.name = 'Articles'
    folder.guid = 'articles'
    folder.is_folder = True
    folder.posts     = Paginator(
            query    = Post.query.filter(status='published', type='post').order_by('created', 'DESC'),
            page     = request.args.get('page'),
            theme    = 'foundation',
            per_page = 5
    )
    return render_template(get_template('articles.html', config), this=folder)
Esempio n. 5
0
def init_fypress(login='', email='', passwd=''):
    if not passwd or not email or not login:
        print '*** /!\ Usage: python manager.py --login=name [email protected] --passwd=yourpass'
        return False

    user = User.add(login, email, passwd)
    if user:
        user.status = 4
        user.nicename = user.login
        user.save()
        print '*** Added user: '******'*** /!\ Invalid user (Duplicate entry)'

    exist = Folder.get(Folder.id == 1)
    if not exist:
        folder = Folder()
        folder.name = 'Uncategorized'
        folder.id = 1
        folder.guid = ''

        folder.insert()
        print '*** Added Folder: ' + str(folder)

    options = [['name', 'FyPress Site'], ['url', Config.URL],
               ['slogan', 'Welcome to FyPress'], ['theme', 'Nyx']]
    for option in options:
        opt = Option.update(option[0], option[1])
        print '*** Added Option: ' + str(opt)
Esempio n. 6
0
def sitemap():
    posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).all()
    folders = Folder.get_all()

    pages = []

    # home
    pages.append({'url': request.url_root, 'freq': 'daily', 'prio': '1'})

    # folders
    for folder in folders:
        if folder.guid != '':
            url = request.url_root + folder.guid + '/'
            modified = folder.modified.strftime('%Y-%m-%d')
            pages.append({'url': url, 'mod': modified, 'freq': 'weekly', 'prio': '0.6'})

    # pages
    posts = Post.filter(Post.status == 'published', Post.type == 'page').order_by(Post.created).limit(20)
    for post in posts:
        if post.slug != 'index':
            url = request.url_root + post.guid + '.html'
            modified = post.modified.strftime('%Y-%m-%d')
            pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.9'})

    # posts
    posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20,)
    for post in posts:
        url = request.url_root + post.guid + '.html'
        modified = post.modified.strftime('%Y-%m-%d')
        pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.8'})

    response = make_response(render_template(Theme.get_template('_sitemap.xml'), pages=pages))
    response.headers["Content-Type"] = 'application/xml'
    return response
Esempio n. 7
0
def feed_folder(folder):
    if folder.split('/')[0] != 'admin':
        folder = Folder.get(Folder.guid == folder)
        if folder:
            posts = Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20)

            feed = AtomFeed(
                fypress.options['name'] + ' • ' + folder.name,
                subtitle=folder.seo_content,
                feed_url=request.url_root + 'feed/',
                url=request.url_root,
                generator=None
            )

            for post in posts:
                feed.add(
                    post.title,
                    post.content,
                    content_type='html',
                    author=post.user.nicename,
                    url=request.url_root + post.guid,
                    updated=post.modified,
                    published=post.created
                )

            response = feed.get_response()
            response.headers["Content-Type"] = 'application/xml'

            return response
        else:
            return is_404()
    else:
        return is_admin_404()
Esempio n. 8
0
def sitemap():
    posts   = Post.query.filter(status='published', type='post').order_by('created').all()
    folders = Folder.get_all()

    pages = []

    # home
    pages.append({'url': request.url_root, 'freq': 'daily', 'prio': '1'})

    # folders
    for folder in folders:
        if folder.guid != '':
            url      = request.url_root+folder.guid+'/'
            modified = folder.modified.strftime('%Y-%m-%d')
            pages.append({'url': url, 'mod': modified, 'freq': 'weekly', 'prio': '0.6'})

    # pages
    posts = Post.query.filter(status='published', type='page').order_by('created').limit(20, 0, array=True)
    for post in posts:
            if post.slug != 'index':
                url      = request.url_root+post.guid+'.html'
                modified = post.modified.strftime('%Y-%m-%d')
                pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.9'})

    # posts
    posts = Post.query.filter(status='published', type='post').order_by('created').limit(20, 0, array=True)
    for post in posts:
            url      = request.url_root+post.guid+'.html'
            modified = post.modified.strftime('%Y-%m-%d')
            pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.8'})

    response = make_response(render_template('front/_sitemap.xml', pages=pages))
    response.headers["Content-Type"] = 'application/xml'
    return response 
Esempio n. 9
0
def posts_add(page=False):
    post = Post()

    if page: urls = 'admin.pages'
    else: urls = 'admin.posts'

    if request.args.get('edit'):
        post = Post.query.get(request.args.get('edit'))
        if post:
            if post.parent:
                return redirect(url_for(urls+'_add', edit=post.parent))
            if request.form:
                post_id = Post.update(request.form, post)
                flash(messages['updated']+' ('+str(post)+')')
                return redirect(url_for(urls+'_add', edit=post_id))
        else:
            return handle_404()
    else:
        if request.form:
            post_id = Post.create(request.form)
            flash(messages['added']+' ('+str(post)+')')
            return redirect(url_for(urls+'_add', edit=post_id))

    folders = Folder.get_all()

    if page:
        title = gettext('New - Page')
    else:
        title = gettext('New - Post')


    return render_template('admin/posts_new.html', folders=folders, post=post, title=title, page=page, urls=urls)
Esempio n. 10
0
def folders():
    folders = Folder.get_all(True)
    folder  = None

    if request.args.get('edit') and request.args.get('edit') != 1:
        folder = Folder.query.get(request.args.get('edit'))
        form = FolderForm(obj=folder)
        if form.validate_on_submit():
            form.populate_obj(folder)
            folder.modified = 'NOW()'
            Folder.query.update(folder)
            flash(messages['updated']+' ('+str(folder)+')')
            return redirect(url_for('admin.folders'))
    else:
        form = FolderForm()
        if form.validate_on_submit():
            Folder.add(form)
            flash(messages['added']+' ('+str(folder)+')')
            return redirect(url_for('admin.folders'))

    return render_template('admin/folders.html', folders=folders, folder=folder, title=gettext('Categories'), form=form)
Esempio n. 11
0
def init_fypress(login='', email='', passwd=''):
    if not passwd or not email or not login:
        print '*** /!\ Usage: python manager.py --login=name [email protected] --passwd=yourpass'
        return False

    user = User.add(login, email, passwd)
    if user:
        user.status   = 4
        user.nicename = user.login
        User.query.update(user)
        print '*** Added user: '******'*** /!\ Invalid user (Duplicate entry)'

    exist = Folder.query.get(1)
    if not exist:
        folder = Folder()
        folder.name     = 'Uncategorized'
        folder.created  = 'NOW()'
        folder.modified = 'NOW()'
        folder.id       = 1
        folder.guid     = ''
        
        Folder.query.add(folder)
        print '*** Added Folder: '+str(folder)

    options = [
        ['name', 'FyPress Site'],
        ['url',  Config.URL],
        ['slogan', 'Welcome to FyPress'],
        ['theme', 'Nyx']
    ]
    for option in options:
        opt = Option.update(option[0], option[1])
        print '*** Added Option: '+str(opt)
Esempio n. 12
0
def init_fypress(login="", email="", passwd=""):
    if not passwd or not email or not login:
        print "*** /!\ Usage: python manager.py --login=name [email protected] --passwd=yourpass"
        return False

    user = User.add(login, email, passwd)
    if user:
        user.status = 4
        user.nicename = user.login
        User.query.update(user)
        print "*** Added user: "******"*** /!\ Invalid user (Duplicate entry)"

    exist = Folder.query.get(1)
    if not exist:
        folder = Folder()
        folder.name = "Uncategorized"
        folder.created = "NOW()"
        folder.modified = "NOW()"
        folder.id = 1
        folder.guid = ""

        Folder.query.add(folder)
        print "*** Added Folder: " + str(folder)

    options = [["name", "FyPress Site"], ["url", Config.URL], ["slogan", "Welcome to FyPress"], ["theme", "Nyx"]]
    for option in options:
        opt = Option.update(option[0], option[1])
        print "*** Added Option: " + str(opt)
Esempio n. 13
0
def posts():
    folder = Folder()
    folder.name = 'Articles'
    folder.guid = 'articles'
    folder.is_folder = True
    folder.posts = Paginator(
        query=Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created, 'DESC'),
        page=request.args.get('page'),
        theme='bootstrap',
        per_page=5
    )
    return render_template(Theme.get_template('articles.html'), this=folder)
Esempio n. 14
0
def posts():
    folder = Folder()
    folder.name = 'Articles'
    folder.guid = 'articles'
    folder.is_folder = True
    folder.posts = Paginator(query=Post.query.filter(status='published',
                                                     type='post').order_by(
                                                         'created', 'DESC'),
                             page=request.args.get('page'),
                             theme='foundation',
                             per_page=5)
    return render_template(get_template('articles.html', config), this=folder)
Esempio n. 15
0
def is_folder(slug):
    if slug.split('/')[0] != 'admin':
        folder = Folder.get(Folder.guid == slug)
        if folder:
            folder.is_folder = True
            folder.pages = Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'page').order_by(Post.created).all()
            folder.index = Post.filter(Post.id_folder == folder.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one()
            folder.posts = Paginator(
                query=Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'post').order_by(Post.created),
                page=request.args.get('page'),
                theme='bootstrap',
                per_page=4
            )

            return render_template(Theme.get_template('folder.html'), this=folder)
        else:
            return is_404()
    else:
        return is_admin_404()
Esempio n. 16
0
    def guid_generate(self, rev=False):
        count = ''
        if rev:
            count = Post.filter(Post.parent == rev).all()
            count = '&rev=' + str(len(count))
            return '?post_id={}'.format(rev) + count

        path = Folder.get(Folder.id == self.id_folder)
        path = path.guid

        name = self.slug + count

        if self.id:
            guid = url_unique(path + '/' + name, Post, self.id)
        else:
            guid = url_unique(path + '/' + name, Post)

        if guid[0] == '/':
            guid = guid[1:]

        return guid
Esempio n. 17
0
def ajax_folders():
    data = json.loads(request.form.get('data'))
    Folder.update_all(data)
    return ''
Esempio n. 18
0
def template():
    nav = Folder.get_as_tree('nav', request.path)
    is_home = False

    if request.url == g.options['url']:
        is_home = True

    def breadcrumb(item=False):
        if request.path == '/articles/':
            folder = Folder()
            folder.name = 'Articles'
            folder.guid = 'articles'
            return [folder]
        elif item:
            if isinstance(item, Folder):
                return item.get_path(item)
            elif isinstance(item, Post):
                return item.folder.get_path(item.folder)
        return []

    def title(item=False):
        if request.path == '/articles/':
            return 'Articles • ' + g.options['name']
        elif isinstance(item, Folder):
            return item.name + ' • ' + g.options['name']
        elif isinstance(item, Post):
            if item.folder_id == 1:
                return item.title + ' • ' + g.options['name']
            return item.title + ' • ' + item.folder.name + ' • ' + g.options[
                'name']
        return g.options['name']

    def description(item=False):
        if request.path == '/articles/':
            return False
        elif isinstance(item, Folder):
            index = Post.query.filter(folder_id=item.id,
                                      slug='index',
                                      status='published',
                                      type='page').one()
            if index:
                return index.get_excerpt(155)
            return item.seo_content
        elif isinstance(item, Post):
            return item.get_excerpt(155)
        else:
            return g.options['slogan']

    def image(item=False):
        if request.path == '/articles/':
            return False
        elif isinstance(item, Folder):
            index = Post.query.filter(folder_id=item.id,
                                      slug='index',
                                      status='published',
                                      type='page').one()
            if index and index.image_id != 0:
                return index.image
            return False
        elif isinstance(item, Post):
            if item.image_id != 0:
                return item.image

            index = Post.query.filter(folder_id=item.folder_id,
                                      slug='index',
                                      status='published',
                                      type='page').one()
            if index and index.image_id != 0:
                return index.image

        return False

    def seo(item=False):
        pass

    return dict(nav=nav,
                get_posts=get_posts,
                show_sidebar=True,
                show_breadcrumb=True,
                show_footer=True,
                breadcrumb=breadcrumb,
                is_home=is_home,
                title=title,
                description=description,
                image=image)
Esempio n. 19
0
def template():
    nav = Folder.get_as_tree('nav', request.path)
    is_home = False

    if request.url == g.options['url']:
        is_home = True

    def theme(v):
        return 'themes/' + g.options['theme'] + '/' + v

    def breadcrumb(item=False):
        if request.path == '/articles/':
            folder = Folder()
            folder.name = 'Articles'
            folder.guid = 'articles'
            return [folder]
        elif item:
            if isinstance(item, Folder):
                return item.get_path(item)
            elif isinstance(item, Post):
                return item.folder.get_path(item.folder)
        return []

    def title(item=False):
        if request.path == '/articles/':
            return 'Articles • '+g.options['name']
        elif isinstance(item, Folder):
            return item.name+' • '+g.options['name']
        elif isinstance(item, Post):
            if item.folder_id == 1:
                return item.title+' • '+g.options['name']
            return item.title+' • '+item.folder.name+' • '+g.options['name']
        return g.options['name']

    def description(item=False):
        if request.path == '/articles/':
            return False
        elif isinstance(item, Folder):
            index = Post.query.filter(folder_id=item.id, slug='index', status='published', type='page').one()
            if index:
                return index.get_excerpt(155)
            return item.seo_content
        elif isinstance(item, Post):
            return item.get_excerpt(155)
        else:
            return g.options['slogan']

    def image(item=False):
        if request.path == '/articles/':
            return False
        elif isinstance(item, Folder):
            index = Post.query.filter(folder_id=item.id, slug='index', status='published', type='page').one()
            if index and index.image_id != 0:
                return index.image
            return False
        elif isinstance(item, Post):
            if item.image_id != 0:
                return item.image

            index = Post.query.filter(folder_id=item.folder_id, slug='index', status='published', type='page').one()
            if index and index.image_id != 0:
                return index.image
        
        return False    

    return dict(
        nav=nav, 
        theme=theme,
        get_posts=get_posts, 
        show_sidebar=True,
        show_breadcrumb=True, 
        show_footer=True,
        breadcrumb=breadcrumb,
        is_home=is_home,
        title=title,
        description=description,
        image=image
    )
Esempio n. 20
0
 def _ctx_nav():
     nav = Folder.get_as_tree('nav', request.path)
     return nav
Esempio n. 21
0
 def _ctx_nav():
     nav = Folder.get_as_tree('nav', request.path)
     return nav