Finished manage institution site. Redone how cooperation history works.

This commit is contained in:
msinkec
2022-02-14 15:01:03 +01:00
parent 87f067b077
commit f898ee8d31
7 changed files with 197 additions and 123 deletions

View File

@@ -71,8 +71,7 @@ class UserCooperationHistory(db.Model):
user = db.Column(db.Integer, sqlalchemy.ForeignKey('registered_user.id'), nullable=False)
institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=False)
role = db.Column(db.String, nullable=False)
school_year = db.Column(db.String, nullable=False)
badge_text = db.Column(db.String, nullable=True)
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
class Institution(db.Model):

View File

@@ -300,7 +300,6 @@ class UploadHandlerSolar():
@staticmethod
def check_form(form):
logging.info(form)
region = form['regija']
program = form['program']
predmet = form['predmet']
@@ -529,10 +528,10 @@ def get_institution_contract(institution_id):
def get_institution_cooperation_history(institution_id):
return db.session.query(UserCooperationHistory.role,
UserCooperationHistory.school_year,
UserCooperationHistory.badge_text,
RegisteredUser.name,
items = db.session.query(UserCooperationHistory.role,
UserCooperationHistory.timestamp,
RegisteredUser.id,
RegisteredUser.name
).select_from(
UserCooperationHistory,
).join(
@@ -540,28 +539,59 @@ def get_institution_cooperation_history(institution_id):
UserCooperationHistory.user == RegisteredUser.id,
).filter(
UserCooperationHistory.institution == institution_id,
).order_by(UserCooperationHistory.school_year.desc()).all()
).order_by(UserCooperationHistory.timestamp.desc()).all()
res = []
prev_schoolyear = None
item_buff = []
users_seen = set()
for item in items:
timestamp = item.timestamp
year = timestamp.year
month = timestamp.month
if month >= 9 :
school_year = '{}/{}'.format(year, str(year+1)[-2:])
else:
school_year = '{}/{}'.format(year-1, str(year)[-2:])
if school_year != prev_schoolyear:
if len(item_buff) > 0:
res.append((prev_schoolyear, item_buff))
prev_schoolyear = school_year
item_buff = []
users_seen = set()
if not item.id in users_seen:
users_seen.add(item.id)
item_buff.append(item)
if len(item_buff) > 0:
res.append((prev_schoolyear, item_buff))
return res
def get_cooperation_history():
return UserCooperationHistory.query.all()
def add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text):
def add_cooperation_history_item(user_id, institution_id, role):
model_obj = UserCooperationHistory(
user=user_id,
institution=institution_id,
role=role,
school_year=school_year,
badge_text=badge_text
timestamp=datetime.now()
)
db.session.add(model_obj)
db.session.commit()
return model_obj.id
def del_cooperation_history_item(entry_id):
db.session.query(UserCooperationHistory).filter_by(id=entry_id).delete()
db.session.commit()
#def del_cooperation_history_item(entry_id):
# db.session.query(UserCooperationHistory).filter_by(id=entry_id).delete()
# db.session.commit()
def has_user_corpus_access(user_id, corpus_name):
user = RegisteredUser.query.filter_by(id=user_id).first()
@@ -597,7 +627,6 @@ def get_user_obj_by_email(email):
def get_institution_obj(institution_id):
return Institution.query.filter_by(id=institution_id).first()
def get_institution_obj_by_name(institution_name):
return Institution.query.filter_by(name=institution_name).first()
@@ -666,6 +695,12 @@ def update_user_role(user_id, role):
return rowcount
def update_user_institution_role(user_id, institution_id, role):
rowcount = db.session.query(UserInstitutionMapping).filter_by(user=user_id, institution=institution_id).update({'role': role})
db.session.commit()
return rowcount
def update_user_email(user_id, new_email):
rowcount = db.session.query(RegisteredUser).filter_by(id=user_id).update({'email': new_email})
db.session.commit()
@@ -708,6 +743,22 @@ def del_user_from_institution(user_id, institution_id):
db.session.commit()
def get_user_institution_role_str(user_id, institution_id):
res = UserInstitutionMapping.query.filter_by(
user=user_id
).filter_by(
institution=institution_id
).first()
if not res:
return ''
role_str_map = {
'coordinator': 'Koordinator/-ka',
'mentor': 'Mentor/-ica',
'other': 'Druga vloga'
}
return role_str_map[res.role]
def get_all_active_users():
return RegisteredUser.query.filter_by(active=True).order_by(RegisteredUser.id).all()
@@ -722,7 +773,6 @@ def get_all_users_join_institutions(active=True):
RegisteredUser.id == UserInstitutionMapping.user).filter(RegisteredUser.active == active).order_by(RegisteredUser.id).all()
def get_all_active_institution_users(institution_id):
return RegisteredUser.query.filter_by(active=True).join(UserInstitutionMapping,
RegisteredUser.id == UserInstitutionMapping.user).filter(UserInstitutionMapping.institution == institution_id).all()