跳转到主要内容

Django可重用应用程序,用于从数据库文本字段创建物理文件。

项目描述

Django Filesify有助于从数据库中存储的文本内容生成物理文件,并可通过Django管理界面访问。文件内容可以是纯文本或加密字段。

要求

  • Python 3.6+

  • Django 3.1+

  • 可选:django-mirage-field

  • 可选:Pip 22+

使用方法

在您的Django模型中扩展Filesify类并定义您的自定义字段

对于纯文本内容

from filesify.models import Filesify

class MyConfigModel(Filesify):

    class Meta:
        verbose_name = "Some config file"
        verbose_name_plural = "Some config files"

对于加密内容

如果您的文件内容是敏感信息,您可以决定对其进行加密。这将对您来说是透明的,因为由django-filesify提供的file_content字段将在模型保存时加密,并在管理员显示之前解密。

对于加密内容,需要django-mirage-field

您可以通过以下方式安装django-mirage-field

pip install django-mirage-fields

扩展CryptoFilesify

from filesify.models import CryptoFilesify

class MyConfigModel(CryptoFilesify):

    class Meta:
        verbose_name = "Some config file"
        verbose_name_plural = "Some config files"

关于抽象模型

模型字段

模型类提供了以下字段

  • file_path:要生成的文件的路径。

  • file_content:文本文件内容 - 无论是纯文本还是加密的,这取决于所使用的混合。

  • comment:用于关于文件的可选注释的TextField。

文件生成

混合类使用在file_content字段中提供的文件内容生成文件。文件生成将在save()方法上触发,这意味着在创建或更新模型实例时会自动执行。

# This create 'example.txt' containing 'Hello, World!'
obj = MyConfigModel()
obj.file_path = "/tmp/example.txt"
obj.file_content = "Hello, World!"
obj.save()

# Equivalent to:
obj = MyConfigModel(file_path="/tmp/example.txt", file_content="Hello, World!")

# The file generation can be triggered manually like this:
obj.create_file()

文件删除

当删除Filesify对象时,磁盘上的文件也将被删除。这是通过覆盖模型 delete() 方法来实现的。

Filesify管理员

Django Filesify提供了一个可以如此使用的admin类

from django.contrib import admin
from my_app.models import MyConfigModel
from filesify.admin import FilesifyAdmin

@admin.register(MyConfigModel)
class MyConfigModelAdmin(FilesifyAdmin):
    pass


# Or using the alternate way:

class MyConfigModel(FilesifyAdmin):
    pass

admin.site.register(MyConfigModel, MyConfigModel)

该admin类包含一个自定义操作,用于删除选定的对象及其关联的磁盘文件。

单个文件实例

有时,您的项目只需要一个单独的文件实例。在这种情况下,Django Filesify可以与Django Solo(一个处理单例数据库模型的第三方应用程序)一起使用。

要实现这一点,请安装Django Solo并将其与Filesify一起用于您的模型和admin类。

单例模型

from django.db import models
from django_solo.models import SingletonModel
from filesify.models import Filesify

class MyConfigModel(SingletonModel, Filesify):
    class Meta:
        verbose_name = "Some Config File"
        verbose_name_plural = "Some Config File"

单例管理员

from django.contrib import admin
from django_solo.admin import SingletonModelAdmin
from filesify.admin import FilesifyAdmin

from my_app.models import MyConfigModel

@admin.register(MyConfigModel)
class MyConfigModelAdmin(SingletonModelAdmin, FilesifyAdmin):
    pass

在迁移后使用Filesify

Django Filesify提供了一个混入类,可以在运行数据库迁移后自动创建文件。

使用方法

from django.apps import AppConfig

from filesify.mixins import FilesifyPostMigrateMixin


class MyAppConfig(FilesifyPostMigrateMixin, AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "my_app"

这将发现所有扩展自Filesify抽象模型的模型,并将创建相应的文件。

限制到模型

如果您想限制要查看的模型列表,可以使用带有 filesify_limit_to_models 属性的点分路径模型列表。如果 filesify_limit_to_models 为None,则调用不带参数的管理命令,考虑所有模型。

class MyAppConfig(FilesifyPostMigrateMixin, AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "my_app"
    filesify_limit_to_models = ["my_app.MyConfigModel"]

Filesify基础混入

如果您正在寻找一种通用的方式来从扩展自Filesify类的模型生成文件,您可以使用 filesify.mixins.FilesifyBaseMixin 类。

from my_app.filesify import SomeGenericClass

something = SomeGenericClass()
something.filesify_limit_to_models = ['my_app.MyConfigModel1', 'my_app.MyConfigModel2']
something.create_files()

注意您如何可以可选地限制文件创建应该查看的模型。

为Django Filesify做出贡献

如果您已经有了运行中的django环境,您可以在接收项目中将django-filesify以“可编辑”模式安装。

在项目文件夹外部某个地方获取包源代码,在这个例子中,我们将使用父文件夹。

cd you/working/django/project/

git clone https://github.com/lazybird/django-filesify.git ../django-filesify/

or

git clone git@github.com:lazybird/django-filesify.git ../django-filesify/

现在,../django-filesify/ 中的代码是您将进行更改的地方。

您可以在工作项目中以“可编辑”模式安装该包。这里我们假设您位于项目的虚拟环境中。

pip uninstall django-filesify  # just in case you have it already...
pip install --editable ../django-filesify/

运行测试

python ../django-filesify/filesify/tests/runtests.py


pytest ../django-filesify/filesify/tests/tests.py --ds=filesify.tests.settings

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

django-filesify-0.1.tar.gz (12.2 kB 查看哈希)

上传时间

构建分发

django_filesify-0.1-py3-none-any.whl (19.1 kB 查看哈希)

上传时间 Python 3

由以下支持