Джанго зашифрованное-файловое поле - PullRequest
0 голосов
/ 27 мая 2018

В настоящее время я пытаюсь выяснить, как реализовать следующее:
https://github.com/danielquinn/django-encrypted-filefield
Я только хочу прозрачно зашифровать свои загруженные данные для последующего использования, например, S3

Первая проблема заключается в том, что яЯ не могу импортировать

from django.contrib.auth.mixins import AuthMixin

.Я получаю следующее исключение:

из django.contrib.auth.mixins import AuthMixin
ImportError: невозможно импортировать имя 'AuthMixin'

Я просто несмог найти его.В каком пакете он находится?

и во-вторых, я понятия не имею, как реализовать представление, если я хочу только зашифровать и расшифровать файл на лету.Любые предложения?

my models.py

from django.db import models
from django.utils import timezone
from smartfields import fields
from smartfields.dependencies import FileDependency
from smartfields.processors import ImageProcessor
from django_encrypted_filefield.fields import EncryptedFileField

#Post Model
class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField(max_length=10000)
    tag = models.CharField(max_length=50, blank=True)
    postattachment = EncryptedFileField(upload_to='postattachment/%Y/%m/%d/', blank=True, null=True)
    postcover = fields.ImageField(upload_to='postcover/%Y/%m/%d/', blank=True, null=True, dependencies=[
        FileDependency(processor=ImageProcessor(
            format='JPEG', scale={'max_width': 300, 'max_height': 300}))
    ])
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

views.py

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'quickblog/post_detail.html', {'post': post})

Спасибо:)

1 Ответ

0 голосов
/ 27 мая 2018

Этот миксин отсутствует в миксинах Джанго.Возможно, демо относится к классу, расширяющему любой из mixins , которые вы можете найти в django.

Взглянув на источники django, попробуйте с классом:

from django.contrib.auth.mixins import AccessMixin

В представлении попытайтесь показать закодированный файл, он должен храниться уже в зашифрованном виде.

...