示例#1
0
def entries_put_post(user, data: M.SIEntry, entry=None):
    data = data.dict()
    if not any(v for k, v in data['tags'].items()):
        return send_error('Each entry must belong to at least one journal')

    if entry:
        db.session.query(M.EntryTag).filter_by(entry_id=entry.id).delete()
    else:
        entry = M.Entry(user_id=user.id)
        db.session.add(entry)
    entry.title = data['title']
    entry.text = data['text']
    entry.no_ai = data['no_ai'] or False

    # Manual date submission
    iso_fmt = r"^\d{4}-([0]\d|1[0-2])-([0-2]\d|3[01])$"
    ca = data['created_at']
    if ca and re.match(iso_fmt, ca):
        entry.created_at = dateutil.parser.parse(ca)

    # entry needs id, prior tags need deleting
    db.session.commit()
    for tag, v in data['tags'].items():
        if not v: continue
        db.session.add(M.EntryTag(entry_id=entry.id, tag_id=tag))
    # commit above first, in case run-models crashes
    db.session.commit()
    db.session.refresh(entry)

    entry.update_snoopers()
    entry.run_models()
    db.session.commit()

    return entry
示例#2
0
def setup_profiles(db, entries, main_uid):
    db.execute("delete from entries;delete from cache_entries;")
    db.commit()

    user1 = db.query(M.User).get(main_uid)
    user2 = None
    therapists = Box()
    for k in 'other therapist_vr therapist_cbt therapist_mix therapist_na'.split(
    ):
        user = M.User(id=uuid4(), **fixtures.users[k])
        if k == 'other':
            user2 = user
        else:
            user.therapist = True
            therapists[k] = user
        db.add(user)
    db.commit()

    for k, v in entries.items():
        entry = M.Entry(title=k, text=v.text)
        if k.startswith('Virtual_reality'):
            entry.user_id = main_uid
        elif k.startswith('Cognitive_behavioral_therapy'):
            entry.user_id = user2.id
        else:
            continue
        db.add(entry)
    db.commit()

    e_p.entries()
    e_p.profiles()

    return user1, user2, therapists
示例#3
0
def setup_entries(entries, db, main_uid):
    # main_uid "delete from users" deletes prior entries
    some_entry = None
    for k, v in entries.items():
        entry = M.Entry(title=k, text=v.text, user_id=main_uid)
        db.add(entry)
        some_entry = entry
    db.commit()
    db.refresh(some_entry)
    e_p.entries(some_entry.id)
示例#4
0
def entries_put_post(user, data: M.SIEntry, entry=None):
    data = data.dict()
    if not any(v for k,v in data['tags'].items()):
        return send_error('Each entry must belong to at least one journal')

    new_entry = entry is None
    if new_entry:
        entry = M.Entry(user_id=user.id)
        db.session.add(entry)
    else:
        db.session.query(M.EntryTag).filter_by(entry_id=entry.id).delete()
    entry.title = data['title']
    entry.text = data['text']
    entry.no_ai = data['no_ai'] or False

    iso_fmt = r"^\d{4}-([0]\d|1[0-2])-([0-2]\d|3[01])$"
    ca = data['created_at']
    if ca and re.match(iso_fmt, ca):
        # Manual date submission. Check before else below, could be PUT|POST
        entry.created_at, _ = M.User.timezoned(date=ca, user=user)
    elif new_entry:
        # New entry, ensure timezoned to user
        entry.created_at, _ = M.User.timezoned(user=user)
    # else leave it alone; it's PUT without manual edit

    # entry needs id, prior tags need deleting
    db.session.commit()
    for tag, v in data['tags'].items():
        if not v: continue
        db.session.add(M.EntryTag(entry_id=entry.id, tag_id=tag))
    # commit above first, in case run-models crashes
    db.session.commit()
    db.session.refresh(entry)

    entry.update_snoopers()
    entry.run_models()
    db.session.commit()

    return entry
示例#5
0
文件: conftest.py 项目: tullur/gnothi
def setup_entries(entries, db, main_uid):
    # main_uid "delete from users" deletes prior entries
    for k, v in entries.items():
        db.add(M.Entry(title=k, text=v.text, user_id=main_uid))
    db.commit()
    e_p.entries()