{"id":23063661,"url":"https://github.com/sakuexe/backend_development_2023","last_synced_at":"2026-05-19T07:33:13.575Z","repository":{"id":169967874,"uuid":"613877308","full_name":"sakuexe/backend_development_2023","owner":"sakuexe","description":"Backend Web Development Course from HAMK Riihimäki in Fall of 2023","archived":false,"fork":false,"pushed_at":"2023-11-04T06:32:13.000Z","size":7894,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-06T01:36:13.913Z","etag":null,"topics":["backend","django","python","web"],"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/sakuexe.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":"2023-03-14T13:00:06.000Z","updated_at":"2023-05-27T06:44:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"b3a74728-15c7-493d-a55d-c137f031e1a6","html_url":"https://github.com/sakuexe/backend_development_2023","commit_stats":null,"previous_names":["sakuexe/backend_development_2023"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sakuexe/backend_development_2023","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakuexe%2Fbackend_development_2023","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakuexe%2Fbackend_development_2023/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakuexe%2Fbackend_development_2023/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakuexe%2Fbackend_development_2023/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sakuexe","download_url":"https://codeload.github.com/sakuexe/backend_development_2023/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakuexe%2Fbackend_development_2023/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547771,"owners_count":26004772,"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","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["backend","django","python","web"],"created_at":"2024-12-16T04:12:39.885Z","updated_at":"2025-10-06T01:36:14.207Z","avatar_url":"https://github.com/sakuexe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Backend Web Development - 2023**\n\n_By Saku Karttunen_\n\n### About\n\nThis repository includes exercises, assignments and notes from\nHAMK Riihimäki's \"Backend Web Development\" -course\n\n- Teacher and course organizer: **Petri Kuittinen**\n- Course duration: **13.3. - XX.4.2023**\n- Editors used: **Neovim**\n- Languages \u0026 Frameworks used: **Python \u0026 Django**\n\n## Assignments\n\nLorem ipsum dolor sit amet, qui minim labore adipisicing minim\nsint cillum sint consectetur cupidatat.\n\n1. **Python dictionary and JSON**\n\nMake a simple dictionary application, which can save the dictionary \nin JSON format. The user can search words from the dictionary. \nIf the word is found, it displays the translation. if the word is not found, \nthe program displays \"Word not found. Please input a definition\". \nIf user submits a definition, it adds a new word to this dictionary. \nThere should be a way to exit the application e.g. input an empty string.\n\nWhen the application is started it checks if the file containing the dictionary \nexists and will try to load the dictionary. If loading fails, it starts with \nan inbuilt default dictionary, which might contain just few words. \nThe application must save the dictionary, including newly added words, \nwhen the user exits the application. The program should behave well \nand display according error message even when errors occur e.g. it is not possible \nto save the dictionary or load it.\n\n2. **URL fetcher and parsing HTML for \"dangerous\" words**\n\nMake a program, which will ask the user for a valid URL to download. \nThen the program tries to load the contents of the URL into memory.\n\nIt if contents look like a HTML file with utf-8 encoding, it tries to \nHTML parse it and check if the content has some dangerous words. \nThe content is the content, which is not part of HTML tags, meaning \nthe text part of the web page. The dangerous words are: \"bomb\", \"kill\", \n\"murder\", \"terror\", \"terrorist\", \"terrorists\" and \"terrorism\". \nNote that these should be treated as separate words. In other words \"bomba\", \n\"killer\" or \"antiterrorism\" are not dangerous words. The check should ignore \nthe case e.g. \"bomb\", \"BoMb\" or \"BOMB\" are all dangerous words.\n\nThe program should display the amount of dangerous words found from the web page. \nIf the contents don't use utf-8 encoding, e.g. it is binary file, like image, \nit can ignore this part. You do not need to actually validate the HTML\n\nFinally the program asks the user for a path where to save the contents. \nThis should allow the user to save both binary files (audio, images, video) \nand text files (HMTL, CSS, JavaScript) to the local file system.\n\nThe program should not crash, but display according error mistakes if \nsomething goes wrong e.g. the URL is malformed or cannot be loaded or \nthe file cannot be saved.\n\n3. **Complete the Django Tutorial and migrating to MySQL**\n\nComplete the entire official Django tutorial (parts 1-7). There is a series of videos,\nwhich will go through all of these found among the quiz questions.\n\nBesides the official Django Tutorial, you must copy data from Sqlite3 database and migrate\nthings to MySQL database. You need to install MySQL and required software.\n\nBy default, Django uses SQLite3 as the database engine. Take a backup of your data to JSON format. \nTake a complete backup to a file named all.json and partial backup, which only has the polls \napplication data into a file called polls.json. Change the database to use MySQL. \nMigrate the polls data from the SQLite database to MySQL. And you probably need to \nmake a new superuser password when you create a new database with MySQL. \nLoading all data to MySQL will probably fail because of duplicate keys, \nbut copying just polls data should work.\n\n## Useful links\n\n- [Python Standard Library Docs](https://docs.python.org/3/library/)\n- [Microsoft Azure Portal](https://portal.azure.com/)\n- [WinSCP](https://winscp.net/eng/index.php)\n- [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakuexe%2Fbackend_development_2023","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsakuexe%2Fbackend_development_2023","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakuexe%2Fbackend_development_2023/lists"}