#100DaysOfWeb in Python Transcripts
Chapter: Day 52: Anvil - Full Stack Web Apps
Lecture: Add doc form finale
0:00 It's great the we created this document but the experience wasn't super, like it didn't tell us the thing was created,
0:06 we put a bunch of code right into our form, things like that. So let's clean this up a little bit and let's begin by going over here
0:14 and creating a new module. I'll call this... I'll just call this utilities. Now over here we right code, this runs on the client-side
0:25 and it's going to do... This basically lets us put these methods wherever we need. So one the things we're going to need to do,
0:31 this will take a moment before it's obvious why, but we need to, when we're over here When we want to go home, we need the home form,
0:38 which we don't have access to, to basically run this code again, okay? How do we do that? Well what we can do is we can come over here
0:48 and say, import utilities We can go the the utilities and say, home_form = self so that we can always get back to it from within code over here.
1:01 So we'll have a home_form as None but of course it will be set soon the application starts. And let's just add a method, "Go home". How do we do that?
1:14 We say, home_form. Now it doesn't know what this is. We want to call this function here. Like that. That's all we got to do, super easy right?
1:30 We just wanted to call this function go here from wherever. So we need this import utilities over in our add_doc_form as well.
1:42 And let's go over here and we can just say, .go_home We've already created the document but let's take some of this code and make a little simpler.
1:50 Let's go over here and say, utilities.create. And let's pass that in there, okay? So we basically need to call this function
2:05 over in this utilities.create_doc, but there's a reason I want to do this. You'll see in just a second that it makes sense
2:10 to try to put these together. So it's find this. Remove that one simple call over here. Like that. And it's going to accomplish the same thing,
2:23 but we also would like to have one more function. refresh_data Now what I want to store is I want to store
2:35 the docs as a list and the categories as a list. And when we call this, I'd like to write that code that we had over here again.
2:50 Remember I said I didn't like this? Let's take this code and get rid of it and put it over here as well. So here we're going to go to the server
3:02 and we'll also do this for the documents. If you had a ton of documents that's not a good idea, but since we only have a few we'll go like this.
3:14 Okay, so we're going to set the categories and the documents and that means over here we can just go... We've got our list, let's say utilities
3:28 not categories. Now how do we know this is refreshed? Let's call it once when the app starts up and that's all we're going to do.
3:41 Alright so that should refresh the data and then any of the sub-forms will have access to the utilities dot categories or documents.
3:51 And here we'll call create_document and then we'll call go_home. And within create_document, final thing, the reason it's nice to have this here
3:57 is we can call refresh_data again and make sure that whenever the data is modified, we automatically get it updated
4:04 but otherwise, it just stays like it is. Let's go and test this, that it's still working. Apparently spelling is hard.
4:20 Alright, what happens when I click this? It's going to go to the utilities client-side module, call the create_document.
4:27 On the server it's going to create and insert the document, it'll come back and then it'll call Refresh so if for some reason the categories,
4:33 definitely the documents will have changed, we'll get those new ones. And then it's going to go to the home form, call go_home,
4:38 it should reload this and it will all work. Let's try it. Boom! On the server we created this new document, now we're home. We can add more of course.
4:49 I think it's about time to do the other ones where we can actually see the documents right?