Myfe - 03/04/22
Tags: html, python, webdev, mongodb
Published: 2022-04-04 05:57:29

So yesterday, I worked on starting a degree.
This is how I did it:

First I perfectioned the `adddegree` function, by adding this code to `functions.py`:
```py
def getpreparingdegreesnames(username):
  myquery = { "Username": username }
  mydoc = degreescol.find(myquery)
  jobs = []
  for x in mydoc:
    jobs.append(x)
  preparing = []
  for x in jobs:
    if x['Status'] != True:
      preparing.append(x['Type'])
  return preparing

def getfinisheddegreesnames(username):
  myquery = { "Username": username }
  mydoc = degreescol.find(myquery)
  jobs = []
  for x in mydoc:
    jobs.append(x)
  preparing = []
  for x in jobs:
    if x['Status'] == True:
      preparing.append(x['Type'])
  return preparing
```

Then, in the `adddegree` function, I added the code below, before the degree document is added to the collection code:
```py
  if jobname in getpreparingdegreesnames(username):
    return "You are already preparing for this degree!"
  if jobname in getfinisheddegreesnames(username):
    return "You have already obtained this degree!"
```

Now, if you try to start a degree which you have starting preparing for, or have already obtained it, you can't start preparing for it again.

---

Next, I created an HTML page for starting the degree, called `startdegree.html` in the `templates` folder, and added the following code to it:
```html
<!DOCTYPE html>
<html lang="en-GB">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Myfe - Start Degree</title>
    <link href="/style.css" rel="stylesheet" type="text/css" />
    <script src="/script.js"></script>
  </head>
  <body>
    <div class="header">
      <h1>Start Degree</h1>
    </div>
    <div class="navbar">
      <script>
        navbaredit(['home', 'profile', 'logout'])
      </script>
    </div>
    <div class="content">
      {% if error != False and error != None and error != "" %}
        <p>{{error}}</p>
      {% endif %}
      <p>Amount of money you have: <strong>{{user['Money']}}</strong></p>
      <hr>
      <h2>All degrees</h2>
      {% for degree in degrees %}
        <h3>{{degree|upper}}</h3>
        <p>Cost: {{degreescosts[degree]}}</p>
        <a href="/startdegree/{{degree}}">Start your {{degree}} degree</a>
      {% endfor %}
    </div>
  </body>
</html>
```

Then, I added the code below to `app.py` to render the `startdegree.html` file and make the `adddegree` function work for users:
```py
from lists import degrees, degreescosts
from functions import adddegree

@app.route("/startdegree")
def startdegree():
  if getcookie('User') == False:
    return redirect("/")
  else:
    return render_template("startdegree.html", degrees=degrees, degreescosts=degreescosts, user=getuser(getcookie("User")))

@app.route("/startdegree/<degree>")
def startdegreefunc(degree):
  if getcookie("User") == False:
    return redirect("/")
  func = adddegree(getcookie("User"), degree)
  if func == True:
    return render_template("startdegree.html", degrees=degrees, degreescosts=degreescosts, user=getuser(getcookie("User")), error=f"You have started preparing for your {degree} degree!")
  else:
    return render_template("startdegree.html", degrees=degrees, degreescosts=degreescosts, user=getuser(getcookie("User")), error=func)
```

So now the page on the `startdegree` route looks like this:

![startdegree](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0kud74syvau3wg14m2by.png)

Then I decided to create an email for Myfe:
themyfe@gmail.com

And for promoting the game to a wider audience I created a Twitter Account for Myfe:
https://mobile.twitter.com/@themyfe

So next I’ll be working on starting to achieve your cryptography degree.
Thanks for reading!