示例#1
0
 def bundel(self, bundel):
     """Pagina met inhoudsopgave van een verzameling
     """
     dh = Cats("papa")
     ok = False
     for y in dh.categorieen:
         if y[1] == bundel:
             ok = True
             break
     if not ok:
         raise cherrypy.HTTPError(403)
     if bundel == "Langere":
         regels = [
             "<h3>hee, typisch, deze zijn geen van alle afgemaakt...</h3>"
         ]
     else:
         regels = ["<br />"]
     regels.append('<div style="padding-left: 20%">')
     _, path, id_titels = catlijst("papa", bundel)
     for x in id_titels:
         path = pathlib.Path(x[2])
         regels.append('<a href="/vertel/{}/{}">{}</a><br />'.format(
             bundel, '~'.join((str(path.parent), path.name)), x[1]))
     regels.append('</div>')
     self.subsection = bundel
     return self.build(regels)
示例#2
0
def catlijst(user, item=None):
    """lijst alle verhalen bij een bepaalde categorie

    geeft AttributeError als de opgegeven user niet bestaat
    """
    dh = Cats(user)
    search_id = dh.zoek_id_bij_naam(item)
    parser = make_parser()
    parser.setFeature(feature_namespaces, 0)
    dh = FindList(search_id, "cat")
    parser.setContentHandler(dh)
    parser.parse(vertellerfile.format(user))
    urlbase = dh.urlbase
    path = dh.path
    lijst = [x for x in dh.id_titels]
    return urlbase, path, lijst
示例#3
0
 def wijzig_cat(self, item):
     th = Cats(self.user)
     try:
         test = int(item)
     except ValueError:
         test = 0
     if test:
         try:
             test = th.zoek_naam_bij_id(item)
         except AttributeError:
             raise AttributeError("Categorie %s bestaat niet bij user" % item)
         self.cat = item
     else:
         try:
             self.cat = th.zoek_id_bij_naam(item)
         except AttributeError:
             raise AttributeError("Categorie %s bestaat niet bij user" % item)
示例#4
0
def process_user(args):
    cat_id = args.get("id", '')
    if cat_id:
        catnaam = args["naam"]
        dh = Cats(args["user"])
        try:
            huidigenaam = dh.zoek_naam(catnaam)
        except NoDataError:
            dh.new_cat(catnaam)
            self.meld = ("categorie '%s' toegevoegd" % catnaam)
            return
        if huidigenaam != catnaam:
            dh.wijzig_cat(huidigenaam, catnaam)
            meld = ("categorie '%s' gewijzigd in %s" %
                (huidigenaam, catnaam))
        else:
            meld = ("categorie '%s' is niet gewijzigd" % catnaam)
    else:
        wijzig = False
        dh = Verteller(args["user"])
        test = args.get("url", '')
        if test:
            dh.new_urlbase(test)
            wijzig = True
        test = args.get("pad", '')
        if test:
            dh.new_basepath(test)
            wijzig = True
        if wijzig:
            dh.write()
            self.meld = "Gegevens verteller gewijzigd"
        else:
            self.meld = "Gegevens verteller niet gewijzigd"
示例#5
0
 def __init__(self,args):
     self.doe = args.get("doe", '') # actie
     self.sel_id = args.get("selId", '')  # verhaal id
     self.user = args.get("user", '')  # current user
     self.van = args.get("van", '')    # afkomstig van selectiescherm?
     self.sel_hoofdst = args.get("selH", '')  # selhoofdstuk vanuit kiezen hoofdstuk
     self.hoofdstuknummer = int(args.get("selHs", '-1')) # hoofdstuk nummer vanuit wijzig hoofdstuk
     self.hoofdstuktitel = args.get("HsTitel", '') # titel van het hoofdstuk
     self.hoofdstuktekst = args.get("HsTekst", '').split('\n') # tekst van het hoofdstuk
     self.verhaaltitel = args.get("titel", '')  # htitel bij updaten tekst (verhaaltitel?)
     self.sel_cat = args.get("selCat", '')  # geselecteerde categorie bij updaten tekst en opvoeren nieuwe
     self.sel_item = args.get("selItem", '') # filenaam
     if self.doe == '':
         self.breekaf("Geen actie ('doe') opgegeven")
         return
     if self.user == '':
         self.breekaf("Geen user opgegeven")
         return
     ## self.regels = []
     ## self.regels.append(args)
     ## self.regels.append(self.__dict__)
     ## self.regels.append(" ")
     ## return
     self.aantal_hoofdst = 0
     self.meld = ''
     self.hoofdstuktitels = []
     nieuw = False
     dh = Verteller(self.user)
     if not dh.exists:
         self.breekaf("Verteller bestaat niet")
         return
     self.laatste = dh.laatste
     self.basepath = dh.basepath
     self.cats = Cats(self.user).categorieen
     err = ''
     if self.doe == "nieuw":     # nieuweTekst = 1 - nieuweTekst, selCat
         if self.sel_id != '0':
             self.breekaf('Geen selid of fout verhaal geselecteerd')
             return
         nieuw = True
         for cat, name, text in self.cats:
             if name == self.sel_cat:
                 self.sel_cat = cat
         err = self.nieuw_verhaal()
     else:
         if self.sel_id == '':
             self.breekaf('Geen verhaal geselecteerd')
             return
         if self.doe == "selTekst":    # we komen vanuit selectie - alleen selId is gevuld
             self.hoofdstuknummer = 1
         elif self.doe == "selHs":     # we komen vanuit kies hoofdstuk - selId, selH
             if self.sel_hoofdst == '':
                 self.breekaf('Geen hoofdstuk geselecteerd')
                 return
             i = self.sel_hoofdst.find("nw")
             if i >= 0:
                 self.hoofdstuknummer = int(self.sel_hoofdst[:i])
                 ## self.nieuw_hoofdstuk = True
             else:
                 self.hoofdstuknummer = int(self.sel_hoofdst)
         elif self.doe == "wijzigTxt": # we komen vanuit wijzig hoofdstuk - selId, selHs, HsTitel, HsTekst
             if self.hoofdstuknummer == -1:
                 self.breekaf('Geen hoofdstuk geselecteerd')
                 return
             else:
                 err = self.wijzig_hoofdstuktekst()
         elif self.doe == "wijzigVh":  # we komen vanuit updaten tekst - selId, titel, selItem, selCat
             if self.sel_item == "" and self.hoofdstuknummer == 0:
                 self.breekaf('Geen bestandsnaam meegegeven')
                 return
             err = self.wijzig_verhaal()
         else:
             err = "Onbekende actie: '%s'" % self.doe
         if not err:
             err = self.bestaand_verhaal()
     self.regels = []
     if err:
         self.breekaf(err)
         return
     self.maakhtml(nieuw)
示例#6
0
 def __init__(self, args):
     self.user = args.get("user", "")
     self.select = args.get("select", "")
     self.cat =  args.get("cat", "")
     self.zoek = args.get("zoek", "")
     self.meld = args.get("meld", "")
     self.regels = []
     if self.select == "start":
         self.toon_start()
         return
     # het eerste dat er moet gebeuren is controleren of de user (Verteller) bestaat
     # zo niet, dan ALTIJD terugsturen met de melding "bestaat niet, klik op uitvoeren om de user op te voeren"
     #   of de knoptekst aanpassen, en met een onchange op het userveld deze terug wijzigen
     if not self.user:
         self.select = "noUser"
         self.toon_start()
         return
     dh = Verteller(self.user)
     if dh.exists:
         if self.select == "nweUser":
             self.meld = 'User bestaat al'
             self.toon_start()
             return
     else:
         if self.select == "nweUser":
             h = User(self.user).new()
             if h == "OK":
                 h = ""
                 dh = Verteller(self.user)
                 try:
                     dh.nieuw()
                 except AttributeError as meld:
                     h = meld
             if h != "":
                 self.regels = ("<br/>", h)
                 return
             self.select = "chgRoot"
         else:
             self.select = "errUser"
             self.toon_start()
             return
     if self.select == "nweTekst":
         self.regels.append('Location: %svertel_detail.py?hUser=%s' % (
             http_cgipad, self.user))
         return
     with open(os.path.join(htmlroot, "vertel_select.html")) as f_in:
         for r in f_in:
             r = r.rstrip()
             if "Magiokis!" in r:
                 self.regels.append(r % self.user)
             elif r == "<!-- backtotop -->":
                 hgoto = ("document.location='vertel_start.py?user=%s'" %
                     self.user)
                 self.regels.append('<input type="button" value="Terug naar '
                     'startscherm" onclick="%s" />\n' % hgoto)
             elif r == "<!-- select -->":
                 self.fout = False
                 self.c = Cats(self.user)
                 if self.select == "selCat":
                     if len(self.c.categorieen) > 0:
                         self.maak_selcat()
                     else:
                         self.meld = ("nog geen categorieen aanwezig bij deze "
                             "verteller")
                         self.maak_chgroot()
                 elif self.select == "selZoek":
                     if self.zoek == "":
                         self.regels = []
                         self.meld = 'Geen zoektekst opgegeven'
                         self.toon_start()
                         return
                     self.maak_selzoek()
                 elif self.select == "nweCat":
                     self.maak_nwecat()
                 elif self.select == "chgRoot":
                     self.maak_chgroot()
                 else:
                     self.fout = True
                 if self.fout:
                     self.regels.append(fouttekst.format(self.user, self.select))
             elif "stylesheet" in r:
                 self.regels.append(r % httproot)
             else:
                 self.regels.append(r)
示例#7
0
class Select:
    def __init__(self, args):
        self.user = args.get("user", "")
        self.select = args.get("select", "")
        self.cat =  args.get("cat", "")
        self.zoek = args.get("zoek", "")
        self.meld = args.get("meld", "")
        self.regels = []
        if self.select == "start":
            self.toon_start()
            return
        # het eerste dat er moet gebeuren is controleren of de user (Verteller) bestaat
        # zo niet, dan ALTIJD terugsturen met de melding "bestaat niet, klik op uitvoeren om de user op te voeren"
        #   of de knoptekst aanpassen, en met een onchange op het userveld deze terug wijzigen
        if not self.user:
            self.select = "noUser"
            self.toon_start()
            return
        dh = Verteller(self.user)
        if dh.exists:
            if self.select == "nweUser":
                self.meld = 'User bestaat al'
                self.toon_start()
                return
        else:
            if self.select == "nweUser":
                h = User(self.user).new()
                if h == "OK":
                    h = ""
                    dh = Verteller(self.user)
                    try:
                        dh.nieuw()
                    except AttributeError as meld:
                        h = meld
                if h != "":
                    self.regels = ("<br/>", h)
                    return
                self.select = "chgRoot"
            else:
                self.select = "errUser"
                self.toon_start()
                return
        if self.select == "nweTekst":
            self.regels.append('Location: %svertel_detail.py?hUser=%s' % (
                http_cgipad, self.user))
            return
        with open(os.path.join(htmlroot, "vertel_select.html")) as f_in:
            for r in f_in:
                r = r.rstrip()
                if "Magiokis!" in r:
                    self.regels.append(r % self.user)
                elif r == "<!-- backtotop -->":
                    hgoto = ("document.location='vertel_start.py?user=%s'" %
                        self.user)
                    self.regels.append('<input type="button" value="Terug naar '
                        'startscherm" onclick="%s" />\n' % hgoto)
                elif r == "<!-- select -->":
                    self.fout = False
                    self.c = Cats(self.user)
                    if self.select == "selCat":
                        if len(self.c.categorieen) > 0:
                            self.maak_selcat()
                        else:
                            self.meld = ("nog geen categorieen aanwezig bij deze "
                                "verteller")
                            self.maak_chgroot()
                    elif self.select == "selZoek":
                        if self.zoek == "":
                            self.regels = []
                            self.meld = 'Geen zoektekst opgegeven'
                            self.toon_start()
                            return
                        self.maak_selzoek()
                    elif self.select == "nweCat":
                        self.maak_nwecat()
                    elif self.select == "chgRoot":
                        self.maak_chgroot()
                    else:
                        self.fout = True
                    if self.fout:
                        self.regels.append(fouttekst.format(self.user, self.select))
                elif "stylesheet" in r:
                    self.regels.append(r % httproot)
                else:
                    self.regels.append(r)

    def toon_start(self):
        with open(os.path.join(htmlroot, "vertel_start.html")) as f_in:
            for x in f_in:
                x = x.rstrip()
                if x == "<!-- backtotop -->":
                    # alleen als door Launch een cookie gezet is met het userid, moet nog gemaakt worden
                    #~ hquery = 'userid=woefdram'	# voor nu even
                    #~ # hgoto = "document.location='magiokis_begin.py?" + hquery + "'"
                    #~ hgoto = "document.location='" + httproot + "magiokis_launch.html'"
                    #~ print ('<input type="button" value="Terug naar startscherm" onclick="%s" />' % (hgoto))
                    pass
                elif "%s" in x:
                    if x.startswith("<link"):
                        self.regels.append(x % httproot)
                        if self.select == "errUser":
                            self.regels.append(scripttext)
                    elif x.startswith("<form"):
                        self.regels.append(x % http_cgipad)
                    elif "txtUser" in x:
                        h = ""
                        if self.select == "errUser":
                            h = ' onchange="btnText()"'
                        h = ('value="%s"%s' % (self.user,h))
                        self.regels.append(x % h)
                    elif "hDo" in x:
                        h = ""
                        if self.select == "errUser":
                            h = "nweUser"
                        self.regels.append(x % h)
                elif '"meld"' in x:
                    if self.select == "noUser":
                        self.meld = ("Geen usernaam opgegeven; "
                            "zonder usernaam kunnen we niet verder")
                    elif self.select == "errUser":
                        self.meld = ("User bestaat niet; "
                            "vul een andere naam in of voer hem eerst op")
                    if self.meld != "":
                        self.regels.append(x.replace('&nbsp;', self.meld))
                elif "  Uitvoeren  " in x and self.select == "errUser":
                    self.regels.append(x.replace("  Uitvoeren  ",
                        "Nieuwe user opvoeren"))
                else:
                    self.regels.append(x)

    def maak_selcat(self):
        if self.cat != "":
            try:
                lijst = catlijst(self.user, self.cat)[2]
            except AttributeError as err:
                self.regels = []
                self.meld = str(err) + ' bij user ' + self.user
                self.toon_start()
                return
            titels = False
            if len(lijst) > 0:
                titels = True
        with open(os.path.join(htmlroot, "vertel_selcat.html")) as f_in:
            for x in f_in:
                x = x.rstrip()
                if "body" in x:
                    continue
                elif x.startswith("<form"):
                    self.regels.append(x % http_cgipad)
                    if "frmlist" in x and self.cat == "":
                        break # de rest is alleen van toepassing bij een ingevulde categorie
                elif "hUser" in x:
                    self.regels.append(x % self.user)
                elif x.startswith("<select"):
                    if "lbSelCat" in x:
                        select, option, value, endvalue, endoption, endselect = \
                            x.split("%s")
                        self.regels.append(select)
                        for y in self.c.categorieen:
                            s = ""
                            if y[1] == self.cat:
                                s = ' selected="selected"'
                            self.regels.append("".join((option, s, value, y[1],
                                endvalue, y[1], endoption)))
                        self.regels.append(endselect)
                    elif "lbSelItem" in x:
                        select, option, midoption, endoption, endselect = \
                            x.split("%s")
                        if titels:
                            self.regels.append(select)
                            for y in lijst:
                                self.regels.append("".join((option, y[0],
                                    midoption, y[1], endoption)))
                            self.regels.append(endselect)
                elif "%seksten" in x:
                    if titels:
                        s1, s2 = "T", ": "
                    else:
                        s1, s2 = "Geen t", ""
                    self.regels.append(x % (s1, self.cat, s2))
                elif "hVan" in x:
                    s = "cat-%s" % self.cat if titels else ""
                    self.regels.append(x % s)
                elif "Toon tekst" in x:
                    s = 'disabled="disabled"' if titels else ''
                    self.regels.append(x % s)
                elif "hNwInCat" in x:
                    self.regels.append(x % self.cat)
                else:
                    self.regels.append(x)

    def maak_selzoek(self):
        lijst = vertellijst(self.user, self.zoek)[2]
        with open(os.path.join(htmlroot, "vertel_selzoek.html")) as f_in:
            for x in f_in:
                if "body" in x:
                    continue
                elif x.startswith("<form"):
                    self.regels.append(x % http_cgipad)
                elif "hUser" in x:
                    self.regels.append(x % self.user)
                elif x.startswith("<select"):
                    select, option, midoption, endoption, endselect = x.split("%s")
                    if "lbSelItem" in x:
                        if lijst:
                            self.regels.append(select)
                            for y in lijst:
                                self.regels.append("".join((option, y[0], midoption,
                                    y[1], endoption)))
                            self.regels.append(endselect)
                elif "%seksten" in x:
                    if lijst:
                        s1, s2 = "T", ": "
                    else:
                        s1, s2 = "Geen t", ""
                    self.regels.append(x % (s1, self.zoek, s2))
                elif "hVan" in x:
                    s = "zoek-%s" % self.zoek if lijst else ""
                    self.regels.append(x % s)
                elif "Toon tekst" in x:
                    s = 'disabled="disabled"' if lijst else ''
                    self.regels.append(x % s)
                else:
                    self.regels.append(x)

    def maak_nwecat(self):
        m = ""
        if self.cat != "":
            if self.c.new_cat(self.cat):
                self.regels = []
                self.meld = ('categorie "%s" opgevoerd' % self.cat)
                self.toon_start()
                return
            else:
                m = "<br /><br />De opgegeven categorie komt al voor"
        with open(os.path.join(htmlroot, "vertel_nwecat.html")) as f_in:
            for x in f_in:
                if "body" in x:
                    continue
                elif x.startswith("<form"):
                    self.regels.append(x % http_cgipad)
                elif "txtNweCat" in x:
                    self.regels.append(x % self.cat)
                elif "%s" in x:
                    self.regels.append(x % m)
                else:
                    self.regels.append(x)

    def maak_chgroot(self):
        dh = Cats(self.user)
        vh = Verteller(self.user)
        u = vh.urlbase or "http://..."
        p = vh.basepath or '/home/user/...'
        skip = False
        herhaal = False
        self.regels = []
        herhaalze = []
        with open(os.path.join(htmlroot, "vertel_user.html")) as f_in:
            for x in f_in:
                x = x.rstrip()
                if x == "<!-- backtotop -->":
                    hgoto = ("document.location='vertel_start.py?user=%s'" %
                        self.user)
                    self.regels.append('<input type="button" value="Terug naar '
                        'startscherm" onclick="%s" />\n' % hgoto)
                elif x == "<!--":
                    skip = True
                if skip:
                    if x == "-->":
                        skip = False
                    continue
                if herhaal:
                    herhaalze.append(x)
                    if "/form" in x:
                        herhaal = False
                        for c in dh.categorieen:
                            id = int(c[0])
                            naam = c[1]
                            for y in herhaalze:
                                if "<form" in y:
                                    self.regels.append(y % http_cgipad)
                                elif "hUser%03i" in y:
                                    self.regels.append(y % (id, id, self.user))
                                elif "txtCat%03i"  in y:
                                    self.regels.append(y % (id, naam))
                                else:
                                    self.regels.append(y)
                        id = len(dh.categorieen) + 1
                        naam = "(nieuwe, nog niet bestaande categorie)"
                        for y in herhaalze:
                            if "<form" in y:
                                self.regels.append(y % http_cgipad)
                            elif "hUser%03i" in y:
                                self.regels.append(y % (id, id, self.user))
                            elif "txtCat%03i" in y:
                                self.regels.append(y % (id, naam))
                            else:
                                self.regels.append(y)
                elif "Categorie" in x:
                    self.regels.append(x)
                    herhaal = True
                elif "<link" in x:
                    self.regels.append(x % httproot)
                elif "<form" in x:
                    self.regels.append(x % http_cgipad)
                elif "hUser" in x:
                    self.regels.append(x % (self.user, self.user))
                elif "txtUrl" in x:
                    self.regels.append(x % u)
                elif "txtPad" in x:
                    self.regels.append(x % p)
                elif "meld" in x:
                    self.regels.append(x % self.meld)
                else:
                    self.regels.append(x)
示例#8
0
 def maak_chgroot(self):
     dh = Cats(self.user)
     vh = Verteller(self.user)
     u = vh.urlbase or "http://..."
     p = vh.basepath or '/home/user/...'
     skip = False
     herhaal = False
     self.regels = []
     herhaalze = []
     with open(os.path.join(htmlroot, "vertel_user.html")) as f_in:
         for x in f_in:
             x = x.rstrip()
             if x == "<!-- backtotop -->":
                 hgoto = ("document.location='vertel_start.py?user=%s'" %
                     self.user)
                 self.regels.append('<input type="button" value="Terug naar '
                     'startscherm" onclick="%s" />\n' % hgoto)
             elif x == "<!--":
                 skip = True
             if skip:
                 if x == "-->":
                     skip = False
                 continue
             if herhaal:
                 herhaalze.append(x)
                 if "/form" in x:
                     herhaal = False
                     for c in dh.categorieen:
                         id = int(c[0])
                         naam = c[1]
                         for y in herhaalze:
                             if "<form" in y:
                                 self.regels.append(y % http_cgipad)
                             elif "hUser%03i" in y:
                                 self.regels.append(y % (id, id, self.user))
                             elif "txtCat%03i"  in y:
                                 self.regels.append(y % (id, naam))
                             else:
                                 self.regels.append(y)
                     id = len(dh.categorieen) + 1
                     naam = "(nieuwe, nog niet bestaande categorie)"
                     for y in herhaalze:
                         if "<form" in y:
                             self.regels.append(y % http_cgipad)
                         elif "hUser%03i" in y:
                             self.regels.append(y % (id, id, self.user))
                         elif "txtCat%03i" in y:
                             self.regels.append(y % (id, naam))
                         else:
                             self.regels.append(y)
             elif "Categorie" in x:
                 self.regels.append(x)
                 herhaal = True
             elif "<link" in x:
                 self.regels.append(x % httproot)
             elif "<form" in x:
                 self.regels.append(x % http_cgipad)
             elif "hUser" in x:
                 self.regels.append(x % (self.user, self.user))
             elif "txtUrl" in x:
                 self.regels.append(x % u)
             elif "txtPad" in x:
                 self.regels.append(x % p)
             elif "meld" in x:
                 self.regels.append(x % self.meld)
             else:
                 self.regels.append(x)
示例#9
0
 def get_catnaam(self):
     ch = Cats(self.user)
     return ch.zoek_naam(self.cat)