Exemplo n.º 1
0
def updateNew(id):
    """
    Updates a new. Requires a JSON:

    {
    "title_en": "title_en",
    "title_es": "title_es",
    "text_en": "text_en",
    "text_es": "text_es",
    "url_en": "url_en",
    "url_es": "url_es",
    "news_section": 1,
    "labels_en": [1,2,3,4],
    "labels_es": [2,3,4,5],
    "time": "20130216"
    }

    where news_section are:
    1: Blog,
    2: Media,
    3: Events
    """
    m = NewModel()
    j = request.json
    return(jsonify({"id": m.editNew(id, j["title_en"], j["title_es"], \
                                        j["text_en"], j["text_es"], \
                                        j["url_en"], j["url_es"], \
                                        j["news_section"], j["labels_en"], j["labels_es"], j["time"])}))
Exemplo n.º 2
0
def updateNew(id):
    """
    Updates a new. Requires a JSON:

    {
    "title_en": "title_en",
    "title_es": "title_es",
    "text_en": "text_en",
    "text_es": "text_es",
    "url_en": "url_en",
    "url_es": "url_es",
    "news_section": 1,
    "labels_en": [1,2,3,4],
    "labels_es": [2,3,4,5],
    "time": "20130216"
    }

    where news_section are:
    1: Blog,
    2: Media,
    3: Events
    """
    m = NewModel()
    j = request.json
    return(jsonify({"id": m.editNew(id, j["title_en"], j["title_es"], \
                                        j["text_en"], j["text_es"], \
                                        j["url_en"], j["url_es"], \
                                        j["news_section"], j["labels_en"], j["labels_es"], j["time"])}))
Exemplo n.º 3
0
def getNewsSections(lang):
    """Gets the sections for news."""
    nm = NewModel()
    try:
        return (jsonify({"results": nm.getNewsSections(lang)}))
    except ElcanoError as e:
        return (jsonify(e.dict()))
Exemplo n.º 4
0
def getNewsSections(lang):
    """Gets the sections for news."""
    nm = NewModel()
    try:
        return(jsonify({"results": nm.getNewsSections(lang)}))
    except ElcanoError as e:
        return(jsonify(e.dict()))
Exemplo n.º 5
0
def getNew(id):
    """Gets details of a new."""
    nm = NewModel()
    newsDetail = nm.getNewDetails(id)
    if not newsDetail:
        return (jsonify({"error": "News not found"}), 404)
    labelsEn = nm.getLabelsForNew(newsDetail["id"], "en")
    labelsEs = nm.getLabelsForNew(newsDetail["id"], "es")
    newsDetail["labels_en"] = labelsEn
    newsDetail["labels_es"] = labelsEs
    newsDetail["time"] = str(newsDetail["publishing_date"].isoformat())
    newsDetail.pop("publishing_date")

    return (jsonify(newsDetail))
Exemplo n.º 6
0
def getNew(id):
    """Gets details of a new."""
    nm = NewModel()
    newsDetail = nm.getNewDetails(id)
    if not newsDetail:
        return(jsonify({"error": "News not found"}), 404)
    labelsEn = nm.getLabelsForNew(newsDetail["id"], "en")
    labelsEs = nm.getLabelsForNew(newsDetail["id"], "es")
    newsDetail["labels_en"] = labelsEn
    newsDetail["labels_es"] = labelsEs
    newsDetail["time"] = str(newsDetail["publishing_date"].isoformat())
    newsDetail.pop("publishing_date")

    return(jsonify(newsDetail))
Exemplo n.º 7
0
def createNew():
    """
    Creates a new new. Requires a JSON:

    {
    "title_en": "title_en",
    "title_es": "title_es",
    "text_en": "text_en",
    "text_es": "text_es",
    "url_en": "url_en",
    "url_es": "url_es",
    "news_section": 1,
    "labels_en": [{"id": 1, "label": "US"}, {}...],
    "labels_es": [{"id": 1, "label": "EEUU"}, {}...],
    "time": "20130216"
    }

    where news_section are:
    1: Blog,
    2: Media,
    3: Events
    """
    m = NewModel()
    j = request.json

    labels_en = []
    if j["labels_en"]:
        labels_en = []
        for l in j["labels_en"]:
            labels_en.append(l["id"])
    labels_es = []
    if j["labels_es"]:
        labels_es = []
        for l in j["labels_es"]:
            labels_es.append(l["id"])

    return (jsonify({
        "id":
        m.createNew(j["title_en"], j["title_es"], j["text_en"], j["text_es"],
                    j["url_en"], j["url_es"], j["news_section"], labels_en,
                    labels_es, j["time"])
    }))
Exemplo n.º 8
0
def getNewCatalogFrontend():
    """Gets the news catalog. request.args:
    page: mandatory, page to show
    lang: mandatory, language
    search: optional, search criteria (searches in titles and texts)
    filterbylabel: optional, comma-separated list of labels ID to filter with

    TODO: habría que traerse el criterio de ordenación de la base de
    datos junto a los ID para ordenar antes de pedir todos los datos finalmente
    """
    m = NewModel()
    search = request.args["search"] if "search" in request.args else None
    lang = request.args["lang"]
    filterByLabel = request.args[
        "filterbylabel"] if "filterbylabel" in request.args else None
    page = int(request.args["page"])
    notLang = "en" if lang == "es" else "es"

    try:
        if search:
            ids = m.searchNewsByFeatures(search, True).union(
                m.searchNewsByLabel(search, True))
        else:
            ids = m.searchNewsByFeatures("", True)
        if filterByLabel:
            ids = ids.intersection(m.filterByLabels(lang, filterByLabel))

        out = []
        for i in list(ids):
            newsDetails = m.getNewDetails(i)
            labels = m.getLabelsForNew(i, lang)
            newsDetails["labels"] = labels
            newsDetails.pop("section_" + notLang)
            newsDetails.pop("text_" + notLang)
            newsDetails.pop("title_" + notLang)
            newsDetails.pop("url_" + notLang)
            newsDetails["title"] = newsDetails.pop("title_" + lang)
            newsDetails["text"] = newsDetails.pop("text_" + lang)
            newsDetails["url"] = newsDetails.pop("url_" + lang)
            newsDetails["section"] = newsDetails.pop("section_" + lang)
            newsDetails["time"] = str(
                newsDetails["publishing_date"].isoformat())
            newsDetails.pop("publishing_date")
            out.append(newsDetails)

        sortedOut = sorted(out, key=itemgetter("new_time"), reverse=True)

        return(jsonify({"results": {"page": page, "listSize": len(out), \
                                    "data": sortedOut[cons.frontend["newsCatalogPageSize"]*page:\
                                                      cons.frontend["newsCatalogPageSize"]*(page+1)]}}))
    except ElcanoError as e:
        return (jsonify(e.dict()))
Exemplo n.º 9
0
def createNew():
    """
    Creates a new new. Requires a JSON:

    {
    "title_en": "title_en",
    "title_es": "title_es",
    "text_en": "text_en",
    "text_es": "text_es",
    "url_en": "url_en",
    "url_es": "url_es",
    "news_section": 1,
    "labels_en": [{"id": 1, "label": "US"}, {}...],
    "labels_es": [{"id": 1, "label": "EEUU"}, {}...],
    "time": "20130216"
    }

    where news_section are:
    1: Blog,
    2: Media,
    3: Events
    """
    m = NewModel()
    j = request.json

    labels_en = []
    if j["labels_en"]:
        labels_en = []
        for l in j["labels_en"]:
            labels_en.append(l["id"])
    labels_es = []
    if j["labels_es"]:
        labels_es = []
        for l in j["labels_es"]:
            labels_es.append(l["id"])

    return(jsonify({"id": m.createNew(j["title_en"], j["title_es"],
                                      j["text_en"], j["text_es"],
                                      j["url_en"], j["url_es"],
                                      j["news_section"], labels_en, labels_es, j["time"])}))
Exemplo n.º 10
0
def getNewCatalog():
    """Gets the news catalog. request.args:
    page: mandatory, page to show
    search: optional, search criteria (searches in titles, texts, and labels)
    """
    m = NewModel()
    search = request.args["search"] if "search" in request.args else None
    page = int(request.args["page"])

    if search:
        ids = m.searchNewsByFeatures(search, False).union(m.searchNewsByLabel(search, False))
    else:
        ids = m.searchNewsByFeatures("", False)

    news = []
    for new in ids:
        out = dict()
        d = m.getNewDetails(new)
        if d["title_en"] and d["text_en"] and d["url_en"]:
            out["english"]=True
        else:
            out["english"]=False
        if d["title_es"] and d["text_es"] and d["url_es"]:
            out["spanish"]=True
        else:
            out["spanish"]=False
        out["title"] = d["title_es"] if d["title_es"]!=None else \
                       d["title_en"] if d["title_en"]!=None else "Sin título"
        out["time"] = str(d["publishing_date"].isoformat())
        out["published"] = d["published"]
        out["id"] = d["id"]
        news.append(out)

    return(jsonify({"results": {"page": page, "listSize": len(news),
                                "data": sorted(news, key=itemgetter("time"), reverse=True)\
                                [cons.backend["newsCatalogPageSize"]*page:\
                                 cons.backend["newsCatalogPageSize"]*(page+1)]}}))
Exemplo n.º 11
0
def getNewCatalogFrontend():
    """Gets the news catalog. request.args:
    page: mandatory, page to show
    lang: mandatory, language
    search: optional, search criteria (searches in titles and texts)
    filterbylabel: optional, comma-separated list of labels ID to filter with

    TODO: habría que traerse el criterio de ordenación de la base de
    datos junto a los ID para ordenar antes de pedir todos los datos finalmente
    """
    m = NewModel()
    search = request.args["search"] if "search" in request.args else None
    lang = request.args["lang"]
    filterByLabel = request.args["filterbylabel"] if "filterbylabel" in request.args else None
    page = int(request.args["page"])
    notLang = "en" if lang=="es" else "es"

    try:
        if search:
            ids = m.searchNewsByFeatures(search, True).union(m.searchNewsByLabel(search, True))
        else:
            ids = m.searchNewsByFeatures("", True)
        if filterByLabel:
            ids = ids.intersection(m.filterByLabels(lang, filterByLabel))

        out=[]
        for i in list(ids):
            newsDetails = m.getNewDetails(i)
            labels = m.getLabelsForNew(i, lang)
            newsDetails["labels"] = labels
            newsDetails.pop("section_"+notLang)
            newsDetails.pop("text_"+notLang)
            newsDetails.pop("title_"+notLang)
            newsDetails.pop("url_"+notLang)
            newsDetails["title"]=newsDetails.pop("title_"+lang)
            newsDetails["text"]=newsDetails.pop("text_"+lang)
            newsDetails["url"]=newsDetails.pop("url_"+lang)
            newsDetails["section"] = newsDetails.pop("section_"+lang)
            newsDetails["time"] = str(newsDetails["publishing_date"].isoformat())
            newsDetails.pop("publishing_date")
            out.append(newsDetails)

        sortedOut = sorted(out, key=itemgetter("new_time"), reverse=True)

        return(jsonify({"results": {"page": page, "listSize": len(out), \
                                    "data": sortedOut[cons.frontend["newsCatalogPageSize"]*page:\
                                                      cons.frontend["newsCatalogPageSize"]*(page+1)]}}))
    except ElcanoError as e:
        return(jsonify(e.dict()))
Exemplo n.º 12
0
def getNewCatalog():
    """Gets the news catalog. request.args:
    page: mandatory, page to show
    search: optional, search criteria (searches in titles, texts, and labels)
    """
    m = NewModel()
    search = request.args["search"] if "search" in request.args else None
    page = int(request.args["page"])

    if search:
        ids = m.searchNewsByFeatures(search, False).union(
            m.searchNewsByLabel(search, False))
    else:
        ids = m.searchNewsByFeatures("", False)

    news = []
    for new in ids:
        out = dict()
        d = m.getNewDetails(new)
        if d["title_en"] and d["text_en"] and d["url_en"]:
            out["english"] = True
        else:
            out["english"] = False
        if d["title_es"] and d["text_es"] and d["url_es"]:
            out["spanish"] = True
        else:
            out["spanish"] = False
        out["title"] = d["title_es"] if d["title_es"]!=None else \
                       d["title_en"] if d["title_en"]!=None else "Sin título"
        out["time"] = str(d["publishing_date"].isoformat())
        out["published"] = d["published"]
        out["id"] = d["id"]
        news.append(out)

    return(jsonify({"results": {"page": page, "listSize": len(news),
                                "data": sorted(news, key=itemgetter("time"), reverse=True)\
                                [cons.backend["newsCatalogPageSize"]*page:\
                                 cons.backend["newsCatalogPageSize"]*(page+1)]}}))
Exemplo n.º 13
0
def deleteNew(id):
    """Deletes the new with ID id."""
    m = NewModel()
    return (jsonify({"id": m.deleteNew(id)}))
Exemplo n.º 14
0
def newTogglePublish(id):
    """Toggles published status of the new with ID id."""
    m = NewModel()
    return (jsonify({"id": m.togglePublish(id)}))
Exemplo n.º 15
0
def deleteNew(id):
    """Deletes the new with ID id."""
    m = NewModel()
    return(jsonify({"id": m.deleteNew(id)}))
Exemplo n.º 16
0
def newTogglePublish(id):
    """Toggles published status of the new with ID id."""
    m = NewModel()
    return(jsonify({"id": m.togglePublish(id)}))