Пример #1
0
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()
Пример #2
0
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