Exemple #1
0
    def getAllByIdent(self, ident, after_id=None):
        prefix = db().getPrefix()
        d = {
            'bp': "%splugin_blog_post" % prefix,
            'bc': "%splugin_blog_comment" % prefix,
            'blog_id': BlogModel.getBlogByIdent(ident).id
        }

        where = "%(bp)s.blog_id = %(blog_id)s\
            AND %(bp)s.id = %(bc)s.post_id" % d

        if after_id:
            where = '%s AND %s.%s' % (where, d['bc'], 'id < %s' % after_id)

        print where

        order_by = "%(bc)s.posted" % d
        cols = "%(bc)s.id, %(bc)s.content, %(bc)s.author" % d
        return db().select(['plugin_blog_post', 'plugin_blog_comment'],
                           cols=cols,
                           where=where,
                           order_by=order_by,
                           obj_deco=CommentDeco,
                           limit=15,
                           reversed=True)
Exemple #2
0
 def update(self, id, title, content, labels):
     ident = self.getPostById(id).getIdent()
     db().update('plugin_blog_post',
                 id=id,
                 title=title,
                 content=content,
                 labels=labels)
     updateBlogXML(ident)
Exemple #3
0
    def delete(self, id):
        menu = self.getMenuById(id)
        if menu.name == "Standard":
            return

        #Delete all the items in the menu
        db().delete("menu_item", menu_id=id)
        db().delete("menu", id=id)
Exemple #4
0
 def up(self):
     self.addColumn('plugin_blog_label',
                    IntCol('blog_id', length=11, not_null=True))
     labels = db().select('plugin_blog_label')
     for label in labels:
         blog = BlogModel.getBlogByIdent(label.ident)
         db().update('plugin_blog_label', id=label.id, blog_id=blog.id)
     self.removeColumn('plugin_blog_label', 'ident')
Exemple #5
0
 def deleteFileById(self, id):
     file = self.getFileById(id)
     ident = db().select("file", id=id, cols=["ident"], as_one=True).ident
     try:
         os.remove("%s/%s" % (self._getFullPath(), file.filename))
     except:
         pass
     db().delete("file", id=id)
     return ident
Exemple #6
0
 def getMenu(self):
     menu = Menus.getMenuById(self.menu_id)
     if menu != None:
         return menu
     else:
         #The menu is gone, replace it with the standard menu
         menu = Menus.getStandardMenu()
         db().update("page", id=self.id, menu_id=menu.id)
         return menu
Exemple #7
0
    def deletePageById(self, id):
        #If the page has a menu item, then delete it too
        db().delete("menu_item", page_id=id)

        #Delete the children too
        page = self.getPageById(id)
        if page.getChildren() != None:
            for child in page.getChildren():
                self.deletePageById(child.id)

        db().delete("page", id=id)
Exemple #8
0
def initDatabaseIfNeeded():
    try:
        mi_control.upgradeToLatest()
    except:
        debug_info.print_info()
        raise

    if Model.Menus.getMenuByName("Standard") == None:
        menu_obj = Model.Menus.add("Standard", primary=True)
        item = Model.MenuItems.add(getConfig().START_PAGE, 1, menu_obj.id)
        amiweb.db().update("page", id=item.getPage().id, hidden=0)
Exemple #9
0
    def up(self):
        self.addColumn('plugin_blog',
                       IntCol('host_page', length=11, not_null=True))
        blogs = db().select('plugin_blog')

        for b in blogs:
            posts = db().select('plugin_blog_post', blog_id=b.id)
            if len(posts) > 0:
                host_page = posts[0].host_page
                db().update('plugin_blog', id=b.id, host_page=host_page)

        self.removeColumn('plugin_blog_post', 'host_page')
Exemple #10
0
 def getPage(self, name, parent_id):
     page = db().select("page",
                        name=name,
                        parent_id=parent_id,
                        as_one=True,
                        obj_deco=PageDeco)
     if page == None:
         page = db().select("page",
                            title=name,
                            parent_id=parent_id,
                            as_one=True,
                            obj_deco=PageDeco)
     return page
Exemple #11
0
 def getAllPagesWhereFileIsUsed(self, id):
     #ERROR: image - should also be file!!
     file_obj = self.getFileById(id)
     pages = db().select("page",
                         "content LIKE '%[image=" + file_obj.ident + "]%'",
                         obj_deco=PageDeco)
     return pages
Exemple #12
0
 def getAllLogs(self, page_id):
     cols = ['id', 'edited_by', 'revision', 'time_of_edit']
     return db().select('pagelog',
                        cols=cols,
                        page_id=page_id,
                        order_by="revision",
                        reversed=True)
Exemple #13
0
 def getTopItem(self):
     return db().select("menu_item",
                        menu_id=self.id,
                        order_by="m_order",
                        obj_deco=MenuItemDeco,
                        limit=1,
                        as_one=True)
Exemple #14
0
 def getLatestLog(self, page_id):
     return db().select('pagelog',
                        page_id=page_id,
                        limit=1,
                        order_by='revision',
                        reversed=True,
                        as_one=True)
Exemple #15
0
 def getPostsByYear(self, year):
     return db().select('plugin_blog_post',
                        blog_id=self.id,
                        where='YEAR(posted) = %i' % year,
                        obj_deco=PostDeco,
                        order_by='posted',
                        reversed=True)
Exemple #16
0
 def add(self, author, email, website, content, post_id):
     posted = "%s" % datetime.datetime.now()
     return db().insert('plugin_blog_comment',
                        author=author,
                        email=email,
                        website=website,
                        content=content,
                        posted=posted,
                        post_id=post_id)
Exemple #17
0
 def addExternal(self, alias, url, order, menu_id):
     menu_item_id = db().insert('menu_item',
                                name=alias,
                                url=url,
                                m_order=order,
                                menu_id=menu_id,
                                page_id=None,
                                type="external")
     return self.getItemById(menu_item_id)
Exemple #18
0
    def createSnapshot(self, name, order):
        m_tables = amiweb.db().query("SHOW TABLES;")
        order = int(order)

        s = backup.SnapShot()
        s.createZip(order, name)
        json_repr = '{"order": %s, "content": "%s - %s", "filename": "%s.zip", "insert_in_top": 1}' %\
                    (order, name, backup.TODAY, s._generateSnapshotFilename(order, name))
        return json_repr
Exemple #19
0
 def add(self, username, password, type):
     if username == "admin" or username == "Everyone":
         return None
     else:
         new_user = db().insert("user",
                                username=username,
                                password=password,
                                user_type=type)
         return self.getUserById(new_user)
Exemple #20
0
    def getPageById(self, id):
        if id == None or id == "":
            return None

        try:
            id = int(id)
        except:
            return None

        return db().select("page", id=id, as_one=True, obj_deco=PageDeco)
Exemple #21
0
    def up(self):
        self.renameTable('plugin_blog', 'plugin_blog_post')

        self.createTable("plugin_blog",
                         IntCol("id", length=11, auto_increment=True),
                         StringCol("ident", length=150, not_null=True),
                         PrimaryKey("id"),
                         utf8=True,
                         ignore_if_created=True)

        self.addColumn('plugin_blog_post', IntCol('blog_id', length=11))

        #Rewrite all the current posts
        posts = db().select('plugin_blog_post')
        for post in posts:
            blog = BlogModel.getBlogByIdent(post.ident)
            db().update('plugin_blog_post', id=post.id, blog_id=blog.id)

        self.removeColumn('plugin_blog_post', 'ident')
Exemple #22
0
 def getLabelsFromList(self, list):
     if list:
         ids = ['id=%s' % i for i in list.split(",")[:-1]]
         labels = db().select('plugin_blog_label',
                              " or ".join(ids),
                              order_by='name',
                              obj_deco=LabelDeco)
         return labels
     else:
         return []
Exemple #23
0
 def getFileByIdent(self, ident, ftype, parent_id):
     q = partial(db().select,
                 "file",
                 ident=ident,
                 type=ftype,
                 as_one=True,
                 obj_deco=FileDeco)
     if parent_id:
         return q(parent_id=parent_id)
     return q()
Exemple #24
0
 def getCurrentUser(self):
     session = amiweb.session()
     if session.has_key('username'):
         user = amiweb.db().query(
             "select usr.*,grp.name as groupname from c4_user usr left join c4_group grp on grp.id=usr.group_id where usr.username='******'"
             % session['username'],
             as_one=True)
         return user
     else:
         return None
Exemple #25
0
    def add(self, ident, title, content, labels, posted=None):
        user = amiweb.session().get('username', 'none')

        if not posted:
            posted = datetime.datetime.now()

        blog = self.getBlogByIdent(ident)
        if not blog:
            blog = self.addBlog(ident)

        db().insert('plugin_blog_post',
                    blog_id=blog.id,
                    title=title,
                    content=content,
                    author=user,
                    posted=str(posted),
                    labels=labels)

        updateBlogXML(ident)
Exemple #26
0
 def add(self, title, order, menu_id):
     page = Pages.insertPage(title, None, menu_id)
     if page == None:
         return None
     menu_item_id = db().insert("menu_item",
                                name=title,
                                m_order=order,
                                menu_id=menu_id,
                                page_id=page.id,
                                type="page")
     return self.getItemById(menu_item_id)
Exemple #27
0
 def getPosts(self):
     like = 'labels LIKE "%s"'
     like_s = like % (str(self.id) + ",%")
     like_in = like % ("%," + str(self.id) + ",%")
     where = ['%s OR %s' % (like_s, like_in)]
     posts = db().select('plugin_blog_post',
                         where="".join(where),
                         order_by='posted',
                         reversed=True,
                         obj_deco=PostDeco)
     return posts
Exemple #28
0
 def getAllPosts(self, ident, limit):
     blog = self.getBlogByIdent(ident)
     if blog:
         return db().select("plugin_blog_post",
                            blog_id=blog.id,
                            order_by='posted',
                            reversed=True,
                            limit=limit,
                            obj_deco=PostDeco)
     else:
         return []
Exemple #29
0
 def insertPage(self, title, content, menu_id):
     #Check if the page is already found in that menu
     menu = Menus.getMenuById(menu_id)
     if menu.isPageInMenu(title):
         return None
     p = db().insert("page",
                     name=title,
                     title=title,
                     content=content,
                     menu_id=menu_id,
                     hidden=1)
     return self.getPageById(p)
Exemple #30
0
 def insertPageFromWiki(self, parent_id, title):
     parent = self.getPageById(parent_id)
     p = db().insert("page",
                     name=title,
                     title=title,
                     content="",
                     menu_id=parent.menu_id,
                     parent_id=parent_id,
                     hidden=1,
                     premission_type=parent.premission_type,
                     premission_value=parent.premission_value)
     return self.getPageById(p)