7 Commits

Author SHA1 Message Date
Leon Noe Jovan
48230b623a success messages, graph 2022-01-05 19:33:43 +01:00
Leon Noe Jovan
6c1fdc06fc Merge branch 'leon-redesign' of https://gitea.cjvt.si/webapps/portal-oddajanje-solar into leon-redesign 2022-01-04 18:36:51 +01:00
Leon Noe Jovan
956c307b6c small fixes, added graph 2022-01-04 18:36:42 +01:00
msinkec
743ebba052 Pass len check fix. 2021-12-26 17:55:12 +01:00
msinkec
13a5fdd6f7 Pass len check fix, relative href and src. 2021-12-23 08:51:37 +01:00
msinkec
7c79891983 Added top uploads by user API endpoint. 2021-12-20 11:47:06 +01:00
msinkec
9e93d41bc3 Upload file codes, upload region. 2021-12-20 11:15:01 +01:00
19 changed files with 354 additions and 141 deletions

10
app.py
View File

@@ -204,7 +204,7 @@ def solar_register_post():
if not password: if not password:
flash('Prazno polje za geslo.') flash('Prazno polje za geslo.')
return redirect('/register') return redirect('/register')
if len(password) > 8: if len(password) < 8:
flash('Geslo mora biti vsaj 8 znakov dolgo.') flash('Geslo mora biti vsaj 8 znakov dolgo.')
return redirect('/register') return redirect('/register')
if len(password) > 100: if len(password) > 100:
@@ -455,10 +455,16 @@ def solar_resetpass_post(token):
@app.route('/topuploads') @app.route('/topuploads')
@login_required @login_required
def solar_topuploads_srednje(): def solar_topuploads():
return jsonify(portal.solar.get_top_uploading_institutions()) return jsonify(portal.solar.get_top_uploading_institutions())
@app.route('/topuploads-by-user')
@login_required
def solar_topuploads_by_user():
return jsonify(portal.solar.get_top_uploading_users())
@app.route('/deluser', methods=['POST']) @app.route('/deluser', methods=['POST'])
@login_required @login_required
def solar_del_user(): def solar_del_user():

View File

@@ -0,0 +1,30 @@
"""Added upload file codes column.
Revision ID: c7bb822adf9f
Revises: 0d9dd68fd94b
Create Date: 2021-12-20 09:00:57.208921
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c7bb822adf9f'
down_revision = '0d9dd68fd94b'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('upload_solar', sa.Column('region', sa.String(), nullable=True))
op.add_column('upload_solar', sa.Column('upload_file_codes', sa.ARRAY(sa.String()), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('upload_solar', 'upload_file_codes')
op.drop_column('upload_solar', 'region')
# ### end Alembic commands ###

View File

@@ -19,6 +19,7 @@ class UploadSolar(db.Model):
institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=True) institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=True)
upload_hash = db.Column(db.String, nullable=False) upload_hash = db.Column(db.String, nullable=False)
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
region = db.Column(db.String, nullable=True)
program = db.Column(db.String, nullable=True) program = db.Column(db.String, nullable=True)
subject = db.Column(db.String, nullable=True) subject = db.Column(db.String, nullable=True)
subject_custom = db.Column(db.String, nullable=True) subject_custom = db.Column(db.String, nullable=True)
@@ -29,6 +30,7 @@ class UploadSolar(db.Model):
grammar_corrections = db.Column(db.String, nullable=True) grammar_corrections = db.Column(db.String, nullable=True)
upload_file_hashes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True) upload_file_hashes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
upload_file_names = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True) upload_file_names = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
upload_file_codes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
class ContractsSolar(db.Model): class ContractsSolar(db.Model):

View File

@@ -6,15 +6,10 @@ import traceback
import ssl import ssl
from datetime import datetime from datetime import datetime
from sqlalchemy import desc from sqlalchemy import desc
from collections import Counter
from pathlib import Path from pathlib import Path
import imaplib
from smtplib import SMTP_SSL from smtplib import SMTP_SSL
import email
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.application import MIMEApplication from email.mime.application import MIMEApplication
@@ -30,9 +25,9 @@ from . model import *
VALID_PROGRAMS = {'OS', 'SSG', 'MGP', 'ZG', 'NPI', 'SPI', 'SSI', 'PTI'} VALID_PROGRAMS = {'OS', 'SSG', 'MGP', 'ZG', 'NPI', 'SPI', 'SSI', 'PTI'}
VALID_SUBJECTS = {'slo', 'drug-jez', 'drug-druz', 'drug-narav', 'drug-strok', 'drug-izb'} VALID_SUBJECTS = {'SLO', 'DJP', 'DDP', 'DNP', 'DSP', 'DIP'}
VALID_TEXT_TYPES = {'esej-spis', 'prakticno', 'solski-test', 'delo-v-razredu'} VALID_TEXT_TYPES = {'E', 'PB', 'T', 'R'}
VALID_GRAMMAR_CORRECTIONS = {'popr-ne', 'brez-popr', 'popr-da'} VALID_GRAMMAR_CORRECTIONS = {'DD', 'N', 'DN'}
VALID_REGIONS = {'CE', 'GO', 'KK', 'KP', 'KR', 'LJ', 'MB', 'MS', 'NM', 'PO', 'SG'} VALID_REGIONS = {'CE', 'GO', 'KK', 'KP', 'KR', 'LJ', 'MB', 'MS', 'NM', 'PO', 'SG'}
#REGEX_EMAIL = re.compile('^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$') #REGEX_EMAIL = re.compile('^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$')
@@ -157,12 +152,8 @@ class UploadHandlerSolar():
institution_id = get_user_institution(user_id).id institution_id = get_user_institution(user_id).id
model_obj = UploadSolar( region = form_data['regija']
upload_user = user_id, program = form_data['program']
institution = institution_id,
upload_hash=upload_metadata['upload_id'],
timestamp=timestamp,
program=form_data['program'],
subject = form_data['predmet'], subject = form_data['predmet'],
subject_custom = form_data['predmet-custom'], subject_custom = form_data['predmet-custom'],
grade = form_data['letnik'], grade = form_data['letnik'],
@@ -170,8 +161,36 @@ class UploadHandlerSolar():
text_type_custom = form_data['vrsta-custom'], text_type_custom = form_data['vrsta-custom'],
school_year = form_data['solsko-leto'], school_year = form_data['solsko-leto'],
grammar_corrections = form_data['jezikovni-popravki'], grammar_corrections = form_data['jezikovni-popravki'],
upload_file_codes = []
for i in range(len(sorted_file_items)):
file_code = '{}_{}_{}_{}_{}_{}_{}_{}'.format(
region[0],
program[0],
subject[0],
grade[0],
text_type[0],
school_year[0],
grammar_corrections[0],
i)
upload_file_codes.append(file_code)
model_obj = UploadSolar(
upload_user = user_id,
institution = institution_id,
upload_hash=upload_metadata['upload_id'],
timestamp=timestamp,
region=region,
program=program,
subject=subject,
subject_custom=subject_custom,
grade=grade,
text_type=text_type,
text_type_custom=text_type_custom,
school_year=school_year,
grammar_corrections=grammar_corrections,
upload_file_hashes=[x[1] for x in sorted_file_items], upload_file_hashes=[x[1] for x in sorted_file_items],
upload_file_names=[x[0] for x in sorted_file_items], upload_file_names=[x[0] for x in sorted_file_items],
upload_file_codes=upload_file_codes,
) )
UploadHandlerSolar.store_model(model_obj) UploadHandlerSolar.store_model(model_obj)
@@ -281,6 +300,8 @@ class UploadHandlerSolar():
@staticmethod @staticmethod
def check_form(form): def check_form(form):
logging.info(form)
region = form['regija']
program = form['program'] program = form['program']
predmet = form['predmet'] predmet = form['predmet']
letnik = int(form['letnik']) letnik = int(form['letnik'])
@@ -288,6 +309,8 @@ class UploadHandlerSolar():
solsko_leto = form['solsko-leto'] solsko_leto = form['solsko-leto']
jezikovni_popravki = form['jezikovni-popravki'] jezikovni_popravki = form['jezikovni-popravki']
if region not in VALID_REGIONS:
return 'Invalid region "{}"'.format(region)
if program not in VALID_PROGRAMS: if program not in VALID_PROGRAMS:
return 'Invalid program "{}"'.format(program) return 'Invalid program "{}"'.format(program)
if predmet not in VALID_SUBJECTS: if predmet not in VALID_SUBJECTS:
@@ -435,6 +458,20 @@ def get_top_uploading_institutions():
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True)) return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
def get_top_uploading_users():
res = dict()
users = get_all_active_users()
for user in users:
uploads = UploadSolar.query.filter_by(upload_user=user.id).all()
for upload in uploads:
if user.name not in res:
res[user.name] = 0
res[user.name] += len(upload.upload_file_hashes)
if len(res) >= 5:
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True)[:5])
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
def get_all_active_users(): def get_all_active_users():
# TODO: do filtering purely within an SQL query # TODO: do filtering purely within an SQL query
res = [] res = []
@@ -444,8 +481,9 @@ def get_all_active_users():
res.append(user) res.append(user)
return res return res
def update_upload_item(item_id, program, subject, subject_custom, grade, text_type, text_type_custom, school_year, grammar_corrections): def update_upload_item(item_id, region, program, subject, subject_custom, grade, text_type, text_type_custom, school_year, grammar_corrections):
rowcount = db.session.query(UploadSolar).filter_by(id=item_id).update({ rowcount = db.session.query(UploadSolar).filter_by(id=item_id).update({
'region': region,
'program': program, 'program': program,
'subject': subject, 'subject': subject,
'subject_custom': subject_custom, 'subject_custom': subject_custom,
@@ -751,8 +789,8 @@ def send_resetpass_mail(email, config):
body = ''' body = '''
Zahtevali ste ponastavitev gesla vašega uporabniškega računa. Zahtevali ste ponastavitev gesla vašega uporabniškega računa.
Geslo lahko ponastavite na naslednji povezavi: https://zbiranje.slovenscina.eu/solar/resetpass/{}'''.format(jwt_token) Geslo lahko ponastavite na naslednji povezavi: http://proc1.cjvt.si:5000/resetpass/{}'''.format(jwt_token)
logging.info(body)
message = MIMEMultipart() message = MIMEMultipart()
message['From'] = config['MAIL_LOGIN'] message['From'] = config['MAIL_LOGIN']
message['To'] = email message['To'] = email
@@ -819,3 +857,4 @@ def send_user_activation_mail(user_id, config):
except Exception: except Exception:
traceback.print_exc() traceback.print_exc()

View File

@@ -148,7 +148,8 @@ em {
background: white; background: white;
width: 100%; width: 100%;
padding-left: 1rem; padding-left: 1rem;
position: relative; } position: relative;
margin-bottom: 1rem; }
.team-item .team-item-name { .team-item .team-item-name {
line-height: 3.25rem; } line-height: 3.25rem; }
.team-item .team-item-collaborations { .team-item .team-item-collaborations {

View File

@@ -1,6 +1,6 @@
{ {
"version": 3, "version": 3,
"mappings": "AAAQ,+IAAuI;AAa/I,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;;AAef,IAAK;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;;ACpBV,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,KAAK,EDLA,OAAO;;ACOd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,KAAK,EDbA,OAAO;;ACgBd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,WAAW,EAAE,GAAG;;AAGlB,IAAK;EACH,MAAM,EAAC,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAC,KAAK;EACX,UAAU,EDhCL,OAAO;ECiCZ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,qBAAqB;EACjC,UAAQ;IACN,OAAO,EAAE,GAAG;EAEd,aAAW;IACT,MAAM,EAAC,OAAO;IACd,OAAO,EAAC,GAAG;;AAMf,MAAO;EACL,UAAU,ED5CJ,OAAO;EC6Cb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAC,KAAK;EACf,kBAAY;IACV,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAE,KAAK;IACV,IAAI,EAAC,CAAC;IACN,KAAK,EAAC,CAAC;IACP,OAAO,EAAC,KAAK;IACb,MAAM,EAAC,IAAI;IACX,UAAU,EDvDN,OAAO;ICwDX,OAAO,EAAC,SAAS;IACjB,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;;AAKtB,KAAM;EACJ,UAAU,EDpEL,OAAO;ECqEZ,MAAM,EAAC,GAAG;EACV,KAAK,EAAC,KAAK;EACX,MAAM,EAAE,IAAI;;AAGd,QAAS;EACP,OAAO,EAAC,KAAK;EACb,UAAU,EAAE,KAAK;EACjB,SAAS,EAAC,IAAI;EACd,eAAe,EAAE,IAAI;EACrB,KAAK,EDlFA,OAAO;ECmFZ,cAAc,EAAE,SAAS;;AAG3B,MAAO;EACL,QAAQ,EAAC,QAAQ;EACjB,KAAK,EDvFD,OAAO;ECwFX,aAAa,EAAC,IAAI;EAClB,oBAAgB;IACd,KAAK,EDnFD,OAAO;ECqFb,UAAI;IACF,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,OAAO;IACX,KAAK,EAAC,MAAM;EAEd,QAAE;IACA,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAC,IAAI;IACX,IAAI,EAAC,IAAI;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAC,CAAC;IACR,cAAc,EAAE,SAAS;;AAI7B,aAAc;EACZ,UAAU,EAAC,KAAK;EAChB,MAAM,EAAE,iBAAsB;EAC9B,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAK;IACH,UAAU,EAAC,MAAM;IACjB,UAAU,ED/GN,OAAO;ICgHX,aAAa,EAAE,GAAG;;ACxHtB,cAAe;EACb,QAAQ,EAAC,QAAQ;EACjB,WAAW,EAAC,IAAI;EAChB,aAAa,EAAE,iBAAe;EAC9B,cAAc,EAAC,OAAO;EACtB,kCAAoB;IAClB,QAAQ,EAAC,QAAQ;IACjB,IAAI,EAAC,KAAK;IACV,GAAG,EAAC,CAAC;IACL,KAAK,EAAC,IAAI;IACV,MAAM,EAAC,IAAI;EAEb,mCAAqB;IACnB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,IAAI;EAEnB,kCAAoB;IAClB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,OAAO;IACpB,cAAc,EAAE,SAAS;EAE3B,sCAAwB;IACtB,QAAQ,EAAC,QAAQ;IACjB,KAAK,EAAC,CAAC;IACP,GAAG,EAAC,IAAI;IACR,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,QAAQ;IACrB,cAAc,EAAE,SAAS;IACzB,KAAK,EF9BF,OAAO;IE+BV,eAAe,EAAE,IAAI;;AAIzB,UAAW;EACT,UAAU,EAAC,KAAK;EAChB,KAAK,EAAC,IAAI;EACV,YAAY,EAAC,IAAI;EACjB,QAAQ,EAAC,QAAQ;EACjB,0BAAgB;IACd,WAAW,EAAC,OAAO;EAErB,oCAA0B;IACxB,QAAQ,EAAC,QAAQ;IACjB,KAAK,EAAC,IAAI;IACV,GAAG,EAAC,MAAM;IACV,qDAAiB;MACf,OAAO,EAAC,KAAK;MACb,cAAc,EAAE,SAAS;MACzB,SAAS,EAAE,QAAQ;MACnB,WAAW,EAAE,OAAO", "mappings": "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",
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss","contracts.scss"], "sources": ["slovenscina-theme.scss","slovenscina-elements.scss","contracts.scss"],
"names": [], "names": [],
"file": "contracts.css" "file": "contracts.css"

View File

@@ -40,6 +40,7 @@
width:100%; width:100%;
padding-left:1rem; padding-left:1rem;
position:relative; position:relative;
margin-bottom:1rem;
.team-item-name { .team-item-name {
line-height:3.25rem; line-height:3.25rem;
} }

View File

@@ -121,7 +121,8 @@ em {
padding: 1rem 1.5rem; padding: 1rem 1.5rem;
position: relative; position: relative;
transition: max-height 1s ease-out; transition: max-height 1s ease-out;
cursor: pointer; } cursor: pointer;
overflow: hidden; }
.history-item .history-item-chevron { .history-item .history-item-chevron {
position: absolute; position: absolute;
bottom: 1rem; bottom: 1rem;

View File

@@ -1,6 +1,6 @@
{ {
"version": 3, "version": 3,
"mappings": "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", "mappings": "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",
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss","history.scss"], "sources": ["slovenscina-theme.scss","slovenscina-elements.scss","history.scss"],
"names": [], "names": [],
"file": "history.css" "file": "history.css"

View File

@@ -8,6 +8,7 @@
position:relative; position:relative;
transition: max-height 1s ease-out; transition: max-height 1s ease-out;
cursor:pointer; cursor:pointer;
overflow:hidden;
.history-item-chevron { .history-item-chevron {
position:absolute; position:absolute;
bottom:1rem; bottom:1rem;

View File

@@ -3,14 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal ŠOLAR</title> <title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css"> <link rel="stylesheet" href="../static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="/static/css/utils.css" type="text/css"> <link rel="stylesheet" href="../static/css/utils.css" type="text/css">
</head> </head>
<body> <body>
<div class="background"> <div class="background">
<div class="panel login-panel"> <div class="panel login-panel">
<div class="panel-logo"> <div class="panel-logo">
<img src="/static/image/logo.svg" alt="logo"/> <img src="../static/image/logo.svg" alt="logo"/>
</div> </div>
<h1 class="m-b-3">Pozabljeno geslo - ŠOLAR</h1> <h1 class="m-b-3">Pozabljeno geslo - ŠOLAR</h1>
<div> <div>
@@ -27,16 +27,16 @@
</form> </form>
{% with messages = get_flashed_messages() %} {% with messages = get_flashed_messages() %}
{% if messages %} {% if messages %}
<div class="alert"> <div class="alert alert-success">
<img src="../static/image/alert.svg" alt="alert"/> <img src="../static/image/success.svg" alt="alert"/>
<p>{{ messages[0] }}</p> <p>{{ messages[0] }}</p>
</div> </div>
{% endif %} {% endif %}
{% endwith %} {% endwith %}
<div class="back-to-login"> <div class="back-to-login">
<img src="/static/image/chevron-left.svg"/> <img src="../static/image/chevron-left.svg"/>
<a href="/login">Nazaj na prijavo</a> <a href="../login">Nazaj na prijavo</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -3,14 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal ŠOLAR</title> <title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css"> <link rel="stylesheet" href="../static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="/static/css/utils.css" type="text/css"> <link rel="stylesheet" href="../static/css/utils.css" type="text/css">
</head> </head>
<body> <body>
<div class="background"> <div class="background">
<div class="panel login-panel"> <div class="panel login-panel">
<div class="panel-logo"> <div class="panel-logo">
<img src="/static/image/logo.svg" alt="logo"/> <img src="../static/image/logo.svg" alt="logo"/>
</div> </div>
<h2 class="text-center">Portal za oddajanje besedil</h2> <h2 class="text-center">Portal za oddajanje besedil</h2>
<div class="line"></div> <div class="line"></div>
@@ -21,10 +21,17 @@
<h1 class="m-b-3">Prijava</h1> <h1 class="m-b-3">Prijava</h1>
{% with messages = get_flashed_messages() %} {% with messages = get_flashed_messages() %}
{% if messages %} {% if messages %}
<div class="alert"> {% if "potrditev" in messages[0] or "uspešna" in messages[0] %}
<img src="/static/image/alert.svg" alt="alert"/> <div class="alert alert-success">
<img src="../static/image/success.svg" alt="alert"/>
<p>{{ messages[0] }}</p> <p>{{ messages[0] }}</p>
</div> </div>
{% else %}
<div class="alert">
<img src="../static/image/alert.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endif %} {% endif %}
{% endwith %} {% endwith %}
<div> <div>

View File

@@ -3,10 +3,10 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Upravljanje institucije - Šolar</title> <title>Upravljanje institucije - Šolar</title>
<link rel="stylesheet" href="/static/css/header.css" type="text/css"> <link rel="stylesheet" href="../static/css/header.css" type="text/css">
<link rel="stylesheet" href="/static/css/form.css" type="text/css"> <link rel="stylesheet" href="../static/css/form.css" type="text/css">
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css"> <link rel="stylesheet" href="../static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="/static/css/manage-institution.css" type="text/css"> <link rel="stylesheet" href="../static/css/manage-institution.css" type="text/css">
<style> <style>
.tableFixHead { .tableFixHead {
overflow-y: scroll; overflow-y: scroll;
@@ -35,7 +35,7 @@
</head> </head>
<body> <body>
<header> <header>
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div> <div class="logo"><a href="../"><img src="../static/image/logo-white.svg"/></a></div>
<div class="menu-items"> <div class="menu-items">
<a href="../logout">Odjava</a> <a href="../logout">Odjava</a>
{% if is_institution_coordinator %} {% if is_institution_coordinator %}

View File

@@ -3,14 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal za oddajanje besedil</title> <title>Portal za oddajanje besedil</title>
<link rel="stylesheet" href="/static/css/header.css" type="text/css"> <link rel="stylesheet" href="../static/css/header.css" type="text/css">
<link rel="stylesheet" href="/static/css/form.css" type="text/css"> <link rel="stylesheet" href="../static/css/form.css" type="text/css">
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css"> <link rel="stylesheet" href="../static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="/static/css/utils.css" type="text/css"> <link rel="stylesheet" href="../static/css/utils.css" type="text/css">
</head> </head>
<body> <body>
<header> <header>
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div> <div class="logo"><a href="../"><img src="../static/image/logo-white.svg"/></a></div>
<div class="menu-items"> <div class="menu-items">
<a href="../logout">Odjava</a> <a href="../logout">Odjava</a>
{% if is_institution_coordinator %} {% if is_institution_coordinator %}
@@ -26,13 +26,13 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h1 class="title">Korpus Šolar</h1> <h1 class="title">Korpus Šolar</h1>
<p class="subtitle">Prosimo, določite podatke o besedilih, ki jih želite oddati, in nato naložite besedila. Če oddajate besedila, ki so nastala v različnih razredih, se razlikujejo glede učiteljskih popravkov in podobno, jih oddajte v ločenih paketih.</p> <p class="subtitle" style="width:60%">Prosimo, določite podatke o besedilih, ki jih želite oddati, in nato naložite besedila. Če oddajate besedila, ki so nastala v različnih razredih, se razlikujejo glede učiteljskih popravkov in podobno, jih oddajte v ločenih paketih.</p>
<div class="tab-nav"> <div class="tab-nav">
<a href="/oddaja" class="active">Oddaja besedil</a> <a href="../oddaja" class="active">Oddaja besedil</a>
<a href="/zgodovina">Zgodovina sodelovanja</a> <a href="../zgodovina">Zgodovina sodelovanja</a>
<a href="/pogodbe">Ekipa</a> <a href="../pogodbe">Ekipa</a>
</div> </div>
</div> </div>
</div> </div>
@@ -43,21 +43,21 @@
<div class="col-6"> <div class="col-6">
{% if not institution %} {% if not institution %}
<div class="alert"> <div class="alert">
<img src="/static/image/alert.svg" alt="alert"/> <img src="../static/image/alert.svg" alt="alert"/>
<p>Niste član nobene institucije!</p> <p>Niste član nobene institucije!</p>
</div> </div>
{% elif not institution_contract %} {% elif not institution_contract %}
<div class="alert"> <div class="alert">
<img src="/static/image/alert.svg" alt="alert"/> <img src="../static/image/alert.svg" alt="alert"/>
<p>Pogodba s šolo še ni naložena!</p> <p>Pogodba s šolo še ni naložena!</p>
</div> </div>
{% endif %} {% endif %}
<div class="alert" id="error-message"> <div class="alert" id="error-message">
<img src="/static/image/alert.svg" alt="alert"/> <img src="../static/image/alert.svg" alt="alert"/>
<p></p> <p></p>
</div> </div>
<div class="alert alert-success" id="success-message"> <div class="alert alert-success" id="success-message">
<img src="/static/image/success.svg" alt="alert"/> <img src="../static/image/success.svg" alt="alert"/>
<p></p> <p></p>
</div> </div>
</div> </div>
@@ -68,7 +68,30 @@
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<div class="form-wrapper"> <div class="form-wrapper">
<label>Program</label> <label for="regija">Regija</label>
<select id="regija" name="regija">
<option value="CE" selected="selected">Celje (CE)</option>
<option value="GO">Nova Gorica (GO)</option>
<option value="KK">Krško (KK)</option>
<option value="KP">Koper (KP)</option>
<option value="KR">Kranj (KR)</option>
<option value="LJ">Ljubljana (LJ)</option>
<option value="MB">Maribor (MB)</option>
<option value="MS">Murska Sobota (MS)</option>
<option value="NM">Novo Mesto (NM)</option>
<option value="PO">Postojna (PO)</option>
<option value="SG">Slovenj Gradec (SG)</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="program">Program</label>
<select id="program" name="program"> <select id="program" name="program">
<option value="OS" selected="selected">Osnovnošolski (OŠ)</option> <option value="OS" selected="selected">Osnovnošolski (OŠ)</option>
<option value="SSG">Splošna in strokovna gimnazija (SGG)</option> <option value="SSG">Splošna in strokovna gimnazija (SGG)</option>
@@ -77,7 +100,7 @@
<option value="NPI">Nižje poklicno izobraževanje (NPI)</option> <option value="NPI">Nižje poklicno izobraževanje (NPI)</option>
<option value="SPI">Srednje poklicno izobraževanje (SPI)</option> <option value="SPI">Srednje poklicno izobraževanje (SPI)</option>
<option value="SSI">Srednje strokovno izobraževanje (SSI)</option> <option value="SSI">Srednje strokovno izobraževanje (SSI)</option>
<option value="PTI">Poklicno-tehnično izobraževanje (PTI)</option> <option value="PTI">Poklicno-tehniško izobraževanje (PTI)</option>
</select> </select>
</div> </div>
</div> </div>
@@ -90,12 +113,12 @@
<div class="form-wrapper"> <div class="form-wrapper">
<label for="predmet">Predmet</label> <label for="predmet">Predmet</label>
<select id="predmet" name="predmet"> <select id="predmet" name="predmet">
<option value="slo" selected="selected">Slovenščina</option> <option value="SLO" selected="selected">Slovenščina (SLO)</option>
<option value="drug-jez">Drugi jezikoslovni predmeti</option> <option value="DJP">Drugi jezikoslovni predmeti (vtipkajte ime predmeta) (DJP)</option>
<option value="drug-druz">Drugi družboslovni predmeti</option> <option value="DDP">Drugi družboslovni predmeti (vtipkajte ime predmeta) (DDP)</option>
<option value="drug-narav">Drugi naravoslovni predmeti</option> <option value="DNP">Drugi naravoslovni predmeti (vtipkajte ime predmeta) (DNP)</option>
<option value="drug-strok">Drugi strokovni predmeti</option> <option value="DSP">Drugi strokovni predmeti (vtipkajte ime predmeta) (DSP)</option>
<option value="drug-izb">Drugi izbirni ali dodatni predmeti</option> <option value="DIP">Drugi izbirni ali dodatni predmeti (vtipkajte ime predmeta) (DIP)</option>
</select> </select>
</div> </div>
</div> </div>
@@ -143,10 +166,10 @@
<div class="form-wrapper" > <div class="form-wrapper" >
<label for="vrsta">Vrsta besedila</label> <label for="vrsta">Vrsta besedila</label>
<select id="vrsta" name="vrsta"> <select id="vrsta" name="vrsta">
<option value="esej-spis" selected="selected">Esej ali spis</option> <option value="E" selected="selected">Esej ali spis (E)</option>
<option value="prakticno">Praktično besedilo (npr. vabila, prošnje ipd. pri pouku slovenščine), napisano za oceno</option> <option value="PB">Praktično besedilo (npr. vabila, prošnje ipd. pri pouku slovenščine), napisano za oceno (PB)</option>
<option value="solski-test">Šolski test</option> <option value="T">Šolski test (T)</option>
<option value="delo-v-razredu">Delo v razredu, ne za oceno</option> <option value="R">Delo v razredu, ne za oceno (vtipkajte besedilo vrsto) (R)</option>
</select> </select>
</div> </div>
</div> </div>
@@ -187,9 +210,9 @@
<div class="form-wrapper"> <div class="form-wrapper">
<label for="jezikovni-popravki">Jezikovni popravki</label> <label for="jezikovni-popravki">Jezikovni popravki</label>
<select id="jezikovni-popravki" name="jezikovni-popravki"> <select id="jezikovni-popravki" name="jezikovni-popravki">
<option value="popr-ne" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus</option> <option value="DD" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus. (DD)</option>
<option value="brez-popr">Besedilo ne vsebuje učiteljskih popravkov</option> <option value="N">Besedilo ne vsebuje učiteljskih popravkov. (N)</option>
<option value="popr-da">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus</option> <option value="DN">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus. (DN)</option>
</select> </select>
</div> </div>
</div> </div>
@@ -214,7 +237,7 @@
</div> </div>
</div> </div>
<div class="col-6"> <div class="col-6">
<p>Oddate lahko eno ali (hkrati) več besedil, ki ustrezajo izbranim podatkom. Sprejemljivi formati so: txt, doc, docx, pdf, jpg in png.</p> <p>Oddate lahko eno ali (hkrati) več besedil, ki ustrezajo izbranim podatkom. Sprejemljivi formati so: txt, csv, pdf, doc, docx, xls, xlsx, ppt, pptx, jpg, jpeg, png.</p>
</div> </div>
</div> </div>
@@ -248,7 +271,7 @@
<!--{{ dropzone.load_js() }}--> <!--{{ dropzone.load_js() }}-->
<script src="/static/dropzone.js"></script> <script src="../static/dropzone.js"></script>
<script> <script>
///////////////////////// /////////////////////////
// Dropzone // // Dropzone //
@@ -295,7 +318,7 @@
//onready //onready
selectPredmet.addEventListener("change", function(e) { selectPredmet.addEventListener("change", function(e) {
var predmetCustomBox = document.getElementById("predmet-custom-box").closest('.row'); var predmetCustomBox = document.getElementById("predmet-custom-box").closest('.row');
if (selectPredmet.value.startsWith("drug")) { if (selectPredmet.value.startsWith("D")) {
predmetCustomBox.style.maxHeight = "150px"; predmetCustomBox.style.maxHeight = "150px";
} else { } else {
predmetCustomBox.style.maxHeight = "0px"; predmetCustomBox.style.maxHeight = "0px";
@@ -304,7 +327,7 @@
selectVrsta.addEventListener("change", function(e) { selectVrsta.addEventListener("change", function(e) {
var vrstaCustomBox = document.getElementById("vrsta-custom-box").closest('.row'); var vrstaCustomBox = document.getElementById("vrsta-custom-box").closest('.row');
if (selectVrsta.value == "delo-v-razredu") { if (selectVrsta.value == "R") {
vrstaCustomBox.style.maxHeight = "150px"; vrstaCustomBox.style.maxHeight = "150px";
} else { } else {
vrstaCustomBox.style.maxHeight = "0px"; vrstaCustomBox.style.maxHeight = "0px";
@@ -324,7 +347,7 @@
paramName: "file", // The name that will be used to transfer the file paramName: "file", // The name that will be used to transfer the file
maxFilesize: 1000, // MB maxFilesize: 1000, // MB
timeout: 5000000, // milliseconds timeout: 5000000, // milliseconds
acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png, .mkv", acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png",
maxFiles: 20, maxFiles: 20,
previewsContainer: "#dropzone-previews", previewsContainer: "#dropzone-previews",
dictDefaultMessage: "Kliknite to polje ali povlecite datoteke vanj.", dictDefaultMessage: "Kliknite to polje ali povlecite datoteke vanj.",
@@ -351,6 +374,7 @@
e.stopPropagation(); e.stopPropagation();
// Check form validity. // Check form validity.
var regija = form["regija"].value;
var program = form["program"].value; var program = form["program"].value;
var predmet = form["predmet"].value; var predmet = form["predmet"].value;
var predmetCustom = form["predmet-custom"].value; var predmetCustom = form["predmet-custom"].value;
@@ -360,9 +384,9 @@
var solskoLeto = form["solsko-leto"].value; var solskoLeto = form["solsko-leto"].value;
var jezikovniPopravki = form["jezikovni-popravki"].value; var jezikovniPopravki = form["jezikovni-popravki"].value;
if (predmet.startsWith("drug") && isEmptyOrSpaces(predmetCustom)) { if (predmet.startsWith("D") && isEmptyOrSpaces(predmetCustom)) {
showError("Polje za predmet ne more biti prazno!"); showError("Polje za predmet ne more biti prazno!");
} else if (vrsta === "delo-v-razredu" && isEmptyOrSpaces(vrstaCustom)) { } else if (vrsta === "R" && isEmptyOrSpaces(vrstaCustom)) {
showError("Polje za vrsto besedila ne more biti prazno!"); showError("Polje za vrsto besedila ne more biti prazno!");
} else if (dataConfirmNotification.style.display == "none") { } else if (dataConfirmNotification.style.display == "none") {
dataConfirmNotification.style.display = "inherit"; dataConfirmNotification.style.display = "inherit";
@@ -409,6 +433,7 @@
this.on("sending", function(file, xhr, formData) { this.on("sending", function(file, xhr, formData) {
formData.append("regija",form["regija"].value);
formData.append("program",form["program"].value); formData.append("program",form["program"].value);
formData.append("predmet",form["predmet"].value); formData.append("predmet",form["predmet"].value);
formData.append("predmet-custom",form["predmet-custom"].value); formData.append("predmet-custom",form["predmet-custom"].value);

View File

@@ -3,14 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal za oddajanje besedil</title> <title>Portal za oddajanje besedil</title>
<link rel="stylesheet" href="/static/css/header.css" type="text/css"> <link rel="stylesheet" href="../static/css/header.css" type="text/css">
<link rel="stylesheet" href="/static/css/form.css" type="text/css"> <link rel="stylesheet" href="../static/css/form.css" type="text/css">
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css"> <link rel="stylesheet" href="../static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="/static/css/contracts.css" type="text/css"> <link rel="stylesheet" href="../static/css/contracts.css" type="text/css">
</head> </head>
<body> <body>
<header> <header>
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div> <div class="logo"><a href="../"><img src="../static/image/logo-white.svg"/></a></div>
<div class="menu-items"> <div class="menu-items">
<a href="../logout">Odjava</a> <a href="../logout">Odjava</a>
{% if is_institution_coordinator %} {% if is_institution_coordinator %}
@@ -29,9 +29,9 @@
<p class="subtitle"></p> <p class="subtitle"></p>
<div class="tab-nav"> <div class="tab-nav">
<a href="/oddaja">Oddaja besedil</a> <a href="../oddaja">Oddaja besedil</a>
<a href="/zgodovina">Zgodovina sodelovanja</a> <a href="../zgodovina">Zgodovina sodelovanja</a>
<a href="/pogodbe" class="active">Ekipa</a> <a href="../pogodbe" class="active">Ekipa</a>
</div> </div>
</div> </div>
</div> </div>
@@ -98,7 +98,7 @@
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<div class="contract-item"> <div class="contract-item">
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/> <img src="../static/image/contract.png" alt="contract" class="contract-item-icon"/>
<div class="contract-item-title">Pogodba s šolo</div> <div class="contract-item-title">Pogodba s šolo</div>
<div class="contract-item-date">DODANO: {{contract_school.timestamp.strftime('%d. %m. %Y')}}</div> <div class="contract-item-date">DODANO: {{contract_school.timestamp.strftime('%d. %m. %Y')}}</div>
<a href="../pogodbe-institucije/{{ contract_school.file_contract }}.pdf" class="contract-item-download">Prenesi</a> <a href="../pogodbe-institucije/{{ contract_school.file_contract }}.pdf" class="contract-item-download">Prenesi</a>
@@ -111,7 +111,7 @@
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<div class="contract-item"> <div class="contract-item">
<img src="/static/image/contract.svg" alt="contract" class="contract-item-icon"/> <img src="../static/image/contract.svg" alt="contract" class="contract-item-icon"/>
<div class="contract-item-title">Pogodba o prenosu lastništva</div> <div class="contract-item-title">Pogodba o prenosu lastništva</div>
<div class="contract-item-date">DODANO: {{item.timestamp.strftime('%d. %m. %Y')}}</div> <div class="contract-item-date">DODANO: {{item.timestamp.strftime('%d. %m. %Y')}}</div>
<a href="../pogodbe-ucencistarsi/{{ item.file_contract }}.pdf" class="contract-item-download">Prenesi</a> <a href="../pogodbe-ucencistarsi/{{ item.file_contract }}.pdf" class="contract-item-download">Prenesi</a>
@@ -159,6 +159,19 @@
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
<div class="row">
<div class="col-12">
<h2>Število oddaj na uporabnika</h2>
</div>
</div>
<div class="row">
<div class="col-6">
<div id="my_dataviz">
</div>
</div>
</div>
</div> </div>
@@ -194,7 +207,7 @@
{% if contract_school %} {% if contract_school %}
<div class="contract-item"> <div class="contract-item">
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/> <img src="../static/image/contract.png" alt="contract" class="contract-item-icon"/>
<div class="contract-item-title">Pogodba s šolo</div> <div class="contract-item-title">Pogodba s šolo</div>
<div class="contract-item-data">{{contract_school.original_filename}}</div> <div class="contract-item-data">{{contract_school.original_filename}}</div>
<div class="contract-item-data">DODANO: {{contract_school.timestamp}}</div> <div class="contract-item-data">DODANO: {{contract_school.timestamp}}</div>
@@ -204,7 +217,7 @@
{% endif %} {% endif %}
{% for item in contracts_students %} {% for item in contracts_students %}
<div class="contract-item"> <div class="contract-item">
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/> <img src="../static/image/contract.png" alt="contract" class="contract-item-icon"/>
<div class="contract-item-title" style="font-size: 12px;">{{item.original_filename}}</div> <div class="contract-item-title" style="font-size: 12px;">{{item.original_filename}}</div>
<div class="contract-item-data">Pogodba o prenosu lastništva</div> <div class="contract-item-data">Pogodba o prenosu lastništva</div>
<div class="contract-item-data">DODANO: {{item.timestamp}}</div> <div class="contract-item-data">DODANO: {{item.timestamp}}</div>
@@ -278,7 +291,7 @@
{% if user_id in cooperation_history %} {% if user_id in cooperation_history %}
{% for item in cooperation_history[user_id]['coordinator'] %} {% for item in cooperation_history[user_id]['coordinator'] %}
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;"> <div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/> <img src="../static/image/star.png" alt="star" style="float: left; width: 40px;"/>
<div class="collaborators-item-name" <div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"> style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
{{item[1]}} {{item[1]}}
@@ -291,7 +304,7 @@
{% endfor %} {% endfor %}
{% for item in cooperation_history[user_id]['mentor'] %} {% for item in cooperation_history[user_id]['mentor'] %}
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;"> <div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/> <img src="../static/image/star.png" alt="star" style="float: left; width: 40px;"/>
<div class="collaborators-item-name" <div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"> style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
{{item[1]}} {{item[1]}}
@@ -304,7 +317,7 @@
{% endfor %} {% endfor %}
{% for item in cooperation_history[user_id]['other'] %} {% for item in cooperation_history[user_id]['other'] %}
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;"> <div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/> <img src="../static/image/star.png" alt="star" style="float: left; width: 40px;"/>
<div class="collaborators-item-name" <div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"> style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
{{item[1]}} {{item[1]}}
@@ -323,7 +336,83 @@
</div>--> </div>-->
</body> </body>
<script src="https://d3js.org/d3.v6.js"></script> <script src="https://d3js.org/d3.v6.js"></script>
<style>
#my_dataviz .tick line{
visibility:hidden;
}
#my_dataviz path.domain{
visibility:hidden;
}
</style>
<script> <script>
// set the dimensions and margins of the graph
// append the svg object to the body of the page
var data;
// Parse the Data
d3.json("/topuploads-by-user/").then(function(jsondata) {
if(Object.keys(jsondata).length < 1) {
return;
}
data = [];
console.log(Object.keys(jsondata).length);
var margin = {top: 20, right: 0, bottom: 40, left: 0};
var width = document.getElementById("my_dataviz").clientWidth - margin.left - margin.right;
var height = Object.keys(jsondata).length * 56;
var svg = d3.select("#my_dataviz")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.style("overflow","visible")
.append("g")
.attr("transform",
"translate(" + margin.left + "," + margin.top + ")");
for(var key in jsondata) {
data.push({'name': key, 'value':jsondata[key]});
}
console.log(data);
// Add X axis
var x = d3.scaleLinear()
.domain([0,d3.max(data, function (d) { return d.value})])
.range([ 0, width]);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x))
.selectAll("text")
.style("text-anchor", "center");
// Y axis
var y = d3.scaleBand()
.range([ 0, data.length*56 ])
.domain(data.map(function(d) { return d.name; }))
.padding(0);
svg.append("g")
.call(d3.axisLeft(y))
.selectAll("text")
.style("text-anchor", "start")
.style("font-size", "14px")
.attr("transform", "translate(8,-36)");
//Bars
svg.selectAll("myRect")
.data(data)
.enter()
.append("rect")
.attr("x", x(0) )
.attr("y", function(d) { return y(d.name); })
.attr("width", function(d) { return x(d.value); })
.attr("height", 32 )
.attr("fill", "#006CB7");
})
</script> </script>
</html> </html>

View File

@@ -3,15 +3,15 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal ŠOLAR</title> <title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css"> <link rel="stylesheet" href="../static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="/static/css/utils.css" type="text/css"> <link rel="stylesheet" href="../static/css/utils.css" type="text/css">
</head> </head>
<body> <body>
<div class="background"> <div class="background">
<div class="panel login-panel"> <div class="panel login-panel">
<div class="panel-logo"> <div class="panel-logo">
<img src="/static/image/logo.svg" alt="logo"/> <img src="../static/image/logo.svg" alt="logo"/>
</div> </div>
<h2 class="text-center">Portal za oddajanje besedil</h2> <h2 class="text-center">Portal za oddajanje besedil</h2>
<div class="line"></div> <div class="line"></div>
@@ -20,6 +20,14 @@
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje v pedagoški naziv.</em></div> <div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje v pedagoški naziv.</em></div>
<h1 class="m-b-3">Registracija</h1> <h1 class="m-b-3">Registracija</h1>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="alert">
<img src="../static/image/alert.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endwith %}
<div> <div>
<form method="POST" action="../register" class="m-b-2"> <form method="POST" action="../register" class="m-b-2">
<div class="input-wrapper"> <div class="input-wrapper">
@@ -64,17 +72,10 @@
<button class="btn" style="margin-left: 46px;">REGISTRACIJA</button> <button class="btn" style="margin-left: 46px;">REGISTRACIJA</button>
</form> </form>
</div> </div>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="alert">
<img src="/static/image/alert.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endwith %}
<div class="back-to-login"> <div class="back-to-login">
<img src="/static/image/chevron-left.svg"/> <img src="../static/image/chevron-left.svg"/>
<a href="/login">Nazaj na prijavo</a> <a href="../login">Nazaj na prijavo</a>
</div> </div>

View File

@@ -3,14 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal ŠOLAR</title> <title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/css/login-styles.css" type="text/css"> <link rel="stylesheet" href="../static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="/static/css/utils.css" type="text/css"> <link rel="stylesheet" href="../static/css/utils.css" type="text/css">
</head> </head>
<body> <body>
<div class="background"> <div class="background">
<div class="panel login-panel"> <div class="panel login-panel">
<div class="panel-logo"> <div class="panel-logo">
<img src="/static/image/logo.svg" alt="logo"/> <img src="../static/image/logo.svg" alt="logo"/>
</div> </div>
<h1 class="m-b-3">Ponastavitev gesla - ŠOLAR</h1> <h1 class="m-b-3">Ponastavitev gesla - ŠOLAR</h1>
<div> <div>

View File

@@ -3,16 +3,16 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Portal za oddajanje besedil</title> <title>Portal za oddajanje besedil</title>
<!--<link rel="stylesheet" href="/static/style.css" type="text/css">--> <!--<link rel="stylesheet" href="../static/style.css" type="text/css">-->
<script src="/static/chart.js"></script> <script src="../static/chart.js"></script>
<link rel="stylesheet" href="/static/css/header.css" type="text/css"> <link rel="stylesheet" href="../static/css/header.css" type="text/css">
<link rel="stylesheet" href="/static/css/form.css" type="text/css"> <link rel="stylesheet" href="../static/css/form.css" type="text/css">
<link rel="stylesheet" href="/static/css/simple-grid.css" type="text/css"> <link rel="stylesheet" href="../static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="/static/css/history.css" type="text/css"> <link rel="stylesheet" href="../static/css/history.css" type="text/css">
</head> </head>
<body> <body>
<header> <header>
<div class="logo"><a href="/"><img src="/static/image/logo-white.svg"/></a></div> <div class="logo"><a href="../"><img src="../static/image/logo-white.svg"/></a></div>
<div class="menu-items"> <div class="menu-items">
<a href="../logout">Odjava</a> <a href="../logout">Odjava</a>
{% if is_institution_coordinator %} {% if is_institution_coordinator %}
@@ -32,9 +32,9 @@
<div class="tab-nav"> <div class="tab-nav">
<a href="/oddaja">Oddaja besedil</a> <a href="../oddaja">Oddaja besedil</a>
<a href="/zgodovina" class="active">Zgodovina sodelovanja</a> <a href="../zgodovina" class="active">Zgodovina sodelovanja</a>
<a href="/pogodbe">Ekipa</a> <a href="../pogodbe">Ekipa</a>
</div> </div>
</div> </div>
</div> </div>
@@ -55,23 +55,23 @@
"PTI" : "Poklicno-tehnično izobraževanje (PTI)" "PTI" : "Poklicno-tehnično izobraževanje (PTI)"
}%} }%}
{% set map_subject = { {% set map_subject = {
"slo" : "Slovenščina", "SLO" : "Slovenščina",
"drug-jez" : "Drugi jezikoslovni predmeti", "DJP" : "Drugi jezikoslovni predmeti",
"drug-druz" : "Drugi družboslovni predmeti", "DDP" : "Drugi družboslovni predmeti",
"drug-narav" : "Drugi naravoslovni predmeti", "DNP" : "Drugi naravoslovni predmeti",
"drug-strok" : "Drugi strokovni predmeti", "DSP" : "Drugi strokovni predmeti",
"drug-izb" : "Drugi izbirni ali dodatni predmeti", "DIP" : "Drugi izbirni ali dodatni predmeti",
}%} }%}
{% set map_text_type = { {% set map_text_type = {
"esej-spis" : "Esej ali spis", "E" : "Esej ali spis",
"prakticno" : "Praktično besedilo, napisano za oceno", "PB" : "Praktično besedilo, napisano za oceno",
"solski-test" : "Šolski test", "T" : "Šolski test",
"delo-v-razredu" : "Delo v razredu, ne za oceno", "R" : "Delo v razredu, ne za oceno",
}%} }%}
{% set map_grammar_corrections = { {% set map_grammar_corrections = {
"popr-ne" : "Besedilo vsebuje učiteljske popravke", "DD" : "Besedilo vsebuje učiteljske popravke",
"brez-popr" : "Besedilo ne vsebuje učiteljskih popravkov", "N" : "Besedilo ne vsebuje učiteljskih popravkov",
"popr-da" : "Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus", "DN" : "Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus",
}%} }%}
@@ -111,9 +111,9 @@
<div class="history-item-date">Dodano {{ item.timestamp.strftime('%d. %m. %Y') }}</div> <div class="history-item-date">Dodano {{ item.timestamp.strftime('%d. %m. %Y') }}</div>
<div class="history-item-uploader">{{ uploader_names[loop.index - 1] }}</div> <div class="history-item-uploader">{{ uploader_names[loop.index - 1] }}</div>
<div class="history-item-filecount">Št. datotek: {{ item.upload_file_hashes|length }}</div> <div class="history-item-filecount">Št. datotek: {{ item.upload_file_hashes|length }}</div>
<div class="history-item-chevron"><img src="/static/image/chevron-down.svg"/></div> <div class="history-item-chevron"><img src="../static/image/chevron-down.svg"/></div>
<div class="history-item-desc"> <div class="history-item-desc">
{{ item_values | join(" | ") }} {{ item_values | join(" | ") |truncate(120) }}
</div> </div>
<div class="row"> <div class="row">
<div class="col-6" style="margin:0"> <div class="col-6" style="margin:0">
@@ -128,14 +128,24 @@
{% if item.upload_file_names != None %} {% if item.upload_file_names != None %}
{% for f_name in item.upload_file_names %} {% for f_name in item.upload_file_names %}
<div class="file-item"> <div class="file-item">
<div class="file-icon"><img src="/static/image/file.svg"/></div> <div class="file-icon"><img src="../static/image/file.svg"/></div>
<a href="getuploadfile/{{item.id}}/{{item.upload_file_hashes[loop.index - 1]}}" class="file-name">{{f_name}}</a> <a href="getuploadfile/{{item.id}}/{{item.upload_file_hashes[loop.index - 1]}}" class="file-name" {% if item.upload_file_codes != None %}download="{{item.upload_file_codes[loop.index - 1]}}.{{f_name.split('.')[1]}}"{%endif%}>
{% if item.upload_file_codes != None %}
{{item.upload_file_codes[loop.index - 1]}}.{{f_name.split('.')[1]}}
{%else%}
{{f_name}}
{% endif %}
</a>
</br>
{% if item.upload_file_codes != None %}
<!--<div>{{item.upload_file_codes[loop.index - 1]}}</div>-->
{% endif %}
</div> </div>
{% endfor %} {% endfor %}
{% else %} {% else %}
{% for f_hash in item.upload_file_hashes %} {% for f_hash in item.upload_file_hashes %}
<div class="file-item"> <div class="file-item">
<div class="file-icon"><img src="/static/image/file.svg"/></div> <div class="file-icon"><img src="../static/image/file.svg"/></div>
<a href="getuploadfile/{{item.id}}/{{f_hash}}" class="file-name">{{f_hash}}</a> <a href="getuploadfile/{{item.id}}/{{f_hash}}" class="file-name">{{f_hash}}</a>
</div> </div>
{% endfor %} {% endfor %}
@@ -165,7 +175,7 @@
<div id="rect1"> <div id="rect1">
<div style="padding: 20px;"> <div style="padding: 20px;">
<div id="logo-container"> <div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/> <img src="../static/image/logo.svg" alt="logo"/>
</div> </div>
<h1 id="title" style="font-size: 25px; position: relative;">Korpus ŠOLAR</h1> <h1 id="title" style="font-size: 25px; position: relative;">Korpus ŠOLAR</h1>
<div class="selection-tabs"> <div class="selection-tabs">