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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
 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
         })
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
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"))
Exemplo n.º 7
0
 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,
    })
Exemplo n.º 9
0
    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}