Newer
Older
Digital_Repository / Old / pysocks / index.cgi
nstanger on 12 Nov 2005 3 KB - Second attempt at importing!
  1. #! /usr/bin/python2.2
  2.  
  3. #------------------------------------------------------------------------
  4. # name:
  5. # author: J Skinner
  6. # Date Written:
  7. # Purpose:
  8. # Notes
  9. #------------------------------------------------------------------------
  10.  
  11.  
  12.  
  13. #------------------------ GLOBALS ------------------------------------
  14.  
  15. DEBUG_MAIN = 0
  16. DEBUG = 0
  17. IS_CGI = 1
  18. IS_DB = 1
  19.  
  20. #------------------------ IMPORTS ------------------------------------
  21.  
  22. import string
  23. import os
  24. import sys
  25.  
  26. import cgi
  27. import traceback
  28.  
  29. import access
  30.  
  31. #import cookie
  32. from auth import Auth
  33. from page import Page
  34. from the_form import The_Form
  35. from constants import *
  36.  
  37. #------------------------ GLOBALS ----------------------------------
  38.  
  39. HEADER_BLOCK = '''\
  40. Content-type: text/html
  41. %(cookie)s
  42.  
  43. '''
  44. #------------------------ CODE ------------------------------------
  45.  
  46. def upload(db, auth, form_data):
  47. if form_data.filename:
  48. has_blob = 1
  49. else:
  50. has_blob = 0
  51. the_id = db.put('document_info', {'pub_date':form_data.pub_date,
  52. 'title':form_data.title, 'short_desc':form_data.short_desc,
  53. 'long_desc':form_data.long_desc, 'has_blob':has_blob})
  54. if type(form_data.authors) is not type([]):
  55. db.put('doc_auth', {'document_id':str(the_id),
  56. 'author_id':str(form_data.authors)})
  57. else:
  58. for i in form_data.authors:
  59. db.put('doc_auth', {'doc_id':str(the_id), 'author_id':str(i)})
  60. # for i in [_i.strip() for _i in form_data.keywords.split(',')]:
  61. # try:
  62. # keyword_id = db.get('keywords', ['keyword_id'],
  63. # where='keyword="%s"'%i)
  64. # except db.NO_DATA:
  65. # keyword_id = db.put('keywords', {'keyword':i})
  66. # db.put('kw_doc', {'doc_id':the_id, 'keyword_id':keyword_id})
  67.  
  68. print 'content-type: text/html'
  69. print
  70. print form_data.filename_name
  71. db.put('document_data', {'doc_id':the_id, 'the_doc':form_data.filename,
  72. 'filename':form_data.filename_name})
  73.  
  74. form_data.action = 'upload_success'
  75. return 1, UPLOAD_SUCCESS
  76.  
  77. def get_xtra_info(form):
  78. xtra_info = {}
  79. for i in form.keys():
  80. try:
  81. xtra_info[i] = form[i].value
  82. except:
  83. print 'content-type: text/html'
  84. print
  85. print form[i]
  86. print i
  87. if xtra_info != {}:
  88. return xtra_info
  89. else:
  90. return None
  91.  
  92. def main():
  93. # print 'Content-type: text/html'
  94. # print
  95.  
  96. db = access.Access(dbname='pysocks', user='crypt')
  97. page_info = None
  98.  
  99. form = cgi.FieldStorage()
  100.  
  101. form_data = The_Form()
  102. form_data.get_values_from_form(form)
  103. auth = Auth(db, form_data)
  104.  
  105. #status, page_id = auth.login_check()
  106.  
  107. page_id = None
  108.  
  109. xtra_info = get_xtra_info(form)
  110.  
  111. if form_data.action == 'upload':
  112. res, page_id = upload(db, auth, form_data)
  113. elif form_data.action == 'download':
  114. the_page = Page(1, db, auth, page_info, xtra_info)
  115. return
  116.  
  117. if form_data.action == 'show_author':
  118. page_id = 800
  119.  
  120. if form.has_key('page') or form.has_key('action'):
  121. if page_id == None: page_id =form['page'].value
  122. the_page = Page(page_id, db, auth, page_info, xtra_info)
  123.  
  124. else:
  125. # render the default page
  126. the_page = Page(1, db, auth, page_info, xtra_info)
  127.  
  128.  
  129.  
  130. # output the actual page
  131.  
  132.  
  133. the_page.show()
  134. #------------------------------------------------------------------------
  135.  
  136. if (DEBUG_MAIN):
  137. try:
  138. main()
  139. except SystemExit:
  140. pass
  141. except:
  142. # errMessage("an unkown error has occurred program terminating")
  143. sys.stderr = sys.stdout
  144. print '\n\n<PRE>'
  145. traceback.print_exc()
  146. else:
  147. main()
  148.  
  149. #------------------------ END ------------------------------------