示例#1
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
示例#2
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()
示例#3
0
    def test_article(self):
        """controllers.admin.Controller.article is working properly"""
        languageid, tadm = self._fill_db()
        cat = Category(u'test_category', u'xx')
        DBSession.add(cat)
        article = Article(u'A Test Article!', cat, u'xx', tadm, u'random text')
        DBSession.add(article)
        DBSession.flush()
        categoryid = cat.id
        articleid = article.id
        transaction.commit()

        environ = {'REMOTE_USER': '******'}
        response = self.app.get('/admin/article/', extra_environ=environ,
                                                                    status=200)

        tr = response.html.table.find('tr', articleid)
        # Date
        eq_(str(tr('td')[1]), '<td>test_category</td>')
        eq_(str(tr('td')[2]), '<td>%s</td>' % articleid)
        eq_(str(tr('td')[3]), '<td>A Test Article!</td>')
        eq_(str(tr('td')[4]), '<td></td>')
        eq_(str(tr('td')[5]), '<td>%s</td>' % languageid)
        # Status
        actions = tr('td')[7]
        eq_(str(actions('a')[0]['class']), 'icon edit')
        eq_(str(actions('a')[1]['class']), 'icon delete overlay')
        eq_(str(actions('a')[2]['class']), 'icon publish')
示例#4
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()
示例#5
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')
示例#6
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)
示例#7
0
 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/'))
示例#8
0
 def do_get_dependencies(self):
     try:
         self.language = content.Language(id=u'xx', name=u'test_lang')
         DBSession.add(self.language)
         DBSession.flush()
         return dict(lang=self.language.id, )
     except:
         DBSession.rollback()
         raise
示例#9
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/'))
示例#10
0
 def do_get_dependencies(self):
     try:
         self.language = content.Language(id=u'xx', name=u'test_lang')
         DBSession.add(self.language)
         DBSession.flush()
         return dict(lang=self.language.id,
                    )
     except:
         DBSession.rollback()
         raise
示例#11
0
文件: test_tag.py 项目: lento/tagger
 def _fill_db(self):
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     tag = Tag(u'test tag', u'xx')
     DBSession.add(tag)
     DBSession.flush()
     languageid = language.id
     tagid = tag.id
     transaction.commit()
     return languageid, tagid.encode()
示例#12
0
 def _fill_db(self):
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     cat = Category(u'test category', u'xx', u'a test category')
     DBSession.add(cat)
     DBSession.flush()
     languageid = language.id
     categoryid = cat.id
     transaction.commit()
     return languageid, categoryid.encode()
示例#13
0
 def _fill_db(self):
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     tag = Tag(u'test tag', u'xx')
     DBSession.add(tag)
     DBSession.flush()
     languageid = language.id
     tagid = tag.id
     transaction.commit()
     return languageid, tagid.encode()
示例#14
0
 def _fill_db(self):
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     cat = Category(u'test category', u'xx', u'a test category')
     DBSession.add(cat)
     DBSession.flush()
     languageid = language.id
     categoryid = cat.id
     transaction.commit()
     return languageid, categoryid.encode()
示例#15
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/'))
示例#16
0
    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/'))
示例#17
0
 def setUp(self):
     """Prepare model test fixture."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
示例#18
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/'))
示例#19
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
示例#20
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
示例#21
0
    def test_tag(self):
        """controllers.admin.Controller.tag is working properly"""
        languageid, tadm = self._fill_db()
        tag = Tag(u'test tag', u'xx')
        DBSession.add(tag)
        DBSession.flush()
        tagid = tag.id
        transaction.commit()
        
        environ = {'REMOTE_USER': '******'}
        response = self.app.get('/admin/tag/', extra_environ=environ,
                                                                    status=200)

        tr = response.html.table('tr')[1]
        eq_(str(tr('td')[0]), '<td>%s</td>' % tagid)
        eq_(str(tr('td')[1]), '<td>test tag</td>')
        eq_(str(tr('td')[2]), '<td>%s</td>' % languageid)
        actions = tr('td')[3]
        eq_(str(actions('a')[0]['class']), 'icon edit overlay')
        eq_(str(actions('a')[1]['class']), 'icon delete overlay')
示例#22
0
    def test_category(self):
        """controllers.admin.Controller.category is working properly"""
        languageid, tadm = self._fill_db()
        category = Category(u'test category', u'xx', u'a test category')
        DBSession.add(category)
        DBSession.flush()
        categoryid = category.id
        transaction.commit()

        environ = {'REMOTE_USER': '******'}
        response = self.app.get('/admin/category/', extra_environ=environ,
                                                                    status=200)
        
        tr = response.html.table.find('tr', categoryid)
        eq_(str(tr('td')[0]), '<td>%s</td>' % categoryid)
        eq_(str(tr('td')[1]), '<td>test category</td>')
        eq_(str(tr('td')[2]), '<td>a test category</td>')
        eq_(str(tr('td')[3]), '<td>%s</td>' % languageid)
        actions = tr('td')[4]
        eq_(str(actions('a')[0]['class']), 'icon edit overlay')
        eq_(str(actions('a')[1]['class']), 'icon delete overlay')
示例#23
0
    def settings_set(self, name=None, value=None):
        """Set settings values"""
        query = DBSession.query(Setting)
        settings = dict([(s.id, s) for s in query])
        if not len(name) == len(value):
            raise HTTPBadRequest("names and values don't match")

        modified = False
        for n, v in zip(name, value):
            if n in settings:
                if not settings[n].value == v:
                    settings[n].value = v
                    modified = True
            else:
                DBSession.add(Setting(n, v))
                modified = True

        if modified:
            flash(_('Updated Settings'), 'ok')
        else:
            flash(_('Settings are unchanged'), 'info')
        redirect(url('/admin/settings/'))
示例#24
0
文件: admin.py 项目: lento/tagger
    def settings_set(self, name=None, value=None):
        """Set settings values"""
        query = DBSession.query(Setting)
        settings = dict([(s.id, s) for s in query])
        if not len(name) == len(value):
            raise HTTPBadRequest("names and values don't match")

        modified = False
        for n, v in zip(name, value):
            if n in settings:
                if not settings[n].value == v:
                    settings[n].value = v
                    modified = True
            else:
                DBSession.add(Setting(n, v))
                modified = True

        if modified:
            flash(_('Updated Settings'), 'ok')
        else:
            flash(_('Settings are unchanged'), 'info')
        redirect(url('/admin/settings/'))
示例#25
0
    def test_link(self):
        """controllers.admin.Controller.link is working properly"""
        languageid, tadm = self._fill_db()
        link = Link(u'test link', u'http://example.com', tadm, u'xx',
                                                                u'random text')
        DBSession.add(link)
        DBSession.flush()
        linkid = link.id
        transaction.commit()
        
        environ = {'REMOTE_USER': '******'}
        response = self.app.get('/admin/link/', extra_environ=environ,
                                                                    status=200)

        tr = response.html.table('tr')[1]
        eq_(str(tr('td')[0]), '<td>%s</td>' % linkid)
        eq_(str(tr('td')[1]), '<td>test link</td>')
        eq_(str(tr('td')[2]), '<td>http://example.com</td>')
        eq_(str(tr('td')[3]), '<td></td>')
        eq_(str(tr('td')[4]), '<td>%s</td>' % languageid)
        actions = tr('td')[5]
        eq_(str(actions('a')[0]['class']), 'icon edit overlay')
        eq_(str(actions('a')[1]['class']), 'icon delete overlay')
示例#26
0
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     cat = Category(u'test_category', u'xx')
     DBSession.add(cat)
     tag = Tag(u'test_tag', u'xx')
     DBSession.add(tag)
     article = Article(u'A Test Article!', cat, u'xx', tadm, u'random text')
     article.tags.append(tag)
     DBSession.add(article)
     DBSession.flush()
     categoryid = cat.id
     articleid = article.id
     languageid = language.id
     transaction.commit()
     return languageid, categoryid, articleid.encode()
示例#27
0
    def test_media(self):
        """controllers.admin.Controller.media 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)
        DBSession.flush()
        mediaid = media.id
        transaction.commit()
        
        environ = {'REMOTE_USER': '******'}
        response = self.app.get('/admin/media/', extra_environ=environ,
                                                                    status=200)

        tr = response.html.table('tr')[1]
        eq_(str(tr('td')[0]), '<td>%s</td>' % mediaid)
        eq_(str(tr('td')[1]), '<td>image</td>')
        eq_(str(tr('td')[2]), '<td>test image</td>')
        eq_(str(tr('td')[3]), '<td>/test.png</td>')
        eq_(str(tr('td')[4]), '<td></td>')
        eq_(str(tr('td')[5]), '<td>%s</td>' % languageid)
        actions = tr('td')[6]
        eq_(str(actions('a')[0]['class']), 'icon edit overlay')
        eq_(str(actions('a')[1]['class']), 'icon delete overlay')
示例#28
0
 def do_get_dependencies(self):
     try:
         user = auth.User(user_name=u'test_user')
         DBSession.add(user)
         language = content.Language(id=u'xx', name=u'test_lang')
         DBSession.add(language)
         self.media = content.Media(u'image', u'test_image', u'test.png',
                                    user, u'xx')
         DBSession.add(self.media)
         self.link = content.Link(u'test_link', u'http://example.com', user,
                                  u'xx')
         DBSession.add(self.link)
         DBSession.flush()
         return dict(
             media=self.media,
             link=self.link,
         )
     except:
         DBSession.rollback()
         raise
示例#29
0
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     tag = Tag(u'test_tag', u'xx')
     DBSession.add(tag)
     link = Link(u'test link', u'http://example.com', tadm, u'xx',
                 u'random text')
     link.tags.append(tag)
     DBSession.add(link)
     DBSession.flush()
     languageid = language.id
     linkid = link.id
     transaction.commit()
     return languageid, linkid.encode()
示例#30
0
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     link = Link(u'test link', u'http://example.com', tadm, u'xx',
                                                             u'random text')
     DBSession.add(link)
     comment = Comment(u'anonymous', u'*****@*****.**', u'test comment')
     DBSession.add(comment)
     link.comments.append(comment)
     DBSession.flush()
     associableid = link.associable.id
     commentid = comment.id
     transaction.commit()
     return associableid, commentid
示例#31
0
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     tag = Tag(u'test_tag', u'xx')
     DBSession.add(tag)
     media = Media(u'image', u'test image', u'/test.png', tadm, u'xx',
                                                             u'random text')
     media.tags.append(tag)
     DBSession.add(media)
     DBSession.flush()
     languageid = language.id
     mediaid = media.id
     transaction.commit()
     return languageid, mediaid.encode()
示例#32
0
文件: test_link.py 项目: lento/tagger
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     tag = Tag(u'test_tag', u'xx')
     DBSession.add(tag)
     link = Link(u'test link', u'http://example.com', tadm, u'xx',
                                                             u'random text')
     link.tags.append(tag)
     DBSession.add(link)
     DBSession.flush()
     languageid = language.id
     linkid = link.id
     transaction.commit()
     return languageid, linkid.encode()
示例#33
0
 def _fill_db(self):
     tadm = DBSession.query(User).filter_by(user_name=u'test_admin').one()
     language = Language(u'xx', u'test_langugage')
     DBSession.add(language)
     tag = Tag(u'test_tag', u'xx')
     DBSession.add(tag)
     media = Media(u'image', u'test image', u'/test.png', tadm, u'xx',
                   u'random text')
     media.tags.append(tag)
     DBSession.add(media)
     DBSession.flush()
     languageid = language.id
     mediaid = media.id
     transaction.commit()
     return languageid, mediaid.encode()
示例#34
0
 def do_get_dependencies(self):
     try:
         self.user = auth.User(user_name=u'test_user')
         DBSession.add(self.user)
         self.language = content.Language(id=u'xx', name=u'test_lang')
         DBSession.add(self.language)
         self.category = content.Category(u'test category', u'xx')
         DBSession.add(self.category)
         DBSession.flush()
         return dict(title=u"A test article!",
                     category=self.category,
                     user=self.user,
                     #language=self.language,
                     lang=self.language.id,
                     text = u"random text"
                    )
     except:
         DBSession.rollback()
         raise
示例#35
0
 def do_get_dependencies(self):
     try:
         self.user = auth.User(user_name=u'test_user')
         DBSession.add(self.user)
         self.language = content.Language(id=u'xx', name=u'test_lang')
         DBSession.add(self.language)
         self.category = content.Category(u'test category', u'xx')
         DBSession.add(self.category)
         DBSession.flush()
         return dict(
             title=u"A test article!",
             category=self.category,
             user=self.user,
             #language=self.language,
             lang=self.language.id,
             text=u"random text")
     except:
         DBSession.rollback()
         raise
示例#36
0
文件: language.py 项目: lento/tagger
 def post(self, languageid, name):
     """create a new Language"""
     language = Language(languageid, name)
     DBSession.add(language)
     flash('%s %s' % (_('Created Language:'), language.id), 'ok')
     return dict(redirect_to=url('/admin/language/'))
示例#37
0
 def post(self, languageid, name):
     """create a new Language"""
     language = Language(languageid, name)
     DBSession.add(language)
     flash('%s %s' % (_('Created Language:'), language.id), 'ok')
     return dict(redirect_to=url('/admin/language/'))
示例#38
0
文件: category.py 项目: lento/tagger
 def post(self, name, languageid, description):
     """create a new Category"""
     category = Category(name, languageid, description)
     DBSession.add(category)
     flash('%s %s' % (_('Created Category:'), category.id), 'ok')
     return dict(redirect_to=url('/admin/category/'))
示例#39
0
 def post(self, name, languageid, description):
     """create a new Category"""
     category = Category(name, languageid, description)
     DBSession.add(category)
     flash('%s %s' % (_('Created Category:'), category.id), 'ok')
     return dict(redirect_to=url('/admin/category/'))