def __init__(self, *args, **kwargs): arg = kwargs.pop('request', None) super(ExternalTeacherForm, self).__init__(*args, **kwargs) session = arg.session deps = session['departments'] choices = [(d['acronym'], d['acronym']) for d in deps] self.fields['department'].widget = Select(choices=choices) # Labels internationalization self.fields['ist_id'].label = _('IST ID') self.fields['name'].label = _('name') self.fields['semester'].label = _('semester') self.fields['hours_per_week'].label = _('hours_per_week') self.fields['department'].label = _('department') self.fields['degree'].label = _('degree') self.fields['course'].label = _('course') self.fields['course_manager'].label = _('course_manager') self.fields['costs_center'].label = _('costs_center') self.fields['notes'].label = _('notes') instance = kwargs.pop('instance', None) if instance: semester_initial = instance.id else: semester_initial = Semester.get_or_create_current().id semester_choices = [(s.id, s.get_display()) for s in Semester.get_current_and_future()] self.fields['semester'].initial = semester_initial self.fields['semester'].widget = Select(choices=semester_choices)
def get_semester_key(self, semester, campus_keys): """ Get (or create) the campus key based on which is available :param semester: The semester used to generate the key :param campus_keys: The campus to save in the database """ logging.info("Saving/updating semester %s", semester.name) db_key = self.generate_semester_key(semester) modified = False logging.debug("Getting (or even inserting) semester from the database") semester_model = semesters.get_semester(db_key) if semester_model is None: semester_model = Semester( key=ndb.Key(Semester, db_key), name=semester.name, campi=[] ) """ :type: app.models.Semester """ if sorted(map(ndb.Key.id, semester_model.campi)) != sorted(map(ndb.Key.id, campus_keys)): modified = True logging.debug("Detected changed list of campus....") semester_model.campi = campus_keys logging.warning("Saving to NDB (saving semester '%s')", semester.name) yield semester_model.put_async(options=context_options) semesters.get_semester(db_key, overwrite=True, update_with=semester_model) raise ndb.Return({ "modified": modified, "key": semester_model.key, "model": semester_model })
def add_exam(lessonid): """Route to either display the form to upload exams or create a new Exam object **NOTE: THIS DOES NOT ACTUALLY UPLOAD THE FILE. THAT IS DONE VIA AJAX**""" form = AddExamForm() try: lesson = Lesson.get(Lesson.id == lessonid) except: flash('Id not found', 'error') return redirect(url_for('auth_bp.profile')) if form.validate_on_submit(): Exam.create(average_grade=-1, filename=form.filename.data, s3_filename=form.file_hash.data, lesson=lesson.id, publisher=g.user.user_id, number_of_takers=-1, year=datetime.now().year, semester=Semester.current_semester().value, description=form.description.data) g.user.karma_points += KarmaPoints.upload_exam.value g.user.save() return redirect(url_for(".view", lessonid=lesson.id)) return render_template("exams/add-exam.html", form=form)
def add_note(lessonid): """Route to render AddNoteForm or process AddNoteForm to create a Note **NOTE: This does not actually upload the file to S3. That is done via AJAX.** """ form = AddNoteForm() if form.validate_on_submit(): # TODO: Add error handling filename = form.filename.data month = datetime.now().month semester = Semester.current_semester() print(form.file.data) note = Note.create(filename=filename, s3_filename=form.file_hash.data, uploader=g.user.user_id, description=form.description.data, lesson=lessonid, semester=semester.value, year=datetime.now().year, original_filename=form.file.data.filename) g.user.karma_points += KarmaPoints.upload_note.value g.user.save() return redirect(url_for(".view", lessonid=lessonid)) return render_template('notes/add_note.html', form=form)
def create_event(): """ Event create view """ form = CreateEventForm(request.form) if request.method == 'POST' and form.validate(): try: format_string = '%Y-%m-%dT%H:%M' name = str(request.form['name']) year = int(request.form['year']) semester = Semester(int(request.form['semester'])) specialslot = int(request.form['special_slots']) specialslotname = str(request.form['special_slots_name']) specialslotdescription = str( request.form['special_slots_description']) timestamp = datetime.now() opensignuptimestamp = datetime.strptime( str(request.form['open_signup_timestamp']), format_string) closesignuptimestamp = datetime.strptime( str(request.form['close_signup_timestamp']), format_string) place = str(request.form['place']) participationfee = str(request.form['participation_fee']) signup_open = False active = False except Exception as e: print(e) return render_template('error.html', message=str( request.form['opensignuptimestamp'])) try: event = Events(name=name, year=year, special_slots=specialslot, special_slots_name=specialslotname, special_slots_description=specialslotdescription, place=place, semester=semester, creation_timestamp=timestamp, signup_open=signup_open, active=active, participation_fee=participationfee, open_signup_timestamp=opensignuptimestamp, close_signup_timestamp=closesignuptimestamp) db.session.add(event) db.session.commit() except Exception as e: print(e) return render_template('error.html') return redirect(url_for('admin')) return render_template('create_event.html', form=form)
def updatetable(): semester_obj = Semester.query.filter_by(semester_no=request.form['semester']).first() if semester_obj: subject = Subject(subjectname=request.form['subject'], teachername=request.form['teacher'], day=request.form['day'], room=request.form['room'], timing=request.form['timing'], semester_name=semester_obj) db.session.add(subject) db.session.commit() else: semester_obj = Semester(semester_no=request.form['semester']) subject = Subject(subjectname=request.form['subject'], teachername=request.form['teacher'], day=request.form['day'], room=request.form['room'], timing=request.form['timing'], semester_name=semester_obj) db.session.add(subject) db.session.commit() return ""
def attend(cls, user_id, lesson_ids): """Class method to create LessonStudent objects for every lesson a user wants to attend""" users_school = User.get(User.user_id == user_id).school_id for lesson_id in lesson_ids: lesson = Lesson.get(Lesson.id == lesson_id) if lesson.school_id != users_school: raise ValueError( "Lesson id {} does not corrospond to the same school as the user" .format(lesson.school_id)) for lesson_id in lesson_ids: semester = Semester.current_semester() LessonStudent.create(student_id=user_id, lesson_id=lesson_id, semester=semester.value, year=datetime.now().year)
def semester_create(): form = SemesterFormCreate() if form.validate_on_submit(): semester = Semester( name=form.name.data, display_name=form.display_name.data, semester=form.semester.data, # is_closed=form.is_closed.data, annual_id=form.annual_id.data # latest_update ) db.session.add(semester) db.session.commit() flash('Created and Saved Successfully.', 'alert-success') return redirect(url_for('semester_view', id=semester.id)) return render_template('basic-forms/semester/create.html', title='Semester Create', form=form)
def add_semester(user_id): body = request.get_json() # find user real_user = db.session.query(User).get(user_id) # see if user exists if real_user: # user found, create new semester newSemester = Semester( userID = user_id, semesterName = body['semester_name'] ) db.session.add(newSemester) db.session.commit() return jsonify() # user not found return jsonify(msg = "user not found"), HTTPStatus.BAD_REQUEST
def edit_event(event_id): """ Admin edit event, allows to do changes on an already created event """ event = Events.query.get_or_404(event_id) form = CreateEventForm(request.form, obj=event) form.special_slots.data = str(int(event.special_slots)) form.semester.data = str(event.semester.value) if request.method == 'POST' and form.validate(): try: form.populate_obj(event) semester = Semester(int(request.form['semester'])) event.special_slots = int(request.form['special_slots']) event.semester = semester db.session.commit() except Exception as e: print('Exception of type {} occurred: {}'.format(type(e), str(e))) return render_template('error.html') return redirect(request.referrer) return render_template('edit_event.html', form=form, event=event)
def duplicate_semester(semester): # new_name = semester.name + ' - ' + datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'), new_name = semester.name # remove (***) from name new_semester = Semester( name = new_name, display_name = semester.display_name, semester = semester.semester, latest_update = datetime.utcnow(), annual_id = semester.annual_id ) db.session.add(new_semester) db.session.commit() # add children msg_units = '' for unit in semester.units: msg_units = msg_units + duplicate_unit(unit, new_semester) + ' - ' msg = ' S: ' + str(new_semester.id) + ' (' + msg_units + ' ) ' return [new_semester, msg]
# Script to create the semesters from app.models import Semester # Create more N semesters N = 20 semester = Semester.get_or_create_current() new_semester = semester for i in range(0, N): new_semester = new_semester.get_or_create_next() print('Created new semester ' + new_semester.get_display())
def get_context_for_list(external_teachers, view): context = constants.POSSIBLE_ACTIONS[view] context['external_teachers'] = external_teachers context['current_semester'] = Semester.get_or_create_current() context['semesters'] = Semester.objects.all() return context
def save_semester_by_kurs(kurs_name): jwt_claims = get_jwt_claims() if jwt_claims['role'] != 'admin': return jsonify({"msg": "Permission denied"}), 403 kurs = Kurs.query.filter_by(name=kurs_name).first() if kurs is None: return jsonify({"msg": 'The kurs ' + kurs_name + ' does not exist'}), 404 if len(kurs.semester) > 6: return jsonify({ "msg": 'The kurs ' + kurs_name + ' has reached the maximum amount of semester (6)' }), 404 for obj in request.json.get("semesters", []): semesterID = obj.get("semesterID", None) start = obj.get("start") start = date.fromtimestamp(start) ende = obj.get("ende") ende = date.fromtimestamp(ende) id = obj.get("id", None) existingSemester = Semester.query.filter( and_(Semester.semesterID == semesterID, Semester.kurs_name == kurs.name)).first() if existingSemester is not None and existingSemester.id != id: return jsonify({ "msg": 'A Semester with the given semesterID already exists for the given kurs' }), 400 # If id is given update already existing row in database otherwise its a new semester if id is not None: semester = Semester.query.filter(Semester.id == id) if semester is None: return jsonify( {"msg": 'Semester with id ' + id + ' does not exist yet'}), 400 semester.update({ "semesterID": semesterID, "kurs_name": kurs_name, "start": start, "ende": ende }) else: semester = Semester(semesterID=semesterID, kurs_name=kurs_name, start=start, ende=ende) db.session.add(semester) db.session.commit() semesters_out = [] semesters = Semester.query.filter(Semester.kurs_name == kurs.name).all() for semester in semesters: semesters_out.append(semester.to_public()) return jsonify({"msg": "Semesters saved", "semesters": semesters_out}), 201