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
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
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)
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
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()