Exemplo n.º 1
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.º 2
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.º 3
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.º 4
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.º 5
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