Giter VIP home page Giter VIP logo

curitz's Issues

"Clear deleted" on a many tickes could result in "list index out of range"

Version: 0.9.20

When clearing out a lot of closed tickets with the "Y" command, the code could fail with a list index out of range.

  File "/home/runarb/.local/bin/curitz", line 8, in <module>
    sys.exit(main())
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
    curses.wrapper(uiloop, config)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
    runner(screen, config)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 866, in runner
    lb.draw()
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/culistbox.py", line 69, in draw
    if isinstance(self.elements[i], BoxElement):
IndexError: list index out of range```

This might because of the current "page" of tickets is beeing deleted, or something like that. 
I've not debugged the issue other than found it happening when cleaning a lot of tickets when debugging zino2

broken pipe

I've not debugged this to far, but some times the zino server sends a reset or something that results in a Broken pipe error in curitz.

This could also be because of a firewall in-between have reset the session because of inactivity.

  File "/home/runarb/.local/bin/curitz", line 8, in <module>
    sys.exit(main())
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
    curses.wrapper(uiloop, config)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
    runner(screen, config)
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 872, in runner
    doKeepalive()
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 646, in doKeepalive
    session.case(0)
  File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 534, in case
    return Case(self, id)
  File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 210, in __init__
    self._attrs = self._zino.get_attributes(caseid)
  File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 608, in get_attributes
    attrlist = self.get_raw_attributes(caseid)
  File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 587, in get_raw_attributes
    response = self._request(cmd.encode("UTF-8"))
  File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 392, in _request
    self._sock.send(command)
BrokenPipeError: [Errno 32] Broken pipe```

Filter crashes curitz on invalid regex subpattern match with eg. `(` and `)` characters

if trying to search for a string including a not regex valid set of ( and ) characters makes curitz exit with a traceback:

--> $ curitz
Traceback (most recent call last):
  File "/home/runarb/.local/bin/curitz", line 8, in <module>
    sys.exit(main())
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
    curses.wrapper(uiloop, config)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
    runner(screen, config)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 865, in runner
    create_case_list(config)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 454, in create_case_list
    sorted_cases = sortCases(cases, field="updated", filter=casefilter)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 420, in sortCases
    if re.match(
  File "/usr/lib/python3.10/re.py", line 190, in match
    return _compile(pattern, flags).match(string)
  File "/usr/lib/python3.10/re.py", line 303, in _compile
    p = sre_compile.compile(pattern, flags)
  File "/usr/lib/python3.10/sre_compile.py", line 788, in compile
    p = sre_parse.parse(p, flags)
  File "/usr/lib/python3.10/sre_parse.py", line 955, in parse
    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
  File "/usr/lib/python3.10/sre_parse.py", line 444, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
  File "/usr/lib/python3.10/sre_parse.py", line 843, in _parse
    raise source.error("missing ), unterminated subpattern",
re.error: missing ), unterminated subpattern at position 5

This happens because the string entered is passed right into a regex without error handling,
Entering a incomplete subpattern should generate a better error message to the user.

resize terminal on initial loading of tickets creates traceback

Resizing the terminal (shrinking the windown in one directionwhen the initial loading of tickets screen is present creates a traceback when ticket loading is finished.

Traceback (most recent call last):
  File "/home/runarb/.local/bin/curitz", line 8, in <module>
    sys.exit(main())
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
    curses.wrapper(uiloop, config)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
    runner(screen, config)
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 679, in runner
    lb.draw()
  File "/home/runarb/.local/lib/python3.10/site-packages/curitz/culistbox.py", line 94, in draw
    self.box.addstr(
_curses.error: addwstr() returned ERR

i think the cause of this is that screen size is calculated before entering the initial load dialog and then used on the "window" thereafter. then as addwstr cant really paint the pixels thats removed fron the terminal at the edge of the window it crashes with a traceback.

Empty case list handling causes curitz traceback

When you have a completely empty case-list, eg. after filtering with a random nonexistant string.
if you then press "[ENTER]", this tracebacks curitz with the error:

Traceback (most recent call last):
  File "/home/runarb/.local/bin/curitz", line 8, in <module>
    sys.exit(main())
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
    curses.wrapper(uiloop, config)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
    runner(screen, config)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 845, in runner
    uiShowHistory(screen, lb.active.id, config)
  File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/culistbox.py", line 118, in active
    return self.elements[self.active_element]
IndexError: list index out of range

This should instead just do nothing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.