diff --git a/api/views.py b/api/views.py index 60fe66feb0..3e4b7dc18d 100644 --- a/api/views.py +++ b/api/views.py @@ -10,7 +10,7 @@ from auth.decorators import login_required, api_login_required from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, \ get_repo, get_commits, get_branches, \ - seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \ + seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, \ get_group_repoids, check_group_staff from seahub.utils import list_to_string, \ diff --git a/avatar/models.py b/avatar/models.py index 7d944deb13..a351cc88e8 100644 --- a/avatar/models.py +++ b/avatar/models.py @@ -9,7 +9,7 @@ from django.utils.hashcompat import md5_constructor from django.utils.encoding import smart_str from django.db.models import signals -from seahub.base.accounts import CcnetUser +from seahub.base.accounts import User try: from cStringIO import StringIO diff --git a/avatar/templatetags/avatar_tags.py b/avatar/templatetags/avatar_tags.py index b11bf79e26..4370381852 100644 --- a/avatar/templatetags/avatar_tags.py +++ b/avatar/templatetags/avatar_tags.py @@ -5,8 +5,7 @@ from django.utils.translation import ugettext as _ from django.utils.hashcompat import md5_constructor from django.core.urlresolvers import reverse -from seahub.base.accounts import CcnetUser -from seaserv import get_ccnetuser +from seahub.base.accounts import User from avatar.settings import (AVATAR_GRAVATAR_BACKUP, AVATAR_GRAVATAR_DEFAULT, AVATAR_DEFAULT_SIZE) @@ -35,12 +34,12 @@ def avatar_url(user, size=AVATAR_DEFAULT_SIZE): @cache_result @register.simple_tag def avatar(user, size=AVATAR_DEFAULT_SIZE): - if not isinstance(user, CcnetUser): + if not isinstance(user, User): try: - user = get_ccnetuser(username=user) + user = User.objects.get(email=user) alt = unicode(user) url = avatar_url(user, size) - except: + except User.DoesNotExist: url = get_default_avatar_url() alt = _("Default Avatar") else: diff --git a/avatar/util.py b/avatar/util.py index 5dfbae4109..40e92282af 100644 --- a/avatar/util.py +++ b/avatar/util.py @@ -1,9 +1,7 @@ from django.conf import settings from django.core.cache import cache -from seahub.base.accounts import CcnetUser - -from seaserv import get_ccnetuser +from seahub.base.accounts import User from avatar.settings import (AVATAR_DEFAULT_URL, AVATAR_CACHE_TIMEOUT, AUTO_GENERATE_AVATAR_SIZES, AVATAR_DEFAULT_SIZE) @@ -14,7 +12,7 @@ def get_cache_key(user_or_username, size, prefix): """ Returns a cache key consisten of a username and image size. """ - if isinstance(user_or_username, CcnetUser): + if isinstance(user_or_username, User): user_or_username = user_or_username.username return '%s_%s_%s' % (prefix, user_or_username, size) @@ -62,10 +60,10 @@ def get_default_avatar_url(): return '%s%s' % (base_url, AVATAR_DEFAULT_URL) def get_primary_avatar(user, size=AVATAR_DEFAULT_SIZE): - if not isinstance(user, CcnetUser): + if not isinstance(user, User): try: - user = get_ccnetuser(username=user) - except: + user = User.objects.get(email=user) + except User.DoesNotExist: return None try: # Order by -primary first; this means if a primary=True avatar exists diff --git a/base/accounts.py b/base/accounts.py index 8ba2ee902f..c8d2301b3e 100644 --- a/base/accounts.py +++ b/base/accounts.py @@ -12,76 +12,98 @@ from auth import authenticate, login from registration import signals #from registration.forms import RegistrationForm from registration.models import RegistrationProfile -from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_ccnetuser +from seaserv import ccnet_threaded_rpc class UserManager(object): - def create_user(self, username, password=None, is_staff=False, is_active=False): - ccnet_threaded_rpc.add_emailuser(username, password, int(is_staff), int(is_active)) + def create_user(self, email, password=None, is_staff=False, is_active=False): + """ + 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()]) - ccnetuser = get_ccnetuser(username=username) - return ccnetuser + user = User(email=email) + user.password = password + user.is_staff = is_staff + user.is_active = is_active + user.save() -def convert_to_ccnetuser(emailuser): - ccnetuser = CcnetUser(emailuser.props.email, - raw_password='') - ccnetuser.id = emailuser.props.id - ccnetuser.email = emailuser.props.email - ccnetuser.password = emailuser.props.passwd - ccnetuser.is_staff = emailuser.props.is_staff - ccnetuser.is_active = emailuser.props.is_active - ccnetuser.ctime = emailuser.props.ctime - ccnetuser.org = emailuser.org + return self.get(email=email) + + def get(self, email=None, id=None): + if email: + emailuser = ccnet_threaded_rpc.get_emailuser(email) + if id: + emailuser = ccnet_threaded_rpc.get_emailuser_by_id(id) + if not emailuser: + raise User.DoesNotExist, 'User matching query does not exits.' - return ccnetuser + user = User(emailuser.email) + user.id = emailuser.id + user.password = emailuser.passwd + user.is_staff = emailuser.is_staff + user.is_active = emailuser.is_active + user.ctime = emailuser.ctime + user.org = emailuser.org + return user -class CcnetUser(object): +class User(object): is_staff = False is_active = False - objects = UserManager() + is_superuser = False + groups = [] org = None + objects = UserManager() + + class DoesNotExist(Exception): + pass - def __init__(self, username, raw_password): - self.username = username - self.raw_password = raw_password + def __init__(self, email): + self.username = email + self.email = email def __unicode__(self): return self.username - - def validate_emailuser(self, email, raw_password): - self.set_password(raw_password) - return ccnet_threaded_rpc.validate_emailuser(email, raw_password) - def is_authenticated(self): - """ - Always return True. This is a way to tell if the user has been - authenticated in templates. - """ - return True - def is_anonymous(self): """ Always returns False. This is a way of comparing User objects to anonymous users. """ return False + + def is_authenticated(self): + """ + Always return True. This is a way to tell if the user has been + authenticated in templates. + """ + return True def save(self): emailuser = ccnet_threaded_rpc.get_emailuser(self.username) if emailuser: - ccnet_threaded_rpc.update_emailuser(self.id, self.password, - int(self.is_staff), int(self.is_active)) + ccnet_threaded_rpc.update_emailuser(emailuser.id, self.password, + int(self.is_staff), + int(self.is_active)) else: - self.objects.create_user(username=self.username, - password=self.raw_password, - is_staff=self.is_staff, - is_active=self.is_active) + ccnet_threaded_rpc.add_emailuser(self.username, self.password, + int(self.is_staff), + int(self.is_active)) def delete(self): """ - Remove from ccnet EmailUser table and Binding table + When delete user, we should also delete group relationships. """ + # TODO: what about repo and org? ccnet_threaded_rpc.remove_emailuser(self.username) ccnet_threaded_rpc.remove_binding(self.username) + ccnet_threaded_rpc.remove_group_user(self.username) def get_and_delete_messages(self): messages = [] @@ -104,15 +126,15 @@ class CcnetUser(object): # algorithm or salt. if '$' not in self.password: - is_correct = (self.password == get_hexdigest('sha1', '', raw_password)) + is_correct = (self.password == \ + get_hexdigest('sha1', '', raw_password)) return is_correct return check_password(raw_password, self.password) def email_user(self, subject, message, from_email=None): "Sends an e-mail to this User." from django.core.mail import send_mail - send_mail(subject, message, from_email, [self.username]) - + send_mail(subject, message, from_email, [self.email]) class RegistrationBackend(object): """ diff --git a/forms.py b/forms.py index 44784685ee..b9616ebe4a 100644 --- a/forms.py +++ b/forms.py @@ -1,10 +1,11 @@ # encoding: utf-8 from django import forms -from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ from seaserv import ccnet_rpc, ccnet_threaded_rpc, is_valid_filename +from seahub.base.accounts import User + class AddUserForm(forms.Form): """ Form for adding a user. @@ -16,11 +17,12 @@ class AddUserForm(forms.Form): def clean_email(self): email = self.cleaned_data['email'] - emailuser = ccnet_threaded_rpc.get_emailuser(email) - if not emailuser: - return self.cleaned_data['email'] - else: - raise forms.ValidationError(_("A user with this email already")) + try: + user = User.objects.get(email=email) + raise forms.ValidationError(_("A user with this email already")) + except User.DoesNotExist: + return self.cleaned_data['email'] + def clean(self): """ Verifiy that the values entered into the two password fields diff --git a/group/views.py b/group/views.py index 1933042f53..a5f870bfac 100644 --- a/group/views.py +++ b/group/views.py @@ -21,7 +21,7 @@ from seahub.profile.models import Profile from seahub.settings import SITE_ROOT from seahub.utils import render_error, render_permission_error, \ validate_group_name, emails2list -from seahub.views import validate_emailuser +from seahub.views import is_registered_user @login_required def group_list(request): @@ -397,7 +397,7 @@ def group_members(request, group_id): mail_sended.send(sender=None, user=request.user.username, email=member_name) - if not validate_emailuser(member_name): + if not is_registered_user(member_name): err_msg = u'无法添加成员,用户 %s 不存在' % member_name return render_error(request, err_msg) else: diff --git a/organizations/views.py b/organizations/views.py index 2ee57c7a66..e50c8af736 100644 --- a/organizations/views.py +++ b/organizations/views.py @@ -15,7 +15,7 @@ from pysearpc import SearpcError from seaserv import ccnet_threaded_rpc, seafserv_threaded_rpc, \ get_orgs_by_user, get_org_repos, \ get_org_by_url_prefix, create_org, get_user_current_org, add_org_user, \ - get_ccnetuser, remove_org_user, get_org_groups, is_valid_filename, \ + remove_org_user, get_org_groups, is_valid_filename, \ create_org_repo, get_org_id_by_group from decorators import org_staff_required @@ -23,6 +23,7 @@ from forms import OrgCreateForm from signals import org_user_added from notifications.models import UserNotification from registration.models import RegistrationProfile +from seahub.base.accounts import User from seahub.contacts import Contact from seahub.forms import RepoCreateForm import seahub.settings as seahub_settings @@ -160,7 +161,8 @@ def org_useradmin(request, url_prefix): continue org_id = request.user.org['org_id'] - if get_ccnetuser(username=email): + try: + User.objects.get(email=email) email = email.strip(' ') org_id = request.user.org['org_id'] add_org_user(org_id, email, 0) @@ -169,7 +171,7 @@ def org_useradmin(request, url_prefix): org_user_added.send(sender=None, org_id=org_id, from_email=request.user.username, to_email=email) - else: + except User.DoesNotExist: # User is not registered, just create account and # add that account to org password = gen_token(max_length=6) diff --git a/profile/views.py b/profile/views.py index 6ce68fca50..57c86059ec 100644 --- a/profile/views.py +++ b/profile/views.py @@ -12,6 +12,7 @@ from pysearpc import SearpcError from forms import ProfileForm from models import Profile from utils import render_error +from seahub.base.accounts import User from seahub.contacts.models import Contact #@login_required @@ -74,10 +75,10 @@ def user_profile(request, user): user_nickname = '' user_intro = '' err_msg = '' - + try: - user_check = ccnet_threaded_rpc.get_emailuser(user) - except: + user_check = User.objects.get(email=user) + except User.DoesNotExist: user_check = None if user_check: @@ -114,10 +115,10 @@ def get_user_profile(request, user): 'new_user': '' } content_type = 'application/json; charset=utf-8' - + try: - user_check = ccnet_threaded_rpc.get_emailuser(user) - except: + user_check = User.objects.get(email=user) + except User.DoesNotExist: user_check = None if user_check: diff --git a/share/views.py b/share/views.py index ca820e544c..62cda0256f 100644 --- a/share/views.py +++ b/share/views.py @@ -19,7 +19,7 @@ from settings import ANONYMOUS_SHARE_COOKIE_TIMEOUT from tokens import anon_share_token_generator from seahub.contacts.signals import mail_sended from seahub.share.models import FileShare -from seahub.views import validate_owner, validate_emailuser +from seahub.views import validate_owner, is_registered_user from seahub.utils import render_permission_error, emails2list @login_required @@ -86,7 +86,7 @@ def share_repo(request): messages.add_message(request, messages.ERROR, to_email) continue - if not validate_emailuser(to_email): + if not is_registered_user(to_email): # Generate shared link and send mail if user has not registered. kwargs = {'repo_id': repo_id, 'repo_owner': from_email, diff --git a/thirdpart/auth/backends.py b/thirdpart/auth/backends.py index d11beb22e2..d5b6082780 100644 --- a/thirdpart/auth/backends.py +++ b/thirdpart/auth/backends.py @@ -1,8 +1,6 @@ from django.db import connection -from seahub.base.accounts import CcnetUser -from seaserv import ccnet_rpc, get_ccnetuser - +from seahub.base.accounts import User class ModelBackend(object): """ @@ -14,11 +12,12 @@ class ModelBackend(object): # TODO: Model, login attribute name and password attribute name should be # configurable. def authenticate(self, username=None, password=None): - ccnetuser = get_ccnetuser(username=username) - if ccnetuser and ccnetuser.check_password(password): - return ccnetuser - - return None + try: + user = User.objects.get(email=username) + if user.check_password(password): + return user + except User.DoesNotExist: + return None def get_group_permissions(self, user_obj): """ @@ -53,5 +52,9 @@ class ModelBackend(object): return False def get_user(self, username): - return get_ccnetuser(username=username) + try: + user = User.objects.get(email=username) + except User.DoesNotExist: + user = None + return user diff --git a/thirdpart/auth/forms.py b/thirdpart/auth/forms.py index fd80c5b86c..9bd4a89fe9 100644 --- a/thirdpart/auth/forms.py +++ b/thirdpart/auth/forms.py @@ -7,8 +7,7 @@ from django import forms from django.utils.translation import ugettext_lazy as _ from django.utils.http import int_to_base36 -from seaserv import get_ccnetuser - +from seahub.base.accounts import User class AuthenticationForm(forms.Form): """ @@ -64,8 +63,10 @@ class PasswordResetForm(forms.Form): """ email = self.cleaned_data["email"] - self.users_cache = get_ccnetuser(username=email) - if not self.users_cache: + # TODO: add filter method to UserManager + try: + self.users_cache = User.objects.get(email=email) + except User.DoesNotExist: raise forms.ValidationError(_("That e-mail address doesn't have an associated user account. Are you sure you've registered?")) return email @@ -77,7 +78,7 @@ class PasswordResetForm(forms.Form): """ from django.core.mail import send_mail - ccnetuser = self.users_cache + user = self.users_cache if not domain_override: current_site = Site.objects.get_current() site_name = current_site.name @@ -87,16 +88,16 @@ class PasswordResetForm(forms.Form): t = loader.get_template(email_template_name) c = { - 'email': ccnetuser.username, + 'email': user.username, 'domain': domain, 'site_name': site_name, - 'uid': int_to_base36(ccnetuser.id), - 'user': ccnetuser, - 'token': token_generator.make_token(ccnetuser), + 'uid': int_to_base36(user.id), + 'user': user, + 'token': token_generator.make_token(user), 'protocol': use_https and 'https' or 'http', } send_mail(_("Password reset on %s") % site_name, - t.render(Context(c)), None, [ccnetuser.username]) + t.render(Context(c)), None, [user.username]) class SetPasswordForm(forms.Form): """ diff --git a/thirdpart/auth/views.py b/thirdpart/auth/views.py index 32937dedf5..bee6a6a8f4 100644 --- a/thirdpart/auth/views.py +++ b/thirdpart/auth/views.py @@ -18,7 +18,7 @@ from auth.forms import AuthenticationForm from auth.forms import PasswordResetForm, SetPasswordForm, PasswordChangeForm from auth.tokens import default_token_generator -from seaserv import get_ccnetuser +from seahub.base.accounts import User @csrf_protect @never_cache @@ -150,19 +150,16 @@ def password_reset_confirm(request, uidb36=None, token=None, template_name='regi post_reset_redirect = reverse('auth.views.password_reset_complete') try: uid_int = base36_to_int(uidb36) - except ValueError: - raise Http404 + user = User.objects.get(id=uid_int) + except (ValueError, User.DoesNotExist): + user = None - ccnetuser = get_ccnetuser(userid=uid_int) - if not ccnetuser: - raise Http404 - context_instance = RequestContext(request) - if token_generator.check_token(ccnetuser, token): + if token_generator.check_token(user, token): context_instance['validlink'] = True if request.method == 'POST': - form = set_password_form(ccnetuser, request.POST) + form = set_password_form(user, request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(post_reset_redirect) diff --git a/thirdpart/registration/models.py b/thirdpart/registration/models.py index 0073b33362..94925eb5f4 100644 --- a/thirdpart/registration/models.py +++ b/thirdpart/registration/models.py @@ -10,7 +10,6 @@ from django.template.loader import render_to_string from django.utils.hashcompat import sha_constructor from django.utils.translation import ugettext_lazy as _ -from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_ccnetuser SHA1_RE = re.compile('^[a-f0-9]{40}$') @@ -52,13 +51,16 @@ class RegistrationManager(models.Manager): except self.model.DoesNotExist: return False if not profile.activation_key_expired(): - # Activate emailuser - ccnetuser = get_ccnetuser(userid=profile.emailuser_id) - ccnetuser.is_active = True - ccnetuser.save() - profile.activation_key = self.model.ACTIVATED - profile.save() - return ccnetuser + # Activate user + try: + user = User.objects.get(id=profile.emailuser_id) + user.is_active = True + user.save() + profile.activation_key = self.model.ACTIVATED + profile.save() + return user + except User.DoesNotExist: + return False return False def create_email_user(self, username, email, password, @@ -72,19 +74,17 @@ class RegistrationManager(models.Manager): user. To disable this, pass ``send_email=False``. """ - from seahub.base.accounts import CcnetUser - ccnetuser = CcnetUser.objects.create_user(username, password, False, False) - #TODO: handle None type - ccnetuser.is_active = is_active - ccnetuser.save() + user = User.objects.create_user(username, password, False, False) + user.is_active = is_active + user.save() - registration_profile = self.create_profile(ccnetuser) + registration_profile = self.create_profile(user) if send_email: registration_profile.send_activation_email(site) - return ccnetuser + return user def create_inactive_user(self, username, email, password, site, send_email=True): @@ -160,9 +160,13 @@ class RegistrationManager(models.Manager): """ for profile in self.all(): if profile.activation_key_expired(): - ccnetuser = get_ccnetuser(userid=profile.emailuser_id) - if not ccnetuser.is_active: - ccnet_threaded_rpc.remove_emailuser(ccnetuser.username) + try: + user = User.objects.get(id=profile.emailuser_id) + if not user.is_active: + user.delete() + except User.DoesNotExist: + pass + class RegistrationProfile(models.Model): """ @@ -218,11 +222,14 @@ class RegistrationProfile(models.Model): """ expiration_date = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS) - - ccnetuser = get_ccnetuser(userid=self.emailuser_id) + + try: + user = User.objects.get(id=self.emailuser_id) + except User.DoesNotExist: + return False return self.activation_key == self.ACTIVATED or \ - (datetime.datetime.fromtimestamp(ccnetuser.ctime/1000000) + expiration_date <= datetime.datetime.now()) + (datetime.datetime.fromtimestamp(user.ctime/1000000) + expiration_date <= datetime.datetime.now()) activation_key_expired.boolean = True @@ -276,6 +283,11 @@ class RegistrationProfile(models.Model): message = render_to_string('registration/activation_email.txt', ctx_dict) - ccnetuser = get_ccnetuser(userid=self.emailuser_id) - ccnetuser.email_user(subject, message, settings.DEFAULT_FROM_EMAIL) - + try: + user = User.objects.get(id=self.emailuser_id) + user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL) + except User.DoesNotExist: + pass + +# We put this import here to prevent circular import +from seahub.base.accounts import User diff --git a/thirdpart/seaserv/__init__.py b/thirdpart/seaserv/__init__.py index ff0ea2e851..6407bbe1e1 100644 --- a/thirdpart/seaserv/__init__.py +++ b/thirdpart/seaserv/__init__.py @@ -3,7 +3,7 @@ import service from service import ccnet_rpc, monitor_rpc, seafserv_rpc, \ seafserv_threaded_rpc, ccnet_threaded_rpc from service import send_command -from service import get_ccnetuser, get_emailusers +from service import get_emailusers from service import get_org_groups, get_personal_groups, get_group_repoids, \ check_group_staff, remove_group_user, get_group, get_org_id_by_group from service import get_repos, get_repo, get_commits, get_branches, \ diff --git a/thirdpart/seaserv/service.py b/thirdpart/seaserv/service.py index d3e0ea36d5..4108e301b5 100644 --- a/thirdpart/seaserv/service.py +++ b/thirdpart/seaserv/service.py @@ -86,47 +86,12 @@ else: #### Basic ccnet API #### - -def get_ccnetuser(username=None, userid=None): - # Get emailuser from db - if username: - emailuser = ccnet_threaded_rpc.get_emailuser(username) - if userid: - emailuser = ccnet_threaded_rpc.get_emailuser_by_id(userid) - if not emailuser: - return None - - # Check whether is business account - # orgs = ccnet_threaded_rpc.get_orgs_by_user(emailuser.email) - # emailuser.org = org - - # And convert to ccnetuser - from seahub.base.accounts import convert_to_ccnetuser - ccnetuser = convert_to_ccnetuser(emailuser) - - return ccnetuser - def get_emailusers(start, limit): try: users = ccnet_threaded_rpc.get_emailusers(start, limit) except SearpcError: users = [] return users - -# def get_groups(): -# """Get group object list. """ -# group_ids = ccnet_threaded_rpc.list_groups() -# if not group_ids: -# return [] -# groups = [] -# for group_id in group_ids.split("\n"): -# # too handle the ending '\n' -# if group_id == '': -# continue -# group = ccnet_threaded_rpc.get_group(group_id) -# groups.append(group) -# return groups - def get_group(group_id): group_id_int = int(group_id) @@ -138,8 +103,8 @@ def get_group(group_id): def check_group_staff(group_id_int, user_or_username): """Check where user is group staff""" - from seahub.base.accounts import CcnetUser - if isinstance(user_or_username, CcnetUser): + from seahub.base.accounts import User + if isinstance(user_or_username, User): user_or_username = user_or_username.username return ccnet_threaded_rpc.check_group_staff(group_id_int, user_or_username) diff --git a/views.py b/views.py index d4fff58746..6d783f3527 100644 --- a/views.py +++ b/views.py @@ -30,12 +30,12 @@ from auth.tokens import default_token_generator from share.models import FileShare from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \ get_repo, get_commits, get_branches, is_valid_filename, remove_group_user,\ - seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \ + seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, \ get_group_repoids, check_group_staff, get_personal_groups, is_repo_owner, \ get_group from pysearpc import SearpcError -from seahub.base.accounts import CcnetUser +from seahub.base.accounts import User from seahub.base.models import UuidObjidMap from seahub.contacts.models import Contact from seahub.contacts.signals import mail_sended @@ -68,20 +68,17 @@ def validate_owner(request, repo_id): return True if ret else False -def validate_emailuser(emailuser): +def is_registered_user(email): """ Check whether user is registerd. """ try: - user = ccnet_threaded_rpc.get_emailuser(emailuser) - except: + user = User.objects.get(email=email) + except User.DoesNotExist: user = None - - if user: - return True - else: - return False + + return True if user else False def check_shared_repo(request, repo_id): """ @@ -1208,22 +1205,25 @@ def user_remove(request, user_id): if not request.user.is_staff: raise Http404 - ccnetuser = get_ccnetuser(userid=int(user_id)) - remove_group_user(ccnetuser.email) - ccnetuser.delete() + try: + user = User.objects.get(id=int(user_id)) + user.delete() + except User.DoesNotExist: + pass return HttpResponseRedirect(reverse('sys_useradmin')) @login_required def activate_user(request, user_id): - """The user id is emailuser id.""" - if not request.user.is_staff: raise Http404 - ccnetuser = get_ccnetuser(userid=int(user_id)) - ccnetuser.is_active = True - ccnetuser.save() + try: + user = User.objects.get(id=int(user_id)) + user.is_active = True + user.save() + except User.DoesNotExist: + pass return HttpResponseRedirect(reverse('useradmin')) @@ -1264,9 +1264,9 @@ def user_add(request): email = form.cleaned_data['email'] password = form.cleaned_data['password1'] - ccnetuser = CcnetUser(username=email, raw_password=password) - ccnetuser.is_active = True - ccnetuser.save() + user = User(email=email, raw_password=password) + user.is_active = True + user.save() if request.user.org: org_id = request.user.org['org_id']