def add_phrase(): """Add a phrase based on the given post parameters. This function does its best to cope with null parameters to categories, precategories, genres, etc.""" session = db.db_session() cur_phrase = request.form new_phrase = Phrase(cur_phrase['phrase']) for key, value in cur_phrase.items(): setattr(new_phrase, key, value) query = session.query(User).filter(User.name == request.authorization.username) new_phrase.user_id = query[0].id session.add(new_phrase) try: session.commit() except IntegrityError: session.rollback() session.close() abort(400) res = _phrase_to_dict(new_phrase) session.close() return jsonify(res)
precategory = cur_url.split('/')[2].split('.')[0] print precategory db_precategory = PreCategory(precategory) db.db_session.add(db_precategory) try: db.db_session.commit() except IntegrityError: db.db_session.rollback() query = db.db_session.query(PreCategory).filter(PreCategory.name==precategory) db_precategory = query[0] print 'Duplicate PreCategory' list_page = http.get(page_base + cur_url) list_html = soup(list_page.text) cur_list = [word.strip() for word in list_html.findAll(text=True) if len(word) > 1 and word.startswith("\n")] for word in cur_list: cur_phrase = Phrase(word, page_base) cur_phrase.pre_category_id = db_precategory.id db.db_session.add(cur_phrase) try: db.db_session.commit() except IntegrityError: db.db_session.rollback() dups += 1 print 'Duplicate!' cur_len = len(cur_list) count += cur_len print cur_len print "Total: ", count print "Duplicates: ", dups