Example #1
0
def register():
    if current_user.is_authenticated:
        flash(f'You are already logged in ', 'info')
        return redirect(url_for('main.account'))

    form = RegistrationForm()
    role = Role.query.filter_by(name="User").first()
    arm = Arm.query.filter_by(name="Science").first()
    if form.validate_on_submit():
        user = User(username=form.username.data,
                    password=form.password.data,
                    email=form.email.data,
                    role=role,
                    age=19,
                    arm=arm)

        db.session.add(user)
        db.session.commit()

        flash(f'Your account has been created! You are now able to loggin',
              'success')
        return redirect(url_for('users.login'))
    return render_template('register.html', title='Register', form=form)
Example #2
0
    def fill_db_with_users(self, objects):
        """
        Put users in Database
        :return:
        """
        size = 0
        user_items = {}
        json_users = []
        regions = {}
        langs = {}
        with click.progressbar(objects, label="Loading users to memory") as bar:
            for obj in bar:
                if self.user_file_identifier_field in obj:
                    user_id = str(obj[self.user_field])
                    for item in obj.get(self.user_items_field, ()):
                        item_id = str(item[self.user_item_identifier_field])
                        user_item = user_id, self.user_item_dropped_field in item
                        try:
                            user_items[item_id].append(user_item)
                        except KeyError:
                            user_items[item_id] = [user_item]
                    size += 1
                    json_users.append(user_id)
                    if "region" in obj:
                        try:
                            regions[obj["region"]].append(user_id)
                        except KeyError:
                            regions[obj["region"]] = [user_id]
                    if "lang" in obj:
                        try:
                            langs[obj["lang"]].append(user_id)
                        except KeyError:
                            langs[obj["lang"]] = [user_id]
        logging.debug("Done!")
        users = {user.external_id: user for user in User.objects.filter(external_id__in=json_users)}
        new_users = {}
        for user_eid in json_users:
            if user_eid not in users:
                new_users[user_eid] = User(external_id=user_eid)
        del json_users
        #logging.debug("Users ready to be saved")
        User.objects.bulk_create(new_users.values())
        for user in User.objects.filter(external_id__in=new_users.keys()):
            users[user.external_id] = user

        assert len(users) == size, \
            "Size of loaded objects and users in db is not the same (%d != %d)" % (len(users), size)

        if "recommendation.language" in settings.INSTALLED_APPS:
            self.fill_user_locale(users, regions, langs)
        #logging.debug("%d new users saved with bulk_create" % len(new_users))

        #logging.debug("Preparing items")
        items = {ieid: iid for ieid, iid in Item.objects.filter(external_id__in=user_items).values_list("external_id",
                                                                                                        "id")}
        r = range(0, len(user_items), 300)
        n = len(r)
        user_items = user_items.items()
        user_items = [user_items[i:i+300] for i in r]
        with click.progressbar(user_items, length=n, label="Load items for user inventory") as bar:
            for user_item in bar:
                self.fill_inventory(users, items, user_item)
                del user_item