Skip to content

Commit

Permalink
remove unused date field
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvw committed Aug 3, 2016
1 parent 67c46e8 commit b6c7e6f
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 82 deletions.
2 changes: 1 addition & 1 deletion django_crypto_fields/fields/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from .base_field import BaseField
from .encrypted_char_field import EncryptedCharField
from .encrypted_date_field import EncryptedDateField
# from .encrypted_date_field import EncryptedDateField
from .encrypted_decimal_field import EncryptedDecimalField
from .encrypted_integer_field import EncryptedIntegerField
from .encrypted_text_field import EncryptedTextField
Expand Down
162 changes: 81 additions & 81 deletions django_crypto_fields/fields/encrypted_date_field.py
Original file line number Diff line number Diff line change
@@ -1,81 +1,81 @@
# flake8: noqa
import datetime
import json
import six

from django.conf import settings
from django import forms
from django.utils import timezone
from django.db import models
from django.utils import dateparse
from django.core import exceptions
from django.core.exceptions import ValidationError
from django.core.serializers.json import DjangoJSONEncoder

from .base_rsa_field import BaseRsaField


class EncryptedDateField(BaseRsaField, models.DateField):
__metaclass__ = models.SubfieldBase
form_widget = forms.DateInput
form_field = forms.DateField
save_format = "%Y:%m:%d"
date_class = datetime.date
max_raw_length = 10 # YYYY:MM:DD

def to_python(self, value):
""" Returns the decrypted date IF the private key is found, otherwise returns
the encrypted value.
Value comes from DB as a hash (e.g. <hash_prefix><hashed_value>). If DB value is being
acccessed for the first time, value is not an encrypted value (not a prefix+hashed_value)."""
if value is None:
return value
if isinstance(value, datetime.datetime):
if settings.USE_TZ and timezone.is_aware(value):
# Convert aware datetimes to the default time zone
# before casting them to dates (#17742).
default_timezone = timezone.get_default_timezone()
value = timezone.make_naive(value, default_timezone)
return value.date()
if isinstance(value, datetime.date):
return value

retval = value
if value:
if not isinstance(value, six.string_types):
try:
value = str(value)
except:
raise TypeError('Expected basestring. Got {0}'.format(value))
if not self.algorithm or not self.mode:
raise ValidationError('Algorithm and mode not set for encrypted field')
# decrypt will check if is_encrypted (e.g. enc1::<hash>)
retval = self.decrypt(value)
retval = json.loads(retval)

try:
retval = dateparse.parse_date(retval)
if retval is not None:
return retval
except ValueError:
msg = self.error_messages['invalid_date'] % retval
raise exceptions.ValidationError(msg)
msg = self.error_messages['invalid'] % retval
if msg:
raise exceptions.ValidationError(msg)

def get_prep_value(self, value, encrypt=True):
""" Returns the hashed_value with prefix (or None) and, if needed, updates the secret lookup.
Keyword arguments:
encrypt -- if False, the value is returned as is (default True)
"""
value = self.to_python(value)
retval = value
if value and encrypt:
value = json.dumps(value, cls=DjangoJSONEncoder)
encrypted_value = self.encrypt(value)
retval = self.field_cryptor.get_prep_value(encrypted_value, value)
return retval
# # flake8: noqa
# import datetime
# import json
# import six
#
# from django.conf import settings
# from django import forms
# from django.utils import timezone
# from django.db import models
# from django.utils import dateparse
# from django.core import exceptions
# from django.core.exceptions import ValidationError
# from django.core.serializers.json import DjangoJSONEncoder
#
# from .base_rsa_field import BaseRsaField
#
#
# class EncryptedDateField(BaseRsaField, models.DateField):
# __metaclass__ = models.SubfieldBase
# form_widget = forms.DateInput
# form_field = forms.DateField
# save_format = "%Y:%m:%d"
# date_class = datetime.date
# max_raw_length = 10 # YYYY:MM:DD
#
# def to_python(self, value):
# """ Returns the decrypted date IF the private key is found, otherwise returns
# the encrypted value.
#
# Value comes from DB as a hash (e.g. <hash_prefix><hashed_value>). If DB value is being
# acccessed for the first time, value is not an encrypted value (not a prefix+hashed_value)."""
# if value is None:
# return value
# if isinstance(value, datetime.datetime):
# if settings.USE_TZ and timezone.is_aware(value):
# # Convert aware datetimes to the default time zone
# # before casting them to dates (#17742).
# default_timezone = timezone.get_default_timezone()
# value = timezone.make_naive(value, default_timezone)
# return value.date()
# if isinstance(value, datetime.date):
# return value
#
# retval = value
# if value:
# if not isinstance(value, six.string_types):
# try:
# value = str(value)
# except:
# raise TypeError('Expected basestring. Got {0}'.format(value))
# if not self.algorithm or not self.mode:
# raise ValidationError('Algorithm and mode not set for encrypted field')
# # decrypt will check if is_encrypted (e.g. enc1::<hash>)
# retval = self.decrypt(value)
# retval = json.loads(retval)
#
# try:
# retval = dateparse.parse_date(retval)
# if retval is not None:
# return retval
# except ValueError:
# msg = self.error_messages['invalid_date'] % retval
# raise exceptions.ValidationError(msg)
# msg = self.error_messages['invalid'] % retval
# if msg:
# raise exceptions.ValidationError(msg)
#
# def get_prep_value(self, value, encrypt=True):
# """ Returns the hashed_value with prefix (or None) and, if needed, updates the secret lookup.
#
# Keyword arguments:
# encrypt -- if False, the value is returned as is (default True)
#
# """
# value = self.to_python(value)
# retval = value
# if value and encrypt:
# value = json.dumps(value, cls=DjangoJSONEncoder)
# encrypted_value = self.encrypt(value)
# retval = self.field_cryptor.get_prep_value(encrypted_value, value)
# return retval

0 comments on commit b6c7e6f

Please sign in to comment.