def schedule_add(request, module_id): module = check_owner(request, module_id) ActivityScheduleFormSet = formset_factory(ActivityScheduleForm, extra=0) if request.method == 'POST': form = ScheduleForm(request.POST) formset = ActivityScheduleFormSet(request.POST) if form.is_valid() and formset.is_valid(): schedule = Schedule() schedule.module = module schedule.title = form.cleaned_data.get("title").strip() schedule.default = form.cleaned_data.get("default") schedule.created_by = request.user # remvoe any existing default for this schedule if schedule.default: Schedule.objects.filter(module=module).update(default=False) schedule.save() for f in formset: act_sched = ActivitySchedule() start_date = f.cleaned_data.get("start_date") end_date = f.cleaned_data.get("end_date") digest = f.cleaned_data.get("digest") if start_date is not None: act_sched = ActivitySchedule() act_sched.schedule = schedule act_sched.start_date = start_date act_sched.end_date = end_date act_sched.digest = digest.strip() act_sched.save() return HttpResponseRedirect('../saved/') else: activities = Activity.objects.filter(section__module=module) initial = [] section = None start_date = datetime.datetime.now() end_date = datetime.datetime.now() + datetime.timedelta(days=7) for a in activities: if a.section != section: section = a.section start_date = start_date + datetime.timedelta(days=7) end_date = end_date + datetime.timedelta(days=7) data = {} data['title'] = a.title data['digest'] = a.digest data['section'] = a.section.title data['start_date'] = start_date data['end_date'] = end_date initial.append(data) form = ScheduleForm() formset = ActivityScheduleFormSet(initial=initial) return render(request, 'learning_modules/schedule-form.html', { 'form': form, 'formset': formset, 'module': module, })
def fillschedule(request): if request.POST: form = ScheduleForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('update_done.html') else: form = ScheduleForm() args = {} args.update(csrf(request)) args['form'] = form return render_to_response('updateschedule.html', args)
def home(): form = ScheduleForm() checkValidation = form.validate_on_submit() if checkValidation: flash( f'Schedule will be made for {form.class1.data}, {form.class2.data}, {form.class3.data}', 'success') classes = [] classes.append(form.class1.data) classes.append(form.class2.data) classes.append(form.class3.data) classes.append(form.class4.data) classes.append(form.class5.data) classes.append(form.class6.data) classes.append(form.class7.data) sched = makeSchedule() schedList = sched.create_schedule(classes) print(schedList) print(classes) length = len(schedList) return render_template('schedule.html', title='Schedule Maker - Schedule', schedules=schedList, length=length) print(form.errors) print(checkValidation) return render_template('home.html', title='Schedule Maker - Home', form=form)
def get(self, request, tourney_uuid): tourney = Tournament.objects.get(uuid=tourney_uuid) # Make sure that the user has admin rights for this tourney. if not tourney.is_user_admin(request.user): return HttpResponseForbidden( "Only the tournament administrator can do that.") if not tourney.is_open: return HttpResponseForbidden("This tournament is closed.") schedule_form = ScheduleForm(request.GET) if schedule_form.is_valid(): json_response = DatabaseSchedule().get(self.request).content games = json.loads(json_response) else: games = None add_prop_form = PropositionForm(initial={"tournament": tourney.id}) game_schedule_form = GameScheduleForm() GameDatabaseFormset = formset_factory(GameDatabaseForm, extra=0) if games: formset = GameDatabaseFormset(initial=games["games"]) else: formset = None game_seasons = GameSeason.objects.all() return render( self.request, self.template_name, { "tourney": tourney, "now": datetime.datetime.now(), "add_prop_form": add_prop_form, "user_is_admin": True, "game_seasons": game_seasons, "game_schedule_form": game_schedule_form, "games": games, "formset": formset })
def edit_schedule(request): form = ScheduleForm() if request.method == 'POST': form = ScheduleForm(request.POST) if form.is_valid(): cd = form.cleaned_data request.user.classes = [] if cd.get('new_classes'): for cls_num in cd['new_classes']: request.user.classes.create( period=cd['p_' + str(cls_num)], teacher=cd['teacher_' + str(cls_num)], dif=cd['dif_' + str(cls_num)], subject=cd['subject_' + str(cls_num)]) if cd.get('old_classes'): for cls_num in cd['old_classes']: request.user.classes.add(cd['class_' + str(cls_num)]) return HttpResponseRedirect(reverse('home')) return render_to_response('edit_sched.html', {'form': form}, context_instance=RequestContext(request))
def addSchedule(): if globals()['cur_user'] == "admin": form = ScheduleForm() if form.validate_on_submit(): email, date, time, examid, slot = form.email.data, form.date.data, form.time.data, form.examid.data, form.slot.data res = AddSchedule(email, date, time, examid, slot) flash(res) return redirect(url_for("addSchedule")) return render_template('add_slot.html', form=form, ddtext='Add Slot') else: flash("Login as admin to add schedule.") return redirect(url_for("login"))
def get(self, request): form = ScheduleForm(request.GET) if form.is_valid(): game_types = form.get_game_type() _from = form.cleaned_data["start_time"] to = form.cleaned_data["end_time"] combined_query = reduce( operator.or_, [Q(game_type=game_type) for game_type in game_types], Q(game_type="")) games = list( Game.objects.filter(combined_query).filter( start_time__range=(_from, to)).values()) return self.render_to_response({"games": games}) else: return self.render_to_response({ "request_error": form.errors, "games": [] })
def schedule_edit(request, module_id, schedule_id): module = check_owner(request, module_id) schedule = Schedule.objects.get(pk=schedule_id) ActivityScheduleFormSet = formset_factory(ActivityScheduleForm, extra=0) activities = Activity.objects.filter(section__module=module) if request.method == 'POST': form = ScheduleForm(request.POST) formset = ActivityScheduleFormSet(request.POST) if form.is_valid() and formset.is_valid(): schedule.title = form.cleaned_data.get("title").strip() schedule.default = form.cleaned_data.get("default") schedule.lastupdated_date = datetime.datetime.now() # remvoe any existing default for this schedule if schedule.default: Schedule.objects.filter(module=module).update(default=False) schedule.save() # remove all the old schedule Activities ActivitySchedule.objects.filter(schedule=schedule).delete() for f in formset: act_sched = ActivitySchedule() start_date = f.cleaned_data.get("start_date") end_date = f.cleaned_data.get("end_date") digest = f.cleaned_data.get("digest") if start_date is not None: act_sched = ActivitySchedule() act_sched.schedule = schedule act_sched.start_date = start_date act_sched.end_date = end_date act_sched.digest = digest.strip() act_sched.save() return HttpResponseRedirect('../saved/') else: initial = [] section = None for a in activities: if a.section != section: section = a.section data = {} data['title'] = a.title data['digest'] = a.digest data['section'] = a.section.title try: act_s = ActivitySchedule.objects.get(schedule=schedule, digest=a.digest) start_date = act_s.start_date end_date = act_s.end_date except ActivitySchedule.DoesNotExist: start_date = None end_date = None data['start_date'] = start_date data['end_date'] = end_date initial.append(data) form = ScheduleForm(initial={ 'title': schedule.title, 'default': schedule.default }) formset = ActivityScheduleFormSet(initial=initial) return render(request, 'learning_modules/schedule-form.html', { 'form': form, 'formset': formset, 'module': module, })
def update(username): """update schedules""" form = ScheduleForm(obj=request.json, prefix="schedule") if form.validate(): date_exp_weekly = form.date_exp_weekly.data date_exp_dates = form.date_exp_dates.data date_exp_dates_list = date_exp_dates.split( ",") if len(date_exp_dates) > 0 else [] for date in date_exp_dates_list: # remove dates before today if date < datetime.date.today().isoformat(): date_exp_dates_list.remove(date) if len(date_exp_weekly) == 0 and len(date_exp_dates_list) == 0: form.date_exp_weekly.errors.append( "Must choose a day of the week or a specific day!") starts = request.form.getlist("schedule-schedules-start") ends = request.form.getlist("schedule-schedules-end") is_active = form.is_active.data # check data for schedule time # sort with the start time for i in range(len(starts)): for j in range(i + 1, len(starts)): if starts[i] > starts[j]: [starts[i], starts[j]] = [starts[j], starts[i]] [ends[i], ends[j]] = [ends[j], ends[i]] # check end time must bigger than start time for i in range(len(starts)): if starts[i] >= ends[i]: form.schedules.errors.append( "Ending time must be later than starting time!") break # check for time conflick for i in range(len(starts) - 1): if ends[i] > starts[i + 1]: form.schedules.errors.append( "Schedule time conflick, please check and fix it!") break if len(form.errors) == 0: items = [] schedules = [{"start": starts[i], "end":ends[i]} for i in range(len(starts))] date_exps = date_exp_weekly + date_exp_dates_list for date_exp in date_exps: item = ScheduleHandler.get(username, date_exp) if item is None: item = Schedule( username=username, date_exp=date_exp, schedules=json.dumps(schedules), is_active=is_active) db.session.add(item) else: item.schedules = json.dumps(schedules) is_active = is_active items.append(item) try: db.session.commit() except: db.session.rollback() # return error message return {"error": "Error when adding an schedule"} # success, return new item return {"items": [item.serialize() for item in items]} # return form errors return {"errors": form.errors}