Пример #1
0
    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()
Пример #2
0
 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()
Пример #3
0
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
Пример #4
0
 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()
Пример #5
0
 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()
Пример #6
0
    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()
Пример #7
0
 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'
Пример #8
0
    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)
Пример #9
0
 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()