Я не тестировал этот код, но могу просто указать, с чего начать.
Я бы посоветовал вам написать код распаковки в функции сохранения модели. Это самый простой способ, но не самый лучший.
Администратор Django может обрабатывать несколько форм в качестве настройки администратора Django.
Я надеюсь, что ваши модели похожи на эти
from django.db import models
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location="/var/www/yoursite/private/")
class SetOfFiles(models.Model):
name = models.CharField('set name'), max_length=225, null=False, blank=False)
class File(models.Model):
set = models.ForeignKey(SetOfFiles, verbose_name=_('set'))
file = models.FileField(storage=fs)
def save(self, *args, **kwargs):
if not self.id:
... unzip your file ...
... encrypt your file if necessary ...
super(File, self).save(*args, **kwargs)
Создайте admin.py в соответствующем приложении, настроив администратора для обработки нескольких вставок:
from django.contrib import admin
class FileInline(admin.TabularInline):
model = File
class SetOfFilesAdmin(admin.ModelAdmin):
list_display = ('name',)
inlines = [FileInline]
admin.site.register(SetOfFiles, SetOfFilesAdmin)
Здесь также Распакуйте файл .zip, загруженный с кодом FileBrowser , но это может быть немного сложнее из-за использования приложения FileBrowser. Вы можете распаковать файл, просто используя модуль Python zipfile .
Также вы можете использовать PyCrypto при шифровании AES.