def put(self, user_id, entryId): """ Method: PUT Modifies an entry by it's Id URL path: mydiary/v1/entries/<int:entryId> """ user_id = user_id[0] owner = Entry().verify_entry_owner(entryId, user_id) data = self.parser.parse_args() title = data['title'] content = data['content'] updated_data = (title, content) entry = Entry().get_entry_id(entryId) if entry is None: return {'message':"Entry does not exist"}, 404 if entry: entry_Date = Entry().entry_date(entryId)[0] today_date = date.today().strftime("%d-%m-%Y") if today_date == entry_Date: if Entry().verify_title(title, user_id) == True: return{'message':"Title already exist, use a different one."}, 400 if owner: Entry().update_entry(updated_data, entryId) return{"message":"Entry Updated successfully"}, 200 else: return{"message":"You are not allowed to update this entry"}, 403 else: return{'message':'Entry cannot be updated because it was not created today'}, 400
def oracle_create(): logger.debug("start oracle_create") form = OracleCreateForm() if request.method == 'GET': logger.debug("start oracle_create GET") return render_template(ORACLE_PATH + '/create.html', form=form) logger.debug("start oracle_create POST") form = OracleCreateForm(request.form) if request.method == 'POST' and form.validate(): session['username'] = request.form['username'] session['email'] = request.form['email'] #logger.debug("UT_ENTRYTEMP insert") entry = Entry.dict() entry['UNAME'] = session['username'] entry['UKANA'] = mojimoji.zen_to_han(session['username']) entry['UEMAIL'] = session['email'] if Entry.insert(entry): flash("登録できました。", "success") else: flash("登録できませんでした。", "danger") return redirect("/sample/oracle/") return render_template(ORACLE_PATH + 'create.html', form=form)
def delete(self, user_id, entry_id): '''Method for deleting an entry''' user_entry = Entry.get(user_id=user_id, entry_id=entry_id) if user_entry: Entry.delete(table='entries', id=user_entry[0]) return {"message": "Entry has been deleted"}, 200 return {"message": "Entry does not exist"}, 404
def detail(slug): if session.get('logged_in'): query = Entry.select() else: query = Entry.public() entry = get_object_or_404(query, Entry.slug == slug) return render_template('detail.html', entry=entry)
def test_save_method_saves_entries(self): """Tests if the save method saves entries to the database""" entries = [self.entry1, self.entry2, self.entry3] for entry in entries: Entry().save(entry) data = Entry().verify_title('python', 1) self.assertEquals(data, True)
def oracle_index(): form = OracleIndexForm() if request.method == 'GET': entries = Entry.select_status(0) return render_template(ORACLE_PATH + 'index.html', form=form, entries=entries, entry_status_list=ENTRY_STATUS_LIST) form = OracleIndexForm(request.form) if request.method == 'POST' and form.validate(): if request.form['status'] != '0': entries = Entry.select_status(request.form['status']) else: entries = Entry.select_status(0) return render_template(ORACLE_PATH + 'index.html', form=form, entries=entries, entry_status_list=ENTRY_STATUS_LIST) return render_template(ORACLE_PATH + 'index.html', form=form, entry_status_list=ENTRY_STATUS_LIST)
def oracle_delete(id): logger.debug("start oracle_delete") form = OracleDeleteForm() if request.method == 'GET': entry = Entry.select_id(id) #プルダウン/ラジオボタンは最初に設定しないとフォームがクリアされてしまう form.status.default = int(entry.USTATUS) form.sex.default = int(entry.USEX) print(form.status.default) form.process() form.entryno.data = entry.UENTRYNO form.username.data = entry.UNAME form.userkana.data = entry.UKANA form.email.data = entry.UEMAIL return render_template('/sample/oracle/delete.html', form=form, entry=entry) logger.debug("start oracle_delete POST") form = OracleDeleteForm(request.form) if request.method == 'POST': if Entry.delete(id): flash("削除できました。", "success") else: flash("削除できませんでした。", "danger") return redirect(ORACLE_PATH) return render_template(ORACLE_PATH + 'delete.html', form=form)
def post(self, user_id): '''Method for adding entry''' args = EntryResource.parser.parse_args() title = args.get('title', '') description = args.get('description', '') if is_blank(title) or is_blank(description): return {'message': 'All fields are required'}, 400 entry = Entry(title=title, user_id=user_id, description=description) entry = entry.save() return {'message': 'Entry has been published', 'entry': entry}, 201
def index(): search_query = request.args.get('q') if search_query: query = Entry.search(search_query) else: query = Entry.public().order_by(Entry.timestamp.desc()) return object_list('index.html', query, search=search_query, check_bounds=False)
def test_repr_entry(self, mock_get_settings): mock_get_settings.return_value = ListSettings(start_day_of_week=-1, days_to_display=7) a = push_dummy_user('a', 'a') list_ = push_dummy_list(a, 'list_') d = list_.get_or_create_days()[0] e = Entry(day_id=d.id) db.session.add(e) db.session.commit() self.assertEqual(e.__repr__(), '<Entry 1 of Day {} in List list_>'.format(d.day))
def add_new_entry(): entry_json = json.loads(request.data) new_entry = Entry(response=entry_json['response']) user = User.query.get(entry_json['user_id']) prompt = Prompt.query.get(entry_json['prompt_id']) new_entry.user = user new_entry.prompt = prompt db.session.add(new_entry) db.session.commit() return 'Success'
def index(): entries = Entry.query.all() form = EntryForm() if form.validate_on_submit(): entry = Entry() entry.title = form.title.data entry.body = form.body.data db.session.add(entry) db.session.commit() return redirect(url_for('main.index')) return render_template('main/index.html', form=EntryForm(), entries=entries)
def delete(entryId): """ Method: DELETE Deletes an entry by it's Id URL path: mydiary/v1/entries/<int:entryId> """ try: entry_id = Entry().get_entry_id(entryId) if entry_id is None: return {'message': "Entry does not exist"}, 404 else: Entry().delete_entry(entryId) return {'message': 'Your entry was successfully deleted'}, 200 except: return {"Server Response": "An internal error occured"}, 500
def test_delete_list(self, mock_get_settings): mock_get_settings.return_value = ListSettings( start_day_of_week=-1, days_to_display=7) a = push_dummy_user('a', 'a') b = push_dummy_user('b', 'b') list_ = push_dummy_list(a, 'list_') d = list_.get_or_create_days() e = Entry(day_id=d[0].id) ls = ListSettings(list_id=list_.id, user_id=a.id) s = ListPermission( list_id=list_.id, permission_level='member', user_id=b.id) db.session.add_all([e, ls, s]) db.session.commit() self.assertEqual(List.query.first(), list_) self.assertEqual(Entry.query.first(), e) self.assertEqual(Day.query.first(), d[0]) self.assertEqual(ListSettings.query.first(), ls) self.assertEqual(ListPermission.query.filter_by( user_id=b.id).first(), s) db.session.delete(list_) db.session.commit() self.assertEqual(List.query.first(), None) self.assertEqual(Entry.query.first(), None) self.assertEqual(Day.query.first(), None) self.assertEqual(ListSettings.query.first(), None) self.assertEqual(ListPermission.query.first(), None)
def test_delete_user(self): a = push_dummy_user('a', 'a') b = push_dummy_user('b', 'b') list_ = push_dummy_list(a, 'list_') d = list_.get_or_create_days() e = Entry(day_id=d[0].id) ls = ListSettings(list_id=list_.id, user_id=a.id) s = ListPermission(list_id=list_.id, user_id=b.id) db.session.add_all([e, ls, s]) db.session.commit() self.assertEqual(User.query.first(), a) self.assertEqual(List.query.first(), list_) self.assertEqual(Entry.query.first(), e) self.assertEqual(Day.query.first(), d[0]) self.assertEqual(ListSettings.query.first(), ls) self.assertEqual(ListPermission.query.filter_by( user_id=b.id).first(), s) db.session.delete(a) db.session.commit() self.assertEqual(User.query.first(), b) self.assertEqual(List.query.first(), None) self.assertEqual(Entry.query.first(), None) self.assertEqual(Day.query.first(), None) self.assertEqual(ListSettings.query.first(), None) self.assertEqual(ListPermission.query.filter_by( user_id=a.id).first(), None)
def add_entry(): """ Presents a form to add a new entry to the database. Requires the user to be logged in. """ if not current_user.is_authenticated: flash('Please login or register to add entries.') return redirect(url_for('index')) s = Session() if request.method == 'POST': date = request.form['date'] content = request.form['content'] if not date: flash('Date is required!') else: try: new_entry = Entry(date=date, content=content, user_id=current_user.get_id()) s.add(new_entry) s.commit() s.close() return redirect(url_for('index')) except Exception as e: s.close() return render_template('404_page.html', message=str(e)) s.close() return render_template('entries/add_entry_form.html')
def test_can_get_all_entries(self): '''Test can get all diary entries''' self.user1.save() self.entry1.save() entry = Entry.get(user_id=1) self.assertIsInstance(entry, dict) self.assertEqual(1, len(entry))
def generate_fake(user_count=7, battle_count=21, entry_count=100, vote_count=200): """ Generate fake users and battles. Gets 'model_count' arguments which means create not more than 'count' objects of class 'Model' """ from random import seed from app.helpers import (try_add, generate_fake_user, generate_fake_battle, generate_fake_entry, generate_fake_vote) user_count, battle_count, entry_count, vote_count = int(user_count), int(battle_count), \ int(entry_count), int(vote_count) seed() try_add(*(generate_fake_user() for _ in range(user_count))) # Because there is a small chance of collisions user_count = len(User.query.all()) print("User count is", user_count) try_add(*(generate_fake_battle() for _ in range(battle_count))) battle_count = len(Battle.get_list()) print("Battle count is", battle_count) try_add(*(generate_fake_entry() for _ in range(entry_count))) entry_count = len(Entry.get_list()) print("Entry count is", entry_count) try_add(*(generate_fake_vote() for _ in range(vote_count))) vote_count = len(Vote.query.all()) print("Vote count is", vote_count)
def add(): year = db.Column(db.String(64), index=True, nullable=False) model = db.Column(db.String(120), index=True, nullable=False) extcolor = db.Column(db.String(120), index=True, nullable=False) intcolor = db.Column(db.String(120), index=True, nullable=False) transmission = db.Column(db.String(120), index=True, nullable=False) price = db.Column(db.String(120), index=True, nullable=False) contact = db.Column(db.String(120), index=True, nullable=False) if request.method == 'POST': form = request.form year = form.get('year') model = form.get('model') extcolor = form.get('extcolor') intcolor = form.get('intcolor') transmission = form.get('transmission') price = form.get('price') contact = form.get('contact') if not year or model or extcolor or intcolor or transmission or price or contact: entry = Entry(year = year, model = model, extcolor = extcolor, intcolor = intcolor, transmission = transmission, price = price, contact = contact) db.session.add(entry) db.session.commit() return redirect('/') return "of the jedi" # @app.errorhandler(Exception) # def error_page(e): # return "of the jedi"
def delete(self, user_id, entry_id): '''Method for deleting an entry''' user_entry = Entry.get(user_id=user_id, id=entry_id) if isinstance (user_entry, Entry): user_entry.delete() return {"message": "Entry has been deleted"}, 200 return {"message": "Entry does not exist"}, 404
def seed_entries(): user = User.query.first() journal = Journal.query.first() category = Category.query.first() # Maybe implement python based AWS logic for adding pics # demo = Entry( # body = 'My first journal entry, How remarkable', # date = datetime.datetime.now(), # page_layout = 'layout_two', # user_id = user.id, # journal_id = journal.id, # category_id = category.id # ) # db.session.add(demo) # db.session.commit() paragraph = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Eget mauris pharetra et ultrices neque ornare aenean euismod elementum. Tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Et odio pellentesque diam volutpat. Adipiscing elit ut aliquam purus sit amet luctus venenatis. Pellentesque habitant morbi tristique senectus et. Aliquam ultrices sagittis orci a scelerisque purus semper eget duis. Vitae nunc sed velit dignissim sodales ut eu sem integer. Donec ac odio tempor orci. Erat nam at lectus urna duis convallis convallis. Eu non diam phasellus vestibulum. Tempor nec feugiat nisl pretium fusce id velit ut. Nam at lectus urna duis convallis convallis tellus id interdum. Sed euismod nisi porta lorem mollis aliquam ut. Sed ullamcorper morbi tincidunt ornare. Interdum posuere lorem ipsum dolor sit amet. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque. Senectus et netus et malesuada fames. Neque sodales ut etiam sit amet nisl purus in. Eget felis eget nunc lobortis mattis aliquam faucibus purus.' for num in range(1, 15): random_number = randint(1, 3) demo2 = Entry(body=paragraph * random_number, date=f'2021-02-{num}', page_layout='layout_one', user_id=user.id, journal_id=journal.id, category_id=category.id) db.session.add(demo2) db.session.commit()
def setUp(self): main('testing') self.app = create_app('testing') with self.app.app_context(): from app.models import User, Entry self.client = self.app.test_client() self.entry_model = Entry self.user_model = User self.user_data = { "username":"******", "email":"*****@*****.**", "password":"******" } self.entry_data = { "title": "Freaky friday", "description": "Fun fun fun fun fun fun" } self.user1 = User( username='******', email='*****@*****.**', password='******') self.entry1 = Entry( title='I saved a dog', description='The dog was cute', user_id=1) self.test_user = User( username='******', email='*****@*****.**', password='******')
def setUp(self): self.app = create_app('testing') self.app_context = self.app.app_context() self.app_context.push() db.create_all() u = User(username='******', email="*****@*****.**", password='******', join_time=datetime.utcnow()) e1 = Entry(entry="e1", entry_time=datetime.utcnow(), user=u) e2 = Entry(entry="e2", entry_time=datetime.utcnow(), user=u) t1 = Tag(tag="t1") t2 = Tag(tag="t2") # add it to the database db.session.add_all([u, e1, t1, t2])
def setUp(self): """Initialize app and define test variables""" self.app = create_app('testing') self.client = self.app.test_client() self.app_context = self.app.app_context() self.app_context.push() self.user_data = { "username": "******", "email": "*****@*****.**", "password": "******" } self.entry_data = { "title": "Freaky friday", "description": "Fun fun fun fun fun fun" } self.user1 = User(username='******', email='*****@*****.**', password='******') self.entry1 = Entry(title='I saved a dog', description='The dog was cute', user_id=1) self.test_user = User(username='******', email='*****@*****.**', password='******')
def created_entry(): form = EntryForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): # content = request.json new_entry = Entry( body = form.data['body'], date = datetime.datetime.now(), page_layout = form.data['page_layout'], user = current_user, journal_id = form.data['journal_id'], category_id = form.data['category_id'] ) db.session.add(new_entry) db.session.commit() return new_entry.to_dict() return {'errors': validation_errors_to_error_messages(form.errors)}
def add(): if request.method == 'POST': form = dict(request.form) del form[pkey] entry = Entry(**form) db.session.add(entry) db.session.commit() return redirect('/')
def test_can_delete_an_entry(self): '''Test can delete an entry''' self.user1.save() self.entry1.save() entry = Entry.get(user_id=1, id=1) self.assertEqual(1, len(db.entries[1])) entry.delete() self.assertEqual(0, len(db.entries[1]))
def setUp(self): self.app = create_app('testing') self.app_ctx = self.app.app_context() self.app_ctx.push() db.create_all() self.client = self.app.test_client() if User.query.get(1) is None: admin = User("admin", Role.Admin) admin.set_password("admin") db.session.add(admin) db.session.commit() manager = User("manager", Role.Manager) manager.set_password("manager") db.session.add(manager) db.session.commit() entry = Entry(date=datetime.date(2018, 4, 13), distance=10, time=datetime.time(hour=1, minute=1, second=30), latitude=50.11, longitude=36.11, user_id=admin.id) db.session.add(entry) db.session.commit() weather = Weather() weather.get_weather(entry.id, entry.latitude, entry.longitude, entry.date) db.session.add(weather) db.session.commit() entry = Entry(date=datetime.date(2018, 4, 14), distance=0.2, time=datetime.time(minute=5, second=30), latitude=50.22, longitude=35.22, user_id=admin.id) db.session.add(entry) db.session.commit() weather = Weather() weather.get_weather(entry.id, entry.latitude, entry.longitude, entry.date) db.session.add(weather) db.session.commit()
def oracle_update(id): logger.debug("start oracle_update") form = OracleUpdateForm() if request.method == 'GET': entry = Entry.select_id(id) #プルダウン/ラジオボタンは最初に設定しないとフォームがクリアされてしまう form.status.default = int(entry.USTATUS) form.sex.default = int(entry.USEX) print(form.status.default) form.process() form.entryno.data = entry.UENTRYNO form.username.data = entry.UNAME form.userkana.data = entry.UKANA form.email.data = entry.UEMAIL return render_template(ORACLE_PATH + 'update.html', form=form, entry=entry) logger.debug("start oracle_update POST") form = OracleUpdateForm(request.form) if request.method == 'POST' and form.validate(): logger.debug("--- oracle_update POST ---") #logger.debug("UT_ENTRYTEMP insert") entry = Entry.dict() entry['UENTRYNO'] = id entry['UNAME'] = request.form['username'] entry['UKANA'] = mojimoji.zen_to_han(request.form['username']) entry['UEMAIL'] = request.form['email'] entry['USEX'] = request.form['sex'] entry['USTATUS'] = request.form['status'] print(request.form['status']) logger.debug("--- oracle_update entry data ---") if Entry.update(entry) and form.validate(): flash("更新できました。", "success") else: flash("更新できませんでした。", "danger") return redirect("/sample/oracle/") return render_template(ORACLE_PATH + 'update.html', form=form)
def save_entry(request): print 'saving entry' entry_data = json.load(request) title = entry_data['title'] if not pass_ok(entry_data['password']): return HttpResponse('password failure!') print 'password OK' normalized_title = entry_data['normalized_title'] tagline = entry_data['tagline'] body = entry_data['body'] date = datetime.datetime.today() print 'date OK' entry = Entry(title=title, normalized_title=normalized_title, tagline=tagline, body=body, date=date) print 'entry created' entry.save() print 'entry saved' return HttpResponse('success!')
def get(self, user_id, entry_id=None): '''Methofd for getting both single and all entries''' if entry_id: user_entry = Entry.get(user_id=user_id, entry_id=entry_id) if user_entry: return { 'message': 'Entry found', 'entry': Entry.entry_dict(user_entry) }, 200 else: return {'message': 'Entry not found'}, 404 user_entries = Entry.get(user_id=user_id) if not user_entries: return {'message': 'No entries available'}, 404 return { 'message': 'Entries found', 'entries': [Entry.entry_dict(entry) for entry in user_entries] }, 200