server name config, top uploads for instituion, institution upload stats endpoint
This commit is contained in:
parent
2bbeaacb76
commit
6cd69c5d4b
19
app.py
19
app.py
|
@ -26,6 +26,7 @@ config = configparser.ConfigParser()
|
|||
config.read('config.ini')
|
||||
config = config['DEFAULT']
|
||||
|
||||
SERVER_NAME = config['SERVER_NAME']
|
||||
MAIL_HOST = config['MAIL_HOST']
|
||||
MAIL_LOGIN = config['MAIL_LOGIN']
|
||||
MAIL_PASS = config['MAIL_PASS']
|
||||
|
@ -47,6 +48,8 @@ if not UPLOADS_DIR.exists:
|
|||
UPLOADS_DIR.mkdir(parents=True)
|
||||
|
||||
# Override configs with environment variables, if set
|
||||
if 'PORTALDS4DS1_SERVER_NAME' in os.environ:
|
||||
SERVER_NAME = os.environ['PORTALDS4DS1_SERVER_NAME']
|
||||
if 'PORTALDS4DS1_MAIL_HOST' in os.environ:
|
||||
MAIL_HOST = os.environ['PORTALDS4DS1_MAIL_HOST']
|
||||
if 'PORTALDS4DS1_MAIL_LOGIN' in os.environ:
|
||||
|
@ -80,6 +83,7 @@ if 'PORTALDS4DS1_SQL_CONN_STR' in os.environ:
|
|||
app = Flask(__name__)
|
||||
|
||||
app.config.update(
|
||||
SERVER_NAME = SERVER_NAME,
|
||||
SECRET_KEY = APP_SECRET_KEY,
|
||||
UPLOADED_PATH = UPLOADS_DIR,
|
||||
MAX_CONTENT_LENGTH = MAX_UPLOAD_SIZE,
|
||||
|
@ -99,6 +103,7 @@ manager.add_command('db', MigrateCommand)
|
|||
dropzone = Dropzone(app)
|
||||
|
||||
upload_handler_solar = portal.solar.UploadHandlerSolar(
|
||||
SERVER_NAME = SERVER_NAME,
|
||||
UPLOADS_DIR=UPLOADS_DIR,
|
||||
MAIL_HOST=MAIL_HOST,
|
||||
MAIL_LOGIN=MAIL_LOGIN,
|
||||
|
@ -305,8 +310,6 @@ def solar(text):
|
|||
show_upload_form = True
|
||||
contract_school = portal.solar.get_institution_contract(current_user_institution.id)
|
||||
cooperation_history = portal.solar.get_institution_cooperation_history(current_user_institution.id)
|
||||
logging.info('TEEEEEEEEEEEEEEEEEEEEEEEsst')
|
||||
logging.info(cooperation_history[0].name)
|
||||
if portal.solar.is_institution_coordinator(current_user_obj.id, current_user_institution.id):
|
||||
contracts_students = portal.solar.get_institution_student_contracts(current_user_institution.id)
|
||||
enable_upload_school_contract = True
|
||||
|
@ -461,10 +464,16 @@ def solar_topuploads():
|
|||
return jsonify(portal.solar.get_top_uploading_institutions())
|
||||
|
||||
|
||||
@app.route('/topuploads-by-user')
|
||||
@app.route('/topuploads-institution/<institution_id>')
|
||||
@login_required
|
||||
def solar_topuploads_by_user():
|
||||
return jsonify(portal.solar.get_top_uploading_users())
|
||||
def solar_topuploads_institution(institution_id):
|
||||
return jsonify(portal.solar.get_top_uploading_users(institution_id))
|
||||
|
||||
|
||||
@app.route('/uploadstats-institution/<institution_id>')
|
||||
@login_required
|
||||
def solar_uploadstats_institution(institution_id):
|
||||
return jsonify(portal.solar.get_institution_upload_stats(institution_id))
|
||||
|
||||
|
||||
@app.route('/deluser', methods=['POST'])
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[DEFAULT]
|
||||
SERVER_NAME=localhost:5000
|
||||
SQL_CONN_STR=postgresql://portal:randompass123@localhost/portal
|
||||
MAIL_HOST=posta.cjvt.si
|
||||
MAIL_LOGIN=oddaja-besedil@cjvt.si
|
||||
|
|
|
@ -4,6 +4,7 @@ services:
|
|||
build: .
|
||||
restart: always
|
||||
environment:
|
||||
- PORTALDS4DS1_SERVER_NAME=localhost:5000
|
||||
- PORTALDS4DS1_SQL_CONN_STR=postgresql://portal:randompass123@db/portal
|
||||
- PORTALDS4DS1_MAIL_HOST=posta.cjvt.si
|
||||
- PORTALDS4DS1_MAIL_LOGIN=oddaja-besedil@cjvt.si
|
||||
|
|
|
@ -458,9 +458,9 @@ def get_top_uploading_institutions():
|
|||
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
|
||||
|
||||
|
||||
def get_top_uploading_users():
|
||||
def get_top_uploading_users(institution_id):
|
||||
res = dict()
|
||||
users = get_all_active_users()
|
||||
users = get_all_active_institution_users(institution_id)
|
||||
for user in users:
|
||||
uploads = UploadSolar.query.filter_by(upload_user=user.id).all()
|
||||
for upload in uploads:
|
||||
|
@ -472,6 +472,27 @@ def get_top_uploading_users():
|
|||
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
|
||||
|
||||
|
||||
def get_institution_upload_stats(institution_id):
|
||||
res = {
|
||||
'region': [],
|
||||
'program': [],
|
||||
}
|
||||
|
||||
# Region
|
||||
for region in VALID_REGIONS:
|
||||
count = UploadSolar.query.filter_by(institution=institution_id, region=region).count()
|
||||
res['region'].append((region, count))
|
||||
res['region'] = sorted(res['region'], key=lambda x:x[1], reverse=True)
|
||||
|
||||
# Program
|
||||
for program in VALID_PROGRAMS:
|
||||
count = UploadSolar.query.filter_by(institution=institution_id, program=program).count()
|
||||
res['program'].append((program, count))
|
||||
res['program'] = sorted(res['program'], key=lambda x:x[1], reverse=True)
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def get_all_active_users():
|
||||
# TODO: do filtering purely within an SQL query
|
||||
res = []
|
||||
|
@ -785,8 +806,7 @@ def send_resetpass_mail(email, config):
|
|||
body = '''
|
||||
Zahtevali ste ponastavitev gesla vašega uporabniškega računa.
|
||||
|
||||
Geslo lahko ponastavite na naslednji povezavi: http://proc1.cjvt.si:5000/resetpass/{}'''.format(jwt_token)
|
||||
logging.info(body)
|
||||
Geslo lahko ponastavite na naslednji povezavi: https://{}/resetpass/{}'''.format(config['SERVER_NAME'], jwt_token)
|
||||
message = MIMEMultipart()
|
||||
message['From'] = config['MAIL_LOGIN']
|
||||
message['To'] = email
|
||||
|
|
Loading…
Reference in New Issue
Block a user