PageRenderTime 53ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/coding/walle_2.0/web/xmlworld/views.py

http://walle.googlecode.com/
Python | 115 lines | 109 code | 3 blank | 3 comment | 1 complexity | 93d3b3391598ab14ad9843e2198ca06d MD5 | raw file
Possible License(s): LGPL-2.1
  1. # coding=utf-8
  2. import os
  3. from walle.web.xmlworld import xml_file_forms
  4. from walle.web.base_fs import get_request_value
  5. from walle.web.base_fs import base_response
  6. from walle.web.xmlworld import parse_catalog
  7. from walle.web import config
  8. def query_a_xml_file(request):
  9. # f = (r"E:\wps_\wps_Io\result_dir\20090717_175802\??????.xml").decode("utf-8")
  10. f = (r"e:\wps_\wps_Io\result_dir\20090720_163734\??????.xml").decode("utf-8")
  11. # print "request = ", request
  12. datas = get_request_value.get_all_value(request, {})
  13. f = datas.get(u'query_file_path', "").replace(u"__x__", u"\\")
  14. datas['query_file_path'] = datas.get(u'query_file_path', "")
  15. if not f:
  16. datas["text_values"] = "no select file"
  17. f = os.path.join(config.show_xml_file_dir, f)
  18. if os.path.isfile(f):
  19. if xml_file_forms.is_a_ok_xml_file(f):
  20. query_form = xml_file_forms.query_form(-1, f, request)
  21. datas["query_form"] = query_form
  22. elif not is_a_text_file(f):
  23. datas["text_values"] = "the file not a text file."
  24. else:
  25. fo = open(f, 'r')
  26. t = fo.read()
  27. fo.close()
  28. datas["text_values"] = ""
  29. try:
  30. datas["text_values"] = t.decode("utf-8")
  31. except:
  32. try:
  33. datas["text_values"] = t.decode("gbk")
  34. except:
  35. try:
  36. datas["text_values"] = t.decode("utf-16")
  37. except:
  38. datas["text_values"] = "text not utf-8, gbk or utf-16 code."
  39. if ".html" == os.path.splitext(f)[1].lower() or ".xml" == os.path.splitext(f)[1].lower():
  40. return base_response.return_HttpResponse(request, datas['text_values'])
  41. datas["text_values"] = datas["text_values"].replace("<", "&lt;")
  42. datas["text_values"] = datas["text_values"].replace(">", "&gt;")
  43. datas["text_values"] = datas["text_values"].replace("\n", "<br/>")
  44. datas["text_values"] = datas["text_values"].replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;")
  45. else:
  46. datas["text_values"] = "not choose a file."
  47. # print "qqq datas = ", datas
  48. return base_response.return_response(request, 'xmlworld/query_a_xml_file.html', {"datas": datas})
  49. def main_board(request):
  50. datas = get_request_value.get_all_value(request)
  51. return base_response.return_response(request, 'xmlworld/main_board.html', {"datas": datas})
  52. def is_a_text_file(f):
  53. text_f_type = ['.log',
  54. '.txt' # normal
  55. , '.as', '.mx' # actionscript
  56. , '.ada', '.ads', '.adb' # ada
  57. , '.asm' # asm
  58. , '.asp' # asp
  59. , '.au3' # autoit
  60. , '.sh', '.bsh' # bash
  61. , '.bat', '.cmd', '.nt' # batch
  62. , '.c' # c
  63. , '.ml', '.mli', '.sml', '.thy' # caml
  64. , '.cmake' # cmake
  65. , '.h', '.hpp', '.hxx', '.cpp', '.cxx', '.cc' # cpp
  66. , '.cs' # cs
  67. , '.css' # css
  68. , '.diff', '.patch' # diff
  69. , '.f', '.for', '.f90', '.f95', '.f2k' # fortran
  70. , '.hs', '.lhs', '.as', '.las' # haskell
  71. , '.html', '.htm', '.shtml', '.shtm', '.xhtml' # html
  72. , '.ini', '.inf', '.reg', '.url' # ini
  73. , '.iss' # inno
  74. , '.java' # java
  75. , '.js' # javascript
  76. , '.kix' # kix
  77. , '.lsp', '.lisp' # lisp
  78. , '.lua' # lua
  79. , '.mak' # makefile
  80. , '.m' # matlab
  81. , '.nfo' # nfo
  82. , '.nsi', '.nsh' # nsis
  83. # objc
  84. , '.pas', '.inc' # pascal
  85. , '.pl', '.pm', '.plx' # perl
  86. , '.php', '.php3', '.phtml' # php
  87. , '.ps' # postscript
  88. , '.properties' # props
  89. , '.py', '.pyw' # python
  90. , '.rc' # rc
  91. , '.rb', '.rbw' # ruby
  92. , '.scm', '.smd', '.ss' # scheme
  93. , '.st' # smalltalk
  94. , '.sql' # sql
  95. , '.tcl' # tcl
  96. , '.tex' # tex
  97. , '.vb', '.vbs' # vb
  98. , '.v' # verilog
  99. , '.vhd', '.vhdl' # vhdl
  100. , '.xml', '.xsml', '.xsl', '.xsd', '.kml', '.wsdl' # xml
  101. , '.yml' # yaml
  102. ]
  103. ext = os.path.splitext(f)[1]
  104. # print ext, text_f_type
  105. if ext.lower() in text_f_type:
  106. return True
  107. return False