예제 #1
0
 def wrap(request, *args, **kw):
     user = request.user
     try:
         profile = request.user.userprofile
         if profile.is_social_active is True:
             return function(request, *args, **kw)
         else:
             status = _(
                 "User account <strong>%s</strong> is pending activation. Administrators have been notified and will activate this account within the next days. <br>If this account has remained inactive for a long time contact your technical coordinator or %s Helpdesk"
             ) % (user.username,
                  edumanage.views.get_nro_name(request.LANGUAGE_CODE))
             return render(
                 request,
                 'status.html',
                 {
                     'status': status,
                     'inactive': True
                 },
             )
     except UserProfile.DoesNotExist:
         form = UserProfileForm()
         form.fields['user'] = forms.ModelChoiceField(
             queryset=User.objects.filter(pk=user.pk), empty_label=None)
         nomail = False
         if not user.email:
             nomail = True
             form.fields['email'] = forms.CharField()
         else:
             form.fields['email'] = forms.CharField(initial=user.email)
         form.fields['institution'] = forms.ModelChoiceField(
             queryset=Institution.objects.all(), empty_label=None)
         return render(request, 'registration/select_institution.html', {
             'form': form,
             'nomail': nomail
         })
예제 #2
0
파일: views.py 프로젝트: br00k/djnro
def activate(request, activation_key):
    account = None
    if request.method == "GET":
        # Normalize before trying anything with it.
        activation_key = activation_key.lower()
        try:
            rp = RegistrationProfile.objects.get(activation_key=activation_key)
        except RegistrationProfile.DoesNotExist:
            return render(
                request, 'registration/activate.html', {
                    'account': account,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS
                })
        try:
            user_profile = rp.user.get_profile()
        except UserProfile.DoesNotExist:
            return render(
                request, 'registration/activate.html', {
                    'account': account,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS
                })
        form = UserProfileForm(instance=user_profile)
        form.fields['user'] = forms.ModelChoiceField(
            queryset=User.objects.filter(pk=rp.user.pk), empty_label=None)
        form.fields['institution'] = forms.ModelChoiceField(
            queryset=Institution.objects.all(), empty_label=None)
        return render(
            request, 'registration/activate_edit.html', {
                'account': account,
                'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                'form': form
            })
    if request.method == "POST":
        request_data = request.POST.copy()
        try:
            user = User.objects.get(pk=request_data['user'])
            up = user.get_profile()
            up.institution = Institution.objects.get(
                pk=request_data['institution'])
            up.save()

        except:
            return render(
                request, 'registration/activate_edit.html', {
                    'account': account,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS
                })
        # Normalize before trying anything with it.
        activation_key = activation_key.lower()
        try:
            rp = RegistrationProfile.objects.get(activation_key=activation_key)
            account = RegistrationProfile.objects.activate_user(activation_key)
            up.is_social_active = True
            up.save()
            logger.info('Activating user %s' % rp.user.username)
        except Exception as e:
            logger.info('An error occured: %s' % e)
            pass

        if account:
            # A user has been activated
            email = render_to_string('registration/activation_complete.txt', {
                'site': Site.objects.get_current(),
                'user': account
            })
            send_mail(
                _('%sUser account activated') % settings.EMAIL_SUBJECT_PREFIX,
                email, settings.SERVER_EMAIL, account.email.split(';'))
        return render(
            request, 'registration/activate.html', {
                'account': account,
                'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS
            })