More words
[apertium.git] / apertium-forms-server / apertium-forms-server.py
blob1bcd7d9f9474f03ae17a7c26e686aeb8bfe6e1e6
1 #!/usr/bin/python2.5 -Wall
2 # coding=utf-8
3 # -*- encoding: utf-8 -*-
5 import web, os, codecs, sys;
6 from config import Config;
7 from pair import Pair;
8 from interface import Interface;
10 sys.stdout = codecs.getwriter('utf-8')(sys.stdout);
11 sys.stderr = codecs.getwriter('utf-8')(sys.stderr);
13 class Globals: #{
14 config = Config(os.getcwd() + '/config/config.xml');
17 Globals.config.parse_config();
18 i = Interface();
20 urls = (
21 '/add', 'add',
22 '/commit/(.*)', 'commit',
23 '/(.*)', 'form'
26 class commit: #{
28 def GET(self, name): #{
29 print >> sys.stderr , 'Commit called for ' + name;
30 pairs = Globals.config.get_pairs();
31 if name in pairs: #{
32 print '<html>';
33 print 'Commit called for ' + name + '<br />';
34 pair = pairs[name];
35 print 'Comitting...<br />';
36 pair.commit();
37 print 'Committed.</html>';
38 return;
41 print 'Error in commit.';
45 class form: #{
47 def GET(self, name): #{
48 pairs = Globals.config.get_pairs();
49 default_pair = pairs.keys()[0];
50 tags = Globals.config.pairs[default_pair].get_tags();
51 default_tag = tags.keys()[0];
53 dictionary_left = Globals.config.pairs[default_pair].dictionary['left'];
54 dictionary_bidix = Globals.config.pairs[default_pair].dictionary['bidix'];
55 dictionary_right = Globals.config.pairs[default_pair].dictionary['right'];
57 paradigms_left = Globals.config.pairs[default_pair].dictionary['left'].get_paradigms_by_tag(default_tag);
58 paradigms_right = Globals.config.pairs[default_pair].dictionary['right'].get_paradigms_by_tag(default_tag);
60 glosses_left = Globals.config.pairs[default_pair].dictionary['left'].get_glosses();
61 glosses_right = Globals.config.pairs[default_pair].dictionary['right'].get_glosses();
63 post_data = {
64 'selected_pair': default_pair,
65 'selected_tag': default_tag,
66 'tags': tags,
67 'committing': 'no',
68 'previewing': 'off',
69 'left_lemma': '',
70 'right_lemma': '',
71 'left_comment': '',
72 'right_comment': '',
73 'left_paradigm': '',
74 'right_paradigm': '',
75 'left_glosses': glosses_left,
76 'right_glosses': glosses_right,
77 'left_display_mode': dictionary_left.get_display_by_tag(default_tag),
78 'right_display_mode': dictionary_right.get_display_by_tag(default_tag),
79 'left_paradigms': paradigms_left,
80 'right_paradigms': paradigms_right,
81 'restriction': '',
82 'pairs': pairs
85 print i.display(post_data);
89 class add: #{
91 def POST(self): #{
92 post_data = web.input(name = []);
93 pairs = Globals.config.get_pairs();
95 current_pair = post_data['selected_pair'];
96 current_tag = post_data['selected_tag'];
97 left_paradigm = '';
98 right_paradigm = '';
100 try: #{
101 left_paradigm = post_data['left_paradigm'];
102 except: #{
103 print >> sys.stderr, 'Error';
105 try: #{
106 right_paradigm = post_data['right_paradigm'];
107 except: #{
108 print >> sys.stderr, 'Error';
111 dictionary_left = Globals.config.pairs[current_pair].dictionary['left'];
112 dictionary_right = Globals.config.pairs[current_pair].dictionary['right'];
113 dictionary_bidix = Globals.config.pairs[current_pair].dictionary['bidix'];
115 tags = Globals.config.pairs[current_pair].get_tags();
116 paradigms_left = dictionary_left.get_paradigms_by_tag(current_tag);
117 paradigms_right = dictionary_right.get_paradigms_by_tag(current_tag);
118 glosses_left = dictionary_left.get_glosses();
119 glosses_right = dictionary_right.get_glosses();
121 committing = 'no';
122 try: #{
123 print >> sys.stderr, 'commit box: ' , post_data['commit_box'];
124 if post_data['commit_box'] == 'Commit': #
125 committing = 'yes';
128 except: #{
129 print >> sys.stderr, 'commit box error';
132 post_data = {
133 'commit_box': '',
134 'committing': committing,
135 'selected_pair': current_pair,
136 'selected_tag': current_tag,
137 'tags': tags,
138 'previewing': 'on',
139 'left_comment': post_data['left_comment'],
140 'right_comment': post_data['right_comment'],
141 'left_lemma': post_data['left_lemma'],
142 'right_lemma': post_data['right_lemma'],
143 'left_dictionary': dictionary_left,
144 'bidix_dictionary': dictionary_bidix,
145 'right_dictionary': dictionary_right,
146 'left_paradigm': left_paradigm,
147 'right_paradigm': right_paradigm,
148 'left_paradigms': paradigms_left,
149 'left_glosses': glosses_left,
150 'right_glosses': glosses_right,
151 'left_display_mode': dictionary_left.get_display_by_tag(current_tag),
152 'right_display_mode': dictionary_right.get_display_by_tag(current_tag),
153 'right_paradigms': paradigms_right,
154 'restriction': post_data['restriction'],
155 'pairs': pairs
158 print i.display(post_data);
162 if __name__ == "__main__": #{
163 # try: #{
164 # pid = os.fork();
165 # if pid > 0: #{
166 # sys.exit(0);
167 # #}
168 # except OSError, e: #{
169 # print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror);
170 # sys.exit(1);
171 # #}
173 # #os.chdir("/");
174 # os.setsid();
175 # os.umask(0);
177 # try: #{
178 # pid = os.fork();
179 # if pid > 0: #{
180 # print "Daemon PID %d" % pid;
181 # sys.exit(0);
182 # #}
183 # except OSError, e: #{
184 # # print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror);
185 # sys.exit(1);
186 # #}
188 # sys.stderr = open(Globals.config.log_file, 'a+')
189 web.run(urls, globals());