コード例 #1
0
ファイル: helpers.py プロジェクト: octaflop/synapse
def dev_site():
    """
    Deploys a "hello world" demo site with default settings
    """
    init_db()
    meta = Meta()
    # fix up a default user
    username = u'admin'
    password = u'password'
    hash = hash_it(username, password)
    email = u'*****@*****.**'
    user = User(username=u'admin', hashedpassword=hash, email=email)
    user.first_name = u'Joe'
    user.last_name = u'Schmoe'
    user.save()

    # fix up a hello post
    content = u"""
**This** is an example post for the wonderful site of %s.  
This is a simple dev-post. Ready to be deleted at your leisure.  
[This](http://example.com/#) is a link.  
""" % (meta.domain)
    html_content = markdown(content, extensions)
    title = u"Hello, World!"
    post = Post(title=title,content=content, html_content=html_content, author=user)
    post.slugid = slugidfy()
    post.slug = slugfy(title)
    post.published = datetime.datetime.now()
    post.created = datetime.datetime.now()
    post.is_published = True
    post.save()
コード例 #2
0
ファイル: frontend.py プロジェクト: octaflop/synapse
def index():
    meta = Meta()
    posts = Post.objects()
    # posts = Post.live()
    users = User.objects()
    images = Image.objects()
    return dict(meta=meta, users=users, posts=posts, images=images)
コード例 #3
0
ファイル: meta.py プロジェクト: octaflop/synapse
    def __init__(self):
        self.logged_in = False
        self.loginform = LoginForm(request.form)
        if 'username' in session:
            self.username = escape(session['username'])
            self.user = User.objects(username=self.username).first()
            if not self.user == None:
                self.logged_in = True
        else:
            self.user = None
        self.site = Site.objects.first()
        ## this should probably be somewhere else (in the model?)
        self.footy = {}
        copyrightinfo_html = \
u"""
<a rel="license"
href="http://creativecommons.org/licenses/by-sa/2.5/ca/"><img
alt="Creative Commons License" style="border-width:0"
src="http://i.creativecommons.org/l/by-sa/2.5/ca/88x31.png" /></a><br
/>Content is released under a
<a href='http://creativecommons.org/licenses/by-sa/2.5/ca/'>Creative Commons
Attribution-ShareAlike 2.5 Canada License</a>
"""
        self.footy['copyrightinfo'] = copyrightinfo_html
        # May want to set up a model from the flatpages.
        self.footy['links'] = [{\
                'title' : u"github page",
                'url' : u"http://github.org/octaflop/synapse"
                }]
コード例 #4
0
ファイル: frontend.py プロジェクト: octaflop/synapse
def profile(username=None, id=None):
    meta = Meta()
    user_is_home = False
    if not (username == None and id == None):
        try:
            userpage = User.objects(username=username).get()
        except:
            try:
                userpage = User.objects(id=id).get()
            except:
                return abort(404)
    else:
        return abort(404)
    if "username" in session:
        if session["username"] == userpage.username:
            user_is_home = True
    return render_template("home.html", meta=meta, userpage=userpage, user_is_home=user_is_home)
コード例 #5
0
ファイル: admin.py プロジェクト: octaflop/synapse
def register_user():
    meta = Meta()
    user_form = RegistrationForm(request.form)
    if user_form.validate_on_submit():
        user = User(username=user_form.username.data, email=user_form.email.data)
        password = user_form.password.data
        user.hashedpassword = hash_it(user_form.username.data, password)
        try:
            user.save()
            if not 'username' in session:
                session['username'] = user.username
            flash("user: %s was added successfully" % user.username)
            return redirect(url_for('frontend.profile', username=user.username))
        except:
            flash("could not find user after adding")
            return redirect(url_for('login'))
    else:
        return render_template('register.html', meta=meta, user_form=user_form)
コード例 #6
0
ファイル: admin.py プロジェクト: octaflop/synapse
def add_image():
    meta = Meta()
    form = ImagePostForm(request.form)
    if form.validate_on_submit():
        if form.image.file:
            filename = secure_filename(form.image.file.filename)
            try:
                os.chdir(os.path.join(UPLOAD_FOLDER, 'orig'))
                slugid = slugidfy()
                filename = "%s_%s%s" % (filename[:-4], slugid, filename[-4:])
                form.image.file.save(filename)
                orig = os.path.join(STATIC_PATH, 'orig', filename)
                path = os.path.join(UPLOAD_FOLDER, 'orig', filename)
                image = Picture.open(path)
                # small images
                size = 100,100
                os.chdir('../small')
                image.thumbnail(size, Picture.ANTIALIAS)
                image.save(filename)
                small = os.path.join(STATIC_PATH, 'small', filename)
                image = Picture.open(path)
                # medium images
                size = 200,200
                os.chdir('../medium')
                image.thumbnail(size, Picture.ANTIALIAS)
                image.save(filename)
                medium = os.path.join(STATIC_PATH, 'medium', filename)
                image = Picture.open(path)
                # large images
                size = 650,650
                os.chdir('../large')
                image.thumbnail(size, Picture.ANTIALIAS)
                image.save(filename)
                large = os.path.join(STATIC_PATH, 'large', filename)
            except:
                return "error in file %s upload" % filename
            image = Image(
                title=form.title.data, \
                author=User.objects(username=form.author.data).get(),\
                description=form.description.data,\
                slug=slugfy(form.title.data), slugid=slugid,\
                filename=filename, created=datetime.datetime.now(),\
                published=datetime.datetime.now(),\
                path=path,\
                orig=orig,\
                small=small,\
                medium=medium,\
                large=large
                )
            try:
                image.save()
                #return jsonify(slugid=image.slugid)
                return image.slugid
            except:
                return "Something went wrong while saving"
    return render_template('add_image.html', meta=meta, form=form)
コード例 #7
0
ファイル: admin.py プロジェクト: octaflop/synapse
def login(next=None):
    """Login Function. Upcoming "next" function"""
    meta = Meta()
    form = LoginForm(request.form)
    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        given_passhash = hash_it(username, password)
        user = User.objects(username=username, hashedpassword=given_passhash).first()
        if user is not None:
            flash("%s is logged in" % user.username)
            session['username'] = user.username
            return redirect(url_for('frontend.profile', username=user.username))
        else:
            flash("Not found")
            return redirect('login')
    if 'username' in session:
        user = User.objects(username=escape(session['username'])).first()
        if user is not None:
            return redirect(url_for('frontend.profile', username=user.username))
        else:
            abort(500)
    return render_template('login.html', meta=meta, form=form)
コード例 #8
0
ファイル: admin.py プロジェクト: octaflop/synapse
def add_text_post():
    meta = Meta()
    form = TextPostForm(request.form)
    if form.validate_on_submit():
        username = escape(session['username'])
        text_post = TextPost(slug=slugfy(form.title.data))
        text_post.is_published = form.is_published.data
        try:
            text_post.author = User.objects(username=username).get()
        except:
            flash("user not found")
            return redirect(url_for('add_text_post', meta=meta, form=form))
        # Media ripping method
        def rip_media(mediastr):
            try:
                assert len(mediastr) % 8 == 0
            except:
                flash("could not save media %s " % escape(form.media.data))
            ret = []
            for i in range(len(mediastr) / 8):
                ret.append(mediastr[i*8:(i+1)*8])
            return ret
        if form.media.data:
            media = rip_media(form.media.data)
            if media:
                for j in range(len(media)):
                    med = Media.objects(slugid=media[j]).get()
                    text_post.media.append(med)
        published_time = escape(form.published_time.data)
        published_date = escape(form.published_date.data)
        published = "%s %s" % (published_date, published_time)
        datetimeformat = "%Y-%m-%d %H:%M"
        published = datetime.datetime.strptime(published, datetimeformat)
        text_post.published = published
        text_post.created = datetime.datetime.now()
        text_post.title = escape(form.title.data)
        text_post.content = escape(form.content.data)
        text_post.html_content = markdown(text_post.content, extensions)
        text_post.slugid = slugidfy()
        try:
            text_post.save()
            flash("%s was successfully saved as slugid %s" % (text_post.title,\
                text_post.slugid))
            return redirect(url_for('frontend.post_by_slugid', slugid=text_post.slugid))
        except:
            flash("Error: Post was not saved")
            return redirect(url_for('add_text_post', meta=meta, form=form))
    return render_template('admin/admin_entry.html', meta=meta, form=form)
コード例 #9
0
ファイル: helpers.py プロジェクト: octaflop/synapse
def reset_db():
    try:
        posts = Post.objects()
        sites = Site.objects()
        users = User.objects()
        images = Image.objects()
        deps = Dependency.objects()
        flatpages = FlatPage.objects()

        posts.delete()
        sites.delete()
        users.delete()
        deps.delete()
        flatpages.delete()
        return "all images, posts, sites, and users deleted successfully!"
    except:
        print "There was an error..."