Example #1
0
    def __init__(self, config):
        self.secret_key = config["secret_key"]
        self.db_autoflush = config["db"].get("autoflush")
        self.site_title = config.get("site_title") or "Lodge It"
        self.config = config
        self.attach_config = config["attachments"]

        # prepare the upload directory
        if not os.path.isdir(self.attach_config["upload_folder"]):
            os.makedirs(self.attach_config["upload_folder"])

        #: bind metadata, create engine and create all tables
        self.engine = engine = create_engine(config["db"]["uri"], convert_unicode=True)
        db.metadata.bind = engine
        if self.config["db"]["create_all"]:
            db.metadata.create_all(engine)

        #: jinja_environment update
        jinja_environment.globals.update({
            'i18n_languages': i18n.list_languages()})
        jinja_environment.filters.update({
            'datetimeformat': i18n.format_datetime})
        jinja_environment.install_null_translations()

        #: bind the application to the current context local
        self.bind_to_context()

        self.cleanup_callbacks = (db.session.close, _local_manager.cleanup,
                                  self.bind_to_context)
Example #2
0
 def set_language(self, lang='en'):
     """Minimal view that set's a different language. Redirects
     back to the page the user is coming from."""
     for key, value in list_languages():
         if key == lang:
             local.request.set_language(lang)
             break
     return redirect(local.request.headers.get('referer') or '/')
Example #3
0
 def set_language(self, lang='en'):
     """Minimal view that set's a different language. Redirects
     back to the page the user is coming from."""
     for key, value in list_languages():
         if key == lang:
             local.request.set_language(lang)
             break
     return redirect(local.request.headers.get('referer') or '/')
Example #4
0
    def new_paste(self, language=None):
        """The 'create a new paste' view."""
        language = local.request.args.get('language', language)
        if language is None:
            language = local.request.session.get('language', 'text')

        code = error = ''
        show_captcha = private = False
        parent = None
        req = local.request
        getform = req.form.get

        if local.request.method == 'POST':
            code = getform('code', u'')
            language = getform('language')

            parent_id = getform('parent')
            if parent_id is not None:
                parent = Paste.get(parent_id)

            spam = getform('webpage') or antispam.is_spam(code)
            if spam:
                error = _('your paste contains spam')
                captcha = getform('captcha')
                if captcha:
                    if check_hashed_solution(captcha):
                        error = None
                    else:
                        error = _('your paste contains spam and the '
                                  'CAPTCHA solution was incorrect')
                show_captcha = True
            if code and language and not error:
                paste = Paste(code, language, parent, req.user_hash,
                              'private' in req.form)
                session.flush()
                local.request.session['language'] = language
                return redirect(paste.url)

        else:
            parent_id = req.values.get('reply_to')
            if parent_id is not None:
                parent = Paste.get(parent_id)
                if parent is not None:
                    code = parent.code
                    language = parent.language
                    private = parent.private

        return render_to_response('new_paste.html',
            languages=list_languages(),
            parent=parent,
            code=code,
            language=language,
            error=error,
            show_captcha=show_captcha,
            private=private
        )
Example #5
0
    def new_paste(self, language=None):
        """The 'create a new paste' view."""
        language = local.request.args.get('language', language)
        if language is None:
            language = local.request.session.get('language', 'text')

        code = error = ''
        show_captcha = private = False
        parent = None
        req = local.request
        getform = req.form.get

        if local.request.method == 'POST':
            code = getform('code', u'')
            language = getform('language')

            parent_id = getform('parent')
            if parent_id is not None:
                parent = Paste.get(parent_id)

            spam = getform('webpage') or antispam.is_spam(code)
            if spam:
                error = _('your paste contains spam')
                captcha = getform('captcha')
                if captcha:
                    if check_hashed_solution(captcha):
                        error = None
                    else:
                        error = _('your paste contains spam and the '
                                  'CAPTCHA solution was incorrect')
                show_captcha = True
            if code and language and not error:
                paste = Paste(code, language, parent, req.user_hash, 'private'
                              in req.form)
                session.flush()
                local.request.session['language'] = language
                return redirect(paste.url)

        else:
            parent_id = req.values.get('reply_to')
            if parent_id is not None:
                parent = Paste.get(parent_id)
                if parent is not None:
                    code = parent.code
                    language = parent.language
                    private = parent.private

        return render_to_response('new_paste.html',
                                  languages=list_languages(),
                                  parent=parent,
                                  code=code,
                                  language=language,
                                  error=error,
                                  show_captcha=show_captcha,
                                  private=private)
Example #6
0
    def __init__(self, dburi, secret_key):
        self.secret_key = secret_key

        #: bind metadata, create engine and create all tables
        self.engine = engine = create_engine(dburi, convert_unicode=True)
        metadata.bind = engine
        metadata.create_all(engine)

        #: jinja_environment update
        jinja_environment.globals.update(i18n_languages=i18n.list_languages())
        jinja_environment.filters.update(datetimeformat=i18n.format_datetime)
        jinja_environment.install_null_translations()

        #: bind the application to the current context local
        self.bind_to_context()
Example #7
0
    def __init__(self, dburi, secret_key):
        self.secret_key = secret_key

        #: bind metadata, create engine and create all tables
        self.engine = engine = create_engine(dburi, convert_unicode=True)
        metadata.bind = engine
        metadata.create_all(engine)

        #: jinja_environment update
        jinja_environment.globals.update(i18n_languages=i18n.list_languages())
        jinja_environment.filters.update(datetimeformat=i18n.format_datetime)
        jinja_environment.install_null_translations()

        #: bind the application to the current context local
        self.bind_to_context()
Example #8
0
    def __init__(self, dburi, secret_key):
        self.secret_key = secret_key

        #: bind metadata, create engine and create all tables
        self.engine = engine = create_engine(dburi, convert_unicode=True)
        db.metadata.bind = engine
        db.metadata.create_all(engine, [Paste.__table__])

        #: jinja_environment update
        jinja_environment.globals.update({
            'i18n_languages': i18n.list_languages()})
        jinja_environment.filters.update({
            'datetimeformat': i18n.format_datetime})
        jinja_environment.install_null_translations()

        #: bind the application to the current context local
        self.bind_to_context()

        self.cleanup_callbacks = (db.session.close, _local_manager.cleanup,
                                  self.bind_to_context)
Example #9
0
    def __init__(self, dburi, secret_key):
        self.secret_key = secret_key

        #: bind metadata, create engine and create all tables
        self.engine = engine = create_engine(dburi, convert_unicode=True)
        db.metadata.bind = engine
        db.metadata.create_all(engine, [Paste.__table__])

        #: jinja_environment update
        jinja_environment.globals.update(
            {'i18n_languages': i18n.list_languages()})
        jinja_environment.filters.update(
            {'datetimeformat': i18n.format_datetime})
        jinja_environment.install_null_translations()

        #: bind the application to the current context local
        self.bind_to_context()

        self.cleanup_callbacks = (db.session.close, _local_manager.cleanup,
                                  self.bind_to_context)