Пример #1
0
def render_files(page):
    sidenav = get_sidenav()

    form = UploadFileForm(csrf_enabled=False)
    if form.validate_on_submit():
        files = request.files.getlist('file')
        
        for file in files:
            upload_file(file)

    page = int(page)
    limit = int(get_option('site_filespage_limit')['value'])
    
    query = {
            'structure': '#File'
    }
    files = list(
                db.collections.find(query).sort('created', pymongo.DESCENDING).skip(page * limit)\
                        .limit(limit)
            )
    page_count = int(db.collections.count(query) / limit)
    return render_template('files.html',
        sidenav=sidenav,
        form=form,
        files=files,
        page_count=page_count
    )
Пример #2
0
def render_users():
    sidenav = get_sidenav()

    users = list(
                db.collections.find(
                    {
                        'structure': '#User',
                    }
                )
            )

    return render_template('users.html', sidenav=sidenav, users=users)
Пример #3
0
def render_publish(id):
    sidenav = get_sidenav()

    form = UserForm(csrf_enabled=False)

    user = None
    msg = None

    if form.validate_on_submit():
        avatars = request.form.getlist('file_id')
        avatar = None
        if avatars is not None:
            if len(avatars) > 0:
                avatar = avatars[0]


        if avatar is not None:
            avatar_file = db.collections.find_one({'_id': ObjectId(avatar)})
        else:
            avatar_file = None

        if user_exists(form.user_name.data) and id is None:
            msg = 'User already exists'
            return render_template(
                    'editUser.html',
                    sidenav=sidenav,
                    form=form,
                    user=user,
                    id=id,
                    msg=msg
                    )

        new_user = register_user(
                name=form.user_name.data,
                password=form.password.data,
                avatar=avatar_file,
                id=id)

        if not id and new_user is not False:
            return redirect('/admin/edituser/{}'.format(new_user.inserted_id))

    if id:
        user = db.collections.find_one({"_id": ObjectId(id)})
        if user and request.method != 'POST':    
            form.user_name.data = user["nick_name"]
            form.password.data = user["password"]
        
    return render_template('editUser.html', sidenav=sidenav,
            form=form, user=user, id=id, msg=msg)
Пример #4
0
def render_posts(page):
    sidenav = get_sidenav()

    page = int(page)
    limit = int(get_option('site_postspage_limit')['value'])

    query ={
        "classes": ["post"]
    }
    posts = list(
                db.collections.find(query).sort('created', pymongo.DESCENDING)\
                        .skip(page * limit).limit(limit)
                )
    page_count = int(db.collections.count(query) / limit)
    return render_template('posts.html', sidenav=sidenav,
            posts=posts, page_count=page_count)
Пример #5
0
def render_settings():
    sidenav = get_sidenav()

    form = SettingsForm(csrf_enabled=False)
    if form.validate_on_submit():
        set_option('site_demo', form.demo.data)
        set_option('site_name', form.site_name.data)
        set_option('site_description', form.site_description.data)
        site_tags = ','.join(request.form.getlist('lwpcms_tag'))
        set_option('site_tags', site_tags)
        set_option('site_filespage_limit', form.site_filespage_limit.data)
        set_option('site_postspage_limit', form.site_postspage_limit.data)
    
    is_demo = get_option('site_demo')
    if is_demo:
        form.demo.data = is_demo['value']

    site_name = get_option('site_name')
    if site_name:
        form.site_name.data = site_name['value']

    site_description = get_option('site_description')
    if site_description:
        form.site_description.data = site_description['value']

    site_tags = get_option('site_tags')
    if site_tags:
        site_tags = site_tags['value']
    else:
        site_tags = ''
    
    site_filespage_limit = get_option('site_filespage_limit')
    if site_filespage_limit:
        form.site_filespage_limit.data = site_filespage_limit['value']

    site_postspage_limit = get_option('site_postspage_limit')
    if site_postspage_limit:
        form.site_postspage_limit.data = site_postspage_limit['value']

    
    return render_template(
            'settings.html',
            sidenav=sidenav,
            site_tags=site_tags,
            form=form
            )
Пример #6
0
def render_themes():
    sidenav = get_sidenav()

    if request.method == 'POST':
        if 'theme_path' in request.form:
            theme_path = request.form['theme_path']

            with open('lwpcms/{}/theme.json'.format(theme_path)) as file:
                data = json.loads(file.read())
                theme = data['theme']
                
                if 'activated' in theme:
                    activated = theme['activated']
                else:
                    activated = False

            
                if activated:
                    activated = False
                else:
                    activated = True

                theme['activated'] = activated

                with open('lwpcms/{}/theme.json'.format(theme_path), 'w') as jsonFile:
                    jsonFile.write(
                            json.dumps(
                                data,
                                sort_keys=True,indent=4,
                                separators=(',', ': ')
                                )
                            )

                    abs_templates_path = os.path.abspath('lwpcms/templates')
                    
                    if os.path.isdir('{}/theme'.format(abs_templates_path)):
                        shutil.rmtree('{}/theme'.format(abs_templates_path))

                    return redirect('/admin/themes')

    themes = get_themes()

    return render_template('admin_themes.html', sidenav=sidenav, themes=themes)
Пример #7
0
def render_publish(id):
    sidenav = get_sidenav()

    form = PostForm(csrf_enabled=False)

    post = None

    if id:
        post = db.collections.find_one({"_id": ObjectId(id)})
        if post and request.method != 'POST':    
            form.title.data = post["title"]
            form.content.data = post["content"]
            form.published.data = post['published']

    if form.validate_on_submit():
        file_ids = request.form.getlist('file_id')
        tags = request.form.getlist('lwpcms_tag')
        attachments = []

        for a_id in file_ids:
            if a_id is not None and len(a_id) > 3:
                file = db.collections.find_one({"_id": ObjectId(a_id)})

                if file is not None:
                    attachments.append(file)

        new_post = publish_post(
                           title=form.title.data,
                           content=form.content.data,
                           attachments=attachments,
                           published=form.published.data,
                           tags=tags,
                           id=id
                       )

        return redirect('/admin/publish/{}'.format(new_post["_id"]))

    if post is None:
        form.published.data = True
       
    return render_template('publish.html', sidenav=sidenav,
            form=form, post=post, id=id)
Пример #8
0
def render_modules():
    sidenav = get_sidenav()
    
    if request.method == 'POST':
        if 'module_path' in request.form:
            module_path = request.form['module_path']

            with open('{}/module.json'.format(module_path)) as file:
                data = json.loads(file.read())
                module = data['module']

                if 'activated' in module:
                    activated = module['activated']
                else:
                    activated = False

                if activated:
                    activated = False
                else:
                    activated = True

                module['activated'] = activated

                with open('{}/module.json'.format(module_path), 'w') as jsonFile:
                    jsonFile.write(
                            json.dumps(
                                data,
                                sort_keys=True,indent=4,
                                separators=(',', ': ')
                                )
                            )

                    return redirect('admin/modules')

    modules = get_modules()

    return render_template('admin_modules.html', sidenav=sidenav, modules=modules)
Пример #9
0
def render_themes():
    sidenav = get_sidenav()

    if request.method == "POST":
        if "theme_path" in request.form:
            theme_path = request.form["theme_path"]

            with open("lwpcms/{}/theme.json".format(theme_path)) as file:
                data = json.loads(file.read())
                theme = data["theme"]

                if "activated" in theme:
                    activated = theme["activated"]
                else:
                    activated = False

                if activated:
                    activated = False
                else:
                    activated = True

                theme["activated"] = activated

                with open("lwpcms/{}/theme.json".format(theme_path), "w") as jsonFile:
                    jsonFile.write(json.dumps(data, sort_keys=True, indent=4, separators=(",", ": ")))

                    abs_templates_path = os.path.abspath("lwpcms/templates")

                    if os.path.isdir("{}/theme".format(abs_templates_path)):
                        shutil.rmtree("{}/theme".format(abs_templates_path))

                    return redirect("/admin/themes")

    themes = get_themes()

    return render_template("themes.html", sidenav=sidenav, themes=themes)
Пример #10
0
def render_files(page):
    sidenav = get_sidenav()

    form = UploadFileForm(csrf_enabled=False)
    if form.validate_on_submit():
        upload_file(form.file.data, form.title.data)

    page = int(page)
    limit = int(get_option('site_filespage_limit')['value'])
    
    query = {
        "classes": ["post", "file"]
    }
    files = list(
                db.collections.find(query).sort('created', pymongo.DESCENDING).skip(page * limit)\
                        .limit(limit)
            )
    page_count = int(db.collections.count(query) / limit)
    return render_template('admin_files.html',
        sidenav=sidenav,
        form=form,
        files=files,
        page_count=page_count
    )
Пример #11
0
def render():
    sidenav = get_sidenav()

    return render_template('admin.html', sidenav=sidenav)