def processForm(self, REQUEST, RESPONSE):
     # Das Formular ist 1 Fall oder 1 Gruppe zugeordnet.
     gruppeid = self.form.get('gruppeid')
     fallid = self.form.get('fallid')
     dokid = self.form.get('dokid')
     if not dokid:
         self.last_error_message = "Keine ID fuer Dokument erhalten"
         return self.EBKuSError(REQUEST, RESPONSE)
     if gruppeid:
         dok = Gruppendokument(dokid)
         file='updgrvermeinf'
         gruppe_path = get_gruppe_path(int(gruppeid))
         fname = os.path.join(gruppe_path, dok['fname'])
     elif fallid:
         file='updvermeinf'
         dok = Dokument(dokid)
         fall = Fall(fallid)
         fname = os.path.join(get_akte_path(fall['akte__id']),
                              dok['fname'])
     else:
         self.last_error_message = "Keine ID fuer Gruppe oder Fall erhalten"
         return self.EBKuSError(REQUEST, RESPONSE)
     if not is_binary(dok):
         dok['text'] = open(fname, 'r').read()
     return self._edit_dokument(title='Dokument bearbeiten',
                                file=file,
                                dok=dok,
                                )
 def dokkarte_display(self, akid, fallid = None, mitid=None):
     "Darstellung der Dokumentenkarte."
     
     if not akid and fallid:
         fall = Fall(fallid)
         akte = Akte(fall['akte_id'])
     else:
         akte = Akte(int(akid))
         
     faelle = akte['faelle']
     faelle.sort('bgy', 'bgm', 'bgd')
     
     # Aktueller bzw. letzter Fall, Wiederaufnehmbarkeit
     
     letzter_fall = akte['letzter_fall']
     aktueller_fall = akte['aktueller_fall']
     
     res = []
     res.append(head_normal_t %("Dokumentenindex der Akte"))
     res.append(dokkarte_start_t1)
     if aktueller_fall:
         res.append(menuedok_t % aktueller_fall)
     else:
         res.append(menuedokzda_t % letzter_fall)
     res.append(dokausgabe1_t % ('Aktendokumente der Akte %(vn)s %(na)s' %akte))
     for f in faelle:
         dokl = DokumentList(where = 'fall_id = %s'
                                % (f['id']), order = 'vy,vm,vd')
         aktendokl = []
         for d in dokl:
             if d['art'] != cc('dokart', 'bnotiz'):
                 aktendokl.append(d)
         for a in aktendokl:
             if aktueller_fall:
                 if is_binary(a['mtyp']):
                     res.append(dokausgabe2_ohne_edit_t % a)
                 else:
                     res.append(dokausgabe2_mit_edit_t % a)
             else:
                 res.append(dokausgabe2b_t % a)
     res.append(dokausgabe3_t)
     res.append(dokausgabe1_t % ('Beraternotizen der Akte %(vn)s %(na)s' %akte))
     for f in faelle:
         beraternotizen = DokumentList(where = 'fall_id = %s and art = %s and mit_id = %s'% (f['id'], cc('dokart', 'bnotiz'), self.mitarbeiter['id']),
                                order = 'vy,vm,vd')
         for b in beraternotizen:
             if aktueller_fall:
                 if is_binary(b['mtyp']):
                     res.append(dokausgabe2_ohne_edit_t % b)
                 else:
                     res.append(dokausgabe2_mit_edit_t % b)
             else:
                 res.append(dokausgabe2b_t % b)
     res.append(dokausgabe3_t)
     if beraternotizen or aktendokl:
         res.append(dokausgabe1_t % ('Printausgabe'))
         if aktendokl and aktueller_fall:
             res.append(dokausgabe5_t % aktueller_fall)
         elif aktendokl and letzter_fall:
             res.append(dokausgabe5_t % letzter_fall)
         if beraternotizen and aktueller_fall:
             res.append(dokausgabe4_t % aktueller_fall)
         elif beraternotizen and letzter_fall:
             res.append(dokausgabe4_t % letzter_fall)
         res.append(dokausgabe6_t)
         ##*************************************************************************
         ##  Entfernt wegen UNIX Kommando agrep. Funktioniert nicht unter Win
         ##
         ##  MastaleckT 08.03.2002
         ##*************************************************************************
         #res.append(dokausgabe7a_t % ('Suche in den Texten', ''))
         #if aktueller_fall:
         #  res.append(formhiddennamevalues_t % ({'name' : 'fallid' ,
         #                                      'value' : aktueller_fall['id']}))
         #elif letzter_fall:
         #  res.append(formhiddennamevalues_t % ({'name' : 'fallid' ,
         #                                      'value' : letzter_fall['id']}))
         #res.append(dokausgabe7b_t)
     res.append(dokkarte_ende_t)
     return string.join(res, '')
    def _edit_dokument(self,
                       title,
                       file,
                       dok,
                       ):
        #print '_EDIT_DOKUMENT', file, dok
        fall_id = dok.get('fall_id')
        if fall_id:
            fall = Fall(fall_id)
            hidden_val = ('fallid', fall_id)
        else:
            fall = None
            gruppe = Gruppe(dok['gruppe_id'])
            hidden_val = ('gruppeid', gruppe['id'])
        new = file in ('dokeinf', 'dokgreinf', 'uploadeinf', 'uploadgreinf')
        upload = file in ('uploadeinf', 'uploadgreinf')
        meta = h.FieldsetInputTable(
            legend='Betreff, Art, Datum',
            daten=[[h.SelectItem(label='Art des Dokuments',
                                 name='art',
                                 options=self.for_kat('dokart', sel=dok['art']),
                                 ),
                    h.DatumItem(label='Datum',
                                name='v',
                                date=dok.getDate('v'),
                                ),
                    ],
                   [h.TextItem(label='Betreff',
                               name='betr',
                               value='%(betr)s' % dok,
                               class_='textboxverylarge',
                               n_col=4,
                               ),
                    ],
                   ],
            )
        if upload:
            inp = h.FieldsetInputTable(
                legend='Datei importieren',
                daten=[[h.UploadItem(label='Lokaler Dateiname',
                                     name='datei',
                                     tip='Lokale Datei hochladen',
                                     class_='textboxlarge',
                                     ),
                        ]],
                )
        elif not is_binary(dok):
            inp = h.FieldsetInputTable(
                legend='Inhalt',
                daten=[[h.TextareaItem(label_width='122pt',
                                       name='text',
                                       value=dok['text'],
                                       rows='10',
                                       cols='70',
                                       class_='textareaverylarge',
                                       tip='Text schreiben oder einfügen',
                                     ),
                ]],
                )
        else:
            inp = None
        if fall:
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ('Klientendokumente', 'kldok?fallid=%(id)s' % fall),
                           )
        else:
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ('Gruppenmenü', 'menugruppe'),
                           ('Gruppendokumente', 'grdok?gruppeid=%(id)s' % gruppe),
                           )
##         help={'uploadeinf': 'dateiimport',
##               'uploadgreinf': 'dateiimport',
##               # etc
##               }[file],
        res = h.FormPage(
            title=title,
            # TODO hier müssen neue Kapitel  rein, oder nachsehen
            breadcrumbs=breadcrumbs,
            #help=help,
            name='dokform',
            action=fall and 'kldok' or 'grdok',
            method='post',
            hidden=(('file', file),
                    ('dokid', dok['id']),
                    ('mitid', dok['mit_id']),
                    hidden_val,
                    ),
            rows=(fall and self.get_klientendaten_kurz(fall) or
                  self.get_gruppendaten_kurz(gruppe),
                  meta,
                  inp,
                  h.SpeichernZuruecksetzenAbbrechen(),
                  ),
            )
        return res.display()
 def gruppenkarte_display(self, gruppeid, mitid=None):
     "Darstellung der Gruppenkarte."
     
     gruppe = Gruppe(gruppeid)
     
     bezugspersonen = gruppe['bezugspersonen']
     bezugspersonen.sort('bezugsp_id__na','bezugsp_id__vn')
     faelle = gruppe['faelle']
     faelle.sort('fall_id__akte_id__na','fall_id__akte_id__vn')
     
     dokl = GruppendokumentList(where = 'gruppe_id = %s'
                            % (gruppe['id']), order = 'vy,vm,vd')
     
     beraternotizen = GruppendokumentList(where = 'gruppe_id = %s and art = %s and mit_id = %s' %
             (gruppe['id'], cc('dokart', 'bnotiz'), self.mitarbeiter['id']),
                            order = 'vy,vm,vd')
     
     res = []
     res.append(head_normal_t %("Dokumentenindex der Gruppe"))
     res.append(gruppenkarte_t1)
     res.append(gruppe_menu_t % gruppe)
     aktendokl = []
     for d in dokl:
         if d['art'] != cc('dokart', 'bnotiz'):
             aktendokl.append(d)
     res.append(dokausgabe1_t % ('Gruppenakte der Gruppe %(name)s' %gruppe))
     if aktendokl:
         for a in aktendokl:
             if is_binary(a['mtyp']):
                 res.append(dokausgabe2b_ohne_edit_t % a)
             else:
                 res.append(dokausgabe2b_mit_edit_t % a)
     res.append(dokausgabe3_t)
     res.append(dokausgabe1_t % ('Beraternotizen'))
     if beraternotizen:
         for b in beraternotizen:
             if is_binary(b['mtyp']):
                 res.append(dokausgabe2b_ohne_edit_t % b)
             else:
                 res.append(dokausgabe2b_mit_edit_t % b)
     res.append(dokausgabe3_t)
     res.append(dokausgabe1_t % ('Teilnehmerliste'))
     if bezugspersonen or faelle:
         for f in faelle:
             fall = Fall(f['fall_id'])
             akte = Akte(fall['akte_id'])
             res.append(teiln1_t % akte)
             res.append(teiln2_t % f)
             
         for b in bezugspersonen:
             bezugsp = Bezugsperson(b['bezugsp_id'])
             res.append(teiln1b_t % bezugsp)
             res.append(teiln2b_t % b)
             
     res.append(teiln3_t)
     res.append(dokausgabe1_t % ('Printausgabe'))
     if beraternotizen or aktendokl:
         if aktendokl:
             res.append(dokausgabe5b_t % gruppe )
         if beraternotizen:
             res.append(dokausgabe4b_t % gruppe )
     res.append(dokausgabe6_t)
     ##*************************************************************************
     ##  Entfernt wegen UNIX Kommando agrep. Funktioniert nicht unter Win
     ##
     ##  MastaleckT 08.03.2002
     ##*************************************************************************
     #if dokl:
     #  res.append(formhiddennamevalues_t % ({'name' : 'gruppeid' ,
     #                                        'value' : gruppeid}))
     #  res.append(dokausgabe7_t % ('Suche in den Texten', ''))
     res.append(gruppenkarte_ende_t)
     return string.join(res, '')