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'))
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"))
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')
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')
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'● <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')
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))
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))
def notif_n_handler(update, context): user = get_user(update) user.notifications = False ud.save_user_data(user) update.message.reply_text('Notifiche disabilitate')