From a1c10e84f719aa8c146b58b99714574d95a9d3b3 Mon Sep 17 00:00:00 2001 From: mrschnei <mrschnei@umich.edu> Date: Fri, 31 Jul 2020 14:34:17 -0400 Subject: [PATCH] Added UI for blood and food pages. Updated UI for home and mask pages. Blood and Food pages now show database of drives. Create accounts limit length of input --- servicePoints/templates/blood.html | 156 ++++++++++++++----------- servicePoints/templates/create.html | 8 +- servicePoints/templates/createOrg.html | 10 +- servicePoints/templates/food.html | 147 +++++++++++++---------- servicePoints/templates/index.html | 22 ++-- servicePoints/templates/mask.html | 106 +++-------------- servicePoints/views/accounts.py | 24 +++- sql/schema.sql | 3 +- var/servicePoints.sqlite3 | Bin 45056 -> 45056 bytes 9 files changed, 240 insertions(+), 236 deletions(-) diff --git a/servicePoints/templates/blood.html b/servicePoints/templates/blood.html index 56597ed..35ff18d 100644 --- a/servicePoints/templates/blood.html +++ b/servicePoints/templates/blood.html @@ -1,93 +1,117 @@ <!DOCTYPE html> <html> <head> - <link rel="stylesheet" type="text/css" href="/css/style.css"> - <title>Blood Drives</title> - - <style> - .topnav { - background-color: #333; - position: fixed; - top: 0; - width: 100%; - } + <!-- Required meta tags --> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> - .topnav button:hover { - background: rgba(0,0,0,0.2); - } + <!-- Bootstrap CSS --> + <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> - main { - margin-top: 75px; - } + <title>Blood Drives</title> - .topitem { - color: #f2f2f2; + <style> + .listing { float: left; - display: block; - font-size: 16px; padding: 14px 16px; + margin: 10px; + border-radius: 7px; + border: 3px solid black; } - - .topmenu { - font-size: 16px; - padding: 14px 16px; - position: relative; - display: inline-block; - float: right; - } - - .topmenu a { - color: #f2f2f2; - } - - .listing { - float: left; - display: block; + .about { padding: 14px 16px; + background-color: lightgray; margin: 10px; border-radius: 7px; - border: 3px solid black; } </style> - </head> <body> - <div class="topnav"> - <div class="topitem"> - Username: {{username}} - </div> - <div class="topitem"> - Organization: {{org}} - </div> - <div class="topitem"> - Hours: {{hours}} - </div> - <div class="topmenu"> - <a href="/">Home</a> - </div> - <div class="topmenu"> - <a href="https://www.redcross.org/give-blood.html">Red Cross</a> - </div> + <div class="jumbotron text-center" style="margin-bottom:0; "> + <h1>ServicePoints!</h1> + <p>Connect with your Org</p> </div> - <main> - <h1 style="text-align:center">Blood Drives</h1> - - <div class="listing"> - Ann Arbor Blood Donation Center <br /> - Location: 4624 Packard Rd Ann Arbor, MI 48108 <br /> - Times: 07/22/2020 : 11:00 AM - 07:15 PM <br /> - <a href="">Link to Blood Drive</a> + <nav class="navbar navbar-expand-sm navbar-dark" style="background-color:#7952b3;"> + <a class="navbar-brand" href="/">Home</a> + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="collapse navbar-collapse" id="collapsibleNavbar"> + <ul class="navbar-nav mr-auto"> + <li class="nav-item"> + <a class="nav-link" href="">Blood Drives</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="/accounts/food/">Food Drives</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="/accounts/mask/">Mask Making</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="/accounts/tutorsu/">Tutoring</a> + </li> + </ul> + <ul class="navbar-nav"> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + Settings + </a> + <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> + <a class="dropdown-item" href="/accounts/profile/">View Profile</a> + {% if leader == 1 %} + <a class="dropdown-item" href="/accounts/manageOrg/">Manage Org</a> + {% endif %} + <div class="dropdown-divider"></div> + <a class="dropdown-item" href="/accounts/logout/">Logout</a> + </div> + </li> + </ul> </div> - - <div class="listing"> - Blood Drive 2 <br /> Location: Grand Rapids <br /> Link: <a href="">Link to Blood Drive</a> + </nav> + + + <div class="container" style="margin-top:30px"> + <div class="row"> + <div class="col-sm-8"> + <h2>Blood Drives</h2> + {% for bloodPost in bloodDs %} + <div class="listing"> + {{bloodPost.name}}<br /> + {{bloodPost.description}}<br /> + {{bloodPost.link}}<br /> + </div> + {% endfor %} + </div> + <div class="col-sm-4"> + <div class="about"> + <h2>About</h2> + <p>Blood...</p> + </div> + <p> + <a class="btn btn-default btn-lg btn-block" href="https://www.redcross.org/give-blood.html" role="button" style="background-color:#03DAC6;">Red Cross</a> + </p> + <div> + <h2>Your Info: </h2> + <p>Username: {{username}}</p> + <p>Organization: {{org}}</p> + <p>Hours: {{hours}}</p> + <hr class="d-sm-none"> + </div> + </div> </div> - </main> + </div> + <div class="jumbotron text-center" style="margin-bottom:0; "> + </div> + <!-- Optional JavaScript --> + <!-- jQuery first, then Popper.js, then Bootstrap JS --> + <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> + <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> + <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> </body> diff --git a/servicePoints/templates/create.html b/servicePoints/templates/create.html index d95a91a..0efc5bf 100644 --- a/servicePoints/templates/create.html +++ b/servicePoints/templates/create.html @@ -1,4 +1,4 @@ -<!DOCTYPE html> +<!DOCTYPE html> <html> <head> @@ -61,11 +61,11 @@ <form action="/accounts/create/" method="post" enctype="multipart/form-data"> <div class="form-group"> <b>Your Name: </b> - <input type="text" placeholder="Enter Name" name="fullname" class="form-control" required /> + <input type="text" placeholder="Enter Name" name="fullname" class="form-control" required maxlength="30" /> </div> <div class="form-group"> <b>Username: </b> - <input type="text" placeholder="Enter Username" name="username" class="form-control" required /> + <input type="text" placeholder="Enter Username" name="username" class="form-control" required maxlength="20" /> </div> <div class="form-group"> <b>Email: </b> @@ -73,7 +73,7 @@ </div> <div class="form-group"> <b>Password: </b> - <input type="password" placeholder="Enter Password" name="password" class="form-control" required /> + <input type="password" placeholder="Enter Password" name="password" class="form-control" required maxlength="20" /> </div> <div> <b>Select an Organization:</b><br /> diff --git a/servicePoints/templates/createOrg.html b/servicePoints/templates/createOrg.html index 511270d..a97b40d 100644 --- a/servicePoints/templates/createOrg.html +++ b/servicePoints/templates/createOrg.html @@ -1,4 +1,4 @@ -<!DOCTYPE html> +<!DOCTYPE html> <html> @@ -62,15 +62,15 @@ <form action="/accounts/createOrg/" method="post" enctype="multipart/form-data"> <div class="form-group"> <b>New Student Organization Name: </b> - <input type="text" placeholder="Enter Org Name" name="orgName" class="form-control" required /> + <input type="text" placeholder="Enter Org Name" name="orgName" class="form-control" required maxlength="30" /> </div> <div class="form-group"> <b>Your Name: </b> - <input type="text" placeholder="Enter Your Name" name="fullname" class="form-control" required /> + <input type="text" placeholder="Enter Your Name" name="fullname" class="form-control" required maxlength="30" /> </div> <div class="form-group"> <b>Username: </b> - <input type="text" placeholder="Enter Username" name="username" class="form-control" required /> + <input type="text" placeholder="Enter Username" name="username" class="form-control" required maxlength="20" /> </div> <div class="form-group"> <b>Email: </b> @@ -78,7 +78,7 @@ </div> <div class="form-group"> <b>Password: </b> - <input type="password" placeholder="Enter Password" name="password" class="form-control" required /> + <input type="password" placeholder="Enter Password" name="password" class="form-control" required maxlength="20" /> </div> {% if msg != '' %} <div class="alert alert-warning alert-dismissible fade show" role="alert"> diff --git a/servicePoints/templates/food.html b/servicePoints/templates/food.html index a15560a..dbce4b5 100644 --- a/servicePoints/templates/food.html +++ b/servicePoints/templates/food.html @@ -1,86 +1,113 @@ <!DOCTYPE html> <html> <head> - <link rel="stylesheet" type="text/css" href="/css/style.css"> - <title>Food Drives</title> - - <style> - .topnav { - background-color: #333; - position: fixed; - top: 0; - width: 100%; - } + <!-- Required meta tags --> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> - .topnav button:hover { - background: rgba(0,0,0,0.2); - } + <!-- Bootstrap CSS --> + <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> - main { - margin-top: 75px; - } + <title>Food Drives</title> - .topitem { - color: #f2f2f2; + <style> + .listing { float: left; - display: block; - font-size: 16px; - padding: 14px 16px; - } - - .topmenu { - font-size: 16px; padding: 14px 16px; - position: relative; - display: inline-block; - float: right; + margin: 10px; + border-radius: 7px; + border: 3px solid black; } - .topmenu a { - color: #f2f2f2; - } - - .listing { - float: left; - display: block; + .about { padding: 14px 16px; + background-color: lightgray; margin: 10px; border-radius: 7px; - border: 3px solid black; } </style> </head> <body> - <div class="topnav"> - <div class="topitem"> - Username: {{username}} - </div> - <div class="topitem"> - Organization: {{org}} - </div> - <div class="topitem"> - Hours: {{hours}} - </div> - <div class="topmenu"> - <a href="/">Home</a> - </div> + <div class="jumbotron text-center" style="margin-bottom:0; "> + <h1>ServicePoints!</h1> + <p>Connect with your Org</p> </div> - - <main> - <h1 style="text-align:center">Food Drives</h1> - - <div class="listing"> - Food Drive 1 <br /> Location: Ann Arbor <br /> Link: <a href="">Food Drive Information</a> + <nav class="navbar navbar-expand-sm navbar-dark" style="background-color:#7952b3;"> + <a class="navbar-brand" href="/">Home</a> + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="collapse navbar-collapse" id="collapsibleNavbar"> + <ul class="navbar-nav mr-auto"> + <li class="nav-item"> + <a class="nav-link" href="/accounts/blood/">Blood Drives</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="">Food Drives</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="/accounts/mask/">Mask Making</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="/accounts/tutorsu/">Tutoring</a> + </li> + </ul> + <ul class="navbar-nav"> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + Settings + </a> + <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> + <a class="dropdown-item" href="/accounts/profile/">View Profile</a> + {% if leader == 1 %} + <a class="dropdown-item" href="/accounts/manageOrg/">Manage Org</a> + {% endif %} + <div class="dropdown-divider"></div> + <a class="dropdown-item" href="/accounts/logout/">Logout</a> + </div> + </li> + </ul> </div> - - <div class="listing"> - Food Drive 2 <br /> Location: Detroit <br /> Link: <a href="">Food Drive Information</a> + </nav> + + + <div class="container" style="margin-top:30px"> + <div class="row"> + <div class="col-sm-8"> + <h2>Food Drives</h2> + {% for foodPost in foodDs %} + <div class="listing"> + {{foodPost.name}}<br /> + {{foodPost.description}}<br /> + {{foodPost.link}}<br /> + </div> + {% endfor %} + </div> + <div class="col-sm-4"> + <div class="about"> + <h2>About</h2> + <p>Food...</p> + </div> + <div> + <h2>Your Info: </h2> + <p>Username: {{username}}</p> + <p>Organization: {{org}}</p> + <p>Hours: {{hours}}</p> + <hr class="d-sm-none"> + </div> + </div> </div> - </main> - + </div> + <div class="jumbotron text-center" style="margin-bottom:0; "> + </div> + <!-- Optional JavaScript --> + <!-- jQuery first, then Popper.js, then Bootstrap JS --> + <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> + <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> + <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> </body> diff --git a/servicePoints/templates/index.html b/servicePoints/templates/index.html index f536969..d4e7b22 100644 --- a/servicePoints/templates/index.html +++ b/servicePoints/templates/index.html @@ -107,11 +107,13 @@ <a class="btn btn-default btn-lg btn-block" href="/accounts/viewMemberPoints/" role:"button" style="background-color:#03DAC6;">View Points</a> </p> {% endif %} - <h2>Your Info: </h2> - <p>Username: {{username}}</p> - <p>Organization: {{org}}</p> - <p>Hours: {{hours}}</p> - <hr class="d-sm-none"> + <div> + <h2>Your Info: </h2> + <p>Username: {{username}}</p> + <p>Organization: {{org}}</p> + <p>Hours: {{hours}}</p> + <hr class="d-sm-none"> + </div> </div> </div> </div> @@ -170,12 +172,14 @@ <label for="service">Select the type of service:</label> <select name="service" id="service" class="form-control"> - <option value="mask">Mask-Making</option> - <option value="blood">Donating Blood</option> - <option value="tutor">Tutoring</option> - <option value="food">Donating Food</option> + <option value="blood">Blood Drive</option> + <option value="food">Food Drive</option> </select> </div> + <div class="form-group"> + <label for="description">Enter a Title or Name for the Drive:</label> + <input class="form-control" name="name" type="text" placeholder="Enter a Name" required> + </div> <div class="form-group"> <label for="description">Enter a brief description of the service:</label> <textarea class="form-control" name="description" rows="3" placeholder="Enter a Description" required></textarea> diff --git a/servicePoints/templates/mask.html b/servicePoints/templates/mask.html index 04e7653..0f4e3c0 100644 --- a/servicePoints/templates/mask.html +++ b/servicePoints/templates/mask.html @@ -1,4 +1,4 @@ -<!DOCTYPE html> +<!DOCTYPE html> <html> <head> <!-- Required meta tags --> @@ -9,6 +9,15 @@ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> <title>How to make a mask:</title> + + <style> + .about { + padding: 14px 16px; + background-color: lightgray; + margin: 10px; + border-radius: 7px; + } + </style> </head> <body> <div class="jumbotron text-center" style="margin-bottom:0; "> @@ -77,98 +86,21 @@ <a style="font-size: 18px;" href="https://deaconess.com/How-to-make-a-Face-Mask/Mask-Donations?state=Michigan">Deaconess</a> </div> <div class="col-sm-4"> - <p> - <a href="" class="btn btn-default btn-lg btn-block" data-toggle="modal" data-target="#pointsModal" style="background-color:#03DAC6;">Submit Points</a> - </p> - <p> - <a class="btn btn-default btn-lg btn-block" href="" data-toggle="modal" data-target="#serviceModal" style="background-color:#03DAC6;">Submit a Service Opportunity</a> - </p> - <h2>Your Info: </h2> - <p>Username: {{username}}</p> - <p>Organization: {{org}}</p> - <p>Hours: {{hours}}</p> - <hr class="d-sm-none"> - </div> - </div> - </div> - - <div class="modal fade" id="pointsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <h4 class="modal-title" id="myModalLabel">Submit Points</h4> - <button type="button" class="close" data-dismiss="modal" aria-label="Close"> - <span aria-hidden="true">×</span> - </button> + <div class="about"> + <h2>About</h2> + <p>Masks...</p> </div> - <div class="modal-body"> - <form action="/accounts/submitPoints/" method="post" enctype="multipart/form-data"> - <div class="form-group"> - <label for="service">Select the type of service:</label> - - <select name="service" id="service" class="form-control"> - <option value="mask">Mask-Making</option> - <option value="blood">Donating Blood</option> - <option value="tutor">Tutoring</option> - <option value="food">Donating Food</option> - </select> - </div> - <div class="form-group"> - <label for="description">Enter a brief description of the service:</label> - <textarea class="form-control" name="description" rows="3" placeholder="Enter a Description"></textarea> - </div> - <div class="form-group"> - <label for="file">Photo for proof of service</label> - <input type="file" name="file" class="form-control-file"> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> - <input type="submit" class="btn btn-primary" name="update" value="Submit" /> - </div> - </form> + <div> + <h2>Your Info: </h2> + <p>Username: {{username}}</p> + <p>Organization: {{org}}</p> + <p>Hours: {{hours}}</p> + <hr class="d-sm-none"> </div> </div> </div> </div> - <div class="modal fade" id="serviceModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <h4 class="modal-title" id="myModalLabel">Submit a Service Opportunity</h4> - <button type="button" class="close" data-dismiss="modal" aria-label="Close"> - <span aria-hidden="true">×</span> - </button> - </div> - <div class="modal-body"> - <form action="/accounts/" method="post" enctype="multipart/form-data"> - <div class="form-group"> - <label for="service">Select the type of service:</label> - - <select name="service" id="service" class="form-control"> - <option value="mask">Mask-Making</option> - <option value="blood">Donating Blood</option> - <option value="tutor">Tutoring</option> - <option value="food">Donating Food</option> - </select> - </div> - <div class="form-group"> - <label for="description">Enter a brief description of the service:</label> - <textarea class="form-control" name="description" rows="3" placeholder="Enter a Description"></textarea> - </div> - <div class="form-group"> - <label for="file">Enter a link to the service</label> - <input type="url" name="link" class="form-control"> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> - <input type="submit" class="btn btn-primary" name="update" value="Submit" /> - </div> - </form> - </div> - </div> - </div> - </div> <div class="jumbotron text-center" style="margin-bottom:0; "> </div> <!-- Optional JavaScript --> diff --git a/servicePoints/views/accounts.py b/servicePoints/views/accounts.py index c7c6131..38afb1d 100644 --- a/servicePoints/views/accounts.py +++ b/servicePoints/views/accounts.py @@ -294,7 +294,15 @@ def blood(): 'username =:who', {"who": username}) results = studentOrgCur.fetchone() - context = {'username': username, 'org': results["orgName"], 'hours': results["hours"]} + + bloodDrives = cursor.execute('SELECT name, description, link FROM posts WHERE ' + 'service =:who', + {"who": 'blood'}) + bloodDs = bloodDrives.fetchall() + + # Add database info to context + context = {'username': username, 'org': results["orgName"], 'hours': results["hours"], 'bloodDs': bloodDs} + return render_template('blood.html', **context) @servicePoints.app.route('/accounts/food/') @@ -305,7 +313,14 @@ def food(): 'username =:who', {"who": username}) results = studentOrgCur.fetchone() - context = {'username': username, 'org': results["orgName"], 'hours': results["hours"]} + + foodDrives = cursor.execute('SELECT name, description, link FROM posts WHERE ' + 'service =:who', + {"who": 'food'}) + foodDs = foodDrives.fetchall() + + # Add database info to context + context = {'username': username, 'org': results["orgName"], 'hours': results["hours"], 'foodDs': foodDs} return render_template('food.html', **context) @servicePoints.app.route('/accounts/profile/', methods=['GET', 'POST']) @@ -507,12 +522,13 @@ def submitService(): if flask.request.method == 'POST': serviceType = flask.request.form["service"] description = flask.request.form["description"] + name = flask.request.form["name"] link = flask.request.form["link"] - data = (serviceType, description, link) + data = (serviceType, name, description, link) cursor = servicePoints.model.get_db() - cursor.execute("INSERT INTO posts(service, description, link) VALUES (?, ?, ?)", data) + cursor.execute("INSERT INTO posts(service, name, description, link) VALUES (?, ?, ?, ?)", data) context = {'username': flask.session["username"], 'org': flask.session['orgName'], 'hours': flask.session["hours"], 'leader': flask.session["leader"], 'serviceMsg' :'Your post has been submitted', 'submitMsg':''} diff --git a/sql/schema.sql b/sql/schema.sql index 10158e7..938036b 100644 --- a/sql/schema.sql +++ b/sql/schema.sql @@ -51,7 +51,8 @@ CREATE TABLE requests( CREATE TABLE posts( postid INTEGER NOT NULL, service VARCHAR(40) NOT NULL, + name VARCHAR(30) NOT NULL, description VARCHAR(128) NOT NULL, link VARCHAR(128) NOT NULL, PRIMARY KEY(postid) -); \ No newline at end of file +); diff --git a/var/servicePoints.sqlite3 b/var/servicePoints.sqlite3 index e7db602bb473838f711837f1a6616581034fec1f..cd90da82698303b8a8fd85b1572215597bfbc1d2 100644 GIT binary patch delta 455 zcmYk2F>6#o5XX0~xZJzsZVeJ2!4xYboQ25SxAS)Qk;2O*id6zp1Pg`T*|(QmP9q+q z3gj+=q*T(|q_8w5A3_lP4hPoh)5Z6&P?#B*|NLj*H{)q-Jgt4YOQX+A>-Qq^aOu3o zu1PcMkoFJus~xw$%zbQ4XP?czY__7#_sQ2rbArv8IF9LumD8=rx8K?~1%I)&z5aA< z`@Xz9i(c0wLI`C&!g`nU+_0m`Ds3<pFC4#W2qC)tet&ao^YLiMW+Gjd;0=H@U@d@h zkY@r>1dSonUP4$_#<@ZoEkWuc2_|5ICKD>NP6*I8@xk~+nxG4hwg`DDlu3fh9i-Nw zGLM2UJCP`hN<yMCNL-p4tECbOL0T6u%drr$K=2lgEYG182s%$S<`>-?M#aTD%Kw60 z5q4FA{bsl4X}#k5pX#6ajE-;3mY=Ax6T*J7lXB&dJ?PfzWML)C!~VX1QYPPczk5({ u@qA}@#LKX}ns8sKr{~}9aG-S(FLrV_EcISh#9(CihG8)BdqX>@On(5DdVE~~ delta 871 zcmZva%S)6|7{<@{jgvE@Ge?nOs0=KGcFwt9S{WrR!V+Ayh&Wd@wJ9AMT<I9JY17y` z|Aul_?Ypc3{{*+uA_#=UMIDEtjpx8wyzg@!e(z=HDBn5CUti89dy}`WPJ)@qcUAZc zRLXOp_62^eHER2#FRMo*i=z)J)$&|_eC$)H(w(aeHyVv>cjXN(`+mQC@4^VY1M=!& zp?X+*l|&z_+g+8FAe?}^4|9z1>=NBvHXM^_iYODp5TT7_!h1`kU`A<9F|s_`>1d-5 zk@yg>rIc!`qG1G4CnT0mD$lU@QF@7lmO?3`D3XX`B`{&mQZB6_VVeccrO`x4ACnP5 zI8Z_mb4Gh-xmQR<q<D%`W4*Fb8WJ&+T4ar`$p5mJ62X6Vl30~gJWA#m!cvihM2RrY zQNfg&7KS^=Jd<u48$=wpN)r|tC76W}xgi`yjs@39L@xpg$QvqT#2&jCdDJ4fU_&YZ zo74oE@D0&18Bxxu;L>>)RD!qKXoaod$~)%`7tUJ|B^aC!0Q6q;_hyGmIXnjN6dw1- zr@p~@u>dog4;5e;SCcS<Cjg%G$I%ZsT+9j(QhG4;8;;PkBp3q#{!Gd5uwEOu4xY-t z)al?~Z=skM!2!yq#^L*9XaTg))}Ec+v<J6q*?RBhr6CBx{a$xI&t`kw{l)ow7(iI> zRxypOmJie-#~9HnI_xmhCanN-N^22qY9Em%FdUd*+G?5x$TZg)+cXGb73Ya4ncv-8 z7^)QD7J#4OTey`9UWMD&3Pn(#(CcP%)kMGCZa>|;(QI})otbuLrR|ny+RvNUQvvlW v15Na+YbHK6=L=Pqgcl#3nZ->LSJ%#$`IU{}+O3VPW-PVV)>@sFCrf_-kUr+p -- GitLab