예제 #1
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)
예제 #2
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'))
예제 #3
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)
예제 #4
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)
예제 #5
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)
예제 #6
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/'))
예제 #7
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)
예제 #8
0
    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'))
예제 #9
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))
예제 #10
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)
예제 #11
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)
예제 #12
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)
예제 #13
0
 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)
예제 #14
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/'))
예제 #15
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)
예제 #16
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)
예제 #17
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
예제 #18
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
예제 #19
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)
예제 #20
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
예제 #21
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/'))
예제 #22
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'))
예제 #23
0
    def translation(self, tagid, value):
        """Return a tag translation"""
        tag = DBSession.query(Tag).get(tagid.decode())

        name = tag.name[value]
        
        return dict(name=name)
예제 #24
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'))
예제 #25
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'))
예제 #26
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))
예제 #27
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')
예제 #28
0
    def test_banner_set(self):
        """controllers.admin.Controller.banner_set is working properly"""
        languageid, tadm = self._fill_db()
        media = Media(u'image', u'test image', u'/test.png', tadm, u'xx',
                                                                u'random text')
        DBSession.add(media)
        link = Link(u'test link', u'http://example.com', tadm, u'xx',
                                                                u'random text')
        DBSession.add(link)
        DBSession.flush()
        mediaid = media.id
        linkid = link.id
        transaction.commit()
        
        environ = {'REMOTE_USER': '******'}
        response = self.app.post('/admin/banner_set',
                                            dict(mediaid=mediaid,
                                                 linkid=linkid,
                                                ),
                                            extra_environ=environ, status=302)
        #redirected = response.follow(extra_environ=environ, status=200)

        bc = DBSession.query(BannerContent).first()
        eq_(bc.media_id, mediaid)
        eq_(bc.link_id, linkid)
예제 #29
0
    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')
예제 #30
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'))
예제 #31
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/'))
예제 #32
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'))
예제 #33
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/'))
예제 #34
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'))
예제 #35
0
    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/'))
예제 #36
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')
예제 #37
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))
예제 #38
0
def tags_from_string(s, create=True, lang=None):
    if lang is None:
        lang = DBSession.query(Language).first().id
    alltags = dict([(t.id, t) for t in DBSession.query(Tag)])
    alltagsdata = dict([(d.name, d) for d in DBSession.query(TagData)])
    tagnames = s and s.split(', ') or []
    tags = []
    for tagname in tagnames:
        if tagname in alltags:
            tag = alltags[tagname]
        elif tagname in alltagsdata:
            tag = alltagsdata[tagname].parent
        elif create:
            tag = Tag(tagname, lang)
            DBSession.add(tag)
        tags.append(tag)
    return tags
예제 #39
0
파일: comment.py 프로젝트: lento/tagger
    def unspam(self, commentid):
        """Remove the spam mark from a comment"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'waiting'
        flash('%s %s' % (_('Removed spam mark from Comment:'), comment.id),
                                                                        'ok')
        redirect(url('/admin/comment'))
예제 #40
0
    def edit(self, articleid, **kwargs):
        """Return a page to edit an article and all its pages"""
        tmpl_context.f_edit = f_edit
        lang = tmpl_context.lang
        article = DBSession.query(Article).get(articleid.decode())

        tags = ', '.join([t.name[lang] for t in article.tags])
        fargs = dict(articleid=article.id, id_=article.id,
                     title_=article.title[''],
                     categoryid=article.category_id,
                     tagids=tags,
                    )
        categories = [(c.id, c.name[lang]) for c in DBSession.query(Category)]
        fcargs = dict(categoryid=dict(options=categories),
                     )
        return dict(article=article, page=('admin', None), args=fargs,
                                                            child_args=fcargs)
예제 #41
0
    def translation(self, categoryid, value):
        """Return a category translation"""
        category = DBSession.query(Category).get(categoryid.decode())

        name = category.name[value]
        description = category.description[value]

        return dict(name=name, description=description)
예제 #42
0
    def test_post_delete(self):
        """controllers.category.Controller.post_delete is working properly"""
        languageid, categoryid = self._fill_db()

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

        cat = DBSession.query(Category).get(categoryid.decode())
        assert_true(cat is None,
                            'Category should have been deleted from the db')
        query = DBSession.query(CategoryData)
        categorydata = query.filter_by(parent_id=None).all()
        assert_false(categorydata,
                'orphaned CategoryData should have been deleted from the db')
예제 #43
0
    def translation(self, articleid, value):
        """Return a article translation"""
        article = DBSession.query(Article).get(articleid.decode())

        title = article.title[value]
        text = article.text[value]
        
        return dict(title=title, text=text)
예제 #44
0
파일: helpers.py 프로젝트: lento/tagger
def tags_from_string(s, create=True, lang=None):
    if lang is None:
        lang = DBSession.query(Language).first().id
    alltags = dict([(t.id, t) for t in DBSession.query(Tag)])
    alltagsdata = dict([(d.name, d) for d in DBSession.query(TagData)])
    tagnames = s and s.split(', ') or []
    tags = []
    for tagname in tagnames:
        if tagname in alltags:
            tag = alltags[tagname]
        elif tagname in alltagsdata:
            tag = alltagsdata[tagname].parent
        elif create:
            tag = Tag(tagname, lang)
            DBSession.add(tag)
        tags.append(tag)
    return tags
예제 #45
0
    def unspam(self, commentid):
        """Remove the spam mark from a comment"""
        comment = DBSession.query(Comment).get(commentid)

        comment.status = 'waiting'
        flash('%s %s' % (_('Removed spam mark from Comment:'), comment.id),
              'ok')
        redirect(url('/admin/comment'))
예제 #46
0
파일: category.py 프로젝트: lento/tagger
    def translation(self, categoryid, value):
        """Return a category translation"""
        category = DBSession.query(Category).get(categoryid.decode())

        name = category.name[value]
        description = category.description[value]
        
        return dict(name=name, description=description)
예제 #47
0
    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')
예제 #48
0
    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/'))
예제 #49
0
파일: category.py 프로젝트: lento/tagger
 def new(self, **kwargs):
     """Display a NEW form."""
     tmpl_context.form = f_new
     
     fargs = dict()
     lang_list = [(l.id, l.name) for l in DBSession.query(Language).all()]
     fcargs = dict(languageid=dict(options=lang_list))
     return dict(title=_('Create a new Category'),
                                             args=fargs, child_args=fcargs)
예제 #50
0
    def new(self, **kwargs):
        """Display a NEW form."""
        tmpl_context.form = f_new

        fargs = dict()
        lang_list = [(l.id, l.name) for l in DBSession.query(Language).all()]
        fcargs = dict(languageid=dict(options=lang_list))
        return dict(title=_('Create a new Tag'),
                                                args=fargs, child_args=fcargs)
예제 #51
0
파일: language.py 프로젝트: lento/tagger
 def edit(self, languageid, **kwargs):
     """Display a EDIT form."""
     tmpl_context.form = f_edit
     language = DBSession.query(Language).get(languageid.decode())
     fargs = dict(languageid=language.id, id_=language.id,
                  name=language.name)
     fcargs = dict()
     return dict(title='%s %s' % (_('Edit Language:'), language.id),
                                             args=fargs, child_args=fcargs)
예제 #52
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/'))