Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask_wtf import FlaskForm
- from wtforms import StringField, PasswordField, BooleanField, SubmitField, TextAreaField, validators
- from wtforms.fields.html5 import EmailField
- from wtforms.validators import DataRequired, ValidationError, EqualTo, Email
- from server_app.models import Category, User
- class LoginForm(FlaskForm):
- username = StringField('Username', validators=[DataRequired()])
- password = PasswordField('Password', validators=[DataRequired()])
- remember_me = BooleanField('Remember Me')
- submit = SubmitField('Sign In')
- class SignUpForm(FlaskForm):
- username = StringField('Username', validators=[DataRequired()])
- email = StringField('Email', validators=[DataRequired(), Email()])
- password = PasswordField('Password', validators=[DataRequired()])
- password2 = PasswordField(
- 'Repeat Password', validators=[DataRequired(), EqualTo('password')])
- submit = SubmitField('Register')
- def validate_username(self, username):
- user = User.query.filter_by(username=username.data).first()
- if user is not None:
- raise ValidationError('Please use a different username.')
- def validate_email(self, email):
- user = User.query.filter_by(email=email.data).first()
- if user is not None:
- raise ValidationError('Please use a different email address.')
- def get_scope_categories():
- categories = Category.query.all()
- return [c.name for c in categories]
- class WorkForm(FlaskForm):
- text = TextAreaField('Work Text')
- submit = SubmitField('Fertig bearbeitet!')
- next = SubmitField('Nächste')
- back = SubmitField('Zurück')
- class CategoryForm(FlaskForm):
- scopes = get_scope_categories()
- category_1 = BooleanField(scopes[0])
- category_2 = BooleanField(scopes[1])
- category_3 = BooleanField(scopes[2])
- category_4 = BooleanField(scopes[3])
- category_5 = BooleanField(scopes[4])
- category_6 = BooleanField(scopes[5])
- category_7 = BooleanField(scopes[6])
- category_8 = BooleanField(scopes[7])
- category_9 = BooleanField(scopes[8])
- category_10 = BooleanField(scopes[9])
- category_11 = BooleanField(scopes[10])
- category_12 = BooleanField(scopes[11])
- category_1_pi = BooleanField()
- category_2_pi = BooleanField()
- category_3_pi = BooleanField()
- category_4_pi = BooleanField()
- category_5_pi = BooleanField()
- category_6_pi = BooleanField()
- category_7_pi = BooleanField()
- category_8_pi = BooleanField()
- category_9_pi = BooleanField()
- category_10_pi = BooleanField()
- category_11_pi = BooleanField()
- category_13 = BooleanField(scopes[12])
- category_14 = BooleanField(scopes[13])
- category_15 = BooleanField(scopes[14])
- category_16 = BooleanField(scopes[15])
- category_17 = BooleanField(scopes[16])
- category_18 = BooleanField(scopes[17])
- category_19 = BooleanField(scopes[18])
- category_20 = BooleanField(scopes[19])
- category_21 = BooleanField(scopes[20])
- category_22 = BooleanField(scopes[21])
- category_13_fp = BooleanField()
- category_14_fp = BooleanField()
- category_15_fp = BooleanField()
- category_16_fp = BooleanField()
- category_17_fp = BooleanField()
- category_18_fp = BooleanField()
- category_19_fp = BooleanField()
- category_21_fp = BooleanField()
- category_13_pp = BooleanField()
- category_14_pp = BooleanField()
- category_16_pp = BooleanField()
- category_17_pp = BooleanField()
- category_18_pp = BooleanField()
- category_19_pp = BooleanField()
- category_21_pp = BooleanField()
- done = SubmitField('Bestätigen')
- from server_app import app, db
- from flask import render_template, flash, redirect, url_for, request
- from server_app.forms import LoginForm, WorkForm, CategoryForm, SignUpForm
- from flask_login import current_user, login_user, logout_user, login_required
- from server_app.models import User, DSE, App
- from werkzeug.urls import url_parse
- import re
- import sqlite3
- import random
- from flask_paginate import Pagination, get_page_parameter
- def parse_text(text):
- my_str = re.sub("<.*?>", '', text).replace('\t', '').strip()
- my_str = re.sub(' +', ' ', my_str)
- my_str = re.sub('(\n )+', '\n', my_str)
- return my_str
- def get_scope_categories():
- connection = sqlite3.connect("app.db")
- cursor = connection.cursor()
- sql_cmd = "select name from main.category"
- cursor.execute(sql_cmd)
- result = cursor.fetchall()
- cursor.close()
- connection.close()
- return [i[0] for i in result]
- def load_dse(my_app):
- if my_app == 0:
- new_apps = App.query.all()
- random_int = random.randint(1, len(new_apps))
- my_app = new_apps[random_int - 1]
- print(my_app)
- my_app.paragraphs = []
- else:
- my_app = App.query.filter_by(id=my_app).first_or_404()
- work_app = App.get_attributes(my_app)
- dse = DSE.query.filter_by(app_id=work_app[3]).first_or_404()
- dse_text = open(dse.path_dse, encoding="utf8").read()
- paragraphs = dse_text.split('<split>')
- return dse, paragraphs, work_app
- @app.route('/')
- @app.route('/index')
- def index():
- return render_template('index.html', title='Home')
- @app.route('/work', methods=['GET', 'POST'])
- @app.route('/work/<my_app>', methods=['GET', 'POST'])
- @login_required
- def work(my_app=0):
- # initialisierung
- change = False
- form = WorkForm()
- cat_form = CategoryForm()
- page = request.args.get(get_page_parameter(), type=int, default=1)
- work_dse, paragraphs, work_app = load_dse(my_app)
- search = False
- q = request.args.get('q')
- if q:
- search = True
- per_page = 1
- # submit checks
- if request.form.getlist("current app") == [str(my_app)]:
- flash('Finished policy. Data is being stored.')
- s = 'paragraph|' + '|'.join(get_scope_categories())
- for x in request.form:
- if x == 'current app':
- continue
- data_str = request.form.getlist(x)[0]
- # print('json data_str:', data_str)
- s += '\n' + str(x)
- s_1 = ''
- s_2 = ''
- s_3 = ''
- work_string_1 = data_str[22] + data_str[43] + data_str[47]
- work_string_2 = data_str[:22] + data_str[29:31]
- work_string_3 = data_str[23:29] + data_str[31:43] + data_str[44:47]
- for value in work_string_1:
- s_1 += '|' + value
- for i in range(0, len(work_string_2), 2):
- if work_string_2[i+1] == '1':
- s_2 += '|2'
- elif work_string_2[i] == '1':
- s_2 += '|1'
- else:
- s_2 += '|0'
- for i in range(0, len(work_string_3), 3):
- if work_string_3[i+2] == '1':
- s_3 += '|3'
- elif work_string_3[i+1] == '1':
- s_3 += '|2'
- elif work_string_3[i] == '1':
- s_3 += '|1'
- else:
- s_3 += '|0'
- s += s_2[:22] + s_1[:2] + s_3[:4] + s_2[22:] + s_3[4:12] + s_1[2:4] + s_3[12:] + s_1[4:]
- print(s)
- # csv datei erstellen
- path = 'data/CSV/' + work_app[5].split('id=', 1)[1] + '_' + current_user.username + '.csv'
- # print('path', path)
- new_file = open(path, "w", encoding="utf8")
- new_file.write(s)
- new_file.close()
- # neue policy laden
- work_dse, paragraphs, work_app = load_dse(0)
- page = 1
- # seite erstellen
- offset = (page - 1) * per_page
- worked_on_app = work_app[3]
- form.text.data = parse_text(paragraphs[offset])
- pagination = Pagination(page=page, total=len(paragraphs), search=search, record_name='paragraphs', per_page=1, css_framework='bootstrap3',
- href='/work/' + str(worked_on_app) + '?page={0}')
- if change:
- print('worked_on_app:', work_app)
- print('paragraph:', paragraphs[offset])
- print('url link:', '/work/' + str(worked_on_app) + '?page={0}')
- return render_template('work.html', title='Work Work', form=form, form2=cat_form, categories=get_scope_categories(),
- pagination=pagination, app=work_app, url='/work/' + str(worked_on_app) + '?page=' + str(page), page=page)
- @app.route('/erklaerungen')
- def erklaerungen():
- return render_template('erklaerungen.html', title='Erklärungen Englisch')
- @app.route('/erklaerungen_de')
- def erklaerungen_de():
- return render_template('erklaerungen_de.html', title='Erklärungen Deutsch')
- @app.route('/anleitung')
- def anleitung():
- return render_template('anleitung.html', title='Anleitung')
- @app.route('/artikel')
- def artikel():
- return render_template('artikel.html', title='DSGVO Artikel')
- @app.route('/work/popup/<value>')
- @login_required
- def popup(value=''):
- # initialisierung
- categories = []
- file = open("data/erklaerungen_de.txt", "r", encoding="utf8")
- lines = file.readlines()
- for line in lines:
- categories.append(line.split('|'))
- cats_3_1 = categories[0:11]
- cats_3_2 = categories[12:14] + categories[15:19] + categories[20:21]
- cats_2 = categories[14]
- cats_1 = categories[11:12] + categories[19:20] + categories[21:22]
- if value == cats_2[0]:
- erklaerung = cats_2[1]
- text_1 = cats_2[2]
- text_2 = cats_2[3]
- return render_template('popup_2.html', erklaerung=erklaerung, text_1=text_1, text_2=text_2)
- else:
- for y in cats_1:
- if value == y[0]:
- cat_bool = True
- erklaerung = y[1]
- return render_template('popup.html', erklaerung=erklaerung, category=cat_bool)
- for x in cats_3_1:
- if value == x[0]:
- erklaerung = x[1]
- text_1 = x[2]
- text_2 = x[3]
- text_3 = 'falls keine Informationen dazu in dem Abschnitt stehen, einfach nichts markieren.'
- h1 = 'Voll informativ'
- h2 = 'Ungenügend informativ'
- h3 = 'Nicht vorhanden'
- return render_template('popup_3.html', erklaerung=erklaerung, text_1=text_1, text_2=text_2,
- text_3=text_3, h1=h1, h2=h2, h3=h3)
- for x in cats_3_2:
- if value == x[0]:
- erklaerung = x[1]
- text_1 = x[2]
- text_2 = x[3]
- text_3 = x[4]
- h1 = 'Faire Datenverarbeitung'
- h2 = 'Problematische Datenverarbeitung'
- h3 = 'Unfaire Datenverarbeitung'
- return render_template('popup_3.html', erklaerung=erklaerung, text_1=text_1, text_2=text_2,
- text_3=text_3, h1=h1, h2=h2, h3=h3)
- cat_bool = False
- return render_template('popup.html', category=cat_bool)
- @app.route('/user/<username>')
- @login_required
- def user(username):
- if username != current_user.username:
- flash('Wrong Profile! Redirected!')
- username = current_user.username
- user = User.query.filter_by(username=username).first_or_404()
- stats = [
- {'author': user, 'body': '%i Datenschutzerklärungen fertig bearbeitet' % user.worked_on_DSE},
- {'author': user, 'body': '%i Abschnitte fertig bearbeitet' % user.worked_on_paragraphs},
- {'author': user, 'body': '%i Attribute gesetzt' % user.worked_on_categories}
- ]
- return render_template('user.html', user=user, stats=stats)
- @app.route('/login', methods=['GET', 'POST'])
- def login():
- if current_user.is_authenticated:
- return redirect('/user/' + current_user.username)
- form = LoginForm()
- if form.validate_on_submit():
- user = User.query.filter_by(username=form.username.data).first()
- if user is None or not user.check_password(form.password.data):
- flash('Invalid username or password')
- return redirect(url_for('login'))
- login_user(user, remember=form.remember_me.data)
- next_page = request.args.get('next')
- if not next_page or url_parse(next_page).netloc != '':
- next_page = url_for('work')
- return redirect(next_page)
- return render_template('login.html', title='Sign In', form=form)
- @app.route('/register', methods=['GET', 'POST'])
- def register():
- if current_user.is_authenticated:
- return redirect(url_for('index'))
- form = SignUpForm()
- if form.validate_on_submit():
- user = User(username=form.username.data, email=form.email.data)
- user.set_password(form.password.data)
- db.session.add(user)
- db.session.commit()
- flash('Congratulations, you are now a registered user!')
- return redirect(url_for('login'))
- return render_template('register.html', title='Register', form=form)
- @app.route('/logout')
- def logout():
- logout_user()
- return redirect(url_for('index'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement