コード例 #1
0
class Comments(models.Model):
    author = models.ForeignKey(to="User",
                               related_name="comments",
                               on_delete=models.CASCADE)
    comment = fields.EncryptedTextField()
    likes = models.ManyToManyField(to="User",
                                   related_name="comment_liker",
                                   blank=True)
    content = models.ForeignKey(to="Content",
                                related_name="commented_stuff",
                                on_delete=models.CASCADE)
    created_at = fields.EncryptedDateTimeField(default=timezone.now)
    updated_at = fields.EncryptedDateTimeField(default=timezone.now)

    def __str__(self):
        return self.comment
コード例 #2
0
class Content(models.Model):
    member = models.ForeignKey(to="User",
                               related_name="poster",
                               on_delete=models.CASCADE)
    author = models.CharField(max_length=255, blank=True, null=True)
    circle = models.ForeignKey(to="Circle",
                               related_name="posts",
                               on_delete=models.CASCADE)
    text_post = fields.EncryptedTextField(blank=True, null=True)
    img_post = models.ImageField(upload_to='images', blank=True, null=True)
    caption = fields.EncryptedCharField(max_length=200, blank=True, null=True)
    likes = models.ManyToManyField(to="User",
                                   related_name="content_liker",
                                   blank=True)
    created_at = fields.EncryptedDateTimeField(default=timezone.now)
    updated_at = fields.EncryptedDateTimeField(default=timezone.now)
    tags = models.ForeignKey(to="User",
                             related_name="tagged",
                             on_delete=models.CASCADE,
                             blank=True,
                             null=True)

    def __str__(self):
        return self.text_post
コード例 #3
0
class Circle(models.Model):
    name = fields.EncryptedCharField(max_length=100)
    admin = models.ForeignKey(to="User",
                              related_name="is_admin",
                              on_delete=models.CASCADE)
    members = models.ManyToManyField(to="User",
                                     related_name="mates",
                                     blank=True)
    pending_members = models.ManyToManyField(to="User",
                                             related_name="pending",
                                             blank=True)
    created_at = fields.EncryptedDateTimeField(default=timezone.now)

    def __str__(self):
        return self.name
コード例 #4
0
class SearchDateTime(models.Model):
    value = fields.EncryptedDateTimeField()
    search = fields.SearchField(hash_key="abc123",
                                encrypted_field_name="value")
コード例 #5
0
class EncryptedDateTime(models.Model):
    value = fields.EncryptedDateTimeField()
コード例 #6
0
class DemoModel(models.Model):
    """Note that all regulare kwargs are added to EncryptedFields and not SearchFields.
    Eg 'default=', 'null=', 'blank='.

    Also note that we declare the SearchField *after* its EncryptedField. This is only
    important when using DRF ModelSerializers, but never the less should be the standard
    way of doing it."""

    _email_data = fields.EncryptedEmailField()
    email = fields.SearchField(hash_key="123abc",
                               encrypted_field_name="_email_data")
    _name_data = fields.EncryptedCharField(
        max_length=10,
        blank=True,
        null=True,
        help_text="This field is not required.")
    name = fields.SearchField(hash_key="123abc",
                              encrypted_field_name="_name_data")
    _date_data = fields.EncryptedDateField()
    date = fields.SearchField(hash_key="123abc",
                              encrypted_field_name="_date_data")
    date_2 = fields.EncryptedDateField(
        blank=True,
        null=True,
        help_text="This field is just encrypted and is not required.",
    )
    _number_data = fields.EncryptedPositiveSmallIntegerField()
    number = fields.SearchField(hash_key="123abc",
                                encrypted_field_name="_number_data")
    _text_data = fields.EncryptedTextField(
        help_text="A text area. Not typically used with a SearchField.")
    text = fields.SearchField(hash_key="123abc",
                              encrypted_field_name="_text_data")
    info = fields.EncryptedCharField(
        blank=True,
        null=False,
        max_length=20,
        help_text=
        "Char field, required at db level, without a default and blank=True",
    )
    # Examples with defaults
    _default_date_data = fields.EncryptedDateField(default=datetime.date.today)
    default_date = fields.SearchField(
        hash_key="123abc", encrypted_field_name="_default_date_data")
    _default_number_data = fields.EncryptedPositiveSmallIntegerField(default=1)
    default_number = fields.SearchField(
        hash_key="123abc", encrypted_field_name="_default_number_data")
    _default_char_data = fields.EncryptedCharField(default="foo default",
                                                   max_length=20)
    default_char = fields.SearchField(
        hash_key="123abc", encrypted_field_name="_default_char_data")

    # typical use case
    created_at = fields.EncryptedDateTimeField(auto_now_add=True)
    updated_at = fields.EncryptedDateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.pk}: {self.name}"

    def get_absolute_url(self):
        return reverse("demomodel-list")