From 319bb74d6fb8b22244eb64d9b65d72e724a93a29 Mon Sep 17 00:00:00 2001 From: asteene Date: Thu, 16 Mar 2023 16:26:36 -0400 Subject: [PATCH 01/20] Alec group.md --- group.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 group.md diff --git a/group.md b/group.md new file mode 100644 index 00000000..81ea4820 --- /dev/null +++ b/group.md @@ -0,0 +1,21 @@ +# Group Members + +## Nicholas Matherly + +- **Github Username:** nymbee +- **Niner Net ID:** nmatherl + +## Jack Douglass + +- **Github Username:** JackDougl +- **Niner Net ID:** jdougl39 + +## Mansoor Mohamed Ali + +- **Github Username:** mmoham18 +- **Niner Net ID:** mansmohaali + +## Alec Steene + +- **Github Username:** asteene +- **Niner Net ID:** asteene From 71635570b865e42f2ef17c3dbd143e594b35de18 Mon Sep 17 00:00:00 2001 From: asteene Date: Thu, 23 Mar 2023 16:13:47 -0400 Subject: [PATCH 02/20] srs.md added to main branch --- srs.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 srs.md diff --git a/srs.md b/srs.md new file mode 100644 index 00000000..eb0c540a --- /dev/null +++ b/srs.md @@ -0,0 +1,79 @@ +# Software Requirements Specification Document + +This serves as a template for each projects' Software Requirements Specification (SRS) document. When filling this out, you will be required to create user stories, use cases, requirements, and a glossary of terms relevant to your project. Each group member must contribute to every section, so it is crucial that your group's GitHub repository shows a commit history that reflects the work of each group member. It is highly recommended that you create separate branches for each member, but since this is one single document, you will need to manually merge the branches together. It is also advisable to have multiple working versions of this document (named separately) so that one person can compile the final SRS document from the multiple working versions. Ultimately, how you go about managing this is up to you, but consistent formatting, clear commit messages, and a thorough commit history with contributions from each group member are required. + +Fill the document out following the guidelines listed in each section. Maintain [proper Markdown syntax](https://www.markdownguide.org/basic-syntax/) and be sure that your group has a `main` branch with this document and the entire [template repository codebase](https://github.com/david-gary/onlineStoreTemplate) either forked or downloaded and copied into your group's repository. If you have arranged to use a different codebase as a template, you do not need to have the original template included, but a `main` branch is still required. + +## Group Members + +* [Name](mailto:email@uncc.edu) +* [Name](mmailto:email@uncc.edu) +* [Name](mmailto:email@uncc.edu) +* [Name](mmailto:email@uncc.edu) + +## Revisions + +When a change is made to the document, a new revision should be created. The revision should be added to the table below with all information filled out. + +| Version | Date | Description | Author | Reviewed By | +| --- | --- | --- | --- | --- | +| 1.0 | 03/22/23 | Initial draft | [David Gary](mailto:dgary9@uncc.edu) | [David Gary](mailto:dgary@uncc.edu) | + +## Table of Contents + +1. [Introduction](#introduction) +2. [Requirements](#requirements) +3. [Constraints](#constraints) +4. [Use Cases](#use-cases) +5. [User Stories](#user-stories) +6. [Glossary](#glossary) + +## Introduction + +In this section, you should give a brief overview of what your project will be. Describe the software system you are building and what problems it solves. You should also give a short description of the stakeholders (users of the system) and what their needs are. There is no set formatting requirement, but you should maintain a consistent structure across future sections. Not all members must contribute to this section. + +## Requirements + +Each group member must supply at least three functional requirements for the project. Each requirement should be written in the following format: + +* **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. Do not replace the word `Description` with the actual description. Put the description in the space where these instructions are written. Maintain that practice for all future sections. + * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. + * **Priority:** The priority of the requirement. This should be a number between 1 and 5, with 1 being the highest priority and 5 being the lowest priority. + * **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. + * **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. +* **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. + * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. + * **Priority:** The priority of the requirement. This should be a number between 1 and 5, with 1 being the highest priority and 5 being the lowest priority. + * **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. + * **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. + +## Constraints + +In this section, you should list any constraints that you have for the project. Each group member must supply at least two constraints. These can be constraints on the project itself, the software system, or the stakeholders. Constraints can be anything that limits the scope of the project. For example, that this project's template code is written using Flask and Python constitutes a constraint on the backend of the project. Constraints can also be things like the required timeline of the project. Be creative. + +## Use Cases + +In this section, you should list use cases for the project. Use cases are a thorough description of how the system will be used. Each group member must supply at least two use cases. Each use case should be written in the following format: + +* **ID:** A unique identifier for the use case. This should be a number that is unique across the entire document (something like UC-1, UC-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Description:** A description of the use case that gives the user a high-level overview of how the system is interacted with. + * **Actors:** A list of the actors that are involved in the use case. Only include the actors that are directly involved. Actors are the people or things that interact with the system. For example, when ordering at a fast food restaurant, one might have the following actors: the customer, the cashier, and the cook. But only the customer and the cashier are directly involved in the use case of ordering food. The cook is not directly involved in the use case of ordering food. + * **Preconditions:** A list of the preconditions for the use case. This should be a list of the preconditions for the use case, which are the conditions that must be met before the use case can be executed. Continuing with the restaurant example, the customer must have money in their wallet and the cashier must be logged in to the system before the use case of ordering food can be executed. + * **Postconditions:** A list of the postconditions for the use case. This should be a list of the postconditions for the use case, which are the conditions that must be met after the use case has been executed. Continuing with the restaurant example, the customer must have their food and the cashier must have the customer's money after the use case of ordering food has been executed. + +## User Stories + +In this section, you should list user stories for the project. User stories are a short description of how a user will be interacting with the system. Each group member must supply at least two user stories. Each user story should be written in the following format: + +* **ID:** A unique identifier for the user story. This should be a number that is unique across the entire document (something like US-1, US-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Type of User:** The type of user that the user story is for. This should be a single word that describes the type of user. For example, a user story for a customer might be `Customer` and a user story for an administrator might be `Admin`. + * **Description:** A description of the user story that gives a narrative from that user's perspective. This can be any length, but it must paint the picture of what the user wants to do, how they intend to do it, why they want to, and what they expect to happen. + +## Glossary + +In this section, you should list any terms that are used in the document that may not be immediately obvious to a naive reader. Each group member must supply at least one term. Each term should be written in the following format: + +* **Term:** The term that is being defined. This should be a single word or phrase that is being defined. + * **Definition:** A definition of the term. This should be a short description of the term that is being defined. This should be a single sentence that describes the term. From 14200b72621bf3b03d45b4fd906e6e0d0320f305 Mon Sep 17 00:00:00 2001 From: asteene Date: Thu, 23 Mar 2023 16:18:18 -0400 Subject: [PATCH 03/20] srs.md added --- authentication/passwords.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/authentication/passwords.txt b/authentication/passwords.txt index 3d93be76..6d7b8cb5 100644 --- a/authentication/passwords.txt +++ b/authentication/passwords.txt @@ -1,4 +1,5 @@ aturing:0d911297a1e34f4fcce78537f9aaa66a:b93727798b520dc10d145b53909c061f082ff14cd5f8cb4ab24c3b71bfa57d7e12e1296029be74c06a0d91ba32756f9fc978047fbe7232be67f94dfc1de9ced9 dritchie:e11d3b1a66b1ad362223c30b78138519:67aff785bd17ac24448d491926ff7aadd8fa75e51a2f7a9bfc31889bad0adcd2989061a27ccd9eff9e5e31f2bc14b5c193727e116dc8dc48259acb3919171cd4 llamport:89d0e5fe8d06ec113839c8f319d7033e:9171d14954eeda4e70777c23d98e349818125cdaeb884ff97ebf8cc0a9c7778f54ce394256588148132a03ebea891e44077c659e6c0132fa87a8cf77e436ae11 -bliskov:e71dda285effa69e1c29ac810fe7a986:1e4b9ae956cad1385cfa6fffd8323dd16c3fe18c54e6447e49bddef2138d042e84e1505a541c6ef19a5026e684b2559efd366145870a0a8d4d4173c0877f6cd2 \ No newline at end of file +bliskov:e71dda285effa69e1c29ac810fe7a986:1e4b9ae956cad1385cfa6fffd8323dd16c3fe18c54e6447e49bddef2138d042e84e1505a541c6ef19a5026e684b2559efd366145870a0a8d4d4173c0877f6cd2 +asteene:95dbb2bc2b4e761c53c9c71e64c94a59:dba160be834504fe81be71efc8fb9f385538c04f0e08847eb8d2ec69984272303f1e960f4d6c59a09e2e0425c507547074b44641f1b04af86e7e96340c02dcb6 \ No newline at end of file From 8077feb9eebf61f1269fe8fad9700fdae91aff90 Mon Sep 17 00:00:00 2001 From: asteene Date: Thu, 23 Mar 2023 16:22:42 -0400 Subject: [PATCH 04/20] srs.md updated with Alec information --- srs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srs.md b/srs.md index eb0c540a..29190446 100644 --- a/srs.md +++ b/srs.md @@ -6,7 +6,7 @@ Fill the document out following the guidelines listed in each section. Maintain ## Group Members -* [Name](mailto:email@uncc.edu) +* [Alec](asteene@uncc.edu) * [Name](mmailto:email@uncc.edu) * [Name](mmailto:email@uncc.edu) * [Name](mmailto:email@uncc.edu) From f46b9614ab96ec795c7c102b022b6cf347545e95 Mon Sep 17 00:00:00 2001 From: asteene Date: Thu, 23 Mar 2023 16:30:43 -0400 Subject: [PATCH 05/20] Update srs.md with alec mailto fixed --- srs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srs.md b/srs.md index 29190446..81f15efd 100644 --- a/srs.md +++ b/srs.md @@ -6,7 +6,7 @@ Fill the document out following the guidelines listed in each section. Maintain ## Group Members -* [Alec](asteene@uncc.edu) +* [Alec](mmailto:asteene@uncc.edu) * [Name](mmailto:email@uncc.edu) * [Name](mmailto:email@uncc.edu) * [Name](mmailto:email@uncc.edu) From 86df67150e9357d0b5a0d8b69b86227bfa64ab90 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 23 Mar 2023 16:42:00 -0400 Subject: [PATCH 06/20] added my name --- srs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srs.md b/srs.md index 81f15efd..34431c79 100644 --- a/srs.md +++ b/srs.md @@ -7,7 +7,7 @@ Fill the document out following the guidelines listed in each section. Maintain ## Group Members * [Alec](mmailto:asteene@uncc.edu) -* [Name](mmailto:email@uncc.edu) +* [Name](mmailto:jdougl39@uncc.edu) * [Name](mmailto:email@uncc.edu) * [Name](mmailto:email@uncc.edu) From 4025e6bcb207064fb6b55112a29e5fe2bde32432 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 23 Mar 2023 16:42:27 -0400 Subject: [PATCH 07/20] added my name --- srs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srs.md b/srs.md index 34431c79..bdbb2718 100644 --- a/srs.md +++ b/srs.md @@ -7,7 +7,7 @@ Fill the document out following the guidelines listed in each section. Maintain ## Group Members * [Alec](mmailto:asteene@uncc.edu) -* [Name](mmailto:jdougl39@uncc.edu) +* [Jack](mmailto:jdougl39@uncc.edu) * [Name](mmailto:email@uncc.edu) * [Name](mmailto:email@uncc.edu) From d95b299e3160b1fd950a3434d52799e47de05807 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 30 Mar 2023 16:43:39 -0400 Subject: [PATCH 08/20] added the first 2 requirements --- srs.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/srs.md b/srs.md index bdbb2718..c722e9a5 100644 --- a/srs.md +++ b/srs.md @@ -36,6 +36,20 @@ In this section, you should give a brief overview of what your project will be. Each group member must supply at least three functional requirements for the project. Each requirement should be written in the following format: +REQ-1: the user should be able to create orders. + description: the user should be able to put multiple food items into an order, the the order gets created when the user is finished adding items + type: functional + priority: 1 + rationale: the user needs to be able to create orders in order for the kitchen to complete them + testing: we could test this by showing the contents of the completed order once the order is completed +REQ-2: the orders should get stored in a database + description: once the orders are completed, they should get stored in a database so they can get acessed lated when needed + type: functional + priority: 1 + rationale: the kitchen should be able to access the orders so they can fulfill them + testing: we could show a list of completed orders whenever a new order is completed + + * **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. Do not replace the word `Description` with the actual description. Put the description in the space where these instructions are written. Maintain that practice for all future sections. * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. From 3dc35a6042cbbfe9eb4666057da7c63efe92a295 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 30 Mar 2023 16:50:18 -0400 Subject: [PATCH 09/20] added the 3rd requirement --- srs.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/srs.md b/srs.md index c722e9a5..1e3e34ef 100644 --- a/srs.md +++ b/srs.md @@ -48,6 +48,12 @@ REQ-2: the orders should get stored in a database priority: 1 rationale: the kitchen should be able to access the orders so they can fulfill them testing: we could show a list of completed orders whenever a new order is completed +REQ-3: be able to make changes to completed orders + description: once the orders are completed, a user should be able to change the order in case a mistake is made + type: functional + priority: 2 + rationale: in case a customer changes their mind, or a user makes a mistake, the completed orders need to be changable + testing: we could create an order, then change it to see if the corresponding order on the order list is changed. * **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). From 73ed40b2dae8ef6b25333c6ec3d7d9f34b06bee6 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 30 Mar 2023 16:58:50 -0400 Subject: [PATCH 10/20] added first two constraints --- srs.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/srs.md b/srs.md index 1e3e34ef..5fb81bbe 100644 --- a/srs.md +++ b/srs.md @@ -72,6 +72,8 @@ REQ-3: be able to make changes to completed orders ## Constraints In this section, you should list any constraints that you have for the project. Each group member must supply at least two constraints. These can be constraints on the project itself, the software system, or the stakeholders. Constraints can be anything that limits the scope of the project. For example, that this project's template code is written using Flask and Python constitutes a constraint on the backend of the project. Constraints can also be things like the required timeline of the project. Be creative. +CONST-1: user should only be able to create orders if they have a server account +CONST-2: only users with proper permissions should be able to view sales and user data ## Use Cases From 22be24cd170b59f65e080a5df6b66698b687579b Mon Sep 17 00:00:00 2001 From: Nicholas Matherly Date: Thu, 30 Mar 2023 17:10:19 -0400 Subject: [PATCH 11/20] adding name --- srs.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/srs.md b/srs.md index bdbb2718..8a80ef5e 100644 --- a/srs.md +++ b/srs.md @@ -8,7 +8,7 @@ Fill the document out following the guidelines listed in each section. Maintain * [Alec](mmailto:asteene@uncc.edu) * [Jack](mmailto:jdougl39@uncc.edu) -* [Name](mmailto:email@uncc.edu) +* [Nick](mmailto:nmatherl@uncc.edu) * [Name](mmailto:email@uncc.edu) ## Revisions @@ -21,12 +21,16 @@ When a change is made to the document, a new revision should be created. The rev ## Table of Contents -1. [Introduction](#introduction) -2. [Requirements](#requirements) -3. [Constraints](#constraints) -4. [Use Cases](#use-cases) -5. [User Stories](#user-stories) -6. [Glossary](#glossary) +- [Software Requirements Specification Document](#software-requirements-specification-document) + - [Group Members](#group-members) + - [Revisions](#revisions) + - [Table of Contents](#table-of-contents) + - [Introduction](#introduction) + - [Requirements](#requirements) + - [Constraints](#constraints) + - [Use Cases](#use-cases) + - [User Stories](#user-stories) + - [Glossary](#glossary) ## Introduction From 3ddb681d3aef476f402e2636c8e1646e675010d5 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 30 Mar 2023 17:16:56 -0400 Subject: [PATCH 12/20] added the first two use cases --- srs.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/srs.md b/srs.md index 5fb81bbe..9c0ddae4 100644 --- a/srs.md +++ b/srs.md @@ -79,6 +79,17 @@ CONST-2: only users with proper permissions should be able to view sales and use In this section, you should list use cases for the project. Use cases are a thorough description of how the system will be used. Each group member must supply at least two use cases. Each use case should be written in the following format: +UC-1: create and index orders for completion + description: the user will click on the food that will be added to the order, and then click complete order when the order is completed, it will then go back to the main screen where there is a create order button for each table, and a list of all current orders on the side + actors: servers, who will make the orders, and chefs, who will prepare the orders from the list + preconditions: code needs to have a button for each table, a way to create an order, and a list to the side of the tables with the orders on it. + postconditions: order must be listed on the side of the tables part of the software +UC-2: create sales data for the owner to look at + description: the owner of the store will be able to look at sales data for the day, with a number of each item sold + actors: the owner of the store + preconditions: the number of each item sold during the day will need to be tracked and put into a database + postconditions: the database will be printed onto a page that only the manager can access + * **ID:** A unique identifier for the use case. This should be a number that is unique across the entire document (something like UC-1, UC-2, etc. but be sure to replace the word `ID` with the unique identifier). * **Description:** A description of the use case that gives the user a high-level overview of how the system is interacted with. * **Actors:** A list of the actors that are involved in the use case. Only include the actors that are directly involved. Actors are the people or things that interact with the system. For example, when ordering at a fast food restaurant, one might have the following actors: the customer, the cashier, and the cook. But only the customer and the cashier are directly involved in the use case of ordering food. The cook is not directly involved in the use case of ordering food. From 398b0283b51337aa1f8af5633de0d11e09747fb0 Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 30 Mar 2023 18:31:42 -0400 Subject: [PATCH 13/20] added the first two user stories --- srs.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/srs.md b/srs.md index 9c0ddae4..a3b18f76 100644 --- a/srs.md +++ b/srs.md @@ -100,6 +100,13 @@ UC-2: create sales data for the owner to look at In this section, you should list user stories for the project. User stories are a short description of how a user will be interacting with the system. Each group member must supply at least two user stories. Each user story should be written in the following format: +US-1: + type of user: server + description: the server will click on the table that they are currently serving, and fill out the order that the customer wants, then clicks complete order +US-2: + type of user: manager + description: the manager will log on to his admin account to make changes to orders, he can also access the sales and customer data, he can use this information to pay taxes and see what items are the most popular. + * **ID:** A unique identifier for the user story. This should be a number that is unique across the entire document (something like US-1, US-2, etc. but be sure to replace the word `ID` with the unique identifier). * **Type of User:** The type of user that the user story is for. This should be a single word that describes the type of user. For example, a user story for a customer might be `Customer` and a user story for an administrator might be `Admin`. * **Description:** A description of the user story that gives a narrative from that user's perspective. This can be any length, but it must paint the picture of what the user wants to do, how they intend to do it, why they want to, and what they expect to happen. From 3ca405ef51e1b12b226afc778605aa8429828b0c Mon Sep 17 00:00:00 2001 From: mansmohaali Date: Tue, 4 Apr 2023 14:22:16 -0400 Subject: [PATCH 14/20] first --- srs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srs.md b/srs.md index 75ff2764..4466081a 100644 --- a/srs.md +++ b/srs.md @@ -9,7 +9,7 @@ Fill the document out following the guidelines listed in each section. Maintain * [Alec](mmailto:asteene@uncc.edu) * [Jack](mmailto:jdougl39@uncc.edu) * [Nick](mmailto:nmatherl@uncc.edu) -* [Name](mmailto:email@uncc.edu) +* [Mansoor](mmailto:mmoham18@uncc.edu) ## Revisions From f55ec8c5a4c33f827786ac4e52f08e448325813a Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Tue, 4 Apr 2023 17:01:03 -0400 Subject: [PATCH 15/20] added diagrams.md --- diagrams.md | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 diagrams.md diff --git a/diagrams.md b/diagrams.md new file mode 100644 index 00000000..a7bb2df7 --- /dev/null +++ b/diagrams.md @@ -0,0 +1,138 @@ +# Project 2: Design + +## Introduction + +In this phase, you will be mapping out your project and creating easily understandable diagrams that will help you and your team know your codebase inside and out. This also makes it much easier to communicate the flow of your application to less technical audiences or anyone who is new to your project. We will be using `pyreverse` and `plantuml` to help us create, update, and visualize our diagrams. + +This activity will require you to generate Class, Package, Use Case, and Sequence diagrams for your project. If you are unfamiliar with these diagrams, you can find an in-depth explanation of each diagram type [here](https://www.uml-diagrams.org/) or reference [this article](https://nulab.com/learn/software-development/uml-diagrams-guide/). + +## Task 1: Installations + +- Use `pip` to install the following packages: + - `pylint==2.17.1` + - `plantuml==0.3.0` +- Add both of these packages to your `requirements.txt` file, including the version numbers. Follow the format of the `flask` package in the file. +- Install `Graphviz` on your machine. You can find download instructions for your operating system [here](https://graphviz.org/download/). + +## Task 2: Initial Structure Diagrams + +- Each group member will create diagrams for at least one of the following subdirectories/files of your project: + - `authentication`: requires a package diagram + - `core`: requires both a package diagram and a class diagram + - `database`: requires both a package diagram and a class diagram + - `testing`: requires a package diagram + +All of the above diagrams must be generated, so split this work evenly and push and pull code often. To generate a class diagram for a subdirectory or file, you must first generate the `plantuml` files using `pyreverse`. Then, you must use `plantuml` to generate the diagram from the `plantuml` file. Here's an example of how to do this for the package diagram in the `testing` subdirectory. + +```bash +pyreverse --output puml --colorized -A --output-directory testing testin # generates testing/package.puml +python3.10 -m plantuml testing/package.puml # generates testing/package.png +``` + +Since `testing` has no classes, we do not need a class diagram, but if we did, we would change the `testing/package.puml` to `testing/classes.puml` in the last command. + +- Delete the `.puml` files that do not have a corresponding `.png` file. For example, since `testing` has no classes, we would delete `testing/classes.puml`. +- For each subdirectory, create copies of the `.puml` and `.png` files with naming schemes that include `_initial` in the name. + - For example, `testing/package.puml` would have a copy called `testing/package_initial.puml` and `testing/package.png` would have a copy called `testing/package_initial.png`. + +## Task 3: Update Structure Diagrams + +- Begin planning the implentations necessary to fulfill requirements listed in your `SRS.md` file. +- Go to the corresponding subdirectory, and update the `.puml` file to reflect the changes you have planned. + - For example, by implementing a method called `delete_cart` in the `UserSession` class from `core`, my `core/classes.puml` file would look like the one shown below because I added a line to the `UserSession` class that says `delete_cart(id: str) -> None`. + - [PlantUML class diagram documentation](https://plantuml.com/class-diagram) +- Be sure to regenerate the `.png` file for each subdirectory after you update the corresponding `.puml` file. + +```plantuml +@startuml classes +set namespaceSeparator none +class "Sessions" as store.core.session.Sessions #aliceblue { + sessions : dict + add_new_session(username: str, db: Database) -> None + get_all_sessions() -> dict + get_session(username: str) -> UserSession + remove_session(username: str) -> None +} +class "UserSession" as store.core.session.UserSession #aliceblue { + cart : dict + date : datetime, NoneType + db + total_cost : int + username : str + add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None + empty_cart() -> dict + is_item_in_cart(id: str) -> bool + remove_item(id: str) -> None + delete_cart(id: str) -> None + submit_cart() -> None + update_item_quantity(id: str, change_to_quantity: int) -> None + update_total_cost() -> None +} +@enduml +``` + +## Task 4: Use Case Diagrams + +- Create a `diagrams` subdirectory from the project root directory, and navigate to it. +- Create a `cases` subdirectory from the `diagrams` subdirectory and navigate to it. +- For each user type (actor) mentioned in your `SRS.md` file, create an appropriately named `.puml` file showcasing the use cases for that actor. + - For example, if I had an actor called `Customer`, I might create a file called `customer.puml` that looks like the template below. + - [PlantUML use case diagram documentation](https://plantuml.com/use-case-diagram) +- Generate a `.png` file from the `.puml` file. + - Remember, this will look something like: `python3.10 -m plantuml customer.puml` + +```plantuml +@startuml customer +left to right direction +actor Customer +rectangle "System" as system { + (Login) + (Register) + (View Cart) + (View Items) + (View Orders) + (View Profile) + (Logout) +} +Customer --> (Login) +Customer --> (Register) +Customer --> (View Cart) +Customer --> (View Items) +Customer --> (View Orders) +Customer --> (View Profile) +Customer --> (Logout) +@enduml +``` + +## Task 5: Sequence Diagrams + +- Create a `sequences` subdirectory from the `diagrams` subdirectory and navigate to it. +- For each of the use cases shown in your use case diagrams, create an appropriately named `.puml` file showcasing the sequence of events for that use case and generate its corresponding `.png` file. + - For example, if I had a use case called `Login`, I might create a file called `login.puml` that looks like the template below. + - [PlantUML sequence diagram documentation](https://plantuml.com/sequence-diagram) + +```plantuml +@startuml login +actor Customer +boundary "System" as system +control "Sessions" as sessions +control "Authentication" as auth +Customer -> system: Login +activate system +system -> auth: login_pipeline(username, password) +activate auth +auth --> system: True +deactivate auth +system -> sessions: add_new_session(username, db) +activate sessions +sessions --> system: None +deactivate sessions +system -> system: redirect to home page +deactivate system +@enduml +``` + +## Submission Details + +- On Canvas, submit the following: + - the URL to your group's repository From accd2df6401885a6a2540ed13a6d2fa6a2cd83cb Mon Sep 17 00:00:00 2001 From: Jack Douglass Date: Thu, 6 Apr 2023 15:59:01 -0400 Subject: [PATCH 16/20] updated requirements.txt --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index c39f059d..63c9afdb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ -flask==2.2.2 \ No newline at end of file +flask==2.2.2 +pylint==2.17.1 +plantuml==0.3.0 \ No newline at end of file From f5cd3d5e6eadf83714b0d05e41375d290f3ef98c Mon Sep 17 00:00:00 2001 From: mansmohaali Date: Thu, 6 Apr 2023 16:23:39 -0400 Subject: [PATCH 17/20] delete my sign_up.html --- authentication/passwords.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/authentication/passwords.txt b/authentication/passwords.txt index 6d7b8cb5..db5b53de 100644 --- a/authentication/passwords.txt +++ b/authentication/passwords.txt @@ -2,4 +2,5 @@ aturing:0d911297a1e34f4fcce78537f9aaa66a:b93727798b520dc10d145b53909c061f082ff14 dritchie:e11d3b1a66b1ad362223c30b78138519:67aff785bd17ac24448d491926ff7aadd8fa75e51a2f7a9bfc31889bad0adcd2989061a27ccd9eff9e5e31f2bc14b5c193727e116dc8dc48259acb3919171cd4 llamport:89d0e5fe8d06ec113839c8f319d7033e:9171d14954eeda4e70777c23d98e349818125cdaeb884ff97ebf8cc0a9c7778f54ce394256588148132a03ebea891e44077c659e6c0132fa87a8cf77e436ae11 bliskov:e71dda285effa69e1c29ac810fe7a986:1e4b9ae956cad1385cfa6fffd8323dd16c3fe18c54e6447e49bddef2138d042e84e1505a541c6ef19a5026e684b2559efd366145870a0a8d4d4173c0877f6cd2 -asteene:95dbb2bc2b4e761c53c9c71e64c94a59:dba160be834504fe81be71efc8fb9f385538c04f0e08847eb8d2ec69984272303f1e960f4d6c59a09e2e0425c507547074b44641f1b04af86e7e96340c02dcb6 \ No newline at end of file +asteene:95dbb2bc2b4e761c53c9c71e64c94a59:dba160be834504fe81be71efc8fb9f385538c04f0e08847eb8d2ec69984272303f1e960f4d6c59a09e2e0425c507547074b44641f1b04af86e7e96340c02dcb6 +mansmohaali:3f3afcc3eef86052d7136609f9abe828:376d73187de23a68e281d25e69c87a1b0071ed66613f8a487d713178812a905927fc74e38a36376621a7e1540ab8b92d34e8728286fae557ee6a05652113f6e7 \ No newline at end of file From fb2792ae65406d1586e00a10b2dc4e4fd14cffd5 Mon Sep 17 00:00:00 2001 From: mansmohaali Date: Thu, 6 Apr 2023 16:57:23 -0400 Subject: [PATCH 18/20] finish diagram task2 --- core/classes.puml | 24 ++++++++++++++++++ core/packages.png | Bin 0 -> 3926 bytes core/packages.puml | 10 ++++++++ database/classes.puml | 54 +++++++++++++++++++++++++++++++++++++++++ database/packages.png | Bin 0 -> 2273 bytes database/packages.puml | 7 ++++++ testing/classes.puml | 3 +++ testing/packages.png | Bin 0 -> 3845 bytes testing/packages.puml | 11 +++++++++ 9 files changed, 109 insertions(+) create mode 100644 core/classes.puml create mode 100644 core/packages.png create mode 100644 core/packages.puml create mode 100644 database/classes.puml create mode 100644 database/packages.png create mode 100644 database/packages.puml create mode 100644 testing/classes.puml create mode 100644 testing/packages.png create mode 100644 testing/packages.puml diff --git a/core/classes.puml b/core/classes.puml new file mode 100644 index 00000000..9c62d774 --- /dev/null +++ b/core/classes.puml @@ -0,0 +1,24 @@ +@startuml classes +set namespaceSeparator none +class "Sessions" as core.session.Sessions #aliceblue { + sessions : dict + add_new_session(username: str, db: Database) -> None + get_all_sessions() -> dict + get_session(username: str) -> UserSession + remove_session(username: str) -> None +} +class "UserSession" as core.session.UserSession #aliceblue { + cart : dict + date : datetime, NoneType + db : Database + total_cost : int + username : str + add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None + empty_cart() -> dict + is_item_in_cart(id: str) -> bool + remove_item(id: str) -> None + submit_cart() -> None + update_item_quantity(id: str, change_to_quantity: int) -> None + update_total_cost() -> None +} +@enduml diff --git a/core/packages.png b/core/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..d68ad8e717bd69b71ddbdb9d674cd96d3c88c14c GIT binary patch literal 3926 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 literal 0 HcmV?d00001 diff --git a/core/packages.puml b/core/packages.puml new file mode 100644 index 00000000..9ffa5cec --- /dev/null +++ b/core/packages.puml @@ -0,0 +1,10 @@ +@startuml packages +set namespaceSeparator none +package "core" as core #aliceblue { +} +package "core.session" as core.session #aliceblue { +} +package "core.utils" as core.utils #aliceblue { +} +core.session --> core.utils +@enduml diff --git a/database/classes.puml b/database/classes.puml new file mode 100644 index 00000000..a90ae0b6 --- /dev/null +++ b/database/classes.puml @@ -0,0 +1,54 @@ +@startuml classes +set namespaceSeparator none +class "Database" as database.db.Database #aliceblue { + connection + cursor + database_path : str + get_all_item_ids() + get_all_user_information() + get_cost_by_sale_id(sale_id: int) + get_email_by_username(username: str) + get_first_name_by_username(username: str) + get_full_inventory() + get_full_sale_by_id(sale_id: int) + get_full_sales_information() + get_item_category_by_id(item_id: int) + get_item_id_by_sale_id(sale_id: int) + get_item_image_url_by_id(item_id: int) + get_item_info_by_id(item_id: int) + get_item_name_by_id(item_id: int) + get_item_price_by_id(item_id: int) + get_item_stock_by_id(item_id: int) + get_last_name_by_username(username: str) + get_password_hash_by_username(username: str) + get_quantity_by_sale_id(sale_id: int) + get_sale_date_by_sale_id(sale_id: int) + get_sales_by_cost_range(start_cost: float, end_cost: float) + get_sales_by_date_range(start_date: dt.date, end_date: dt.date) + get_sales_by_item_id(item_id: int) + get_sales_by_quantity_range(start_quantity: int, end_quantity: int) + get_sales_by_transaction_id(transaction_id: int) + get_sales_by_username(username: str) + get_transaction_id_by_sale_id(sale_id: int) + get_username_by_sale_id(sale_id: int) + insert_new_item(item_name: str, price: int, info: str) -> None + insert_new_sale(transaction_id: int, username: str, item_id: int, quantity: int, sale_date: dt.date, cost: float) + insert_user(username: str, password_hash: str, email: str, first_name: str, last_name: str) -> None + set_email(username: str, new_email: str) + set_first_name(username: str, new_first_name: str) + set_item_category(item_id: int, new_category: str) + set_item_image_url(item_id: int, new_image_url: str) + set_item_info(item_id: int, new_info: str) + set_item_name(item_id: int, new_name: str) + set_item_price(item_id: int, new_price: float) + set_item_stock(item_id: int, new_stock: int) + set_last_name(username: str, new_last_name: str) + set_password_hash(username: str, new_password_hash: str) + set_sale_cost(sale_id: int, discount: float, tax: float) + set_sale_date(sale_id: int, new_sale_date: dt.date) + set_sale_item_id(sale_id: int, new_item_id: int) + set_sale_quantity(sale_id: int, new_quantity: int) + set_sale_transaction_id(sale_id: int, new_transaction_id: int) + set_sale_username(sale_id: int, new_username: str) +} +@enduml diff --git a/database/packages.png b/database/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..32788095533992382e1b811449569191b26fea42 GIT binary patch literal 2273 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

qpb)p1P@d6}Z zq35kMg`eesV*Qy9F_;aP!iA z)MAID1|$Tm8(SdQULtcG>^sIF%*tU;q-L<__zOaUqo=#nQj%!=;WB)gHrX}#xJnsY z*OY$6pdK1$flM?9`|=YJ7r4ER3CJ?7(TKIiPqHUMQV>=p7Rb)X&bbN0tRS7I0N0nc z>$=pe<4g4-7`#gKAY{{bgyK5RZ;Bv?YAc7EeNQJH@RobpUZ9KLt54JQFV@~ z7s3*T4zrF#px<^jBeJpCz1aSr8!YPIo4nH5@zoKge)I4 z$(-rmrIG1c-Q+gI4CeXd1kVXZqyvK>0!}WAzR0&yX^O?%E1ztpWRA8hN`(URDl4HB z5{qHM9WdFaWHocqOGr7GW3NMM95#WrNj)f9f<2@>jioI!F1fSvj*i8fNymi^625-uBWY@`Rw_eVChy!N7}JT8^gi>)}xtE@t&4ASXeZ4Ic5R;K-+ z-B7#I&$7)p+nU&Oo{SF(r$p) z_k!%L@-HPaKl=r{l&Z#S8C4GwBV?*Eu3UbkrUGi`M!;&>fKs1!teEPr%6(tQEuO0t zE8-C5(bWePooY7V3w0FMpqd)@BRzJrMU5{a3Il1X7$dpt}x*H8<9Wd?69l74!y0@xkh*-+)kU?`G#@FHO`^ zTV4S!Kkh1YuX-j51EXexs9DW0C*uGBJ*m` zMw!Y|i>mHM6L;r;SHRMUZ+o|SwfnI5D(C6b0;-oU`*!*<<7B!`T<3{xixW9= zzvU9YaTLHrigr{SKc$=cY!ijh(|cHVF<~wAS7gUh3&_$OBxOaHbjF`fakSlHEQzQ; zU8?+Xk?q7Wc}}yGK)eKeu=_LLqTnS=&7O*+`u9#9k^t>4c*4ge&`VotU-aqNn6)qA z0-o=;=8|p(*RO(~NfV6g4v!jKe!)I`9Tz|7aHpR-Edli)BH z{eK|;8xh->JC<+wg5-wF`gU6`{f3tS?)k*q%g;mseKm=j69h5@e;VJGa$2uPX=!Qu z%ff5_`S1b+QeIs8^e59m$0Q4hNOb-?jezm9g234sfoQ3nLkStx8#XqOH%hK+4*%qY z3g_Ly!Z9B&cn)Vj(#sy^AKhhMre Q=20euzA5~Tu4B}{07%>*XaE2J literal 0 HcmV?d00001 diff --git a/testing/packages.puml b/testing/packages.puml new file mode 100644 index 00000000..6e3f7ce9 --- /dev/null +++ b/testing/packages.puml @@ -0,0 +1,11 @@ +@startuml packages +set namespaceSeparator none +package "testing" as testing #aliceblue { +} +package "testing.authTests" as testing.authTests #aliceblue { +} +package "testing.coreTests" as testing.coreTests #aliceblue { +} +package "testing.dbTests" as testing.dbTests #aliceblue { +} +@enduml From d8d03bd89fdc699da148710e4cfa38ef6aedcfcd Mon Sep 17 00:00:00 2001 From: mansmohaali Date: Thu, 6 Apr 2023 17:01:59 -0400 Subject: [PATCH 19/20] delete diagram task2 for database and testing --- database/classes.puml | 54 ----------------------------------------- database/packages.png | Bin 2273 -> 0 bytes database/packages.puml | 7 ------ testing/classes.puml | 3 --- testing/packages.png | Bin 3845 -> 0 bytes testing/packages.puml | 11 --------- 6 files changed, 75 deletions(-) delete mode 100644 database/classes.puml delete mode 100644 database/packages.png delete mode 100644 database/packages.puml delete mode 100644 testing/classes.puml delete mode 100644 testing/packages.png delete mode 100644 testing/packages.puml diff --git a/database/classes.puml b/database/classes.puml deleted file mode 100644 index a90ae0b6..00000000 --- a/database/classes.puml +++ /dev/null @@ -1,54 +0,0 @@ -@startuml classes -set namespaceSeparator none -class "Database" as database.db.Database #aliceblue { - connection - cursor - database_path : str - get_all_item_ids() - get_all_user_information() - get_cost_by_sale_id(sale_id: int) - get_email_by_username(username: str) - get_first_name_by_username(username: str) - get_full_inventory() - get_full_sale_by_id(sale_id: int) - get_full_sales_information() - get_item_category_by_id(item_id: int) - get_item_id_by_sale_id(sale_id: int) - get_item_image_url_by_id(item_id: int) - get_item_info_by_id(item_id: int) - get_item_name_by_id(item_id: int) - get_item_price_by_id(item_id: int) - get_item_stock_by_id(item_id: int) - get_last_name_by_username(username: str) - get_password_hash_by_username(username: str) - get_quantity_by_sale_id(sale_id: int) - get_sale_date_by_sale_id(sale_id: int) - get_sales_by_cost_range(start_cost: float, end_cost: float) - get_sales_by_date_range(start_date: dt.date, end_date: dt.date) - get_sales_by_item_id(item_id: int) - get_sales_by_quantity_range(start_quantity: int, end_quantity: int) - get_sales_by_transaction_id(transaction_id: int) - get_sales_by_username(username: str) - get_transaction_id_by_sale_id(sale_id: int) - get_username_by_sale_id(sale_id: int) - insert_new_item(item_name: str, price: int, info: str) -> None - insert_new_sale(transaction_id: int, username: str, item_id: int, quantity: int, sale_date: dt.date, cost: float) - insert_user(username: str, password_hash: str, email: str, first_name: str, last_name: str) -> None - set_email(username: str, new_email: str) - set_first_name(username: str, new_first_name: str) - set_item_category(item_id: int, new_category: str) - set_item_image_url(item_id: int, new_image_url: str) - set_item_info(item_id: int, new_info: str) - set_item_name(item_id: int, new_name: str) - set_item_price(item_id: int, new_price: float) - set_item_stock(item_id: int, new_stock: int) - set_last_name(username: str, new_last_name: str) - set_password_hash(username: str, new_password_hash: str) - set_sale_cost(sale_id: int, discount: float, tax: float) - set_sale_date(sale_id: int, new_sale_date: dt.date) - set_sale_item_id(sale_id: int, new_item_id: int) - set_sale_quantity(sale_id: int, new_quantity: int) - set_sale_transaction_id(sale_id: int, new_transaction_id: int) - set_sale_username(sale_id: int, new_username: str) -} -@enduml diff --git a/database/packages.png b/database/packages.png deleted file mode 100644 index 32788095533992382e1b811449569191b26fea42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2273 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

qpb)p1P@d6}Z zq35kMg`eesV*Qy9F_;aP!iA z)MAID1|$Tm8(SdQULtcG>^sIF%*tU;q-L<__zOaUqo=#nQj%!=;WB)gHrX}#xJnsY z*OY$6pdK1$flM?9`|=YJ7r4ER3CJ?7(TKIiPqHUMQV>=p7Rb)X&bbN0tRS7I0N0nc z>$=pe<4g4-7`#gKAY{{bgyK5RZ;Bv?YAc7EeNQJH@RobpUZ9KLt54JQFV@~ z7s3*T4zrF#px<^jBeJpCz1aSr8!YPIo4nH5@zoKge)I4 z$(-rmrIG1c-Q+gI4CeXd1kVXZqyvK>0!}WAzR0&yX^O?%E1ztpWRA8hN`(URDl4HB z5{qHM9WdFaWHocqOGr7GW3NMM95#WrNj)f9f<2@>jioI!F1fSvj*i8fNymi^625-uBWY@`Rw_eVChy!N7}JT8^gi>)}xtE@t&4ASXeZ4Ic5R;K-+ z-B7#I&$7)p+nU&Oo{SF(r$p) z_k!%L@-HPaKl=r{l&Z#S8C4GwBV?*Eu3UbkrUGi`M!;&>fKs1!teEPr%6(tQEuO0t zE8-C5(bWePooY7V3w0FMpqd)@BRzJrMU5{a3Il1X7$dpt}x*H8<9Wd?69l74!y0@xkh*-+)kU?`G#@FHO`^ zTV4S!Kkh1YuX-j51EXexs9DW0C*uGBJ*m` zMw!Y|i>mHM6L;r;SHRMUZ+o|SwfnI5D(C6b0;-oU`*!*<<7B!`T<3{xixW9= zzvU9YaTLHrigr{SKc$=cY!ijh(|cHVF<~wAS7gUh3&_$OBxOaHbjF`fakSlHEQzQ; zU8?+Xk?q7Wc}}yGK)eKeu=_LLqTnS=&7O*+`u9#9k^t>4c*4ge&`VotU-aqNn6)qA z0-o=;=8|p(*RO(~NfV6g4v!jKe!)I`9Tz|7aHpR-Edli)BH z{eK|;8xh->JC<+wg5-wF`gU6`{f3tS?)k*q%g;mseKm=j69h5@e;VJGa$2uPX=!Qu z%ff5_`S1b+QeIs8^e59m$0Q4hNOb-?jezm9g234sfoQ3nLkStx8#XqOH%hK+4*%qY z3g_Ly!Z9B&cn)Vj(#sy^AKhhMre Q=20euzA5~Tu4B}{07%>*XaE2J diff --git a/testing/packages.puml b/testing/packages.puml deleted file mode 100644 index 6e3f7ce9..00000000 --- a/testing/packages.puml +++ /dev/null @@ -1,11 +0,0 @@ -@startuml packages -set namespaceSeparator none -package "testing" as testing #aliceblue { -} -package "testing.authTests" as testing.authTests #aliceblue { -} -package "testing.coreTests" as testing.coreTests #aliceblue { -} -package "testing.dbTests" as testing.dbTests #aliceblue { -} -@enduml From e0a5aa6c92782addbd59993ce9eb1eea7121072e Mon Sep 17 00:00:00 2001 From: mansmohaali Date: Tue, 2 May 2023 11:40:35 -0400 Subject: [PATCH 20/20] p --- authentication/passwords.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/authentication/passwords.txt b/authentication/passwords.txt index db5b53de..35cb3951 100644 --- a/authentication/passwords.txt +++ b/authentication/passwords.txt @@ -3,4 +3,5 @@ dritchie:e11d3b1a66b1ad362223c30b78138519:67aff785bd17ac24448d491926ff7aadd8fa75 llamport:89d0e5fe8d06ec113839c8f319d7033e:9171d14954eeda4e70777c23d98e349818125cdaeb884ff97ebf8cc0a9c7778f54ce394256588148132a03ebea891e44077c659e6c0132fa87a8cf77e436ae11 bliskov:e71dda285effa69e1c29ac810fe7a986:1e4b9ae956cad1385cfa6fffd8323dd16c3fe18c54e6447e49bddef2138d042e84e1505a541c6ef19a5026e684b2559efd366145870a0a8d4d4173c0877f6cd2 asteene:95dbb2bc2b4e761c53c9c71e64c94a59:dba160be834504fe81be71efc8fb9f385538c04f0e08847eb8d2ec69984272303f1e960f4d6c59a09e2e0425c507547074b44641f1b04af86e7e96340c02dcb6 -mansmohaali:3f3afcc3eef86052d7136609f9abe828:376d73187de23a68e281d25e69c87a1b0071ed66613f8a487d713178812a905927fc74e38a36376621a7e1540ab8b92d34e8728286fae557ee6a05652113f6e7 \ No newline at end of file +mansmohaali:3f3afcc3eef86052d7136609f9abe828:376d73187de23a68e281d25e69c87a1b0071ed66613f8a487d713178812a905927fc74e38a36376621a7e1540ab8b92d34e8728286fae557ee6a05652113f6e7 +user:9be32a9c75f5fa6307194f34b36d5b03:7c294cf6c011c99460302290e34f3ff9bbd3ddb95339b803a5decd180238d1a56c246c7ce3d2a2344e40026576f8d6964cb4779dfe9182538bceac61beb5d807 \ No newline at end of file