def next(): if request.method == "POST": # TODO: helper tags = set(map(unicode.lower, request.form.getlist("tags"))) Cluster.objects(pk=request.form["_id"]).update_one( push__tags=ShredTags( user=g.user.id, tags=list(tags), recognizable_chars=request.form.get("recognizable_chars", ""), angle=int(request.form.get("angle", 0))), inc__users_count=1, add_to_set__users_processed=g.user.id) User.objects(pk=g.user.id).update_one( inc__processed=1, inc__tags_count=len(tags), add_to_set__tags=list(tags)) session["processed"] = session.get("processed", 0) + 1 for tag in tags: Tags.objects(pk=tag).update_one( set_on_insert__is_base=False, set_on_insert__created_by=g.user.id, set_on_insert__created_at=Tags().created_at, inc__usages=1, add_to_set__shreds=request.form["_id"], upsert=True) start = datetime.strptime(request.form["tagging_start"], '%Y-%m-%d %H:%M:%S.%f') end = datetime.utcnow() TaggingSpeed.objects.create( user=g.user.id, cluster=request.form["_id"], tags_count=len(tags), msec=(end - start).total_seconds() * 1000) cluster = Cluster.next_for_user(g.user, app.config['USERS_PER_SHRED']) auto_tags = cluster and cluster.get_auto_tags() or [] return render_template( "_shred.html", cluster=cluster, auto_tags=auto_tags, all_tags=get_tags(), tagging_start=datetime.utcnow(), # TODO: move to context processor processed_per_session=session.get("processed", 0), processed_total=User.objects(id=g.user.id).first()["processed"], rating=list(User.objects.order_by( "-processed").values_list("id")).index(g.user.id) + 1 )
def run(self): headers = [ self.FIELD_TITLE[f] if f in self.FIELD_TITLE else f for f in self.FIELDS ] rows = [headers] for user in Beneficiary.objects().order_by('+last_name', '+first_name', '-age'): row = [] for field in self.FIELDS: value = getattr(user, field) if field in self.tag2v.keys(): if ObjectId.is_valid(value): tg = Tags.objects(id=value) if tg: row.append(tg.get().clean_data()['ro']) else: row.append(value) else: row.append(value) elif isinstance(value, bool): row.append(1 if value else 0) else: row.append(value) rows.append(row) return rows
def get_tag_synonyms(): mapping = {} for t in Tags.objects(synonyms__exists=True): for s in t["synonyms"]: mapping[s] = t["title"] return mapping
def next(): if request.method == "POST": tags = set(map(unicode.lower, request.form.getlist("tags"))) Shreds.objects(pk=request.form["_id"]).update_one( push__tags=ShredTags(user=g.user.id, tags=list(tags), recognizable_chars=request.form .get("recognizable_chars", "")), inc__users_count=1, add_to_set__summarized_tags=list(tags), add_to_set__users_processed=g.user.id) User.objects(pk=g.user.id).update_one( inc__processed=1, inc__tags_count=len(tags), add_to_set__tags=list(tags)) session["processed"] = session.get("processed", 0) + 1 for tag in tags: Tags.objects(pk=tag.capitalize()).update_one( set_on_insert__is_base=False, set_on_insert__created_by=g.user.id, set_on_insert__created_at=Tags().created_at, inc__usages=1, add_to_set__shreds=request.form["_id"], upsert=True) start = datetime.strptime(request.form["tagging_start"], '%Y-%m-%d %H:%M:%S.%f') end = datetime.utcnow() TaggingSpeed.objects.create( user=g.user.id, shred=request.form["_id"], tags_count=len(tags), msec=(end - start).total_seconds() * 1000) shred = get_next_shred() return render_template("shred.html", shred=shred, auto_tags=get_auto_tags(shred), all_tags=get_tags(), tagging_start=datetime.utcnow(), processed_per_session=session.get("processed", 0), processed_total=User.objects(id=g.user.id)\ .first()["processed"], rating=list(User.objects.order_by("-processed")\ .values_list("id")).index(g.user.id) + 1 )
def import_tags(drop=False): if drop: Tags.objects(is_base=True).delete() added = 0 updated = 0 with open("fixtures/base_tags.json", "r") as f: tags = json.load(f) for tag in tags: _, created = Tags.objects.get_or_create( title=tag["title"], defaults=tag) if created: added += 1 else: updated += 1 Tags.ensure_index(["is_base", "usages", "category"]) return added, updated
def shred(cluster_id): cluster = Cluster.objects.get(id=cluster_id) if not cluster: abort(404) if request.method == "POST": # TODO: helper tags = set(map(unicode.lower, request.form.getlist("tags"))) user_tags = cluster.get_user_tags(g.user) if not user_tags: abort(404) user_tags.tags = list(tags) user_tags.recognizable_chars = request.form.get( "recognizable_chars", "") user_tags.angle = int(request.form.get("angle", 0)) cluster.save() User.objects(pk=g.user.id).update_one( add_to_set__tags=list(tags)) for tag in tags: Tags.objects(pk=tag).update_one( set_on_insert__is_base=False, set_on_insert__created_by=g.user.id, set_on_insert__created_at=Tags().created_at, inc__usages=1, add_to_set__shreds=request.form["_id"], upsert=True) return render_template("_shred_snippet.html", cluster=cluster) else: return render_template( "_shred.html", cluster=cluster, auto_tags=cluster.get_auto_tags(), all_tags=get_tags(), user_data=cluster.get_user_tags(g.user), edit=True, )
def updateTag(requestjson, tag_id, delete=False): """update a single user by id""" print(tag_id, '---') update = {} toBool = {'true': True, 'false': False} if not delete: for key, value in requestjson.items(): if key == '_id': continue if key == "password": value = PassHash.hash(value) update[f"set__{key}"] = value if value.lower( ) not in toBool else toBool[value.lower()] else: update["set__is_active"] = False try: Tags.objects(id=tag_id).get().update(**update) return jsonify({"response": "success"}) except Exception as error: return jsonify({"error": str(error)}), 400
def getTagId(ro, ru, key): ob = Tags.objects(select=key, ro=ro) if ob: return ob.get().clean_data()['_id'] new_Tags = { "select": key, "ro": ro, "ru": ru, "en": "-", "is_active": True } comment = Tags(**new_Tags) comment.save() return comment.clean_data()['_id']
def test_has_some_tasks(self): self.create_user_and_login("user") self.client.post(url_for("fixtures.create_shreds")) res = self.client.get(url_for("next")) self.assert200(res) body = res.get_data(as_text=True) self.assertTrue("shred_id" in body) self.assertTrue(url_for("next") in body) for tag in Tags.objects(is_base=True): self.assertTrue( tag.title.capitalize().encode('unicode-escape') in body)
def getTags(tag_id, select, js=True): try: if tag_id: tags = Tags.objects(id=tag_id).get().clean_data() return jsonify(tags) elif select != 'all': if js: tags = [ v.clean_data() for v in Tags.objects(is_active=True, select=select).all() ] return jsonify({"list": tags}) tags = [ v.clean_data() for v in Tags.objects( select=select).order_by('-is_active').all() ] return tags else: tags = [v.clean_data() for v in Tags.objects(is_active=True).all()] if js: return jsonify({"list": tags}) return tags except Exception as error: return jsonify({"error": str(error)}), 400
def test_index_logged(self): self.create_user_and_login("user") res = self.client.get(url_for("index")) self.assert200(res) body = res.get_data(as_text=True) self.assertFalse("warm-welcome" in body) self.assertFalse(url_for("social.auth", backend="facebook") in body) self.assertFalse(url_for("social.auth", backend="twitter") in body) self.assertFalse( url_for("social.auth", backend="google-oauth2") in body) self.assertFalse( url_for("social.auth", backend="vk-oauth2") in body) for tag in Tags.objects(is_base=True): self.assertTrue(tag.title.lower() in body.lower()) self.assertTrue(tag.category.lower() in body.lower()) if tag.hotkey: self.assertTrue(tag.hotkey in body.lower())
def boolconv(source, k, tag2v): if k in tag2v: if ObjectId.is_valid(source): tg = Tags.objects(id=source)# if tg: return tg.get().clean_data()['ro'] if source is None: return '0' if type(source) is str: if len(source)==0: return '0' else: return source if type(source) is bool: if source: return 1 else: return 0 else: return str(source)
def test_user_tags_in_task(self): self.create_user_and_login("user") self.client.post(url_for("fixtures.create_shreds")) user = User.objects.get(username="******") admin = User.objects.get(username="******") user_tag = "foobar" another_user_tag = "barfoo" Tags.objects.create(title=user_tag, is_base=False, created_by=user) Tags.objects.create(title=another_user_tag, is_base=False, created_by=admin) user.tags = [user_tag] admin.tags = [another_user_tag] user.save() admin.save() res = self.client.get(url_for("next")) self.assert200(res) body = res.get_data(as_text=True) self.assertTrue( user_tag.capitalize().encode('unicode-escape') in body) pos = body.index(user_tag.capitalize().encode('unicode-escape')) self.assertFalse( another_user_tag.capitalize().encode('unicode-escape') in body) for tag in Tags.objects(is_base=True): tag = tag.title.capitalize().encode('unicode-escape') self.assertTrue(tag in body) self.assertTrue(body.index(tag) < pos)
def get_tags(): return set([unicode(t["title"]).lower() for t in Tags.objects(is_base=True).order_by("-usages")] + map(lambda x: unicode(x).lower(), g.user.tags))