|
|
|
@ -163,6 +163,7 @@ def index_corpus(corpus_name):
|
|
|
|
|
if corpus_name not in ENABLED_CORPUSES:
|
|
|
|
|
return 'Korpus "{}" ne obstaja.'.format(corpus_name), 404
|
|
|
|
|
|
|
|
|
|
description = ""
|
|
|
|
|
if corpus_name == 'prevodi':
|
|
|
|
|
description = DESC_PREVODI
|
|
|
|
|
elif corpus_name == 'gigafida':
|
|
|
|
@ -253,19 +254,22 @@ def solar_register_post():
|
|
|
|
|
flash('Predolgo geslo.')
|
|
|
|
|
return redirect('/solar/register')
|
|
|
|
|
|
|
|
|
|
if not institution:
|
|
|
|
|
flash('Institucija ne obstaja.')
|
|
|
|
|
return redirect('/solar/register')
|
|
|
|
|
|
|
|
|
|
if institution_role not in ['coordinator', 'mentor', 'other']:
|
|
|
|
|
flash('Neveljavna vloga v instituciji.')
|
|
|
|
|
return redirect('/solar/register')
|
|
|
|
|
|
|
|
|
|
if not institution:
|
|
|
|
|
institution_id = portal.base.add_institution(institution_name, "")
|
|
|
|
|
portal.base.grant_institution_corpus_access(institution_id, "solar")
|
|
|
|
|
else:
|
|
|
|
|
institution_id = institution.id
|
|
|
|
|
|
|
|
|
|
user_id = portal.base.register_new_user(name, email, password, active=False)
|
|
|
|
|
portal.base.add_user_to_institution(user_id, institution.id, institution_role)
|
|
|
|
|
portal.base.add_user_to_institution(user_id, institution_id, institution_role)
|
|
|
|
|
|
|
|
|
|
portal.base.send_admins_new_user_notification_mail(user_id, upload_handler_solar.config)
|
|
|
|
|
|
|
|
|
|
flash('Uspešna registracija.')
|
|
|
|
|
flash('Podatki so bili poslani v potrditev. Ko bo registracija potrjena, boste o tem obveščeni po e-mailu, ki ste ga posredovali zgoraj.')
|
|
|
|
|
return redirect('/solar/login')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -300,11 +304,13 @@ def solar(text):
|
|
|
|
|
institution_contract=institution_contract,
|
|
|
|
|
is_institution_coordinator=current_user_institution_coordinator)
|
|
|
|
|
elif text.startswith('zgodovina/') or text == 'zgodovina':
|
|
|
|
|
upload_items = portal.solar.get_upload_history(current_user.id)
|
|
|
|
|
upload_items = []
|
|
|
|
|
if current_user_institution:
|
|
|
|
|
upload_items = portal.solar.get_institution_upload_history(current_user_institution.id, n=1000)
|
|
|
|
|
uploader_names = []
|
|
|
|
|
institution_names = []
|
|
|
|
|
for item in upload_items:
|
|
|
|
|
uploader_names.append(portal.base.get_user_obj(current_user.id).name)
|
|
|
|
|
uploader_names.append(portal.base.get_user_obj(item.upload_user).name)
|
|
|
|
|
institution = portal.base.get_institution_obj(item.institution)
|
|
|
|
|
if not institution:
|
|
|
|
|
institution_names.append(None)
|
|
|
|
@ -358,6 +364,7 @@ def solar(text):
|
|
|
|
|
show_upload_form=show_upload_form,
|
|
|
|
|
collaborators=collaborators,
|
|
|
|
|
cooperation_history=cooperation_history,
|
|
|
|
|
user_id=current_user.id,
|
|
|
|
|
is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator)
|
|
|
|
|
elif text.startswith('admin/') or text == 'admin':
|
|
|
|
|
users = portal.base.get_all_users_join_institutions()
|
|
|
|
@ -378,7 +385,9 @@ def solar(text):
|
|
|
|
|
@app.route('/solar/pogodbe', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def solar_upload_contract():
|
|
|
|
|
return upload_handler_solar.handle_contract_upload(request, current_user.get_id())
|
|
|
|
|
msg = upload_handler_solar.handle_contract_upload(request, current_user.get_id())
|
|
|
|
|
flash(msg)
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/adduser', methods=['POST'])
|
|
|
|
@ -416,6 +425,12 @@ def solar_add_user():
|
|
|
|
|
flash('Predolgo geslo.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
user = portal.base.get_user_obj_by_email(email)
|
|
|
|
|
if user:
|
|
|
|
|
#portal.base.undo_remove_user(user.id)
|
|
|
|
|
flash('Uporabnik s tem emailom je že vnešen v sistem.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
portal.base.register_new_user(name, email, password)
|
|
|
|
|
|
|
|
|
|
flash('Uporabnik je bil uspešno dodan.')
|
|
|
|
@ -437,6 +452,8 @@ def solar_activate_user():
|
|
|
|
|
if rowcount == 0:
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
portal.base.send_user_activation_mail(user_id, upload_handler_solar.config)
|
|
|
|
|
|
|
|
|
|
flash('Uporabnik je bil aktiviran.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
@ -494,23 +511,21 @@ def solar_del_user():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
user_id = request.form.get('user_id')
|
|
|
|
|
portal.base.del_user(user_id)
|
|
|
|
|
portal.base.remove_user(user_id)
|
|
|
|
|
flash('Uporabnik je bil odstranjen.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/<corpus_name>/addinstitution', methods=['POST'])
|
|
|
|
|
@app.route('/solar/addinstitution', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def add_institution(corpus_name):
|
|
|
|
|
def add_institution():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
if not corpus_name in ENABLED_CORPUSES:
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
name = request.form.get('name')
|
|
|
|
|
region = request.form.get('region')
|
|
|
|
|
|
|
|
|
|
if not name:
|
|
|
|
|
flash('Prazno polje za ime.')
|
|
|
|
|
flash('Prazno polje za naziv.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
if len(name) > 100:
|
|
|
|
|
flash('Predolgo ime.')
|
|
|
|
@ -521,10 +536,142 @@ def add_institution(corpus_name):
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
institution_id = portal.base.add_institution(name, region)
|
|
|
|
|
portal.base.grant_institution_corpus_access(institution_id, corpus_name)
|
|
|
|
|
portal.base.grant_institution_corpus_access(institution_id, "solar") # TODO: throw out
|
|
|
|
|
flash('Institucija je bila dodana.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/mergeinstitutions', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def merge_institutions():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
id_from = request.form.get('id-from')
|
|
|
|
|
id_to = request.form.get('id-to')
|
|
|
|
|
|
|
|
|
|
if not id_from or not id_to:
|
|
|
|
|
flash('Prazno polje.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
institution_from = portal.base.get_institution_obj(id_from)
|
|
|
|
|
institution_to = portal.base.get_institution_obj(id_to)
|
|
|
|
|
|
|
|
|
|
if not institution_from:
|
|
|
|
|
flash('Institucija z ID "{}" ne obstaja.'.format(id_from))
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
if not institution_to:
|
|
|
|
|
flash('Institucija z ID "{}" ne obstaja.'.format(id_to))
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
portal.base.transfer_users_institution(institution_from.id, institution_to.id)
|
|
|
|
|
portal.base.transfer_uploads_institution(institution_from.id, institution_to.id)
|
|
|
|
|
portal.base.transfer_contracts_institution(institution_from.id, institution_to.id)
|
|
|
|
|
portal.base.remove_institution(institution_from.id)
|
|
|
|
|
|
|
|
|
|
flash('Instituciji uspešno združeni')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/addcooperationhistoryitem', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def add_cooperation_history_item():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
user_id = request.form.get('user')
|
|
|
|
|
institution_id = request.form.get('institution')
|
|
|
|
|
role = request.form.get('role')
|
|
|
|
|
school_year = request.form.get('school-year')
|
|
|
|
|
badge_text = request.form.get('badge-text')
|
|
|
|
|
|
|
|
|
|
user = portal.base.get_user_obj(user_id)
|
|
|
|
|
institution = portal.base.get_institution_obj(institution_id)
|
|
|
|
|
|
|
|
|
|
if not user:
|
|
|
|
|
flash('Uporabnik s tem ID-jem ne obstaja.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
if not institution:
|
|
|
|
|
flash('Institucija s tem ID-jem ne obstaja.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
if not role in ['coordinator', 'mentor', 'other']:
|
|
|
|
|
flash('Neveljavna vloga "{}".'.format(role))
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
if not school_year or not re.match('[0-9]{4}/[0-9]{2}', school_year):
|
|
|
|
|
flash('Šolsko leto mora biti formata "2021/22".')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
portal.base.add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text)
|
|
|
|
|
|
|
|
|
|
flash('Vnos dodan.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/delcooperationhistoryitem', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def del_cooperation_history_item():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
entry_id = request.form.get('entry-id')
|
|
|
|
|
portal.base.del_cooperation_history_item(entry_id)
|
|
|
|
|
|
|
|
|
|
flash('Vnos odstranjen.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/changeuseremail', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def change_user_email():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
user_id = request.form.get('user-id')
|
|
|
|
|
email = request.form.get('email')
|
|
|
|
|
|
|
|
|
|
if not re.search(portal.base.REGEX_EMAIL, email):
|
|
|
|
|
flash('Email napačnega formata.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
portal.base.update_user_email(user_id, email)
|
|
|
|
|
|
|
|
|
|
flash('Email spremenjen.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/changeuserrole', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def change_user_role():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
user_id = request.form.get('user-id')
|
|
|
|
|
role = request.form.get('role')
|
|
|
|
|
|
|
|
|
|
if not role in ['admin', 'user']:
|
|
|
|
|
flash('Neveljavna vloga.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
portal.base.update_user_role(user_id, role)
|
|
|
|
|
|
|
|
|
|
flash('Vloga spremenjena.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/solar/changeusername', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def change_user_name():
|
|
|
|
|
if not portal.base.is_admin(current_user.id):
|
|
|
|
|
return '', 404
|
|
|
|
|
|
|
|
|
|
user_id = request.form.get('user-id')
|
|
|
|
|
name = request.form.get('name')
|
|
|
|
|
|
|
|
|
|
portal.base.update_user_name(user_id, name)
|
|
|
|
|
|
|
|
|
|
flash('Ime in priimek spremenjena.')
|
|
|
|
|
return redirect(redirect_url())
|
|
|
|
|
|
|
|
|
|
@app.route('/<corpus_name>/addusertoinstitution', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def add_user_institution_mapping(corpus_name):
|
|
|
|
|