Exemple #1
0
    def finalizer_view(self):
        """Performs the actual search."""
        if "userid" not in session:
            return redirect(url_for('login'))

        userid = session.get("userid")
        user = get_user_data(userid)
        user.end_task()
        save_user_data(user)

        return redirect(url_for('index'))
Exemple #2
0
    def login(self):
        """The site's landing page."""
        if request.method == 'POST':
            userid = request.form['userid']

            if len(userid) > 3:
                session['userid'] = userid
                user = get_user_data(userid)
                save_user_data(user)
                return redirect(url_for('index'))

        return make_response(
            render_template("login.html",
                            title="VIRTUAL LEARNING ENVIRONMENT PROJECT"))
Exemple #3
0
def add_issue(update, context):
    issue_text = update.message.text
    g = re.search(URL_PATTERN, issue_text)
    if not g or len(g.groups()) < 2:
        update.message.reply_text('Inserisci tutto l\'indirizzo (https://...)')
    else:
        user = get_user(update)
        issue = g.group(2)
        if issue in user.followed_issues:
            update.message.reply_text('Manga già presente in lista. Usare il comando /list_issues per verificare')
        else:
            user.followed_issues.append(issue)
            ud.save_user_data(user)
            update.message.reply_text('Manga aggiunto alla lista. Usare il comando /list_issues per verificare')
Exemple #4
0
def del_issue(update, context):
    issue_text = update.message.text
    g = re.search(URL_PATTERN, issue_text)
    if not g or len(g.groups()) < 2:
        update.message.reply_text('Inserisci tutto l\'indirizzo (https://...)')
    else:
        user = get_user(update)
        issue = g.group(2)
        if issue in user.followed_issues:
            index = user.followed_issues.index(issue)
            del(user.followed_issues[index])
            ud.save_user_data(user)
            update.message.reply_text('Manga rimosso dalla lista. Usare il comando /list_issues per verificare')
        else:
            update.message.reply_text('Manga non presente in lista. Usare il comando /list_issues per verificare')
Exemple #5
0
def check(update, context):
    user = get_user(update)
    if len(user.followed_issues) == 0:
        update.message.reply_text('Non segui nessun manga, aggiungine con /add_issue')
    elif user.last_check + CHECK_COOLDOWN <= time.time():
        locale.setlocale(locale.LC_TIME, user.language or 'it_IT')
        new_issues = spider.get_new_chapters(user.followed_issues, user.last_check)
        user.last_check = int(time.time())
        ud.save_user_data(user)

        if len(new_issues) == 0:
            update.message.reply_text('Non ci sono novità dall\'ultimo controllo')

        else:
            for i, issue in enumerate(new_issues):
                reply = [
                    f'<b>{issue}</b>'
                ]
                volumes = list(new_issues[issue].keys())
                if len(volumes) > 3:
                    volumes = volumes[0:3]
 
                for volume in volumes:
                    reply.append(volume)
                    chapters = new_issues[issue][volume]['chapters']
                    chapters.sort(key=lambda x: x['title'])

                    for chapter in chapters:
                        title = chapter['title']
                        url = chapter['url']
                        released = date_to_str(chapter['release'])

                        reply.append(f'&#9679; <a href="{url}">{title}</a> - <i>{released}</i>')

                    reply.append('\n')

                update.message.reply_html('\n'.join(reply))

                if i < len(new_issues) - 1:
                    time.sleep(1.0)

    else:
        update.message.reply_text('Si può effettuare un controllo ogni 15 minuti')
Exemple #6
0
    def search_suggest(self):
        """Performs the actual suggestions-assisted search."""
        if "userid" not in session:
            return redirect(url_for('login'))

        stats = json.loads(request.form.get("stats", "[]"))
        query = request.form.get("query", None)
        perform_search = query is not None

        userid = session.get("userid")
        user = get_user_data(userid)
        task = user.get_task()
        task.append_stats(stats)
        save_user_data(user)

        context = {
            "title": "Suggestion-based search",
            "query": query,
            "results_view": url_for("results_view"),
            "autocomplete": True,
            "task": task
        }

        if perform_search:
            self.logger.info("Search: %s" % repr(query))

            results = []
            for hits in self.search_engine.search(query):
                for hit in hits:
                    score = hit.score
                    url = "%s" % hit["link"]
                    title = hit["name"]
                    description = hit["description"]
                    category = hit["category"]
                    results.append((score, url, title, description, category))

            context["results"] = sorted(results, reverse=True)

        return make_response(render_template("search.html", **context))
Exemple #7
0
    def results_view(self):
        """Performs the actual search."""
        if "userid" not in session:
            return redirect(url_for('login'))

        link = request.form.get("link", None)
        stats = json.loads(request.form.get("stats", "[]"))

        userid = session.get("userid")
        user = get_user_data(userid)
        task = user.get_task()
        task.link_found = link
        task.append_stats(stats)
        save_user_data(user)
        record = self.search_engine.select(link)

        context = {
            "finalizer_view": url_for("finalizer_view"),
            "test_view": url_for(task.view),
            "record": record,
            "task": task,
        }

        return make_response(render_template("results.html", **context))
Exemple #8
0
def notif_n_handler(update, context):
    user = get_user(update)
    user.notifications = False
    ud.save_user_data(user)
    update.message.reply_text('Notifiche disabilitate')