Exemplo n.º 1
0
def register(request):
    self_register = SettingProperties.get_int(constants.OPPIA_ALLOW_SELF_REGISTRATION, settings.OPPIA_ALLOW_SELF_REGISTRATION)
    if not self_register:
        raise Http404

    if request.method == 'POST':  # if form submitted...
        form = RegisterForm(request.POST)
        if form.is_valid():  # All validation rules pass
            # Create new user
            username = form.cleaned_data.get("username")
            email = form.cleaned_data.get("email")
            password = form.cleaned_data.get("password")
            first_name = form.cleaned_data.get("first_name")
            last_name = form.cleaned_data.get("last_name")
            user = User.objects.create_user(username, email, password)
            user.first_name = first_name
            user.last_name = last_name
            user.save()
            user_profile = UserProfile()
            user_profile.user = user
            user_profile.job_title = form.cleaned_data.get("job_title")
            user_profile.organisation = form.cleaned_data.get("organisation")
            user_profile.save()
            u = authenticate(username=username, password=password)
            if u is not None and u.is_active:
                login(request, u)
                return HttpResponseRedirect('thanks/')
            return HttpResponseRedirect('thanks/')  # Redirect after POST
    else:
        form = RegisterForm(initial={'next': filter_redirect(request.GET), })

    return render(request, 'oppia/form.html',
                              {'form': form,
                               'title': _(u'Register'), })
Exemplo n.º 2
0
def process_uploaded_file(request, json_data):
    if 'users' in json_data:
        for user in json_data['users']:
            username = user['username']
            print(_(u"processing activity log for %s" % username))

            if User.objects.filter(username=username).count() == 0:

                print(_(u"New user!"))
                # User was registered offline, we create a new one
                new_user = User(
                    username=username,
                    email=user['email'],
                )

                new_user.password = user[
                    'password'] if 'password' in user else make_password(None)
                new_user.first_name = user['firstname']
                new_user.last_name = user['lastname']
                new_user.save()

                user_profile = UserProfile()
                user_profile.user = new_user
                user_profile.phone_number = user[
                    'phoneno'] if 'phoneno' in user else None
                user_profile.job_title = user[
                    'jobtitle'] if 'jobtitle' in user else None
                user_profile.organisation = user[
                    'organisation'] if 'organisation' in user else None
                user_profile.save()

                messages.warning(
                    request,
                    _(u"%(username)s did not exist previously, and was created."
                      % {'username': username}), 'danger')

            try:
                user_api_key, created = ApiKey.objects.get_or_create(
                    user__username=username)
                if (created):
                    messages.warning(
                        request,
                        _(u"Generated new ApiKey for %(username)s : %(apikey)s"
                          % {
                              'username': username,
                              'apikey': user_api_key.key
                          }), 'danger')

                if 'trackers' in user:
                    process_uploaded_trackers(request, user, user_api_key)
                if 'quizresponses' in user:
                    process_uploaded_quizresponses(request, user, user_api_key)
            except ApiKey.DoesNotExist:
                messages.warning(
                    request,
                    _(u"%(username)s not found. Please check that this file is being uploaded to the correct server."
                      % {'username': username}), 'danger')
                print(_(u"No user api key found for %s" % user['username']))
Exemplo n.º 3
0
 def process_register_base_profile(self, bundle):
     user_profile = UserProfile()
     user_profile.user = bundle.obj
     if 'jobtitle' in bundle.data:
         user_profile.job_title = bundle.data['jobtitle']
     if 'organisation' in bundle.data:
         user_profile.organisation = bundle.data['organisation']
     if 'phoneno' in bundle.data:
         user_profile.phone_number = bundle.data['phoneno']
     user_profile.save()
Exemplo n.º 4
0
def process_uploaded_file(request, json_data):
    if 'users' in json_data:
        for user in json_data['users']:
            username = user['username']
            print(_(u"processing activity log for %s" % username))

            if User.objects.filter(username=username).count() == 0:

                print(_(u"New user!"))
                # User was registered offline, we create a new one
                new_user = User(
                    username=username,
                    email=user['email'],
                )

                new_user.password = user['password'] if 'password' in user else make_password(None)
                new_user.first_name = user['firstname']
                new_user.last_name = user['lastname']
                new_user.save()

                user_profile = UserProfile()
                user_profile.user = new_user
                user_profile.phone_number = user['phoneno'] if 'phoneno' in user else None
                user_profile.job_title = user['jobtitle'] if 'jobtitle' in user else None
                user_profile.organisation = user['organisation'] if 'organisation' in user else None
                user_profile.save()

                messages.warning(request, _(
                    u"%(username)s did not exist previously, and was created." % {
                        'username': username}), 'danger')

            try:
                user_api_key, created = ApiKey.objects.get_or_create(user__username=username)
                if (created):
                    messages.warning(request, _(
                        u"Generated new ApiKey for %(username)s : %(apikey)s" % {
                            'username': username, 'apikey': user_api_key.key }), 'danger')

                if 'trackers' in user:
                    process_uploaded_trackers(request, user, user_api_key)
                if 'quizresponses' in user:
                    process_uploaded_quizresponses(request, user, user_api_key)
            except ApiKey.DoesNotExist:
                messages.warning(request, _(u"%(username)s not found. Please check that this file is being uploaded to the correct server." % {'username': username}), 'danger')
                print(_(u"No user api key found for %s" % user['username']))
Exemplo n.º 5
0
def register_form_process(form):
    # Create new user
    username = form.cleaned_data.get("username")
    email = form.cleaned_data.get("email")
    password = form.cleaned_data.get("password")
    first_name = form.cleaned_data.get("first_name")
    last_name = form.cleaned_data.get("last_name")
    user = User.objects.create_user(username, email, password)
    user.first_name = first_name
    user.last_name = last_name
    user.save()

    # create UserProfile record
    user_profile = UserProfile()
    user_profile.user = user
    user_profile.job_title = form.cleaned_data.get("job_title")
    user_profile.organisation = form.cleaned_data.get("organisation")
    user_profile.save()

    # save any custom fields
    custom_fields = CustomField.objects.all()
    for custom_field in custom_fields:
        if custom_field.type == 'int':
            profile_field = UserProfileCustomField(
                key_name=custom_field,
                user=user,
                value_int=form.cleaned_data.get(custom_field.id))
        elif custom_field.type == 'bool':
            profile_field = UserProfileCustomField(
                key_name=custom_field,
                user=user,
                value_bool=form.cleaned_data.get(custom_field.id))
        else:
            profile_field = UserProfileCustomField(
                key_name=custom_field,
                user=user,
                value_str=form.cleaned_data.get(custom_field.id))
        if (form.cleaned_data.get(custom_field.id) is not None
            and form.cleaned_data.get(custom_field.id) != '') \
                or custom_field.required is True:
            profile_field.save()
Exemplo n.º 6
0
    def obj_create(self, bundle, **kwargs):
        self_register = SettingProperties.get_int(constants.OPPIA_ALLOW_SELF_REGISTRATION, settings.OPPIA_ALLOW_SELF_REGISTRATION)
        if not self_register:
            raise BadRequest(_(u'Registration is disabled on this server.'))
        required = ['username', 'password', 'passwordagain', 'email', 'firstname', 'lastname']

        check_required_params(bundle, required)

        data = {'username': bundle.data['username'],
                'password': bundle.data['password'],
                'password_again': bundle.data['passwordagain'],
                'email': bundle.data['email'] if 'email' in bundle.data else '',
                'first_name': bundle.data['firstname'],
                'last_name': bundle.data['lastname'], }
        rf = RegisterForm(data)
        if not rf.is_valid():
            str = ""
            for key, value in rf.errors.items():
                for error in value:
                    str += error + "\n"
            raise BadRequest(str)
        else:
            username = bundle.data['username']
            password = bundle.data['password']
            email = bundle.data['email']
            first_name = bundle.data['firstname']
            last_name = bundle.data['lastname']
        try:
            bundle.obj = User.objects.create_user(username, email, password)
            bundle.obj.first_name = first_name
            bundle.obj.last_name = last_name
            bundle.obj.save()

            user_profile = UserProfile()
            user_profile.user = bundle.obj
            if 'jobtitle' in bundle.data:
                user_profile.job_title = bundle.data['jobtitle']
            if 'organisation' in bundle.data:
                user_profile.organisation = bundle.data['organisation']
            if 'phoneno' in bundle.data:
                user_profile.phone_number = bundle.data['phoneno']
            user_profile.save()

            u = authenticate(username=username, password=password)
            if u is not None and u.is_active:
                login(bundle.request, u)
                # Add to tracker
                tracker = Tracker()
                tracker.user = u
                tracker.type = 'register'
                tracker.ip = bundle.request.META.get('REMOTE_ADDR', api.DEFAULT_IP_ADDRESS)
                tracker.agent = bundle.request.META.get('HTTP_USER_AGENT', 'unknown')
                tracker.save()
            key = ApiKey.objects.get(user=u)
            bundle.data['api_key'] = key.key
        except IntegrityError:
            raise BadRequest(_(u'Username "%s" already in use, please select another' % username))
        del bundle.data['passwordagain']
        del bundle.data['password']
        del bundle.data['firstname']
        del bundle.data['lastname']
        return bundle
Exemplo n.º 7
0
    def obj_create(self, bundle, **kwargs):
        self_register = SettingProperties.get_int(constants.OPPIA_ALLOW_SELF_REGISTRATION, settings.OPPIA_ALLOW_SELF_REGISTRATION)
        if not self_register:
            raise BadRequest(_(u'Registration is disabled on this server.'))
        required = ['username', 'password', 'passwordagain', 'email', 'firstname', 'lastname']

        check_required_params(bundle, required)

        data = {'username': bundle.data['username'],
                'password': bundle.data['password'],
                'password_again': bundle.data['passwordagain'],
                'email': bundle.data['email'],
                'first_name': bundle.data['firstname'],
                'last_name': bundle.data['lastname'], }
        rf = RegisterForm(data)
        if not rf.is_valid():
            str = ""
            for key, value in rf.errors.items():
                for error in value:
                    str += error + "\n"
            raise BadRequest(str)
        else:
            username = bundle.data['username']
            password = bundle.data['password']
            email = bundle.data['email']
            first_name = bundle.data['firstname']
            last_name = bundle.data['lastname']
        try:
            bundle.obj = User.objects.create_user(username, email, password)
            bundle.obj.first_name = first_name
            bundle.obj.last_name = last_name
            bundle.obj.save()

            user_profile = UserProfile()
            user_profile.user = bundle.obj
            if 'jobtitle' in bundle.data:
                user_profile.job_title = bundle.data['jobtitle']
            if 'organisation' in bundle.data:
                user_profile.organisation = bundle.data['organisation']
            if 'phoneno' in bundle.data:
                user_profile.phone_number = bundle.data['phoneno']
            user_profile.save()

            u = authenticate(username=username, password=password)
            if u is not None and u.is_active:
                login(bundle.request, u)
                # Add to tracker
                tracker = Tracker()
                tracker.user = u
                tracker.type = 'register'
                tracker.ip = bundle.request.META.get('REMOTE_ADDR', api.DEFAULT_IP_ADDRESS)
                tracker.agent = bundle.request.META.get('HTTP_USER_AGENT', 'unknown')
                tracker.save()
            key = ApiKey.objects.get(user=u)
            bundle.data['api_key'] = key.key
        except IntegrityError:
            raise BadRequest(_(u'Username "%s" already in use, please select another' % username))
        del bundle.data['passwordagain']
        del bundle.data['password']
        del bundle.data['firstname']
        del bundle.data['lastname']
        return bundle