Пример #1
0
class faltesAssistenciaEntreDatesForm(forms.Form):

    grup = forms.ModelChoiceField(queryset=None)
    assignatura = forms.ModelMultipleChoiceField(queryset=None)
    dataDesDe = forms.DateField(help_text=u'Data on començar a comptar',
                                initial=datetime.today(),
                                required=True,
                                widget=DateTextImput())
    horaDesDe = forms.ModelChoiceField(queryset=None, initial=None)
    dataFinsA = forms.DateField(help_text=u'Data on començar a comptar',
                                initial=datetime.today(),
                                required=True,
                                widget=DateTextImput())
    horaFinsA = forms.ModelChoiceField(queryset=None, initial=None)

    def __init__(self, *args, **kwargs):
        self.assignatures = kwargs.pop('assignatures', None)
        self.grups = kwargs.pop('grups', None)
        super(faltesAssistenciaEntreDatesForm, self).__init__(*args, **kwargs)
        self.fields['assignatura'].queryset = self.assignatures
        self.fields['grup'].queryset = self.grups
        self.fields['horaDesDe'].queryset = FranjaHoraria.objects.all()
        self.fields['horaDesDe'].initial = [FranjaHoraria.objects.all()[0]]
        self.fields['horaFinsA'].queryset = FranjaHoraria.objects.all()
        self.fields['horaFinsA'].initial = [FranjaHoraria.objects.reverse()[0]]
Пример #2
0
class alertaAssistenciaForm(forms.Form):
    data_inici = forms.DateField(label=u'Data inici',
                                 initial=datetime.today(),
                                 required=True,
                                 help_text=u'Dia inicial pel càlcul',
                                 widget=DateTextImput())

    data_fi = forms.DateField(label=u'Data fi',
                              initial=datetime.today(),
                              required=True,
                              help_text=u'Dia final pel càlcul',
                              widget=DateTextImput())

    tpc = forms.IntegerField(
        label=u'filtre %',
        max_value=100,
        min_value=1,
        initial=25,
        help_text=
        u'''Filtra alumnes amb % de absència superior a aquet valor.''',
        widget=TextInput(attrs={'class': "slider"}))

    nivell = forms.ModelChoiceField(
        queryset=Nivell.objects.all(),
        required=True,
        empty_label=None,
    )
    ordenacio = forms.ChoiceField(
        choices=(
            (
                'a',
                u'Nom alumne',
            ),
            (
                'ca',
                u'Curs i alumne',
            ),
            (
                'n',
                u'Per % Assistència',
            ),
            (
                'cn',
                u'Per Curs i % Assistència',
            ),
        ),
        required=True,
        label=u'Ordenació',
        initial='a',
        help_text=u'Tria com vols ordenats els resultats')
Пример #3
0
class disponibilitatAulaPerFranjaForm(forms.Form):

    franja = forms.ModelChoiceField(queryset=FranjaHoraria.objects.all())

    data = forms.DateField(help_text="Data a consultar",
                           initial=datetime.today(),
                           required=True,
                           widget=DateTextImput())

    def clean(self):
        cleaned_data = super(disponibilitatAulaPerFranjaForm, self).clean()

        data = self.cleaned_data['data']
        tretze_dies = timedelta(days=13)
        darrer_dia_reserva = datetime.today().date() + tretze_dies - timedelta(
            days=datetime.today().weekday())
        if data > darrer_dia_reserva or data < datetime.today().date():
            raise forms.ValidationError(
                u"Només pots reservar a partir d'avui i fins al dia {0}".
                format(darrer_dia_reserva))

        franja = self.cleaned_data['franja']
        franges_del_dia = (FranjaHoraria.objects.filter(
            horari__impartir__dia_impartir=data).order_by('hora_inici'))
        primera_franja = franges_del_dia.first()
        darrera_franja = franges_del_dia.last()
        if franja.hora_inici < primera_franja.hora_inici or franja.hora_fi > darrera_franja.hora_fi:
            raise forms.ValidationError(
                u"En aquesta franja i dia no hi ha docència")

        return cleaned_data
Пример #4
0
class recuperacioDePasswdForm(forms.Form):
    p1 = forms.CharField(label="Nova Paraula de Pas",
                         required=True,
                         help_text=u"Paraula de pas, més de 6 caracters.",
                         widget=forms.PasswordInput())
    p2 = forms.CharField(label="Repeteix Paraula de Pas",
                         required=True,
                         help_text=u"Paraula de pas, més de 6 caracters.",
                         widget=forms.PasswordInput())
    data_neixement = forms.DateField(
        help_text=u"Data de naixement de l'alumne (Format dd/mm/yyyy)",
        widget=DateTextImput())

    def clean_p1(self):
        p1 = self.cleaned_data.get('p1')
        if len(p1) < 6:
            raise forms.ValidationError(
                "La Paraula de Pas ha de tenir 6 ó més caracters.")
        return p1

    def clean_p2(self):
        p1 = self.cleaned_data.get('p1')
        p2 = self.cleaned_data.get('p2')
        if not p2:
            raise forms.ValidationError("Cal confirmar la Contrasenya")
        if p1 != p2:
            raise forms.ValidationError(
                "Has escrit dues contrasenyes diferents")
        return p2
Пример #5
0
class disponibilitatRecursPerFranjaForm(forms.Form):

    franja = forms.ModelChoiceField( queryset = FranjaHoraria.objects.all()  )

    data = forms.DateField(help_text="Data a consultar",
                                initial=datetime.today(),
                                required=True,
                                widget=DateTextImput())

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super().__init__(*args, **kwargs)

    def clean(self):
        cleaned_data = super(disponibilitatRecursPerFranjaForm, self).clean()

        data=self.cleaned_data['data']
        tretze_dies = timedelta(days=13)
        darrer_dia_reserva = datetime.today().date() + tretze_dies - timedelta(days=datetime.today().weekday())
        es_reservador = User.objects.filter(pk=self.user.pk, groups__name__in=['reservador']).exists()
        if not es_reservador and (data > darrer_dia_reserva or data < datetime.today().date()):
            raise forms.ValidationError(u"Només pots reservar a partir d'avui i fins al dia {0}".format(darrer_dia_reserva))

        franja = self.cleaned_data['franja']
        franges_del_dia = (FranjaHoraria
                           .objects
                           .filter(horari__impartir__dia_impartir=data)
                           .order_by('hora_inici')
                           )
        primera_franja = franges_del_dia.first()
        darrera_franja = franges_del_dia.last()
        if franja.hora_inici < primera_franja.hora_inici or franja.hora_fi > darrera_franja.hora_fi:
            raise forms.ValidationError(u"En aquesta franja i dia no hi ha docència")

        return cleaned_data
Пример #6
0
class complementFormulariTriaForm(forms.Form):
    dia = forms.DateField(label=u'Data Baixa',
                          initial=datetime.today(),
                          required=True,
                          help_text=u'Data de la baixa',
                          widget=DateTextImput())
    professor = forms.ModelChoiceField(queryset=Professor.objects.all())
Пример #7
0
class passaLlistaGrupDataForm(forms.Form):
    grup = forms.ModelChoiceField(queryset=Grup.objects.filter(
        alumne__isnull=False).distinct().order_by("descripcio_grup"))
    dia = forms.DateField(label=u'Dia',
                          initial=datetime.today(),
                          help_text=u'Dia a passar llista.',
                          widget=DateTextImput())
Пример #8
0
class regeneraImpartirForm(forms.Form):

    data_inici = forms.DateField(
        label=u'Data regeneració',
        initial=datetime.today(),
        required=True,
        help_text=u'Data en que entra en vigor l\'horari actual',
        widget=DateTextImput())

    franja_inici = forms.ModelChoiceField(queryset=FranjaHoraria.objects.all(),
                                          required=True)

    confirma = forms.BooleanField(
        label=u'Confirma regenerar horaris',
        required=True,
        help_text=u'És un procés costos, confirma que el vols fer',
    )

    def clean_data_regeneracio(self):
        data = self.cleaned_data['data_regeneracio']
        if data < datetime.today():
            raise forms.ValidationError(
                u'Només es pot regenerar amb dates iguals o posteriors a avui.'
            )

        # Always return the cleaned data, whether you have changed it or
        # not.
        return data

    def clean_confirma(self):
        data = self.cleaned_data['confirma']
        if not data:
            raise forms.ValidationError(u'Confirma la regeneració d\'horari.')

        return data
Пример #9
0
class complementFormulariImpresioTriaForm(forms.Form):
    dia = forms.DateField(label=u'Data a Imprimir',
                          initial=datetime.today(),
                          required=True,
                          help_text=u'Dia a imprimir',
                          widget=DateTextImput())
    professors = forms.ModelMultipleChoiceField(
        queryset=Professor.objects.all())
Пример #10
0
class dataForm(forms.Form):
    data = forms.DateField(required=False, widget=DateTextImput())

    def __init__(self, *args, **kwargs):
        self.label = kwargs.pop('label', None)
        self.help_text = kwargs.pop('help_text', None)
        super(dataForm, self).__init__(*args, **kwargs)
        self.fields['data'].label = self.label
        self.fields['data'].help_text = self.help_text
Пример #11
0
class disponibilitatMassivaRecursPerFranjaForm(forms.Form):

    franja = forms.ModelChoiceField( queryset = FranjaHoraria.objects.all()  )

    data_inici = forms.DateField(help_text="Data d'inici a consultar",
                                 initial=datetime.today(),
                                 required=True,
                                 widget=DateTextImput())

    data_fi = forms.DateField(help_text="Data de fi a consultar",
                                 initial=datetime.today(),
                                 required=True,
                                 widget=DateTextImput())

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super().__init__(*args, **kwargs)

    def clean(self):
        cleaned_data = super(disponibilitatMassivaRecursPerFranjaForm, self).clean()

        data_inici=self.cleaned_data['data_inici']
        data_fi = self.cleaned_data['data_fi']
        dia_setmana_data_inici = data_inici.weekday()
        dia_setmana_data_fi = data_fi.weekday()
        if dia_setmana_data_inici != dia_setmana_data_fi:
            raise forms.ValidationError(u"Les dates d'inici i fi no coincideixen en el dia de la setmana (dilluns, dimarts,...)")
        es_reservador = User.objects.filter(pk=self.user.pk, groups__name__in=['reservador']).exists()
        if not es_reservador:
            raise forms.ValidationError(u"Aquesta acció només la pot realitzar un usuari amb permissos")

        franja = self.cleaned_data['franja']
        franges_del_dia = (FranjaHoraria
                           .objects
                           .filter(horari__impartir__dia_impartir=data_inici)
                           .order_by('hora_inici')
                           )
        primera_franja = franges_del_dia.first()
        darrera_franja = franges_del_dia.last()
        if dia_setmana_data_inici in [5,6] or franja.hora_inici < primera_franja.hora_inici or franja.hora_fi > darrera_franja.hora_fi:
            raise forms.ValidationError(u"En aquesta franja i dia no hi ha docència")

        return cleaned_data
Пример #12
0
 class Meta:
     model = ReservaRecurs
     labels = {
         "motiu": "Propòsit"
     }
     fields = ['recurs','dia_reserva','hora','motiu']
     widgets = {
         'motiu': forms.Textarea,
         'dia_reserva' : DateTextImput()
     }
Пример #13
0
class elsMeusAlumnesTutoratsEntreDatesForm(forms.Form):
    grup = forms.ChoiceField()
    dataDesDe = forms.DateField(label=u'Data des de',
                                initial=datetime.date.today,
                                required=False,
                                help_text=u'Rang de dates: primer dia.',
                                widget=DateTextImput())

    dataFinsA = forms.DateField(label=u'Data fins a',
                                initial=datetime.date.today,
                                required=True,
                                help_text=u'Rang de dates: darrer dia.',
                                widget=DateTextImput())

    def __init__(self, *args, **kwargs):
        self.queryset = kwargs.pop('grups', None)
        super(elsMeusAlumnesTutoratsEntreDatesForm,
              self).__init__(*args, **kwargs)
        self.fields['grup'].choices = self.queryset
Пример #14
0
class complementFormulariTriaForm(forms.Form):
    dia = forms.DateField(label=u'Data Baixa',
                          initial=datetime.today(),
                          required=True,
                          help_text=u'Data de la baixa',
                          widget=DateTextImput())
    professor = ModelChoiceField(widget=ModelSelect2Widget(
        queryset=Professor.objects.all(),
        search_fields=(
            'last_name__icontains',
            'first_name__icontains',
        ),
        attrs={'style': "'width': '100%'"}),
                                 queryset=Professor.objects.all(),
                                 required=True)
Пример #15
0
class disponibilitatAulaPerAulaForm(forms.Form):

    aula = ModelChoiceField(widget=ModelSelect2Widget(
        queryset=Aula.objects.filter(reservable=True),
        search_fields=['nom_aula__icontains', 'descripcio_aula__icontains'],
        attrs={'style': "'width': '100%'"},
    ),
                            queryset=Aula.objects.all(),
                            required=True,
                            help_text="Aula a consultar")

    data = forms.DateField(help_text="Data a consultar",
                           initial=datetime.today(),
                           required=True,
                           widget=DateTextImput())
Пример #16
0
class complementFormulariImpresioTriaForm(forms.Form):
    dia = forms.DateField(label=u'Data a Imprimir',
                          initial=datetime.today(),
                          required=True,
                          help_text=u'Dia a imprimir',
                          widget=DateTextImput())
    professors = forms.ModelMultipleChoiceField(
        label="Tria professors",
        widget=ModelSelect2MultipleWidget(queryset=Professor.objects.all(),
                                          search_fields=(
                                              'last_name__icontains',
                                              'first_name__icontains',
                                          ),
                                          attrs={'style': "'width': '100%'"}),
        queryset=Professor.objects.all(),
        required=True)
Пример #17
0
class calculadoraUnitatsFormativesForm(forms.Form):

    grup = forms.ModelChoiceField(queryset=None)
    assignatura = forms.ModelMultipleChoiceField(queryset=None)
    dataInici = forms.DateField(help_text=u'Data on començar a comptar',
                                initial=datetime.today(),
                                required=True,
                                widget=DateTextImput())
    hores = forms.IntegerField(help_text=u'Hores de la UF')

    def __init__(self, *args, **kwargs):
        self.assignatures = kwargs.pop('assignatures', None)
        self.grups = kwargs.pop('grups', None)
        super(calculadoraUnitatsFormativesForm, self).__init__(*args, **kwargs)
        self.fields['assignatura'].queryset = self.assignatures
        self.fields['grup'].queryset = self.grups
Пример #18
0
class informeSetmanalForm(forms.Form):
    grup = forms.ModelChoiceField(
        queryset=Grup.objects.none(),
        required=False,
        empty_label="-- Tots els alumnes --",
        help_text=u"""Tria un grup per fer l'informe.""")

    data = forms.DateField(label=u'Setmana informe:',
                           initial=datetime.date.today,
                           required=True,
                           help_text=u'Data on hi ha les faltes a justificar.',
                           widget=DateTextImput())

    def __init__(self, *args, **kwargs):
        self.queryset = kwargs.pop('queryset', None)
        super(informeSetmanalForm, self).__init__(*args, **kwargs)
        self.fields['grup'].queryset = self.queryset
Пример #19
0
class justificaFaltesW1Form(forms.Form):
    alumne = forms.ModelChoiceField(
        queryset=Alumne.objects.none(),
        required=False,
        empty_label="(Justificador)",
        help_text=
        u"""Alumne al que vols justificar faltes.(Justificador per tot el grup)"""
    )

    data = forms.DateField(label=u'Data faltes a justificar',
                           initial=datetime.date.today,
                           required=True,
                           help_text=u'Data on hi ha les faltes a justificar.',
                           widget=DateTextImput())

    pas = forms.IntegerField(initial=1, widget=forms.HiddenInput())

    def __init__(self, *args, **kwargs):
        self.queryset = kwargs.pop('queryset', None)
        super(justificaFaltesW1Form, self).__init__(*args, **kwargs)
        self.fields['alumne'].queryset = self.queryset
Пример #20
0
class passaLlistaGrupDataForm(forms.Form):
    grup = forms.ModelChoiceField(queryset=Grup.objects.all())
    dia = forms.DateField(label=u'Dia',
                          initial=datetime.today(),
                          help_text=u'Dia a passar llista.',
                          widget=DateTextImput())
Пример #21
0
def sortidaEdit(request, pk=None, clonar=False, origen=False):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    es_post = (request.method == "POST")

    professor = User2Professor(user)

    professors_acompanyen_abans = set()
    professors_acompanyen_despres = set()

    professors_organitzen_abans = set()
    professors_organitzen_despres = set()

    fEsDireccioOrGrupSortides = request.user.groups.filter(
        name__in=[u"direcció", u"sortides"]).exists()
    if bool(pk) and not clonar:
        instance = get_object_or_404(Sortida, pk=pk)
        potEntrar = (professor in instance.professors_responsables.all()
                     or professor
                     in instance.altres_professors_acompanyants.all()
                     or fEsDireccioOrGrupSortides)
        if not potEntrar:
            raise Http404
        professors_acompanyen_abans = set(
            instance.altres_professors_acompanyants.all())
        professors_organitzen_abans = set(
            instance.professors_responsables.all())
    elif bool(pk) and clonar:
        instance = get_object_or_404(Sortida, pk=pk)
        instance.pk = None
        instance.estat = 'E'
        instance.titol_de_la_sortida = u"**CLONADA** " + instance.titol_de_la_sortida
        instance.esta_aprovada_pel_consell_escolar = 'P'
        instance.professor_que_proposa = professor
#         instance.professors_responsables = None
#         instance.altres_professors_acompanyants = None
#         instance.tutors_alumnes_convocats = None
#         instance.alumnes_convocats = None
#         instance.alumnes_que_no_vindran = None
#         instance.alumnes_justificacio = None
#         instance.professor_que_proposa_id = None

    else:
        instance = Sortida()
        instance.professor_que_proposa = professor

    instance.credentials = credentials

    exclude = (
        'alumnes_convocats',
        'alumnes_que_no_vindran',
        'alumnes_justificacio',
    )
    formIncidenciaF = modelform_factory(Sortida, exclude=exclude)

    if request.method == "POST":
        post_mutable = request.POST.copy()
        if 'esta_aprovada_pel_consell_escolar' not in post_mutable:
            post_mutable['esta_aprovada_pel_consell_escolar'] = 'P'

        form = formIncidenciaF(post_mutable, instance=instance)

        if form.is_valid():
            form.save()

            if origen == "Meves":
                messages.warning(
                    request,
                    SafeText(u"""RECORDA: Una vegada enviades les dades, 
                                  has de seleccionar els <a href="{0}">alumnes convocats</a> i els 
                                  <a href="{1}">alumnes que no hi van</a> 
                                  des del menú desplegable ACCIONS""".format(
                        "/sortides/alumnesConvocats/{id}".format(
                            id=instance.id),
                        "/sortides/alumnesFallen/{id}".format(id=instance.id),
                    )))

            professors_acompanyen_despres = set(
                instance.altres_professors_acompanyants.all())
            professors_organitzen_despres = set(
                instance.professors_responsables.all())

            acompanyen_nous = professors_acompanyen_despres - professors_acompanyen_abans
            organitzen_nous = professors_organitzen_despres - professors_organitzen_abans

            #helper missatges:
            data_inici = u"( data activitat encara no informada )"
            if instance.data_inici is not None:
                data_inici = """del dia {dia}""".format(
                    dia=instance.data_inici.strftime('%d/%m/%Y'))

            #missatge a acompanyants:
            txt = u"""Has estat afegit com a professor acompanyant a l'activitat {sortida} 
            {dia}
            """.format(sortida=instance.titol_de_la_sortida, dia=data_inici)
            enllac = reverse('sortides__sortides__edit_by_pk',
                             kwargs={'pk': instance.id})
            msg = Missatge(remitent=user, text_missatge=txt, enllac=enllac)
            for nou in acompanyen_nous:
                importancia = 'VI'
                msg.envia_a_usuari(nou, importancia)

            #missatge a responsables:
            txt = u"""Has estat afegit com a professor responsable a l'activitat {sortida} 
            {dia}
            """.format(sortida=instance.titol_de_la_sortida, dia=data_inici)
            msg = Missatge(remitent=user, text_missatge=txt)
            for nou in organitzen_nous:
                importancia = 'VI'
                msg.envia_a_usuari(nou, importancia)

            nexturl = r"/sortides/sortides{origen}".format(origen=origen)
            return HttpResponseRedirect(nexturl)

    else:

        form = formIncidenciaF(instance=instance)

    form.fields['data_inici'].widget = DateTextImput()
    form.fields['data_fi'].widget = DateTextImput()
    #form.fields['estat'].widget = forms.RadioSelect( choices = form.fields['estat'].widget.choices )
    widgetBootStrapButtonSelect = bootStrapButtonSelect()
    widgetBootStrapButtonSelect.choices = form.fields['estat'].widget.choices
    form.fields['estat'].widget = widgetBootStrapButtonSelect

    form.fields["alumnes_a_l_aula_amb_professor_titular"].widget.attrs[
        'style'] = u"width: 3%"
    form.fields["calendari_public"].widget.attrs['style'] = u"width: 3%"
    for f in form.fields:
        form.fields[f].widget.attrs[
            'class'] = ' form-control ' + form.fields[f].widget.attrs.get(
                'class', "")

    form.fields['calendari_desde'].widget = DateTimeTextImput()
    form.fields['calendari_finsa'].widget = DateTimeTextImput()
    form.fields['termini_pagament'].widget = DateTimeTextImput()

    if not fEsDireccioOrGrupSortides:
        form.fields["esta_aprovada_pel_consell_escolar"].widget.attrs[
            'disabled'] = u"disabled"
        form.fields["codi_de_barres"].widget.attrs['disabled'] = u"disabled"
        form.fields["informacio_pagament"].widget.attrs[
            'disabled'] = u"disabled"

    #si no és propietari tot a disabled
    deshabilitat = (instance.id and
                    not (professor in instance.professors_responsables.all()
                         or fEsDireccioOrGrupSortides))

    if deshabilitat:
        for field in form.fields:
            form.fields[field].widget.attrs['disabled'] = u"disabled"
        form.fields['estat'].label += u": {0} ".format(
            instance.get_estat_display())

    return render(
        request,
        'formSortida.html',
        {
            'form': form,
            'head': 'Sortides',
            'missatge': 'Sortides',
            'deshabilitat': '1==1' if deshabilitat else '1==2',
        },
    )
Пример #22
0
 class Meta:
     model = Expulsio
     fields = ( 'dia_expulsio', 'franja_expulsio'  )
     widgets = {
                'dia_expulsio': DateTextImput() 
                }