from models import User, User_Pers, User_Info, User_Role, Role_Permissions, Status_Types, Languages, Like_Type, Notification_Type offline = Status_Types(name='Offline', color='#e60b00') online = Status_Types(name='Online', color='#29f500') offline.add() online.add() language = Languages(name='English', code='en') language.add() heart = Like_Type(name="Heart", color="#ff2b2b", icon="heart") heart.add() notification_types = [ Notification_Type(name="follow"), Notification_Type(name="like"), Notification_Type(name="comment"), Notification_Type(name="reply"), Notification_Type(name="share"), Notification_Type(name="mention") ] for n in notification_types: n.add() admin_role = User_Role(name="Admin") admin_role.add()
def new(*args, **kwargs): currentUser = User.get().filter_by( name=kwargs['token']['name']).first_or_404() if not currentUser.role.permissions.add_post: return make_response( jsonify({ 'operation': 'error', 'error': 'Missing permissions' }), 401) if not request.form['data']: return make_response( jsonify({ 'operation': 'error', 'error': 'Missing data' }), 401) data = json.loads(str(request.form['data'])) if not data['title'] or not data['content'] or not data['tags']: return make_response( jsonify({ 'operation': 'error', 'error': 'Missing data' }), 401) index = str(db.session.execute(Sequence('post_id_seq'))) thumbnail_link = None if data['image']: thumbnail = SaveImage(index) thumbnail_link = url_for('static', filename='thumbail_post/{}'.format(thumbnail)) else: thumbnail_link = 'none' lang = translate.getLanguageForText( str(cleanhtml(data['content'])).encode('utf-8-sig')) langQuery = Languages.get().filter_by(code=lang.iso_tag).first() if langQuery is None: new_lang = Languages(name=lang.language, code=lang.iso_tag) new_lang.add() langQuery = new_lang tags_ids = [] tags = [] for tag in data['tags']: check = Post_Tag.get().filter_by(name=tag).first() if check is None: new_tag = Post_Tag(name=tag, count=1) new_tag.add() check = new_tag else: setattr(check, 'count', Post_Tag.count + 1) check.save() tags_ids.append(check.id) for tag_id in tags_ids: tags.append({"post": index, "tag_id": tag_id}) nPost = NewPostSchema().load({ "id": int(index), "title": data['title'], "read_time": str(readtime.of_html(data['content'])), "author_id": currentUser.id, "language_id": langQuery.id, "info": { "thumbnail": thumbnail_link, "text": data['content'], "tags": tags }, "link": '/post/' + (str(data['title']).replace(' ', '-')).replace('?', '') + '-' + str(index) }) nPost.add() for user in currentUser.followed: not_id = str(db.session.execute(Sequence('notification_id_seq'))) notification = Notification( id=int(not_id), author=currentUser.id, user=user.user, type=5, title=nPost.title, body='{} shared a new post'.format(currentUser.name), link=nPost.link + '?notification_id=' + str(not_id)) send_notification( user.user, { 'text': '{} shared a new post'.format(currentUser.name), 'link': nPost.link + '?notification_id=' + str(not_id), 'icon': currentUser.info.avatar_img, 'id': int(not_id) }) notification.add() return make_response(jsonify({ 'operation': 'success', 'link': nPost.link }), 200)
def main(self): print("Scraping data for all films...") all_films = self.session.query(Films) for film in all_films: try: film_page = self.redirect_to_film_page(film.wiki_href) film_data = self.scrape_film_infobox(film_page) except Exception as e: print(e) continue try: # 1. load films_wiki film_obj = FilmsWiki( film = film, title = film_data["Title"], released = self.extract_date(film_data["Released"]), running_time = self.extract_runtime(film_data["Running Time"]), budget = self.extract_money(film_data["Budget"]), box_office = self.extract_money(film_data["Box Office"]), ) self.session.add(film_obj) # 2. load persons and film_persons for role in self.person_roles: if film_data[role]: persons = film_data[role] # if single person, make list if type(persons) != list: persons = [persons] for name in persons: try: existing_person = self.session.query(Persons).\ filter_by(full_name=name).one() person_obj = existing_person except Exception: try: person_obj = Persons( full_name = name ) self.session.add(person_obj) self.session.flush() except Exception: self.session.rollback() try: film_person_obj = FilmPersons( film = film_obj, person = person_obj, role = role ) self.session.add(film_person_obj) self.session.flush() except Exception: self.session.rollback() # 3. load countries and film_counries if film_data["Country"]: countries = film_data["Country"] # if single country, make list if type(countries) != list: countries = [countries] for country in countries: try: existing_country = self.session.query(Countries).\ filter_by(country=country).one() country_obj = existing_country except Exception: try: country_obj = Countries( country = country ) self.session.add(country_obj) self.session.flush() except Exception: self.session.rollback() try: film_country_obj = FilmCountries( film = film_obj, country = country_obj ) self.session.add(film_country_obj) self.session.flush() except Exception: self.session.rollback() # 4. load companies and film_companies for role in self.company_roles: if film_data[role]: companies = film_data[role] # if single company, make list if type(companies) != list: companies = [companies] for company in companies: try: existing_company = self.session.query(Companies).\ filter_by(company=company).one() company_obj = existing_company except Exception: try: company_obj = Companies( company = company ) self.session.add(company_obj) self.session.flush() except Exception: self.session.rollback() try: film_company_obj = FilmCompanies( film = film_obj, company = company_obj, role = role ) self.session.add(film_company_obj) self.session.flush() except Exception: self.session.rollback() # 5. load languages and film_languages if film_data["Language"]: languages = film_data["Language"] # if single language, make list if type(languages) != list: languages = [languages] for language in languages: try: existing_language = self.session.query(Languages).\ filter_by(language=language).one() language_obj = existing_language except Exception: try: language_obj = Languages( language = language ) self.session.add(language_obj) self.session.flush() except Exception: self.session.rollback() try: film_language_obj = FilmLanguages( film = film_obj, language = language_obj ) self.session.add(film_language_obj) self.session.flush() except Exception: self.session.rollback() print("Collected data for {}".format(film.title)) self.session.commit() except Exception as e: print(e) continue