Esempio n. 1
0
 def toggle_favorite_serie():
     user_id, serie_id = validate_favorite_form(
         request.json)  # Might raise an InvalidForm exception
     if user_id != g.user.id:
         abort(403)
     user = User.get_user_by_id(user_id)
     serie = Serie.get_serie_by_id(serie_id)
     if serie is None:
         json = get_tv_serie(serie_id)
         serie = Serie.create_from_json(json)
         thread_seasons = Thread(target=Season.create_seasons_from_json,
                                 args=(json, ))
         thread_seasons.start()
     if user.get_subscription_by_serie_id(serie_id) is None:
         user.add_favorite_serie(serie)  # Might raise an IntegrityError
         try:
             notification = Notification.create_from_serie(
                 user_id, serie)  # Might raise a ValueError
             mailing_server = MailingServer()
             mailing_server.send_notification(notification)
         except ValueError:
             pass
         is_favorite = True
     else:
         user.delete_favorite_serie(serie)
         is_favorite = False
     return jsonify({
         'user_id': user_id,
         'serie_id': serie_id,
         "is_favorite": is_favorite
     })
Esempio n. 2
0
def main():
    # Creo las tablas
    Base.metadata.create_all(engine)
    comedy = Category(name="Comedy")
    drama = Category(name="Drama")
    session = Session()
    session.add(comedy)
    session.add(drama)
    session.add(Category(name="Musical"))
    session.add(Serie(title="The Big Bang Theory",
                      description="Serie de frikis", category=comedy))
    session.add(Serie(title="Juego de Tronos", description="Todos mueren",
                      category=drama))
    session.commit()
Esempio n. 3
0
def do_registrar():
    _auth = Auth()
    if _auth.is_login():
        #field validation
        _name = request.forms.get('name')
        _day = request.forms.get('day')
        _url = request.forms.get('url')
        _chapter_url = request.forms.get('chapter_url')
        _num_chapters = request.forms.get('mun_chapters')
        _old_chapter = request.forms.get('old_chapter')

        #el usuario existe se supone que esta logueado sino cagada jaaj
        _user = db.GqlQuery("SELECT * FROM User WHERE username = :1", _auth.is_login()).fetch(1)[0]
        
        if _num_chapters <= _old_chapter:
            _old_chapter = _num_chapters
            _enabled = False
        else:
            _enabled = True

        serie = Serie(
            user = _user,
            name = _name,
            day = _day,
            url = _url,
            chapter_url = _chapter_url,
            num_chapters = int(_num_chapters),
            old_chapter = int(_old_chapter), #ultimo capitulo que salio    
            enabled = _enabled
        )
        serie.put()
       
        # Registro los capitulos
        n = int(_old_chapter) + 1
        for num in range(1, n):
            chapter = Chapter(
                serie = serie,
                number = num,
                url = serie.chapter_url %num,
                show = False
            )
            chapter.put()

        return "Serie Registrada"

        #return template("series/registrar.html")
    else:
        return template("sin-permisos.html")
Esempio n. 4
0
    def post(self):
        searchBy = None
        radio = self.request.get('searchterm')
        searchValue = self.request.get('serieInput')

        if radio == 'sbytitle':
            searchBy = 'title'

        if radio == 'sbemail':
            searchBy = 'author_email'

        if radio == 'sbynombre':
            searchBy = 'author_name'

        series = Serie().all().fetch(limit=None, offset=0)
        res = []

        for s in series:
            val = s.title
            if searchBy is 'author_email':
                val = s.author_email
            if searchBy is 'author_name':
                val = s.author_name

            if searchValue.upper() in val.upper():
                res.append(s)

        return self.render_template("queries.html", {
            'series': res,
            'serieInput': searchValue
        })
Esempio n. 5
0
    def post(self):   
        listaIDsCategorias = self.request.get('categoriasInput', allow_multiple=True)
        
        listaKeysCategorias = []
        for iden in listaIDsCategorias:
            idenInt = int(iden)
            key = db.Key.from_path('Categoria', idenInt)
            listaKeysCategorias.append(key)

            
        serie = Serie(nombre=self.request.get('inputNombre'),
             autor=self.request.get('inputAutor'),
             descripcion=self.request.get('inputDescripcion'),
             categorias=listaKeysCategorias)
        serie.put()
                    
        return webapp2.redirect('/index')
Esempio n. 6
0
def listado():
    _auth = Auth()
    if _auth.is_login():
        data = {}
        user = db.GqlQuery("SELECT * FROM User WHERE username = :1", _auth.is_login()).fetch(1)[0]
        data['series'] = Serie.all().filter("user="******"series/listado.html", data)
    else:
        return template("sin-permisos.html")
Esempio n. 7
0
    def post(self):

        if self.session.get('logged') is None:
            return self.redirect("/login")

        error = None
        p = {
            'title': self.request.get('inputTitle'),
            'author_name': self.request.get('inputAuthorName'),
            'author_email': self.request.get('inputAuthorEmail'),
            'views': 0,
            'score': self.request.get('inputScore'),
        }

        # Input validation
        if not p['title']:
            error = 'El titulo esta vacio'
        if not p['author_name']:
            error = 'El autor esta vacio'
        if not p['author_email']:
            error = 'El correo esta vacio'
        try:
            # Cambiar el modelo de int a float
            p['score'] = long(p['score'])
        except ValueError:
            error = 'La puntuacion debe ser un numero'

        if error:
            p['error'] = error
            return self.render_template("series/new.html", p)

        try:
            serie = Serie(title=p['title'],
                          score=p['score'],
                          author_name=p['author_name'],
                          author_email=p['author_email'],
                          views=p['views'])
            serie.put()
            return self.redirect('/series/')
        except Exception as e:
            p['error'] = 'No se pudo crear por {}'.format(e.message)
            return self.render_template("series/new.html", p)
Esempio n. 8
0
    def get(self):
        if not self.checkLogin():
            return webapp2.redirect('/')

        user = users.get_current_user()
        logoutUrl = self.getLogout();
        
        categoria = None
        if self.request.get('categoriaSelected') == '' :
            series = Serie.all()
        else :
            categoriaId =  int(self.request.get('categoriaSelected'))
            categoria = db.get(db.Key.from_path('Categoria',categoriaId))
            print(categoriaId)
            series = categoria.series
            
        categorias = Categoria.all()
        self.render_template('index.html', {'listaSeries' : series, 'categorias' : categorias, 'categoriaSelected' : categoria, 'nickname' : user.nickname(), 'logoutUrl' : logoutUrl })
Esempio n. 9
0
 def update_all_series():
     mailing_server = MailingServer()
     mailing_server.open_smtp_server()
     series = Serie.get_all_series()
     for serie in series:
         old_last_diff = serie.next_episode_air_date
         new_serie_json = get_tv_serie(serie.tmdb_id_serie)
         serie.update_from_json(new_serie_json)  # update serie information
         if old_last_diff != serie.next_episode_air_date and serie.next_episode_air_date != "null":
             for user in serie.users:
                 try:
                     notif = Notification.create_from_serie(
                         user.id, serie
                     )  # create notification, Might rise a value error
                     mailing_server.send_notification(
                         notif, open_and_close_smtp=False)
                 except ValueError:
                     pass
     mailing_server.close_smtp_server()
def create_series():
    response = jsonify({
        "status": "201",
        "result": "ok",
        "details": "Serie created"
    })
    data = request.get_json()
    try:
        new_serie = Serie(**data)
        db.session.add(new_serie)
        db.session.commit()
    except Exception as e:
        response = jsonify({
            "status": "400",
            "result": "error",
            "details ": str(e)
        })
    response.headers.add("Access-Control-Allow-Origin", "*")
    return response
Esempio n. 11
0
import os
from models import Serie
from config import db, db_file


if __name__ == '__main__':
    if os.path.exists(db_file):
        os.remove(db_file)

    db.create_all()

    s1 = Serie(nome ='Avatar: A lenda de Aang',
                genero ='fantasia',
                numtemps ='3',
                nota ='10')
    s2 = Serie(nome ='Stranger Things',
                genero ='ficção cientifica',
                numtemps ='3',
                nota ='10')
    s3 = Serie(nome ='Brooklyn Nine-nine',
                genero ='comedia',
                numtemps ='6',
                nota ='10')
    s4 = Serie(nome ='Black Mirror',
                genero ='ficção cientifica',
                numtemps ='5',
                nota ='10')
    s5 = Serie(nome ='Teen Wolf',
                genero ='Teen',
                numtemps ='6',
                nota ='8')
Esempio n. 12
0
 def get(self):
     series = Serie.all()
     self.render_template('/series/list.html', {'series': series})