def hakeme_gonder(self): """ Bu adımda komisyon üyesinin seçtiği hakeme değerlendirme iş akışı gönderilir. """ etkinlik = BAPEtkinlikProje.objects.get( self.current.task_data['etkinlik_basvuru_id']) hakem_id = self.input['form']['hakem_id'] hakem = Okutman.objects.get(hakem_id) role = hakem.personel.user.role_set[0].role wf = BPMNWorkflow.objects.get(name='bap_etkinlik_basvuru_degerlendir') title = "%s | %s" % (etkinlik.__unicode__(), wf.title) today = datetime.today() wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name, wf_object=etkinlik.key) wfi.data = dict() wfi.data['flow'] = None wfi.data['etkinlik_basvuru_id'] = etkinlik.key wfi.data['hakem'] = True wfi.pool = {} wfi.blocking_save() inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = title inv.save()
def komisyon_uyesine_davet_gonder(self): """ Seçilen komisyon üyesinin görev yöneticisine proje değerlendirme iş akışının yerleştirildiği adımdır. """ etkinlik_key = self.current.task_data['etkinlik_basvuru_id'] etkinlik = BAPEtkinlikProje.objects.get(etkinlik_key) rol_key = self.input['form']['komisyon_uye'] role = Role.objects.get(rol_key) wf = BPMNWorkflow.objects.get( name='bap_komisyon_uyesi_etkinlik_basvuru_degerlendir') today = datetime.today() title = "%s | %s" % (etkinlik.__unicode__(), wf.title) wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name, wf_object=etkinlik_key) wfi.data = dict() wfi.data['flow'] = None wfi.data['etkinlik_basvuru_id'] = etkinlik_key wfi.pool = {} wfi.blocking_save() inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = title inv.save() etkinlik = BAPEtkinlikProje.objects.get(etkinlik_key) etkinlik.durum = 6 etkinlik.blocking_save()
def send_message_for_lane_change(sender, **kwargs): """ Sends a message to possible owners of the current workflows next lane. Args: **kwargs: ``current`` and ``possible_owners`` are required. sender (User): User object """ current = kwargs['current'] owners = kwargs['possible_owners'] if 'lane_change_invite' in current.task_data: msg_context = current.task_data.pop('lane_change_invite') else: msg_context = DEFAULT_LANE_CHANGE_INVITE_MSG wfi = WFCache(current).get_instance() # Deletion of used passive task invitation which belongs to previous lane. TaskInvitation.objects.filter(instance=wfi, role=current.role, wf_name=wfi.wf.name).delete() today = datetime.today() for recipient in owners: inv = TaskInvitation( instance=wfi, role=recipient, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15) ) inv.title = current.task_data.get('INVITATION_TITLE') or wfi.wf.title inv.save() # try to send notification, if it fails go on try: recipient.send_notification(title=msg_context['title'], message="%s %s" % (wfi.wf.title, msg_context['body']), typ=1, # info url='', sender=sender ) except: # todo: specify which exception pass
def butce_fisi_is_akisini_tetikle(self): """ Projenin kabulü sonrası, bütçe fişi iş akışını çalıştırma izini olan personele davet yollanır. """ wf = BPMNWorkflow.objects.get(name='bap_butce_fisi') perm = Permission.objects.get('bap_butce_fisi') sistem_user = User.objects.get(username='******') today = datetime.today() for role in perm.get_permitted_roles(): wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name, wf_object=self.object.proje.key) wfi.data = {'bap_proje_id': self.object.proje.key} wfi.pool = {} wfi.blocking_save() role.send_notification( title=_(u"{} | {} | Bütçe Fişi İş Akışı".format( self.object.proje.yurutucu.__unicode__(), self.object.proje.ad)), message=_( u"""{} adlı onaylanmış projenin bütçe fişi kesilmesi gerekmektedir. Görev yöneticinizden ilgili isteğe ulaşabilir, iş akışını çalıştırabilirsiniz.""".format( self.object.ad)), typ=1, sender=sistem_user) inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = _(u"{} | {} | Bütçe Fişi İş Akışı".format( self.object.proje.yurutucu.__unicode__(), self.object.proje.ad)) inv.save()
def davet_gonder(self): """ Hakem adaylari sadece listeye yeni eklenmisse davet gonderilir. Coktan davet gonderilmis, davet reddedilmis ya da proje coktan degerlendirilmisse davet gonderilmez. """ wf = BPMNWorkflow.objects.get(name='bap_proje_degerlendirme') today = datetime.today() for hakem in self.object.ProjeDegerlendirmeleri: if hakem.hakem_degerlendirme_durumu == 1: role = hakem.hakem().okutman().user().role_set[0].role wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name) wfi.data = dict() wfi.data['bap_proje_id'] = self.object.key wfi.data['davet_gonderen'] = self.current.user_id wfi.data['flow'] = None wfi.pool = {} wfi.blocking_save() role.send_notification( title=_(u"Proje Hakemlik Daveti"), message=_( u"""%s adlı projeyi değerlendirmek üzere koordinasyon birimi tarafından hakem olarak davet edildiniz. Görev yöneticinizden daveti kabul edip değerlendirebilir ya da daveti reddedebilirsiniz.""" % self.object.ad), typ=1, sender=self.current.user) inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = wfi.wf.title inv.save() hakem.hakem_degerlendirme_durumu = 2 self.object.blocking_save()
def onayla_ve_kaydet(self): """ Bu adımda etkinlik başvurusu ve butce plani kaydedilir. Koordinasyon birimine task invitation yollanır. """ etkinlik = BAPEtkinlikProje( **self.current.task_data['EtkinlikBilgiForm']) butceler = self.current.task_data['ButcePlanForm']['Butce'] etkinlik.basvuru_yapan = self.current.user.personel.okutman etkinlik.durum = 4 for butce in butceler: etkinlik.EtkinlikButce(**butce) etkinlik.blocking_save() wf = BPMNWorkflow.objects.get(name='bap_etkinlik_basvuru_incele') perm = Permission.objects.get( 'bap_etkinlik_basvuru_incele.koordinasyon_birimi') today = datetime.today() title = "%s | %s" % (etkinlik.__unicode__(), wf.title) for role in perm.get_permitted_roles(): wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name, wf_object=etkinlik.key) wfi.data = dict() wfi.data['flow'] = None wfi.data['etkinlik_basvuru_id'] = etkinlik.key wfi.pool = {} wfi.blocking_save() inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = title inv.save()
def kaydet_ve_draft_olustur(self): """ Öğretim üyesinin projeye daha sonra devam etmek istediği takdirde çalışacak adımdır. Projenin tur ve proje_no alanları kaydedilir. Çalışan wfi instance'ı ile bir TaskInvitation oluşturularak kullanıcının görev yöneticisine projenin en baştan formları dolu bir şekilde devam edebileceği bir task koyulur. Proje başvurusu tamamlandığında bu task görev yöneticisinden silinecektir. """ proje = BAPProje.objects.get(self.current.task_data['bap_proje_id']) today = datetime.today() wfi = WFInstance.objects.get(self.current.token) role = Role.objects.get(user=self.current.user) inv = TaskInvitation.objects.get_or_none(role=role, instance=wfi) if not inv: inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = "%s | %s" % (proje.proje_kodu, wfi.wf.title) inv.blocking_save() self.current.output['cmd'] = 'reload'
def koordinasyon_birimine_gonder(self): rol_key = self.input['form']['calisan_rol'] role = Role.objects.get(rol_key) wf = BPMNWorkflow.objects.get(name='bap_tasinir_kodlari') today = datetime.today() wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name) wfi.data = dict() wfi.data['flow'] = None wfi.data['secilen_butce_planlari'] = self.current.task_data[ 'secilen_butce_planlari'] wfi.data['satin_alma_turu'] = self.input['form']['satin_alma_turu'] wfi.data['bap_proje_id'] = self.current.task_data['bap_proje_id'] wfi.pool = {} wfi.blocking_save() inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = wf.name inv.save() if self.current.task_data['toplam_bk'] - len( self.current.task_data['secilen_butce_planlari']) == 0: self.current.task_data['cmd'] = 'bitti' else: self.current.task_data['cmd'] = 'devam' for sbp in self.current.task_data[ 'satin_almasi_talep_edilen_butce_kalemleri']: if sbp['butce_plan_key'] in self.current.task_data[ 'secilen_butce_planlari']: self.current.task_data[ 'satin_almasi_talep_edilen_butce_kalemleri'].remove( sbp)
def davet_gonder(self): """ Firmanın kayıt başvurusunun değerlendirilmesi için koordinasyon birimine davet gönderilir. """ wf = BPMNWorkflow.objects.get(name='bap_firma_basvuru_degerlendirme') perm = Permission.objects.get('bap_firma_basvuru_degerlendirme') sistem_user = User.objects.get(username='******') today = datetime.today() for role in perm.get_permitted_roles(): wfi = WFInstance(wf=wf, current_actor=role, task=None, name=wf.name, wf_object=self.current.task_data['firma_key']) wfi.data = dict() wfi.data['flow'] = None wfi.pool = {} wfi.blocking_save() role.send_notification( title=_(u"Firma Kayıt Başvurusu"), message=_( u"%s adlı firma, kayıt başvurusunda bulunmuştur. " u"Görev yöneticinizden firmaların kayıt başvurularına " u"ulaşabilir, değerlendirebilirsiniz." % self.input['form']['ad']), typ=1, sender=sistem_user) inv = TaskInvitation(instance=wfi, role=role, wf_name=wfi.wf.name, progress=30, start_date=today, finish_date=today + timedelta(15)) inv.title = wfi.wf.title inv.save()