Django Library PaTT
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

creole.py 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from django.urls.base import reverse
  2. from .models import Project
  3. def task_link_filter(text):
  4. render_txt = ''
  5. while len(text) > 0:
  6. try:
  7. pos = text.index('[[task:')
  8. except ValueError:
  9. pos = len(text)
  10. render_txt += text[:pos]
  11. text = text[pos + 7:]
  12. if len(text):
  13. pos = text.index(']]')
  14. try:
  15. task_id = int(text[:pos])
  16. except ValueError:
  17. render_txt += "[[task:" + text[:pos + 2]
  18. else:
  19. render_txt += '[[%s|#%d]]' % (reverse('patt-taskview', kwargs={'task_id': task_id}), task_id)
  20. text = text[pos + 2:]
  21. return render_txt
  22. def tasklist_link_filter(text):
  23. render_txt = ''
  24. while len(text) > 0:
  25. try:
  26. pos = text.index('[[tasklist:')
  27. except ValueError:
  28. pos = len(text)
  29. render_txt += text[:pos]
  30. text = text[pos + 11:]
  31. if len(text):
  32. pos = text.index(']]')
  33. try:
  34. project_id = int(text[:pos])
  35. except ValueError:
  36. render_txt += "[[tasklist:" + text[:pos + 2]
  37. else:
  38. p = Project.objects.get(id=project_id)
  39. render_txt += '[[%s|%s]]' % (reverse('patt-tasklist-prj', kwargs={'project_id': project_id}), p.name)
  40. text = text[pos + 2:]
  41. return render_txt