Changeset 5046:f7fe8b5cdc03
- Timestamp:
- 06/17/07 19:53:07 (6 years ago)
- Branch:
- default
- Parents:
- 5045:1d593326eff1 (diff), 5027:f7af38c4bdc1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- sage/server/notebook
- Files:
-
- 4 edited
-
notebook.py (modified) (1 diff)
-
notebook.py (modified) (7 diffs)
-
twist.py (modified) (3 diffs)
-
twist.py (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/server/notebook/notebook.py
r5027 r5030 946 946 return head 947 947 948 def html_login(self):949 return """950 <html><body>951 <form method="POST" action="/login">952 Username: <input type="text" name="email" size="15" />953 Password: <input type="password" name="password" size="15" />954 <br />955 <div align="center">956 <p><input type="submit" value="Login" /></p> </div> </form><br /><br />957 <a href='/register'>Register an account</a>958 </body>959 </html>960 """948 # def html_login(self): 949 # return """ 950 # <html><body> 951 #<form method="POST" action="/login"> 952 #Username: <input type="text" name="email" size="15" /> 953 #Password: <input type="password" name="password" size="15" /> 954 #<br /> 955 #<div align="center"> 956 #<p><input type="submit" value="Login" /></p> </div> </form><br /><br /> 957 #<a href='/register'>Register an account</a> 958 #</body> 959 #</html> 960 #""" 961 961 962 962 def _html_body(self, worksheet_id, show_debug=False, username=''): -
sage/server/notebook/notebook.py
r5029 r5030 392 392 self.__log_server = log_server #log all POST's and GET's 393 393 self.__server_log = [] #server log list 394 W = self.create_new_worksheet('Worksheet 1')395 self.__default_worksheet = W396 394 self.__show_debug = show_debug 397 395 self.save() … … 424 422 def set_server_pool(self, servers): 425 423 self.__server_pool = servers 424 425 def get_ulimit(self): 426 try: 427 return self.__ulimit 428 except AttributeError: 429 self.__ulimit = '' 430 return '' 431 432 def set_ulimit(self, ulimit): 433 self.__ulimit = ulimit 426 434 427 435 def get_server(self): … … 617 625 self.__show_debug = show_debug 618 626 619 def default_worksheet(self):620 return self.__default_worksheet621 622 627 def directory(self): 623 628 if not os.path.exists(self.__dir): … … 793 798 id -- something that identifies a worksheet. 794 799 string -- use worksheet with that name or filename. 795 None -- use the default worksheet.796 800 string int -- something that coerces to an integer; worksheet with that number 797 801 … … 799 803 a worksheet. 800 804 """ 801 if id is None:802 return self.default_worksheet()803 805 try: 804 806 id = int(id) … … 1428 1430 import time 1429 1431 1430 def load_notebook(dir, server_pool=[],address=None, port=None, secure=None):1432 def load_notebook(dir, address=None, port=None, secure=None): 1431 1433 sobj = '%s/nb.sobj'%dir 1432 1434 if os.path.exists(sobj): … … 1449 1451 nb.set_not_computing() 1450 1452 else: 1451 nb = Notebook(dir ,server_pool=server_pool)1453 nb = Notebook(dir) 1452 1454 1453 1455 nb.address = address -
sage/server/notebook/twist.py
r5027 r5030 10 10 11 11 from sage.misc.misc import SAGE_EXTCODE, DOT_SAGE, walltime 12 from sage.server.notebook.avatars import PasswordFileChecker13 12 14 13 p = os.path.join … … 728 727 global username 729 728 username = _username 730 731 class LogoutPage(resource.Resource): 732 def render(self, request): 733 s = """ 734 <html> 735 <h1>Thanks for logging out, come back soon!</h1> 736 </html> 737 """ 738 return http.Response(stream=s) 739 729 740 730 class AnonymousToplevel(Toplevel): 731 from sage.server.notebook.avatars import PasswordFileChecker 741 732 addSlash = True 742 733 child_register = RegistrationPage(PasswordFileChecker('passwords.txt')) 743 734 child_confirm = RegConfirmation() 744 child_logout = LogoutPage() 745 746 def render(self, ctx): 747 return http.Response(stream = notebook.html_login()) 735 736 def render(self, ctx): 737 from sage.server.notebook.template import login_template 738 lt = login_template(foo='bobby') 739 return http.Response(stream = lt) 748 740 749 741 class UserToplevel(Toplevel): … … 758 750 child_upload = Upload() 759 751 child_upload_worksheet = UploadWorksheet() 760 child_register = RegistrationPage(PasswordFileChecker('passwords.txt'))761 752 762 753 def render(self, ctx): -
sage/server/notebook/twist.py
r5029 r5030 738 738 lt = login_template(foo='bobby') 739 739 return http.Response(stream = lt) 740 740 741 741 class UserToplevel(Toplevel): 742 742 addSlash = True … … 760 760 stream=s) 761 761 762 def childFactory(self, request, name):763 print request, name764 765 762 class AdminToplevel(UserToplevel): 766 763 767 764 def render(self, ctx): 768 765 s = notebook.html(username=username, admin=True) … … 774 771 stream=s) 775 772 773 776 774 777 775 setattr(UserToplevel, 'child_help.html', Help()) … … 779 777 780 778 notebook = None # this gets set on startup. 781 782 779 username = None # This is set when a request comes in. 780 781 782 783 783 784 784 785 ########################################################## … … 790 791 791 792 private_pem = conf_path + '/private.pem' 792 public_pem = conf_path + '/public.pem'793 public_pem = conf_path + '/public.pem' 793 794 794 795 def notebook_setup(self=None): … … 813 814 port_tries = 0, 814 815 secure = True, 815 server_pool = None): 816 server_pool = None, 817 ulimit = None): 816 818 r""" 817 819 Experimental twisted version of the SAGE Notebook. … … 836 838 as the notebook server user 837 839 cd; ssh-keygen -t rsa 838 then putting ~/.ssh/id_rsa.pub as the file .ssh/authorized_keys2. 840 then putting ~/.ssh/id_rsa.pub as the file .ssh/authorized_keys2. 841 ulimit -- (default: None -- leave as is), if given and server_pool is also given, 842 the worksheet processes are run with these constraints. 843 See the ulimit documentation. Common options include: 844 -f The maximum size of files created by the shell 845 -t The maximum amount of cpu time in seconds. 846 -u The maximum number of processes available to a single user. 847 -v The maximum amount of virtual memory available to the process. 848 Values are in 1024-byte increments, except for `-t', which is in seconds. 849 Example: ulimit="-v 400000 -t 30" 839 850 """ 840 851 if not os.path.exists(directory): … … 846 857 # given options, then delete it. The notebook is later 847 858 # loaded by the *other* Twisted process below. 848 if not server_pool is None :859 if not server_pool is None or not ulimit is None: 849 860 from sage.server.notebook.notebook import load_notebook 850 nb = load_notebook(directory , server_pool=server_pool)861 nb = load_notebook(directory) 851 862 nb.set_server_pool(server_pool) 863 nb.set_ulimit(ulimit) 852 864 nb.save() 853 865 del nb … … 876 888 twist.notebook = notebook.load_notebook(%s) 877 889 import sage.server.notebook.worksheet as worksheet 878 worksheet.init_sage_prestart(twist.notebook.get_server() )890 worksheet.init_sage_prestart(twist.notebook.get_server(), twist.notebook.get_ulimit()) 879 891 880 892 import signal, sys
Note: See TracChangeset
for help on using the changeset viewer.
