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)
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