コード例 #1
0
    def put(self,
            pageid,
            name,
            languageid,
            text=None,
            version=None,
            modified=None):
        """Edit a page"""
        lang = tmpl_context.lang or DBSession.query(Language).first().id
        page = DBSession.query(Page).get(pageid)

        modified = False
        if page.name[languageid] != name:
            page.name[languageid] = name
            modified = True

        if page.text[languageid] != text:
            page.text[languageid] = text
            modified = True

        if modified:
            page.data[languageid].modified = datetime.datetime.now()
            flash('%s %s' % (_('Updated Page:'), page.string_id), 'ok')
        else:
            flash('%s %s' % (_('Page is unchanged:'), page.string_id), 'info')
        return dict(redirect_to=url('/article/%s/edit' % page.article.id))
コード例 #2
0
ファイル: link.py プロジェクト: lento/tagger
    def edit(self, linkid, **kwargs):
        """Display a EDIT form."""
        tmpl_context.form = f_edit
        lang = tmpl_context.lang
        link = DBSession.query(Link).get(linkid.decode())

        tags = ', '.join([t.name[lang] for t in link.tags])
        fargs = dict(linkid=link.id, id_=link.id,
                     uri=link.uri,
                     languageid=link.language_id,
                     version=link.version,
                     modified=link.data[0].modified,
                     name=link.name[''],
                     description=link.description[''],
                     tagids=tags,
                    )

        languages = [(l.id, l.name) for l in DBSession.query(Language)]

        data = link.data[0]
        DataHistory = data.__history_mapper__.class_
        query = DBSession.query(DataHistory).filter_by(id=data.id)
        versions = range(query.count(), 0, -1)
        versions.insert(0, int(data.version))

        fcargs = dict(
            languageid=dict(options=languages),
            version=dict(options=versions),
            )
        return dict(title='%s %s' % (_('Edit link:'), link.id),
                                                args=fargs, child_args=fcargs)
コード例 #3
0
ファイル: language.py プロジェクト: lento/tagger
    def post_delete(self, languageid):
        """Delete a Language"""
        language = DBSession.query(Language).get(languageid.decode())

        DBSession.delete(language)
        flash('%s %s' % (_('Deleted Language:'), language.id), 'ok')
        return dict(redirect_to=url('/admin/language/'))
コード例 #4
0
ファイル: link.py プロジェクト: lento/tagger
    def get_all(self, tag=[], max_results=None, mode='all'):
        """Return a list of links"""
        settings = dict([(s.id, s.value) for s in DBSession.query(Setting)])
        if max_results is None:
            max_results = int(settings.get('max_results', 0))
        else:
            max_results = int(max_results)

        tmpl_context.w_object_title = w_object_title
        tmpl_context.w_link = w_link
        query = DBSession.query(Link)
        query = query.join(Link.associable).filter_by(published=True)
        query = query.order_by(desc(Link.created))

        tot_results = query.count()
        if max_results:
            links = query[0:max_results]
            more_results = max(tot_results - max_results, 0)
        else:
            links = query.all()
            more_results = False

        if tag:
            tagids = isinstance(tag, list) and tag or [tag]
            tagstring = ', '.join(tagids)
            tags = set(tags_from_string(tagstring, create=False))
            if mode == 'all':
                links = [obj for obj in links if set(obj.tags) >= (tags)]
            elif mode == 'any':
                links = [obj for obj in links if set(obj.tags) & (tags)]

        return dict(links=links, recent=find_recent(), path=('links', ''),
                                                    more_results=more_results)
コード例 #5
0
ファイル: test_language.py プロジェクト: lento/tagger
 def _fill_db(self):
     language = Language(u'xx', u'test language')
     DBSession.add(language)
     DBSession.flush()
     languageid = language.id
     transaction.commit()
     return languageid.encode()
コード例 #6
0
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test language')
     DBSession.add(language)
     DBSession.flush()
     languageid = language.id
     return languageid, tadm
コード例 #7
0
    def get_all(self, tag=[], max_results=None, mode='all'):
        """Return a list of media"""
        settings = dict([(s.id, s.value) for s in DBSession.query(Setting)])
        if max_results is None:
            max_results = int(settings.get('max_results', 0))
        else:
            max_results = int(max_results)

        tmpl_context.w_object_title = w_object_title
        tmpl_context.w_media = w_media
        query = DBSession.query(Media)
        query = query.join(Media.associable).filter_by(published=True)
        query = query.order_by(desc(Media.created))

        tot_results = query.count()
        if max_results:
            media = query[0:max_results]
            more_results = max(tot_results - max_results, 0)
        else:
            media = query.all()
            more_results = False

        if tag:
            tagids = isinstance(tag, list) and tag or [tag]
            tagstring = ', '.join(tagids)
            tags = set(tags_from_string(tagstring, create=False))
            if mode == 'all':
                media = [obj for obj in media if set(obj.tags) >= (tags)]
            elif mode == 'any':
                media = [obj for obj in media if set(obj.tags) & (tags)]

        return dict(media=media,
                    recent=find_recent(),
                    path=('media', ''),
                    more_results=more_results)
コード例 #8
0
    def test_comment(self):
        """controllers.admin.Controller.comment is working properly"""
        languageid, tadm = self._fill_db()
        comment = Comment(u'anonymous', u'*****@*****.**', u'test comment')
        DBSession.add(comment)
        DBSession.flush()
        commentid = comment.id
        transaction.commit()
        
        environ = {'REMOTE_USER': '******'}
        response = self.app.get('/admin/comment/', extra_environ=environ,
                                                                    status=200)

        tr = response.html.table('tr')[1]
        # Date
        eq_(str(tr('td')[1]), '<td>%s</td>' % commentid)
        eq_(str(tr('td')[2]), '<td></td>')
        eq_(str(tr('td')[3]), '<td>anonymous</td>')
        eq_(str(tr('td')[4]), '<td>[email protected]</td>')
        eq_(str(tr('td')[5]), '<td>test comment</td>')
        # Status
        actions = tr('td')[7]
        eq_(str(actions('a')[0]['class']), 'icon edit overlay')
        eq_(str(actions('a')[1]['class']), 'icon delete overlay')
        eq_(str(actions('a')[2]['class']), 'icon approve')
        eq_(str(actions('a')[3]['class']), 'icon spam')
コード例 #9
0
ファイル: tag.py プロジェクト: MahmoudGamalElDeen/tagger
 def post(self, name, languageid):
     """create a new Tag"""
     user = tmpl_context.user
     tag = Tag(name, languageid)
     DBSession.add(tag)
     flash('%s %s' % (_('Created Tag:'), tag.id), 'ok')
     return dict(redirect_to=url('/admin/tag/'))
コード例 #10
0
ファイル: link.py プロジェクト: lento/tagger
    def put(self, linkid, name, uri, languageid, description=None, tagids=None,
                                                version=None, modified=None):
        """Edit a link"""
        lang = tmpl_context.lang or DBSession.query(Language).first().id
        link = DBSession.query(Link).get(linkid.decode())

        modified = False
        if link.uri != uri:
            link.uri = uri
            modified = True

        if link.name[languageid] != name:
            link.name[languageid] = name
            modified = True

        if link.description[languageid] != description:
            link.description[languageid] = description
            modified = True

        tags = tags_from_string(tagids, lang=lang)
        if link.tags != tags:
            link.tags[:] = tags
            modified = True

        if modified:
            link.data[languageid].modified = datetime.datetime.now()
            flash('%s %s' % (_('Updated Link:'), link.id), 'ok')
        else:
            flash('%s %s' % (_('Link is unchanged:'), link.id), 'info')
        return dict(redirect_to=url('/admin/link/'))
コード例 #11
0
ファイル: comment.py プロジェクト: lento/tagger
    def post_delete(self, commentid):
        """Delete a Comment"""
        comment = DBSession.query(Comment).get(commentid)

        DBSession.delete(comment)
        flash('%s %s' % (_('Deleted Comment:'), comment.id), 'ok')
        return dict(redirect_to=url('/admin/comment/'))
コード例 #12
0
ファイル: language.py プロジェクト: MahmoudGamalElDeen/tagger
    def post_delete(self, languageid):
        """Delete a Language"""
        language = DBSession.query(Language).get(languageid.decode())

        DBSession.delete(language)
        flash('%s %s' % (_('Deleted Language:'), language.id), 'ok')
        return dict(redirect_to=url('/admin/language/'))
コード例 #13
0
ファイル: admin.py プロジェクト: MahmoudGamalElDeen/tagger
    def settings(self):
        """Return a form to edit settings"""
        tmpl_context.f_settings = f_settings
        lang = tmpl_context.lang

        query = DBSession.query(Setting)
        settings = dict([('v_%s' % s.id, s.value) for s in query])
        fargs = settings

        querymedia = DBSession.query(Media).filter_by(type=u'image')
        media_list = [('', '')]
        media_list.extend([(m.id, m.name[lang]) for m in querymedia])
        link_list = [('', '')]
        link_list.extend([(l.id, l.name[lang]) for l in DBSession.query(Link)])
        cc_list = [
            ('', ''),
            ('cc by', 'CC Attribution'),
            ('cc by-sa', 'CC Attribution Share Alike'),
            ('cc by-nd', 'CC Attribution No Derivatives'),
            ('cc by-nc', 'CC Attribution Non-Commercial'),
            ('cc by-nc-sa', 'CC Attribution Non-Commercial Share Alike'),
            ('cc by-nc-nd', 'CC Attribution Non-Commercial No Derivatives'),
        ]
        fcargs = dict(
            v_logo_media=dict(options=media_list),
            v_banner_media=dict(options=media_list),
            v_banner_link=dict(options=link_list),
            v_theme=dict(options=G.themes),
            v_cc=dict(options=cc_list),
        )
        return dict(args=fargs, child_args=fcargs, path=('admin', 'settings'))
コード例 #14
0
    def post_delete(self, commentid):
        """Delete a Comment"""
        comment = DBSession.query(Comment).get(commentid)

        DBSession.delete(comment)
        flash('%s %s' % (_('Deleted Comment:'), comment.id), 'ok')
        return dict(redirect_to=url('/admin/comment/'))
コード例 #15
0
 def _fill_db(self):
     language = Language(u'xx', u'test language')
     DBSession.add(language)
     DBSession.flush()
     languageid = language.id
     transaction.commit()
     return languageid.encode()
コード例 #16
0
ファイル: page.py プロジェクト: lento/tagger
    def edit(self, articleid, pagestringid, **kwargs):
        """Display a EDIT form."""
        tmpl_context.form = f_edit
        article = DBSession.query(Article).get(articleid.decode())
        page = article.pages[pagestringid]

        fargs = dict(pageid=page.id, id_=page.id,
                     languageid=page.language_id,
                     version=page.version,
                     modified=page.data[0].modified,
                     name=page.name[''],
                     text=page.text[''],
                    )

        languages = [(l.id, l.name) for l in DBSession.query(Language)]

        data = page.data[0]
        DataHistory = data.__history_mapper__.class_
        query = DBSession.query(DataHistory).filter_by(id=data.id)
        versions = range(query.count(), 0, -1)
        versions.insert(0, int(data.version))

        fcargs = dict(
            languageid=dict(options=languages),
            version=dict(options=versions),
            )
        return dict(title='%s %s' % (_('Edit page:'), page.string_id),
                                                args=fargs, child_args=fcargs)
コード例 #17
0
ファイル: admin.py プロジェクト: lento/tagger
    def settings(self):
        """Return a form to edit settings"""
        tmpl_context.f_settings = f_settings
        lang = tmpl_context.lang

        query = DBSession.query(Setting)
        settings = dict([('v_%s' % s.id, s.value) for s in query])
        fargs = settings

        querymedia = DBSession.query(Media).filter_by(type=u'image')
        media_list = [('', '')]
        media_list.extend([(m.id, m.name[lang]) for m in querymedia])
        link_list = [('', '')]
        link_list.extend([(l.id, l.name[lang]) for l in DBSession.query(Link)])
        cc_list = [
            ('', ''),
            ('cc by', 'CC Attribution'),
            ('cc by-sa', 'CC Attribution Share Alike'),
            ('cc by-nd', 'CC Attribution No Derivatives'),
            ('cc by-nc', 'CC Attribution Non-Commercial'),
            ('cc by-nc-sa', 'CC Attribution Non-Commercial Share Alike'),
            ('cc by-nc-nd', 'CC Attribution Non-Commercial No Derivatives'),
        ]
        fcargs = dict(v_logo_media=dict(options=media_list),
                      v_banner_media=dict(options=media_list),
                      v_banner_link=dict(options=link_list),
                      v_theme = dict(options=G.themes),
                      v_cc = dict(options=cc_list),
                     )
        return dict(args=fargs, child_args=fcargs, path=('admin', 'settings'))
コード例 #18
0
    def edit(self, mediaid, **kwargs):
        """Display a EDIT form."""
        tmpl_context.form = f_edit
        lang = tmpl_context.lang
        media = DBSession.query(Media).get(mediaid.decode())

        tags = ', '.join([t.name[lang] for t in media.tags])
        fargs = dict(
            mediaid=media.id,
            id_=media.id,
            mediatype_=media.type,
            uri=media.uri,
            languageid=media.language_id,
            version=media.version,
            modified=media.data[0].modified,
            name=media.name[''],
            description=media.description[''],
            tagids=tags,
        )

        languages = [(l.id, l.name) for l in DBSession.query(Language)]

        data = media.data[0]
        DataHistory = data.__history_mapper__.class_
        query = DBSession.query(DataHistory).filter_by(id=data.id)
        versions = range(query.count(), 0, -1)
        versions.insert(0, int(data.version))

        fcargs = dict(
            languageid=dict(options=languages),
            version=dict(options=versions),
        )
        return dict(title='%s %s' % (_('Edit media:'), media.id),
                    args=fargs,
                    child_args=fcargs)
コード例 #19
0
    def edit(self, articleid, pagestringid, **kwargs):
        """Display a EDIT form."""
        tmpl_context.form = f_edit
        article = DBSession.query(Article).get(articleid.decode())
        page = article.pages[pagestringid]

        fargs = dict(
            pageid=page.id,
            id_=page.id,
            languageid=page.language_id,
            version=page.version,
            modified=page.data[0].modified,
            name=page.name[''],
            text=page.text[''],
        )

        languages = [(l.id, l.name) for l in DBSession.query(Language)]

        data = page.data[0]
        DataHistory = data.__history_mapper__.class_
        query = DBSession.query(DataHistory).filter_by(id=data.id)
        versions = range(query.count(), 0, -1)
        versions.insert(0, int(data.version))

        fcargs = dict(
            languageid=dict(options=languages),
            version=dict(options=versions),
        )
        return dict(title='%s %s' % (_('Edit page:'), page.string_id),
                    args=fargs,
                    child_args=fcargs)
コード例 #20
0
ファイル: tag.py プロジェクト: MahmoudGamalElDeen/tagger
    def post_delete(self, tagid):
        """Delete a Tag"""
        tag = DBSession.query(Tag).get(tagid.decode())

        for tagdata in tag.data:
            DBSession.delete(tagdata)
        DBSession.delete(tag)
        flash('%s %s' % (_('Deleted Tag:'), tag.id), 'ok')
        return dict(redirect_to=url('/admin/tag/'))
コード例 #21
0
    def post(self,
             mediatype,
             languageid,
             name,
             uri=None,
             uploadfile=None,
             fallbackfile=None,
             description=None,
             tagids=None):
        """create a new Media"""
        user = tmpl_context.user
        lang = tmpl_context.lang or DBSession.query(Language).first().id

        # TODO: redirect to "new" with errors instead of raising an exception
        if mediatype == 'image':
            if uploadfile is None:
                raise HTTPClientError(_('No image uploaded'))
            origname, ext = os.path.splitext(uploadfile.filename)
            filename = '%s%s' % (make_id(name), ext)
            tmpf = open(os.path.join(G.upload_dir, filename), 'w+b')
            shutil.copyfileobj(uploadfile.file, tmpf)
            tmpf.close()
            uri = filename
        elif mediatype == 'video':
            if uploadfile is None or fallbackfile is None:
                raise HTTPClientError(_('No video or no fallback uploaded'))
            # copy video file in the upload area
            origname, ext = os.path.splitext(uploadfile.filename)
            filename = '%s%s' % (make_id(name), ext)
            tmpf = open(os.path.join(G.upload_dir, filename), 'w+b')
            shutil.copyfileobj(uploadfile.file, tmpf)
            tmpf.close()

            # copy fallback video file in the upload area
            origname, fallbackext = os.path.splitext(fallbackfile.filename)
            fallbackname = '%s%s' % (make_id(name), fallbackext)
            fallbacktmpf = open(os.path.join(G.upload_dir, fallbackname),
                                'w+b')
            shutil.copyfileobj(fallbackfile.file, fallbacktmpf)
            fallbacktmpf.close()

            uri = filename
        elif mediatype == 'youtube':
            if not uri:
                raise HTTPClientError(_('No video id'))
        elif mediatype == 'vimeo':
            if not uri:
                raise HTTPClientError(_('No video id'))

        media = Media(mediatype, name, uri, user, languageid, description)
        DBSession.add(media)

        tags = tags_from_string(tagids, lang=lang)
        media.tags[:] = tags

        flash('%s %s' % (_('Created Media:'), media.id), 'ok')
        return dict(redirect_to=url('/admin/media/'))
コード例 #22
0
ファイル: page.py プロジェクト: lento/tagger
    def new(self, articleid, **kwargs):
        """Display a NEW form."""
        tmpl_context.form = f_new
        article = DBSession.query(Article).get(articleid.decode())

        fargs = dict(articleid=article.id)
        lang_list = [(l.id, l.name) for l in DBSession.query(Language)]
        fcargs = dict(languageid=dict(options=lang_list))
        return dict(title=_('Create a new Page'), args=fargs, child_args=fcargs)
コード例 #23
0
ファイル: page.py プロジェクト: lento/tagger
    def post_delete(self, pageid):
        """Delete a Page"""
        page = DBSession.query(Page).get(pageid)

        for pagedata in page.data:
            DBSession.delete(pagedata)
        DBSession.delete(page)
        flash('%s %s' % (_('Deleted Page:'), page.string_id), 'ok')
        return dict(redirect_to=url('/article/%s/edit' % page.article.id))
コード例 #24
0
    def post_delete(self, pageid):
        """Delete a Page"""
        page = DBSession.query(Page).get(pageid)

        for pagedata in page.data:
            DBSession.delete(pagedata)
        DBSession.delete(page)
        flash('%s %s' % (_('Deleted Page:'), page.string_id), 'ok')
        return dict(redirect_to=url('/article/%s/edit' % page.article.id))
コード例 #25
0
    def post_delete(self, categoryid):
        """Delete a Category"""
        category = DBSession.query(Category).get(categoryid.decode())

        for categorydata in category.data:
            DBSession.delete(categorydata)
        DBSession.delete(category)
        flash('%s %s' % (_('Deleted Category:'), category.id), 'ok')
        return dict(redirect_to=url('/admin/category/'))
コード例 #26
0
ファイル: category.py プロジェクト: lento/tagger
 def post_delete(self, categoryid):
     """Delete a Category"""
     category = DBSession.query(Category).get(categoryid.decode())
     
     for categorydata in category.data:
         DBSession.delete(categorydata)
     DBSession.delete(category)
     flash('%s %s' % (_('Deleted Category:'), category.id), 'ok')
     return dict(redirect_to=url('/admin/category/'))
コード例 #27
0
ファイル: page.py プロジェクト: lento/tagger
    def post(self, articleid, name, languageid, text=None):
        """create a new Page"""
        user = tmpl_context.user
        article = DBSession.query(Article).get(articleid.decode())
        page = Page(name, languageid, user, text)
        article.pages.append(page)
        DBSession.flush()

        flash('%s %s' % (_('Created Page:'), page.string_id), 'ok')
        return dict(redirect_to=url('/article/%s/edit' % article.id))
コード例 #28
0
    def post(self, articleid, name, languageid, text=None):
        """create a new Page"""
        user = tmpl_context.user
        article = DBSession.query(Article).get(articleid.decode())
        page = Page(name, languageid, user, text)
        article.pages.append(page)
        DBSession.flush()

        flash('%s %s' % (_('Created Page:'), page.string_id), 'ok')
        return dict(redirect_to=url('/article/%s/edit' % article.id))
コード例 #29
0
    def new(self, articleid, **kwargs):
        """Display a NEW form."""
        tmpl_context.form = f_new
        article = DBSession.query(Article).get(articleid.decode())

        fargs = dict(articleid=article.id)
        lang_list = [(l.id, l.name) for l in DBSession.query(Language)]
        fcargs = dict(languageid=dict(options=lang_list))
        return dict(title=_('Create a new Page'),
                    args=fargs,
                    child_args=fcargs)
コード例 #30
0
ファイル: link.py プロジェクト: MahmoudGamalElDeen/tagger
    def post(self, name, uri, languageid, description=None, tagids=None):
        """create a new Link"""
        user = tmpl_context.user
        lang = tmpl_context.lang or DBSession.query(Language).first().id
        link = Link(name, uri, user, languageid, description)
        DBSession.add(link)

        tags = tags_from_string(tagids, lang=lang)
        link.tags[:] = tags

        flash('%s %s' % (_('Created Link:'), link.id), 'ok')
        return dict(redirect_to=url('/admin/link/'))
コード例 #31
0
ファイル: tag.py プロジェクト: MahmoudGamalElDeen/tagger
 def edit(self, tagid, **kwargs):
     """Display a EDIT form."""
     tmpl_context.form = f_edit
     tag = DBSession.query(Tag).get(tagid.decode())
     fargs = dict(tagid=tag.id, id_=tag.id,
                  languageid=tag.language_id,
                  name=tag.name[''],
                 )
     languages = [(l.id, l.name) for l in DBSession.query(Language)]
     fcargs = dict(languageid=dict(options=languages))
     return dict(title='%s %s' % (_('Edit tag:'), tag.id),
                                             args=fargs, child_args=fcargs)
コード例 #32
0
ファイル: link.py プロジェクト: lento/tagger
    def post(self, name, uri, languageid, description=None, tagids=None):
        """create a new Link"""
        user = tmpl_context.user
        lang = tmpl_context.lang or DBSession.query(Language).first().id
        link = Link(name, uri, user, languageid, description)
        DBSession.add(link)

        tags = tags_from_string(tagids, lang=lang)
        link.tags[:] = tags

        flash('%s %s' % (_('Created Link:'), link.id), 'ok')
        return dict(redirect_to=url('/admin/link/'))
コード例 #33
0
    def post(self, title, categoryid, languageid, text=None, tagids=None):
        """create a new Article"""
        user = tmpl_context.user
        lang = tmpl_context.lang or DBSession.query(Language).first().id
        category = DBSession.query(Category).get(categoryid)
        article = Article(title, category, languageid, user, text)
        DBSession.add(article)

        tags = tags_from_string(tagids, lang=lang)
        article.tags[:] = tags

        flash('%s %s' % (_('Created Article:'), article.id), 'ok')
        return dict(redirect_to=url('/admin/article/'))
コード例 #34
0
ファイル: category.py プロジェクト: lento/tagger
 def edit(self, categoryid, **kwargs):
     """Display a EDIT form."""
     tmpl_context.form = f_edit
     lang = tmpl_context.lang
     category = DBSession.query(Category).get(categoryid.decode())
     fargs = dict(categoryid=category.id, id_=category.id,
                  languageid=category.language_id,
                  name=category.name[lang],
                  description=category.description[lang])
     languages = [(l.id, l.name) for l in DBSession.query(Language)]
     fcargs = dict(languageid=dict(options=languages))
     return dict(title='%s %s' % (_('Edit Category:'), category.id),
                                             args=fargs, child_args=fcargs)
コード例 #35
0
    def new(self, **kwargs):
        """Display a NEW form."""
        tmpl_context.form = f_new
        lang = tmpl_context.lang

        fargs = dict()
        
        cat_list = [(c.id, c.name[lang]) for c in DBSession.query(Category)]
        lang_list = [(l.id, l.name) for l in DBSession.query(Language)]
        fcargs = dict(categoryid=dict(options=cat_list),
                                            languageid=dict(options=lang_list))
        return dict(title=_('Create a new Article'),
                                                args=fargs, child_args=fcargs)
コード例 #36
0
def get_page(pageid):
    """Return a page given its id or its article/string_id path"""
    try:
        if isinstance(pageid, int) or pageid.isdigit():
            page = DBSession.query(Page).get(pageid)
        elif '/' in pageid:
            articleid, pageid = pageid.split('/')
            query = DBSession.query(Page)
            query = query.filter_by(string_id=pageid, article_id=articleid)
            page = query.one()
        else:
            page = None
    except NoResultFound, MultipleResultsFound:
        page = None
コード例 #37
0
ファイル: helpers.py プロジェクト: lento/tagger
def get_page(pageid):
    """Return a page given its id or its article/string_id path"""
    try:
        if isinstance(pageid, int) or pageid.isdigit():
            page = DBSession.query(Page).get(pageid)
        elif '/' in pageid:
            articleid, pageid = pageid.split('/')
            query = DBSession.query(Page)
            query = query.filter_by(string_id=pageid, article_id=articleid)
            page = query.one()
        else:
            page = None
    except NoResultFound, MultipleResultsFound:
        page = None
コード例 #38
0
 def edit(self, categoryid, **kwargs):
     """Display a EDIT form."""
     tmpl_context.form = f_edit
     lang = tmpl_context.lang
     category = DBSession.query(Category).get(categoryid.decode())
     fargs = dict(categoryid=category.id,
                  id_=category.id,
                  languageid=category.language_id,
                  name=category.name[lang],
                  description=category.description[lang])
     languages = [(l.id, l.name) for l in DBSession.query(Language)]
     fcargs = dict(languageid=dict(options=languages))
     return dict(title='%s %s' % (_('Edit Category:'), category.id),
                 args=fargs,
                 child_args=fcargs)
コード例 #39
0
    def post_delete(self, articleid):
        """Delete a Article"""
        article = DBSession.query(Article).get(articleid.decode())

        for page in article.pages:
            for pagedata in page.data:
                DBSession.delete(pagedata)
            DBSession.delete(page)
        DBSession.delete(article.associable)
        DBSession.delete(article)
        flash('%s %s' % (_('Deleted Article:'), article.id), 'ok')
        return dict(redirect_to=url('/admin/article/'))
コード例 #40
0
ファイル: comment.py プロジェクト: lento/tagger
    def revoke(self, commentid):
        """Revoke comment approval and make it invisible"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'waiting'
        flash('%s %s' % (_('Revoked approval for Comment:'), comment.id), 'ok')
        redirect(url('/admin/comment'))
コード例 #41
0
ファイル: test_link.py プロジェクト: lento/tagger
    def test_post_delete(self):
        """controllers.link.Controller.post_delete is working properly"""
        languageid, linkid = self._fill_db()

        environ = {'REMOTE_USER': '******'}
        response = self.app.delete('/link?linkid=%s' % linkid,
                                            extra_environ=environ, status=200)
        assert_true('parent.location = "/admin/link/";' in response.body,
                            'should be redirected to "/admin/link/" via javascript')

        link = DBSession.query(Link).get(linkid.decode())
        assert_true(link is None,
                            'Link "1" should have been deleted from the db')
        linkdata = DBSession.query(LinkData).filter_by(parent_id=None).all()
        assert_false(linkdata,
                    'orphaned LinkData should have been deleted from the db')
コード例 #42
0
    def test_post(self):
        """controllers.media.Controller.post is working properly"""
        languageid, mediaid = self._fill_db()

        environ = {'REMOTE_USER': '******'}
        response = self.app.post('/media/',
                                 dict(
                                     mediatype='youtube',
                                     uri='nROPFegfRuU',
                                     uploadfile='',
                                     fallbackfile='',
                                     languageid=languageid,
                                     name='test video',
                                     description='random text',
                                     tagids='test_tag',
                                 ),
                                 extra_environ=environ,
                                 status=200)
        assert_true('parent.location = "/admin/media/";' in response.body,
                    'should be redirected to "/admin/media/" via javascript')

        media = DBSession().query(Media).get(u'test-video')
        eq_(media.type, u'youtube')
        eq_(media.name[''], u'test video')
        eq_(media.description[''], u'random text')
        eq_(media.language_ids, set([languageid]))
        eq_(media.user.user_name, 'test_admin')
        eq_(media.tags[0].id, 'test_tag')
コード例 #43
0
ファイル: comment.py プロジェクト: lento/tagger
 def post(self, associableid, name, email, text, came_from='/'):
     """create a new Comment"""
     associable = DBSession.query(Associable).get(associableid)
     comment = Comment(name, email, text)
     associable.comments.append(comment)
     flash('%s %s' % (_('Created Comment:'), comment.header), 'ok')
     return dict(redirect_to=url(came_from))
コード例 #44
0
ファイル: tag.py プロジェクト: MahmoudGamalElDeen/tagger
    def translation(self, tagid, value):
        """Return a tag translation"""
        tag = DBSession.query(Tag).get(tagid.decode())

        name = tag.name[value]
        
        return dict(name=name)
コード例 #45
0
ファイル: test_tag.py プロジェクト: lento/tagger
    def test_post_delete(self):
        """controllers.tag.Controller.post_delete is working properly"""
        languageid, tagid = self._fill_db()

        environ = {'REMOTE_USER': '******'}
        response = self.app.delete('/tag?tagid=%s' % tagid,
                                            extra_environ=environ, status=200)
        assert_true('parent.location = "/admin/tag/";' in response.body,
                        'should be redirected to "/admin/tag/" via javascript')

        tag = DBSession.query(Tag).get(tagid.decode())
        assert_true(tag is None,
                            'Tag should have been deleted from the db')
        tagdata = DBSession.query(TagData).filter_by(parent_id=None).all()
        assert_false(tagdata,
                    'orphaned TagData should have been deleted from the db')
コード例 #46
0
    def approve(self, commentid):
        """Approve a comment and make it visible"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'approved'
        flash('%s %s' % (_('Approved Comment:'), comment.id), 'ok')
        redirect(url('/admin/comment'))
コード例 #47
0
ファイル: comment.py プロジェクト: lento/tagger
    def approve(self, commentid):
        """Approve a comment and make it visible"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'approved'
        flash('%s %s' % (_('Approved Comment:'), comment.id), 'ok')
        redirect(url('/admin/comment'))
コード例 #48
0
    def revoke(self, commentid):
        """Revoke comment approval and make it invisible"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'waiting'
        flash('%s %s' % (_('Revoked approval for Comment:'), comment.id), 'ok')
        redirect(url('/admin/comment'))
コード例 #49
0
 def post(self, associableid, name, email, text, came_from='/'):
     """create a new Comment"""
     associable = DBSession.query(Associable).get(associableid)
     comment = Comment(name, email, text)
     associable.comments.append(comment)
     flash('%s %s' % (_('Created Comment:'), comment.header), 'ok')
     return dict(redirect_to=url(came_from))
コード例 #50
0
    def spam(self, commentid):
        """Mark a comment as spam"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'spam'
        flash('%s %s' % (_('Comment marked as spam:'), comment.id), 'ok')
        redirect(url('/admin/comment'))
コード例 #51
0
ファイル: comment.py プロジェクト: lento/tagger
    def spam(self, commentid):
        """Mark a comment as spam"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'spam'
        flash('%s %s' % (_('Comment marked as spam:'), comment.id), 'ok')
        redirect(url('/admin/comment'))