mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 19:08:21 +00:00
Add custom charfiled to lower email address
This commit is contained in:
@@ -4,13 +4,14 @@ from hashlib import sha1
|
||||
from django.db import models
|
||||
|
||||
from seahub.base.accounts import User
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
|
||||
class Token(models.Model):
|
||||
"""
|
||||
The default authorization token model.
|
||||
"""
|
||||
key = models.CharField(max_length=40, primary_key=True)
|
||||
user = models.CharField(max_length=255, unique=True)
|
||||
user = LowerCaseCharField(max_length=255, unique=True)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
@@ -3,6 +3,8 @@ import datetime
|
||||
import hashlib
|
||||
import os
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
|
||||
from django.db import models
|
||||
from django.core.files.base import ContentFile
|
||||
from django.utils.translation import ugettext as _
|
||||
@@ -127,7 +129,7 @@ class AvatarBase(object):
|
||||
)
|
||||
|
||||
class Avatar(models.Model, AvatarBase):
|
||||
emailuser = models.CharField(max_length=255)
|
||||
emailuser = LowerCaseCharField(max_length=255)
|
||||
primary = models.BooleanField(default=False)
|
||||
avatar = models.ImageField(max_length=1024, upload_to=avatar_file_path, blank=True)
|
||||
date_uploaded = models.DateTimeField(default=datetime.datetime.now)
|
||||
|
@@ -22,14 +22,8 @@ class UserManager(object):
|
||||
"""
|
||||
Creates and saves a User with given username and password.
|
||||
"""
|
||||
# Normalize the address by lowercasing the domain part of the email
|
||||
# address.
|
||||
try:
|
||||
email_name, domain_part = email.strip().split('@', 1)
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
email = '@'.join([email_name, domain_part.lower()])
|
||||
# Lowercasing email address to avoid confusion.
|
||||
email = email.lower()
|
||||
|
||||
user = User(email=email)
|
||||
user.is_staff = is_staff
|
||||
|
22
seahub/base/fields.py
Normal file
22
seahub/base/fields.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from django.db.models import CharField
|
||||
|
||||
class ModifyingFieldDescriptor(object):
|
||||
""" Modifies a field when set using the field's (overriden) .to_python() method. """
|
||||
def __init__(self, field):
|
||||
self.field = field
|
||||
def __get__(self, instance, owner=None):
|
||||
if instance is None:
|
||||
raise AttributeError('Can only be accessed via an instance.')
|
||||
return instance.__dict__[self.field.name]
|
||||
def __set__(self, instance, value):
|
||||
instance.__dict__[self.field.name] = self.field.to_python(value)
|
||||
|
||||
class LowerCaseCharField(CharField):
|
||||
def to_python(self, value):
|
||||
value = super(LowerCaseCharField, self).to_python(value)
|
||||
if isinstance(value, basestring):
|
||||
return value.lower()
|
||||
return value
|
||||
def contribute_to_class(self, cls, name):
|
||||
super(LowerCaseCharField, self).contribute_to_class(cls, name)
|
||||
setattr(cls, self.name, ModifyingFieldDescriptor(self))
|
@@ -4,6 +4,7 @@ from django.db import models
|
||||
from django.forms import ModelForm
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
from settings import CONTACT_EMAIL_LENGTH
|
||||
|
||||
class ContactManager(models.Manager):
|
||||
@@ -33,8 +34,8 @@ class ContactManager(models.Manager):
|
||||
class Contact(models.Model):
|
||||
"""Record user's contacts."""
|
||||
|
||||
user_email = models.CharField(max_length=CONTACT_EMAIL_LENGTH, db_index=True)
|
||||
contact_email = models.CharField(max_length=CONTACT_EMAIL_LENGTH)
|
||||
user_email = LowerCaseCharField(max_length=CONTACT_EMAIL_LENGTH, db_index=True)
|
||||
contact_email = LowerCaseCharField(max_length=CONTACT_EMAIL_LENGTH)
|
||||
contact_name = models.CharField(max_length=255, blank=True, null=True, \
|
||||
default='')
|
||||
note = models.CharField(max_length=255, blank=True, null=True, default='')
|
||||
|
@@ -7,19 +7,20 @@ from django.dispatch import receiver
|
||||
|
||||
from seaserv import get_group_members
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
from seahub.shortcuts import get_first_object_or_none
|
||||
from seahub.notifications.models import UserNotification
|
||||
from seahub.profile.models import Profile
|
||||
|
||||
class GroupMessage(models.Model):
|
||||
group_id = models.IntegerField(db_index=True)
|
||||
from_email = models.EmailField()
|
||||
from_email = LowerCaseCharField(max_length=255)
|
||||
message = models.CharField(max_length=2048)
|
||||
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
||||
|
||||
class MessageReply(models.Model):
|
||||
reply_to = models.ForeignKey(GroupMessage)
|
||||
from_email = models.EmailField()
|
||||
from_email = LowerCaseCharField(max_length=255)
|
||||
message = models.CharField(max_length=2048)
|
||||
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
||||
|
||||
|
@@ -556,6 +556,7 @@ def group_manage(request, group_id):
|
||||
|
||||
member_name_str = request.POST.get('user_name', '')
|
||||
member_list = string2list(member_name_str)
|
||||
member_list = [x.lower() for x in member_list]
|
||||
|
||||
# Add users to contacts.
|
||||
for email in member_list:
|
||||
@@ -682,6 +683,7 @@ def group_add_admin(request, group_id):
|
||||
|
||||
member_name_str = request.POST.get('user_name', '')
|
||||
member_list = string2list(member_name_str)
|
||||
member_list = [x.lower() for x in member_list]
|
||||
|
||||
for member_name in member_list:
|
||||
# Add user to contacts.
|
||||
|
@@ -8,6 +8,7 @@ from django.db.models import Q
|
||||
from django.forms import ModelForm
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
|
||||
class UserMessageManager(models.Manager):
|
||||
def get_messages_related_to_user(self, username):
|
||||
@@ -50,8 +51,8 @@ class UserMessageManager(models.Manager):
|
||||
class UserMessage(models.Model):
|
||||
message_id = models.AutoField(primary_key=True)
|
||||
message = models.CharField(max_length=512)
|
||||
from_email = models.EmailField(db_index=True)
|
||||
to_email = models.EmailField(db_index=True)
|
||||
from_email = LowerCaseCharField(max_length=255, db_index=True)
|
||||
to_email = LowerCaseCharField(max_length=255, db_index=True)
|
||||
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
||||
ifread = models.BooleanField()
|
||||
objects = UserMessageManager()
|
||||
|
@@ -2,12 +2,14 @@ import datetime
|
||||
from django.db import models
|
||||
from django.forms import ModelForm, Textarea
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
|
||||
class Notification(models.Model):
|
||||
message = models.CharField(max_length=512)
|
||||
primary = models.BooleanField(default=False)
|
||||
|
||||
class UserNotification(models.Model):
|
||||
to_user = models.EmailField(db_index=True, max_length=255)
|
||||
to_user = LowerCaseCharField(db_index=True, max_length=255)
|
||||
msg_type = models.CharField(db_index=True, max_length=30)
|
||||
detail = models.TextField()
|
||||
timestamp = models.DateTimeField(default=datetime.datetime.now)
|
||||
|
@@ -1,22 +1,23 @@
|
||||
import datetime
|
||||
from django.db import models
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
from seahub.utils import normalize_file_path, normalize_dir_path, gen_token
|
||||
|
||||
class AnonymousShare(models.Model):
|
||||
"""
|
||||
Model used for sharing repo to unregistered email.
|
||||
"""
|
||||
repo_owner = models.EmailField(max_length=255)
|
||||
repo_owner = LowerCaseCharField(max_length=255)
|
||||
repo_id = models.CharField(max_length=36)
|
||||
anonymous_email = models.EmailField(max_length=255)
|
||||
anonymous_email = LowerCaseCharField(max_length=255)
|
||||
token = models.CharField(max_length=25, unique=True)
|
||||
|
||||
class FileShare(models.Model):
|
||||
"""
|
||||
Model used for file or dir shared link.
|
||||
"""
|
||||
username = models.EmailField(max_length=255, db_index=True)
|
||||
username = LowerCaseCharField(max_length=255, db_index=True)
|
||||
repo_id = models.CharField(max_length=36, db_index=True)
|
||||
path = models.TextField()
|
||||
token = models.CharField(max_length=10, unique=True)
|
||||
@@ -102,8 +103,8 @@ class PrivateFileDirShareManager(models.Manager):
|
||||
|
||||
|
||||
class PrivateFileDirShare(models.Model):
|
||||
from_user = models.CharField(max_length=255, db_index=True)
|
||||
to_user = models.CharField(max_length=255, db_index=True)
|
||||
from_user = LowerCaseCharField(max_length=255, db_index=True)
|
||||
to_user = LowerCaseCharField(max_length=255, db_index=True)
|
||||
repo_id = models.CharField(max_length=36, db_index=True)
|
||||
path = models.TextField()
|
||||
token = models.CharField(max_length=10, unique=True)
|
||||
|
@@ -186,7 +186,7 @@ def share_repo(request):
|
||||
elif share_to.find('@') == -1:
|
||||
share_to_group_names.append(share_to)
|
||||
else:
|
||||
share_to_users.append(share_to)
|
||||
share_to_users.append(share_to.lower())
|
||||
|
||||
share_to_groups = []
|
||||
# get all personal groups
|
||||
|
@@ -519,7 +519,7 @@ def repo_owner(request, repo_id):
|
||||
raise Http404
|
||||
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
repo_owner = request.POST.get('repo_owner', '')
|
||||
repo_owner = request.POST.get('repo_owner', '').lower()
|
||||
try:
|
||||
User.objects.get(email=repo_owner)
|
||||
except User.DoesNotExist:
|
||||
|
@@ -366,7 +366,11 @@ def user_add(request):
|
||||
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
if request.method == 'POST':
|
||||
form = AddUserForm(request.POST)
|
||||
post_values = request.POST.copy()
|
||||
post_email = request.POST.get('email', '')
|
||||
post_values.update({'email': post_email.lower()})
|
||||
|
||||
form = AddUserForm(post_values)
|
||||
if form.is_valid():
|
||||
email = form.cleaned_data['email']
|
||||
password = form.cleaned_data['password1']
|
||||
|
@@ -1,5 +1,7 @@
|
||||
from django.db import models
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
|
||||
class WikiDoesNotExist(Exception):
|
||||
pass
|
||||
|
||||
@@ -20,7 +22,7 @@ class PersonalWikiManager(models.Manager):
|
||||
return wiki
|
||||
|
||||
class PersonalWiki(models.Model):
|
||||
username = models.CharField(max_length=255, unique=True)
|
||||
username = LowerCaseCharField(max_length=255, unique=True)
|
||||
repo_id = models.CharField(max_length=36)
|
||||
objects = PersonalWikiManager()
|
||||
|
||||
|
Reference in New Issue
Block a user