Exemplo n.º 1
0
    def karar_no_gir(self):
        """Mazeretli öğrenci kaydı, fakülte yönetim kurulu kararıyla yapılmaktadır. Bu adımda
        kullanıcıdan ilgili karar numarasını girmesi beklenir.
        Bu method seçilen öğrencinin ilgili programdaki durumunun ders kaydı yapabilir olup
        olmadığını kontrol eder. Ders kaydı yapabilir durumdaki öğrenciler aktif veya gelen öğrenci
        statüsüne sahip olmalıdırlar.

        """
        aktif_ogrenci_status_list = [1, 12, 14, 16, 18, 20]

        self.current.task_data['program'] = self.current.input['form'][
            'program']
        ogrenci_program = OgrenciProgram.objects.get(
            self.current.input['form']['program'])

        if ogrenci_program.ogrencilik_statusu in aktif_ogrenci_status_list:
            _form = forms.JsonForm(
                current=self.current,
                title=_(u"Fakülte Yönetim Kurulu Karar No Giriniz"))
            _form.karar_no = fields.String(
                title=_(u"Fakülte Yönetim Kurulu Karar No"))
            _form.sec = fields.Button(_(u"Kaydet"))
            self.form_out(_form)
        else:
            self.current.output['msgbox'] = {
                'type': 'warning',
                "title": _(u'Öğrenci Ders Kaydı Yapamaz'),
                "msg": _(u'Öğrenci Durum Kodu Ders Kaydı İçin Uygun Değil')
            }
Exemplo n.º 2
0
    def sinav_sec(self):
        """Not Girişi Sınav Seç

        Okutmanın, seçilen şubeye ait sınavları görebildiği ve sınav
        seçimi yapabildiği adıma ait olan method.

        Seçilen şube, ``ders_secim`` methodu içinde tanımlanmış olan
        ``JsonForm`` tarafından iletilmekte ve bu method içerisinde
        aşağıdaki şekilde elde edilmektedir::

            sube_key = self.current.input['form']['sube']

        Sinavlar, bir önceki şube seçim adımında seçilmiş olan şubeye
        ait olacak şekilde filtrelenmektedir::

            _form.sinav=fields.Integer("Sınav Seçiniz",
              choices=prepare_choices_for_model(Sinav, sube_id=sube_key))

        """

        _form = forms.JsonForm(current=self.current,
                               title=_(u"Sınav Seçim Formu"))

        try:
            sube_key = self.current.input['form']['sube']
        except:
            sube_key = self.current.task_data["sube"]

        _form.sinav = fields.Integer(_(u"Sınav Seçiniz"),
                                     choices=prepare_choices_for_model(
                                         Sinav, sube_id=sube_key))
        self.current.task_data["sube"] = sube_key
        _form.sec = fields.Button(_(u"Seç"), cmd=_(u"Sınav Seçin"))
        self.form_out(_form)
Exemplo n.º 3
0
    def select_role(self):
        """
        The workflow method to be assigned to the person with the same role and unit as the user.
            .. code-block:: python

                #  request:
                   {
                   'task_inv_key': string,
                   }

        """

        roles = [(m.key, m.__unicode__()) for m in RoleModel.objects.filter(
            abstract_role=self.current.role.abstract_role,
            unit=self.current.role.unit) if m != self.current.role]

        if roles:
            _form = forms.JsonForm(title=_(u'Assign to workflow'))
            _form.select_role = fields.Integer(_(u"Chose Role"), choices=roles)
            _form.explain_text = fields.String(_(u"Explain Text"), required=False)
            _form.send_button = fields.Button(_(u"Send"))
            self.form_out(_form)
        else:
            title = _(u"Unsuccessful")
            msg = _(u"Assign role not found")
            self.current.msg_box(title=title, msg=msg)
Exemplo n.º 4
0
    def show(self):
        """
        Returns details of the selected object.
        """
        self.set_client_cmd('show')
        obj_form = forms.JsonForm(self.object,
                                  current=self.current,
                                  models=False,
                                  list_nodes=False)._serialize(readable=True)
        obj_data = OrderedDict()
        for d in obj_form:
            val = d['value']
            # Python doesn't allow custom JSON encoders for keys of dictionaries.
            # If the title is a lazy translation, we must force the translation here.
            key = six.text_type(d['title'])
            if d['type'] in ('button', ) or d['title'] in ('Password', 'key'):
                continue
            if d['type'] == 'file' and d['value'] and d['value'][-3:] in (
                    'jpg', 'png'):
                continue  # passing for now, needs client support

            if not d['kwargs'].get('hidden', False):
                obj_data[key] = six.text_type(val) if val is not None else val
        self.output['object_title'] = "%s : %s" % (
            self.model_class.Meta.verbose_name, self.object)
        self.output['object_key'] = self.object.key
        self.output['object'] = obj_data
Exemplo n.º 5
0
    def sube_sec(self):
        """
        Okutmanın kayıtlı olduğu şubelerden biri seçilir.

        """
        _form = forms.JsonForm(current=self.current, title=_(u"Şube Seçiniz."))
        _form.sube = fields.Integer(_(u"Sube Seçiniz"),
                                    choices=prepare_choices_for_model(
                                        Sube, okutman_id=self.get_okutman_key))
        _form.sec = fields.Button(_(u"Seç"))
        self.form_out(_form)
Exemplo n.º 6
0
    def program_sec(self):
        """Workflow'un ilk aşamasıdır. Seçilen öğrenciye ait programlar listelenir.

        """
        ogrenci_id = self.current.input['id']
        ogrenci = Ogrenci.objects.get(ogrenci_id)
        _form = forms.JsonForm(current=self.current,
                               title=_(u"Öğrenci Programı Seçiniz"))
        _form.program = fields.Integer(_(u"Öğrenci Programı Seçiniz"),
                                       choices=prepare_choices_for_model(
                                           OgrenciProgram, ogrenci=ogrenci))
        _form.sec = fields.Button(_(u"İleri"))
        self.form_out(_form)
Exemplo n.º 7
0
    def fakulte_yonetim_karar_no_gir(self):
        """
        Fakülte Yönetim Kurulu tarafından belirlenen karar no girilir.
        """
        self.current.task_data["ogrenci_id"] = self.current.input['id']

        # TODO: Fakülte yönetim kurulunun kararı loglanacak.
        _form = forms.JsonForm(
            current=self.current,
            title=_(u'Fakülte Yönetim Kurulunun Karar Numarasını Giriniz.'))
        _form.karar = fields.String(_(u'Karar No'), index=True, required=True)
        _form.kaydet = fields.Button(_(u'Kaydet'))
        self.form_out(_form)
    def program_sec(self):
        """
        Öğrencinin kayıtlı olduğu öğrenci program seçilir.

        """

        _form = forms.JsonForm(current=self.current,
                               title=_(u'Program Seçiniz.'))
        _choices = prepare_choices_for_model(
            OgrenciProgram, ogrenci_id=self.current.task_data['ogrenci_id'])
        _form.program = fields.Integer(choices=_choices)
        _form.onayla = fields.Button('Seç')
        self.form_out(_form)
    def ders_sec(self):
        """
        Öğrencinin kayıtlı olduğu derslerden biri seçilir.

        """

        program_id = self.current.input['form']['program']
        self.current.task_data['program_id'] = self.current.input['form'][
            'program']
        _form = forms.JsonForm(current=self.current, title=_(u'Ders Seçiniz.'))
        _choices = prepare_choices_for_model(OgrenciDersi,
                                             ogrenci_program_id=program_id)
        _form.ders = fields.Integer(choices=_choices)
        _form.onayla = fields.Button(_(u'Seç'))
        self.form_out(_form)
Exemplo n.º 10
0
    def sinav_sec(self):
        """
        Derse ait sınavlardan biri seçilir.

        """

        self.current.task_data['ders_id'] = self.current.input['form']['ders']
        ogrenci_dersi = OgrenciDersi.objects.get(
            self.current.task_data['ders_id'])

        _form = forms.JsonForm(current=self.current,
                               title=_(u'Sınav Seçiniz.'))
        _choices = prepare_choices_for_model(Sinav,
                                             sube_id=ogrenci_dersi.sube.key)
        _form.sinav = fields.Integer(choices=_choices)
        _form.onayla = fields.Button(_(u'Seç'))
        self.form_out(_form)
Exemplo n.º 11
0
    def select_postponed_date(self):
        """
            The time intervals at which the workflow is to be extended are determined.
            .. code-block:: python

                #  request:
                   {
                   'task_inv_key': string,
                   }

        """

        _form = forms.JsonForm(title="Postponed Workflow")
        _form.start_date = fields.DateTime("Start Date")
        _form.finish_date = fields.DateTime("Finish Date")
        _form.save_button = fields.Button("Save")
        self.form_out(_form)
Exemplo n.º 12
0
    def ders_secim(self):
        """Not Girişi Ders Seçimi

        Okutmanın kendisine ait şubelerin listelendiği seçim adımına
        ait olan metot.

        Bu method seçilen şubeyi bir sonraki workflow adımı olan ve
        ``sinav_sec`` methodu ile elde edilen sınav seçim adımına
        aktarmaktadır.

        """

        _form = forms.JsonForm(current=self.current, title="Ders Seçim Formu")
        user = self.current.user
        subeler = Sube.objects.filter(okutman_id=self.get_okutman_key)
        _form.sube = fields.Integer("Sube Seçiniz",
                                    choices=prepare_choices_for_model(
                                        Sube, okutman_id=self.get_okutman_key))
        _form.sec = fields.Button("Seç", cmd="Ders Şubesi Seçin")
        self.form_out(_form)
Exemplo n.º 13
0
    def show(self):
        self.set_client_cmd('show')
        obj_form = forms.Form(self.object,
                              current=self.current,
                              models=False,
                              list_nodes=False)._serialize(readable=True)
        obj_data = {}
        for d in obj_form:
            val = d['value']
            key = d['title']
            if d['type'] in ('button', ) or d['title'] in ('Password', 'key'):
                continue
            if d['type'] == 'file' and d['value'] and d['value'][-3:] in (
                    'jpg', 'png'):
                continue  # passing for now, needs client support

            obj_data[key] = val
        self.form_out(
            forms.JsonForm(title="%s : %s" %
                           (self.model_class.Meta.verbose_name, self.object)))
        self.output['object'] = obj_data
Exemplo n.º 14
0
    def not_kontrol(self):
        """Okutmanların girmiş olduğu öğrenci notlarının listelenmesini
        sağlayan method.

        Bu method hem ``sinav_kontrol`` methodu hem de ``not_girisi``
        methodları üzerinden yapılan yönlendirmeleri karşılar. Eğer
        seçilen sınava ait notlar onaylanmış (teslim edilmiş) ise
        ``not_giris`` methoduna başlı olan not giriş adımı atlanarak bu
        adıma yönlendirme yapılmaktadır. Bu durumda notlar, veritabanı
        üzerinden alınarak listelenirken, ``not_girisi`` adımından gelen
        yönlendirmelerde form ile birlikte gönderilen veriler
        listelenmektedir.

        ``sinav_kontrol`` methodu ile yapılan yönlendirmelerde notlar
        üzerinde herhangi bir güncelleme, değişiklik yapılamayacağı için
        bu operasyonlara ait form düğmeleri gösterilmemekte ve okutmana
        bu dersler üzerinde bir değişiklik yapamayacağını bildiren bir
        mesaj kutusu gösterilmektedir.

        """

        _form = forms.JsonForm(current=self.current,
                               title=_(u"Not Önizleme Ekranı"))

        try:  # Eğer istek sinav_kontrol aşamasından yönlendirilmemişse öğrenci notları için formdan gelen veriyi kullan
            ogrenci_notlar = self.current.input['form']['Ogrenciler']
            self.current.task_data["notlar"] = ogrenci_notlar

            notlar = []
            for ogr in ogrenci_notlar:
                ogrnot = OrderedDict({})
                ogrnot[_(u'Öğrenci No')] = ogr['ogrenci_no']
                ogrnot[_(u'Adı Soyadı')] = ogr['ad_soyad']
                ogrnot[_(u'Değerlendirme')] = ogr['degerlendirme']
                ogrnot[_(u'Açıklama')] = ogr['aciklama']
                notlar.append(ogrnot)

        except:  # Eğer istek sinav_kontrol aşamasından yönlendirilmişse notlar için veritabanı kayıtlarını kullan
            sinav_key = self.current.task_data['sinav_key']
            sube_key = self.current.task_data["sube"]
            sinav = Sinav.objects.get(sinav_key)
            ogrenciler = OgrenciDersi.objects.filter(sube_id=sube_key)
            notlar = []

            for ogr in ogrenciler:
                try:  # Öğrencinin bu sınava ait daha önceden kayıtlı notu var mı?
                    degerlendirme = DegerlendirmeNot.objects.get(
                        sinav=sinav, ogrenci=ogr.ogrenci_program.ogrenci)
                    puan = degerlendirme.puan
                    aciklama = degerlendirme.aciklama
                except:
                    puan = 0
                    aciklama = ""

                ogrnot = OrderedDict({})
                ogrnot[_(u'Öğrenci No')] = ogr.ogrenci_program.ogrenci_no
                ogrnot[_(u'Adı Soyadı')] = '%s %s' % (
                    ogr.ogrenci_program.ogrenci.ad,
                    ogr.ogrenci_program.ogrenci.soyad)
                ogrnot[_(u'Değerlendirme')] = puan
                ogrnot[_(u'Açıklama')] = aciklama
                notlar.append(ogrnot)

        # Eğer notlar okutman tarından onaylanmışsa (teslim edilmişse) uyarı göster
        if self.current.task_data['sinav_degerlendirme']:
            self.current.output['msgbox'] = {
                'type':
                'info',
                "title":
                _(u'Notlar Onaylandı'),
                "msg":
                _(u'Bu derse ait notlar onaylanmış olduğu için içeriği değiştirilemez.'
                  )
            }
            _form.ders_secim = fields.Button(_(u"Ders Seçim Ekranına Dön"),
                                             cmd="ders_sec",
                                             flow="ders_secim_adimina_don")
            _form.sinav_secim = fields.Button(_(u"Sınav Seçim Ekranına Dön"),
                                              cmd="sinav_sec",
                                              flow="sinav_secim_adimina_don")

        else:  # Eğer notlar hala onaylanmamışsa (teslim edilmemişse) form düğmelerini göster

            _form.not_onay = fields.Boolean(
                _(u"Sınav Notlarını Onaylıyorum (Bu işlem geri alınamaz!)"))
            _form.not_duzenle = fields.Button(_(u"Notları Düzenle"),
                                              cmd="not_girisi",
                                              flow="not_giris_formuna_don")
            _form.kaydet = fields.Button(_(u"Kaydet"),
                                         cmd="not_kaydet",
                                         flow="end")
            _form.kaydet_ve_ders_sec = fields.Button(
                _(u"Kaydet ve Ders Seçim Ekranına Dön"),
                cmd="ders_sec",
                flow="ders_adimina_don")
            _form.kaydet_ve_sinav_sec = fields.Button(
                _(u"Kaydet ve Sınav Seçim Ekranına Dön"),
                cmd="sinav_sec",
                flow="sinav_adimina_don")

        self.current.output['object'] = {
            "type": "table-multiRow",
            "fields": notlar,
            "actions": False
        }
        self.form_out(_form)