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') }
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)
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)
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
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)
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)
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)
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)
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)
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)
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
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)