2010-08-04 19 views
0

我在生產站點中使用Django Flatpages。我想找出確保管理員編輯文件時出錯的最佳方法,可以檢索舊版本的頁面。我們有備份等,但從中恢復起來要麻煩一些(即涉及到系統管理員,而不是網站編輯器)。在生產中使用Django Flatpages:如何將修改歸檔用於恢復目的

首先,有沒有這樣做的軟件包?我不需要將所有數據庫更改歸檔到文件系統或MongelDB,但可能是Flatpages附加組件。

如果沒有,我想出了兩種選擇:

  1. 只要有,所有的現場變化發生臨時服務器,然後在生產

    Django flatpages backup?

  2. 一些外部腳本加載監視數據庫,並在查看對頁面內容的更改時,將其他表格的最新內容的副本保存在FlatpagesHistory中。然後,網站編輯器可以使用管理服務從FlatpagesHistory中檢索舊頁面的副本。有沒有人做過這個?

我很感謝您的反饋。

謝謝。

回答

0

沒有得到答覆,所以我挖了一下。事實證明,你可以很容易地實現這一點。

創建這樣一個模型:在admin.py文件

class OldPage(models.Model): 
    """ 
    Keep old contents from flatpages. 
    """ 
    url = models.CharField('URL',max_length=100, db_index=True) 
    title = models.CharField(max_length=200) 
    content = models.TextField(blank=True) 
    mtime = models.DateTimeField('Modified', db_index=True, auto_now_add=True) 
    user = models.ForeignKey(django.contrib.auth.models.User) 

然後,覆蓋簡單頁面管理員這樣

class MyFlatPageAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     """save a copy of the Flatpage to OldPage""" 
     history = OldPage() 
     history.url = obj.url 
     history.title = obj.title 
     history.content = obj.content 
     history.user = request.user 
     history.save() 
     obj.save() 

admin.site.unregister(FlatPage) 
admin.site.register(FlatPage, MyFlatPageAdmin) 

而且你可以有一個「只讀」管理界面您OldPage,這樣

class OldPageAdmin(admin.ModelAdmin): 
    readonly_fields = ('url','title','content','mtime','user') 
    list_display = ('url','mtime','user','title') 
    date_hierarchy = 'mtime' 

admin.site.register(lims.pages.models.OldPage, OldPageAdmin)