{"id":15015634,"url":"https://github.com/alesyarabushka/mvc_kivy_python","last_synced_at":"2026-03-04T11:02:24.933Z","repository":{"id":113900709,"uuid":"471620873","full_name":"AlesyaRabushka/MVC_Kivy_Python","owner":"AlesyaRabushka","description":"an interface application written in Python Kivy using MVC","archived":false,"fork":false,"pushed_at":"2022-04-29T10:32:00.000Z","size":302,"stargazers_count":3,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T18:02:22.335Z","etag":null,"topics":["dom-parser","kivy","kivy-application","kivy-language","kivymd","mvc","mvc-pattern","parser","pyhton","python","python3","sax","sax-parser","xml"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlesyaRabushka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-19T07:15:46.000Z","updated_at":"2024-01-20T21:01:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"f82fecae-9bf1-4467-a9ec-bc4e75331030","html_url":"https://github.com/AlesyaRabushka/MVC_Kivy_Python","commit_stats":{"total_commits":103,"total_committers":5,"mean_commits":20.6,"dds":0.4077669902912622,"last_synced_commit":"d278cb1165bc91960ef38b22e8de04c3c22c0fd5"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlesyaRabushka%2FMVC_Kivy_Python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlesyaRabushka%2FMVC_Kivy_Python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlesyaRabushka%2FMVC_Kivy_Python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlesyaRabushka%2FMVC_Kivy_Python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlesyaRabushka","download_url":"https://codeload.github.com/AlesyaRabushka/MVC_Kivy_Python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250306638,"owners_count":21408926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dom-parser","kivy","kivy-application","kivy-language","kivymd","mvc","mvc-pattern","parser","pyhton","python","python3","sax","sax-parser","xml"],"created_at":"2024-09-24T19:47:43.362Z","updated_at":"2026-03-04T11:02:19.883Z","avatar_url":"https://github.com/AlesyaRabushka.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eVet Clinic\u003c/h1\u003e\n\n# Description\n**Vet Clinic** is a simple interface application that was inspired by registration database\n\nIt contains add, search and delete dialogs to communicate with the data\n\n## MVC pattern\nThe application has been created as an example of [MVC](https://developer.mozilla.org/en-US/docs/Glossary/MVC) pattern\nwith [Kivy](https://kivy.org/doc/stable/) and [KivyMD](https://kivymd.readthedocs.io/en/latest/) Python\n\nIt contains model, controller and view classes \n- **Model**:\n    Contains one class Model that is responsible for XML parsing \n- **Controller**:\n    Is one class that filters the input data and provides communication between Model and View classes\n- **View**:\n    Is presented by a set of classes each of which is responsible for the presentation of each dialog window\n    + *MainScreen* - the main screen of the App from which all other windows are called\n    + *AddPopup* - adds new pet records\n    + *SearchPopup* - searches for particular records by the given parameters\n    + *DeletePopup* - deletes particular records by the given parameters\n    + *EmailLetterPopup* - is called from DeletePopup and provides a choice of sending an email to pet owner (opens *default browser* on [mail.ru](https://e.mail.ru/drafts/) page), *but only if one record has been found* \n  ````\n  import webbrowser\n      def open_mail(self):\n        # opens default browser\n        webbrowser.open_new('https://e.mail.ru/drafts/')\n  ````\n    + *FoundPopup* - is opened from SearchPopup and is used for show the table with searched data records\n    + *HandlerPopup* - adds pet handler information (is called after correct registration in AddPopup)\n    + *InformationPopup* - shows more pet records information by clicking on checkbox on the main screen table\n    + *WarningPopup* - appears as a result of XML Parsing Error \n    + *HelperPopup* - has no methods, just shows the **Vet Clinic** contact info\n    \n## Interface\nThe whole interface of the App is placed in *[myscreen.kv](https://github.com/AlesyaRabushka/MVC_Kivy_Python/blob/main/View/myscreen.kv)* file and is written in special [Kivy Language](https://kivy.org/doc/stable/guide/lang.html)\n\nHere is the example of Main Screen\n\n\u003cimg src=\"https://github.com/AlesyaRabushka/MVC_Kivy_Python/blob/main/src/MainScreen.jpg\"\u003e\n\n## XML Parsing\n\n- In this App is used [Minimal DOM implementation](https://docs.python.org/3/library/xml.dom.minidom.html) for fill the XML file with information\n- [SAX Parser](https://docs.python.org/3/library/xml.sax.handler.html) is used for reading XML file, it is placed in [Model/sax_parser.py](https://github.com/AlesyaRabushka/MVC_Kivy_Python/blob/main/Model/sax_parser.py)\n\nThere are three XML files, to use one of them you should change the name of parsed file in [Model/myscreen.py](https://github.com/AlesyaRabushka/MVC_Kivy_Python/blob/main/Model/myscreen.py) where *'pet.xml'* - is the name of the file you want to use\n````\n# line 274\nfile = open('pet.xml', 'w')\n\n# line 330\nfile = open('pet.xml', 'w')\n\n# line 345\nparser.parse('pet.xml')\n````\nFirst two lines are parts of [Minimal DOM implementation](https://docs.python.org/3/library/xml.dom.minidom.html) parsing\nThe third one - [SAX Parser](https://docs.python.org/3/library/xml.sax.handler.html)\n\n## How to use\n\nTo use this App it is required to install **kivy** and **kivymd** libraries\n\nYou can do it in a way provided by [PyCharm](https://www.jetbrains.com/pycharm/) (File -\u003e Settings -\u003e Project: your_project_name -\u003e Python Interpreter)\nor on your own using Terminal\n````\npip install \"kivy[base] @https://github.com/kivy/kivy/archive/master.zip\"    \npip install https://github.com/kivymd/KivyMD/archive/master.zip\n````\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falesyarabushka%2Fmvc_kivy_python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falesyarabushka%2Fmvc_kivy_python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falesyarabushka%2Fmvc_kivy_python/lists"}