Python Flask website












0














I'm new to programming and in back-end. Right now I'm trying to learn flask, so I wrote a very simple website that currently encrypts and decrypts the message using RSA and DES.



I feel like my app.py file is just bad and should do it much better. I mean, there're a lot of repeating code like this:



@app.route('/rsa_encrypt', methods=['GET', 'POST'])
def RSA_enc():
global get_form
if request.method == "GET":
get_form = True
return render_template('rsa_encrypt.html', gf=get_form)
else:
get_form = False
rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
q=request.form.get('q'), e=request.form.get('e'))
return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)


I tried to write some decorators for those routes, but they didn't work well.



Can you take a look and tell me what should I do better? It works but I think not as well as it should.



app.py



from flask import Flask, render_template, request, url_for, jsonify
from ciphers import RSA, DES
from prime import generate_semiprime_number as gspn

app = Flask(__name__)
get_form = None

@app.route('/')
def index():
return render_template('index.html')

@app.route('/rsa_encrypt', methods=['GET', 'POST'])
def RSA_enc():
global get_form
if request.method == "GET":
get_form = True
return render_template('rsa_encrypt.html', gf=get_form)
else:
get_form = False
rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
q=request.form.get('q'), e=request.form.get('e'))
return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)

@app.route('/rsa_decrypt', methods=['GET', 'POST'])
def RSA_dec():
global get_form
if request.method == "GET":
get_form = True
return render_template('rsa_decrypt.html', gf=get_form)
else:
get_form = False
ct = [int(x) for x in request.form.get('ct')[1:-1].split(',')]
rsa = RSA(ciphertext=ct, p=request.form.get('p'),
q=request.form.get('q'), e=request.form.get('e'))
return render_template('rsa_decrypt.html', gf=get_form, rsa=rsa)

@app.route('/des_encrypt', methods=['GET', 'POST'])
def DES_enc():
global get_form
if request.method == "GET":
get_form = True
return render_template('des_encrypt.html', gf=get_form)
else:
get_form = False
des = DES(request.form.get('pt'), user_key=request.form.get('key'))
return render_template('des_encrypt.html', gf=get_form, des=des)

@app.route('/des_decrypt', methods=['GET', 'POST'])
def DES_dec():
global get_form
if request.method == "GET":
get_form = True
return render_template('des_decrypt.html', gf=get_form)
else:
get_form = False
des = DES(ciphertext=request.form.get('ct'), user_key=request.form.get('key'))
return render_template('des_decrypt.html', gf=get_form, des=des)

@app.route('/gpsn', methods=['POST'])
def _gpsn():
return jsonify({'result' : str(gspn(request.form['bits']))})


if __name__ == '__main__':
app.run()


Other files repository. It's also hosted so you can quickly take a look.










share|improve this question









New contributor




user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0














    I'm new to programming and in back-end. Right now I'm trying to learn flask, so I wrote a very simple website that currently encrypts and decrypts the message using RSA and DES.



    I feel like my app.py file is just bad and should do it much better. I mean, there're a lot of repeating code like this:



    @app.route('/rsa_encrypt', methods=['GET', 'POST'])
    def RSA_enc():
    global get_form
    if request.method == "GET":
    get_form = True
    return render_template('rsa_encrypt.html', gf=get_form)
    else:
    get_form = False
    rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
    q=request.form.get('q'), e=request.form.get('e'))
    return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)


    I tried to write some decorators for those routes, but they didn't work well.



    Can you take a look and tell me what should I do better? It works but I think not as well as it should.



    app.py



    from flask import Flask, render_template, request, url_for, jsonify
    from ciphers import RSA, DES
    from prime import generate_semiprime_number as gspn

    app = Flask(__name__)
    get_form = None

    @app.route('/')
    def index():
    return render_template('index.html')

    @app.route('/rsa_encrypt', methods=['GET', 'POST'])
    def RSA_enc():
    global get_form
    if request.method == "GET":
    get_form = True
    return render_template('rsa_encrypt.html', gf=get_form)
    else:
    get_form = False
    rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
    q=request.form.get('q'), e=request.form.get('e'))
    return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)

    @app.route('/rsa_decrypt', methods=['GET', 'POST'])
    def RSA_dec():
    global get_form
    if request.method == "GET":
    get_form = True
    return render_template('rsa_decrypt.html', gf=get_form)
    else:
    get_form = False
    ct = [int(x) for x in request.form.get('ct')[1:-1].split(',')]
    rsa = RSA(ciphertext=ct, p=request.form.get('p'),
    q=request.form.get('q'), e=request.form.get('e'))
    return render_template('rsa_decrypt.html', gf=get_form, rsa=rsa)

    @app.route('/des_encrypt', methods=['GET', 'POST'])
    def DES_enc():
    global get_form
    if request.method == "GET":
    get_form = True
    return render_template('des_encrypt.html', gf=get_form)
    else:
    get_form = False
    des = DES(request.form.get('pt'), user_key=request.form.get('key'))
    return render_template('des_encrypt.html', gf=get_form, des=des)

    @app.route('/des_decrypt', methods=['GET', 'POST'])
    def DES_dec():
    global get_form
    if request.method == "GET":
    get_form = True
    return render_template('des_decrypt.html', gf=get_form)
    else:
    get_form = False
    des = DES(ciphertext=request.form.get('ct'), user_key=request.form.get('key'))
    return render_template('des_decrypt.html', gf=get_form, des=des)

    @app.route('/gpsn', methods=['POST'])
    def _gpsn():
    return jsonify({'result' : str(gspn(request.form['bits']))})


    if __name__ == '__main__':
    app.run()


    Other files repository. It's also hosted so you can quickly take a look.










    share|improve this question









    New contributor




    user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0







      I'm new to programming and in back-end. Right now I'm trying to learn flask, so I wrote a very simple website that currently encrypts and decrypts the message using RSA and DES.



      I feel like my app.py file is just bad and should do it much better. I mean, there're a lot of repeating code like this:



      @app.route('/rsa_encrypt', methods=['GET', 'POST'])
      def RSA_enc():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('rsa_encrypt.html', gf=get_form)
      else:
      get_form = False
      rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
      q=request.form.get('q'), e=request.form.get('e'))
      return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)


      I tried to write some decorators for those routes, but they didn't work well.



      Can you take a look and tell me what should I do better? It works but I think not as well as it should.



      app.py



      from flask import Flask, render_template, request, url_for, jsonify
      from ciphers import RSA, DES
      from prime import generate_semiprime_number as gspn

      app = Flask(__name__)
      get_form = None

      @app.route('/')
      def index():
      return render_template('index.html')

      @app.route('/rsa_encrypt', methods=['GET', 'POST'])
      def RSA_enc():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('rsa_encrypt.html', gf=get_form)
      else:
      get_form = False
      rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
      q=request.form.get('q'), e=request.form.get('e'))
      return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)

      @app.route('/rsa_decrypt', methods=['GET', 'POST'])
      def RSA_dec():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('rsa_decrypt.html', gf=get_form)
      else:
      get_form = False
      ct = [int(x) for x in request.form.get('ct')[1:-1].split(',')]
      rsa = RSA(ciphertext=ct, p=request.form.get('p'),
      q=request.form.get('q'), e=request.form.get('e'))
      return render_template('rsa_decrypt.html', gf=get_form, rsa=rsa)

      @app.route('/des_encrypt', methods=['GET', 'POST'])
      def DES_enc():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('des_encrypt.html', gf=get_form)
      else:
      get_form = False
      des = DES(request.form.get('pt'), user_key=request.form.get('key'))
      return render_template('des_encrypt.html', gf=get_form, des=des)

      @app.route('/des_decrypt', methods=['GET', 'POST'])
      def DES_dec():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('des_decrypt.html', gf=get_form)
      else:
      get_form = False
      des = DES(ciphertext=request.form.get('ct'), user_key=request.form.get('key'))
      return render_template('des_decrypt.html', gf=get_form, des=des)

      @app.route('/gpsn', methods=['POST'])
      def _gpsn():
      return jsonify({'result' : str(gspn(request.form['bits']))})


      if __name__ == '__main__':
      app.run()


      Other files repository. It's also hosted so you can quickly take a look.










      share|improve this question









      New contributor




      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I'm new to programming and in back-end. Right now I'm trying to learn flask, so I wrote a very simple website that currently encrypts and decrypts the message using RSA and DES.



      I feel like my app.py file is just bad and should do it much better. I mean, there're a lot of repeating code like this:



      @app.route('/rsa_encrypt', methods=['GET', 'POST'])
      def RSA_enc():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('rsa_encrypt.html', gf=get_form)
      else:
      get_form = False
      rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
      q=request.form.get('q'), e=request.form.get('e'))
      return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)


      I tried to write some decorators for those routes, but they didn't work well.



      Can you take a look and tell me what should I do better? It works but I think not as well as it should.



      app.py



      from flask import Flask, render_template, request, url_for, jsonify
      from ciphers import RSA, DES
      from prime import generate_semiprime_number as gspn

      app = Flask(__name__)
      get_form = None

      @app.route('/')
      def index():
      return render_template('index.html')

      @app.route('/rsa_encrypt', methods=['GET', 'POST'])
      def RSA_enc():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('rsa_encrypt.html', gf=get_form)
      else:
      get_form = False
      rsa = RSA(request.form.get('pt'), p=request.form.get('p'),
      q=request.form.get('q'), e=request.form.get('e'))
      return render_template('rsa_encrypt.html', gf=get_form, rsa=rsa, gspn=gspn)

      @app.route('/rsa_decrypt', methods=['GET', 'POST'])
      def RSA_dec():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('rsa_decrypt.html', gf=get_form)
      else:
      get_form = False
      ct = [int(x) for x in request.form.get('ct')[1:-1].split(',')]
      rsa = RSA(ciphertext=ct, p=request.form.get('p'),
      q=request.form.get('q'), e=request.form.get('e'))
      return render_template('rsa_decrypt.html', gf=get_form, rsa=rsa)

      @app.route('/des_encrypt', methods=['GET', 'POST'])
      def DES_enc():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('des_encrypt.html', gf=get_form)
      else:
      get_form = False
      des = DES(request.form.get('pt'), user_key=request.form.get('key'))
      return render_template('des_encrypt.html', gf=get_form, des=des)

      @app.route('/des_decrypt', methods=['GET', 'POST'])
      def DES_dec():
      global get_form
      if request.method == "GET":
      get_form = True
      return render_template('des_decrypt.html', gf=get_form)
      else:
      get_form = False
      des = DES(ciphertext=request.form.get('ct'), user_key=request.form.get('key'))
      return render_template('des_decrypt.html', gf=get_form, des=des)

      @app.route('/gpsn', methods=['POST'])
      def _gpsn():
      return jsonify({'result' : str(gspn(request.form['bits']))})


      if __name__ == '__main__':
      app.run()


      Other files repository. It's also hosted so you can quickly take a look.







      python beginner flask






      share|improve this question









      New contributor




      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 17 mins ago





















      New contributor




      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 56 mins ago









      user189355

      11




      11




      New contributor




      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      user189355 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.



























          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("mathjaxEditing", function () {
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          });
          });
          }, "mathjax-editing");

          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "196"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          user189355 is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210736%2fpython-flask-website%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          user189355 is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          user189355 is a new contributor. Be nice, and check out our Code of Conduct.













          user189355 is a new contributor. Be nice, and check out our Code of Conduct.












          user189355 is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210736%2fpython-flask-website%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Morgemoulin

          Scott Moir

          Souastre