Python-powered chat apps with Twilio and SendGrid Transcripts
Chapter: Creating the admin backend for Flask
Lecture: Fulfilling a cake order in the admin backend

Login or purchase this course to watch this video and the rest of the course contents.
0:00 So we've got our table all built and we've got that cool fulfill button. But we need a back end service to handle that request,
0:07 right? Let's go and add one more thing here and we're going to do is going to put /admin/fulfill and pass over the order id, here and
0:22 now, the warning and pycharm is that this does not have an order id down here. It's going to be an integer.
0:30 So, we're gonna go over here and do you actually 'get' against this doing a 'get' to make a modified change of our sites?
0:36 Not ideal. We could change things supposed because it's back behind the admin section. I think this is going to be okay.
0:44 I want to change this to fulfill it doesn't conflict with that name, and then we need a little protection. We need a little test here.
0:53 So instead of having the orders, I want to say order, say find_order_by_id. have that function and we want to check,
1:03 if not order. So if they try to fulfill an order that doesn't exist, guess what? Return flask.abort(404) nope.
1:13 No order here otherwise, we want to go and say, order_service.fulfill pass over the order_id and then let's send them back you
1:31 /admin. I think this is going to be all we need to do for a view. They submit the order_id. We say, Let's make sure that you've got it.
1:39 Go to the database, get the order_id. If you don't well, that means effectively. The URL here is invalid. So 404, But if it does exist,
1:48 let's go ahead and fulfill it. Passing over the order_id again. Send them back to that list that will refresh it, When it refreshes.
1:56 It should flip from having the fulfilled button to being closed. All right, All that's left is to write these two database queries.
2:03 Let's do this one first. Let pycharm write the function for us. Return an Optional[Order] optional because it's probably there,
2:18 but it might not be there, So let's do that again. Everything is going to look like this. So borrow that. I'll just say order=context.session.query,
2:34 and we'll just do a filter where order.id== order_id and do it first. and then return order or maybe none, Or maybe in order. Either way,
2:48 it's going to fulfill that, and that'll be great. What do we got to do next? Well, we need to fulfill an order.
2:55 So with that pycharm, right that as well they want to use our context again. And you might think we could just re use this function.
3:09 But because this order is tied to this session and this session is getting closed, sadly, we've got to do this again. We'll see, if not order:
3:19 So if there's no order, we can't close, it can weigh, so will return false. This returns the bool here. There's no order.
3:28 We can't close it. That's great. If there is an order, it has already been fulfilled. And the way we're going to do that,
3:36 it's going to set the fulfilled date from none to a daytime. We're just going to return True, we can't fulfill it twice. It's already been fulfilled.
3:45 Given these two things are working here, we will say order.fulfilled_date=datetime.datetime.now(),
3:55 Now we've got to commit on success appears True perfect. That will just push those changes back, that does indicate we don't really need it up
4:06 here. It won't hurt anything, but there's nothing to do similarly up here, it gets slightly more efficient. Okay,
4:15 But this one, we definitely want this one to commit on success. All right, this is looking really,
4:20 really good. I think we might actually be able to fulfill it. Better view Method written. I didn't get the order.
4:27 Try to fulfill it, and then we'll just go back and reload the page after doing so. Let's try it. Here we are. We go down to our admin section.
4:37 There's two orders 1 and 2 which are both open. Let's go and click this Notice the URL on the bottom left, /admin/fulfill/1.
4:48 We'll click this bam Super fast fulfilled. Fantastic. Let's copy this URL And just try our our testing here, So copy, link location. Let's go to
5:01 not 2, But 2000 not found 404. 44 Okay, perfect. We do have our other one left here, button right, Let's go and fulfill this other 1,2 bam!
5:12 Super fast fulfilled. Done, so neat. So we've got our full admin backend entirely done. Let's go down here and add a comment to do rather send WhatsApp
5:28 message to notify customer. So, yes, we still got to send our WhatsApp message.
5:35 But the whole data juggling side of things on our admin back end wasn't that hard was it? And it's totally done, but yes, let's go ahead.
5:43 And later on, we're gonna do some WhatsApp programming to directly send that notification. Come to the shop. Your cake is ready.


Talk Python's Mastodon Michael Kennedy's Mastodon