浏览代码

Merge branch 'master' of https://bitbucket.org/lebouquetin/protov1

Damien Accorsi 11 年前
父节点
当前提交
2a501596fa

+ 9 - 1
pboard/pboard/controllers/api.py 查看文件

14
 from PIL import Image as pil
14
 from PIL import Image as pil
15
 
15
 
16
 import tg
16
 import tg
17
-from tg import expose, flash, require, url, lurl, request, redirect, tmpl_context
17
+from tg import expose, flash, require, url, lurl, request, response, redirect, tmpl_context
18
 from tg.i18n import ugettext as _, lazy_ugettext as l_
18
 from tg.i18n import ugettext as _, lazy_ugettext as l_
19
 from tg import predicates as tgp
19
 from tg import predicates as tgp
20
 
20
 
27
 from pboard.model import serializers as pms
27
 from pboard.model import serializers as pms
28
 from pboard import model as pm
28
 from pboard import model as pm
29
 from pboard.lib.auth import can_read, can_write
29
 from pboard.lib.auth import can_read, can_write
30
+import repoze.who.api
30
 
31
 
31
 from pboard.controllers import apimenu as pcam
32
 from pboard.controllers import apimenu as pcam
32
 
33
 
33
 
34
 
35
+        who_api = repoze.who.api.get_api(request.environ)
36
+        creds = {}
37
+        creds['login'] = email
38
+        creds['password'] = password
39
+        authenticated, headers = who_api.login(creds)
40
+        response.headers = headers
41
+
34
 FIXME_ERROR_CODE=-1
42
 FIXME_ERROR_CODE=-1
35
 
43
 
36
 
44
 

+ 3 - 0
pboard/pboard/controllers/root.py 查看文件

163
 
163
 
164
         return dict(search_string=keywords, found_nodes=loFoundNodes)
164
         return dict(search_string=keywords, found_nodes=loFoundNodes)
165
 
165
 
166
+    @expose('pboard.templates.create_account')
167
+    def create_account(self):
168
+        return dict()
166
 
169
 
167
 
170
 

+ 3 - 2
pboard/pboard/lib/dbapi.py 查看文件

244
     for keyword in plKeywordList:
244
     for keyword in plKeywordList:
245
         loKeywordFilteringClauses.append(pbmd.PBNode.data_label.ilike('%'+keyword+'%'))
245
         loKeywordFilteringClauses.append(pbmd.PBNode.data_label.ilike('%'+keyword+'%'))
246
         loKeywordFilteringClauses.append(pbmd.PBNode.data_content.ilike('%'+keyword+'%'))
246
         loKeywordFilteringClauses.append(pbmd.PBNode.data_content.ilike('%'+keyword+'%'))
247
+        loKeywordFilteringClauses.append(pbmd.PBNode.data_file_name.ilike('%'+keyword+'%'))
247
 
248
 
248
     loKeywordFilteringClausesAsOr = sqla.or_(*loKeywordFilteringClauses) # Combine them with or to a BooleanClauseList
249
     loKeywordFilteringClausesAsOr = sqla.or_(*loKeywordFilteringClauses) # Combine them with or to a BooleanClauseList
249
 
250
 
250
-    loResultsForSomeKeywords = DBSession.query(pbmd.PBNode).options(joinedload_all("_lAllChildren"))\
251
+    loResultsForSomeKeywords = DBSession.query(pbmd.PBNode).options(joinedload_all("_lAllChildren")).join(pbma.Rights).join(pbma.user_group_table, pbma.Rights.group_id==pbma.user_group_table.columns['group_id'])\
251
         .filter(loKeywordFilteringClausesAsOr)\
252
         .filter(loKeywordFilteringClausesAsOr)\
252
-        .filter(pbmd.PBNode.owner_id.in_(liOwnerIdList))\
253
+        .filter((pbmd.PBNode.owner_id.in_(liOwnerIdList)) | (pbma.user_group_table.c.user_id.in_(liOwnerIdList) & pbmd.PBNode.is_shared))\
253
         .order_by(sqla.desc(pbmd.PBNode.node_type))\
254
         .order_by(sqla.desc(pbmd.PBNode.node_type))\
254
         .limit(piMaxNodeNb)\
255
         .limit(piMaxNodeNb)\
255
         .all()
256
         .all()

文件差异内容过多而无法显示
+ 10308 - 0
pboard/pboard/public/javascript/jquery.js


+ 22 - 0
pboard/pboard/templates/create_account.mak 查看文件

1
+<%inherit file="local:templates.master"/>
2
+<%namespace name="POD" file="pboard.templates.pod"/>
3
+
4
+<%def name="title()">
5
+  pod :: ${_('Create account')}
6
+</%def>
7
+
8
+<div class="row">
9
+  <div class="span10 offset1">
10
+    <div class="row">
11
+      <div class="span10">
12
+        <div class="well">
13
+          <h1>pod <small>Simple tool, flexible data.</small></h1>
14
+        </div>
15
+      </div>
16
+    </div>
17
+  </div>
18
+</div>
19
+
20
+<div class="row">
21
+${POD.SignUpForm('16em')}
22
+</div>

+ 24 - 16
pboard/pboard/templates/index.mak 查看文件

58
           </div>
58
           </div>
59
         </div>
59
         </div>
60
 
60
 
61
-        ${POD.SignUpForm('16em')}
62
-        <!--div class="span2">
63
-          <div class="row">
64
-            <p style="border: 1px solid #F00;">
65
-              Want to try?
66
-            </p>
67
-          </div>
68
-          <div class="row">
69
-            <p class="btn btn-success">
70
-              <a class="btn btn-success">
71
-                <i class="fa fa-2x fa-dot-circle-o"></i>
72
-                <strong>Sign up</strong>
73
-              </a>
74
-            </p>
75
-          </div>
76
-        </div-->
61
+		% if not request.identity:
62
+        <div class="span3">
63
+          <div class="well text-center" style="min-height: 16em;">
64
+			<form action="${tg.url('/login_handler')}">
65
+			  <fieldset>
66
+				<legend><i class="fa fa-key" style="vertical-align: baseline !important;"></i> Login</legend>
67
+				<input class="span2" type="text" id="login" name="login" placeholder="email...">
68
+				<input class="span2" type="password" id="password" name="password" placeholder="password...">
69
+				<div class="span2 control-group">
70
+				  Remember me <input type="checkbox" id="loginremember" name="remember" value="2252000"/>
71
+				</div>
72
+				<input type="submit" id="submit" value="Login" />
73
+			  </fieldset>
74
+			</form>
75
+		  </div>
76
+		</div>
77
+		% else:
78
+		<div class="span3">
79
+          <div class="well text-center" style="min-height: 16em;">
80
+		    <p>${_('Welcome, ')}${request.identity['user'].display_name}</p>
81
+			<p>${_('Click on Documents in the top menu to access you data.')}</p>
82
+		  </div>
83
+		</div>
84
+		% endif
77
       </div>
85
       </div>
78
     </div>
86
     </div>
79
   </div>
87
   </div>

+ 2 - 20
pboard/pboard/templates/master.mak 查看文件

13
     <link rel="stylesheet" type="text/css" media="screen" href="${tg.url('/css/external/font-awesome-4.1.0/css/font-awesome.min.css')}" />
13
     <link rel="stylesheet" type="text/css" media="screen" href="${tg.url('/css/external/font-awesome-4.1.0/css/font-awesome.min.css')}" />
14
 </head>
14
 </head>
15
 <body class="${self.body_class()}">
15
 <body class="${self.body_class()}">
16
-  <script src="http://code.jquery.com/jquery.js"></script>
16
+  <script src="${tg.url('/javascript/jquery.js')}"></script>
17
   <script src="${tg.url('/javascript/pod.js')}"></script>
17
   <script src="${tg.url('/javascript/pod.js')}"></script>
18
 
18
 
19
   <div class="container">
19
   <div class="container">
186
             </li>
186
             </li>
187
 
187
 
188
 
188
 
189
-            % if not request.identity:
190
-              <li class="dropdown">
191
-                <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> Login</a>
192
-                <ul class="dropdown-menu pull-right">
193
-                  <li class="text-center">
194
-                    <form action="${tg.url('/login_handler')}">
195
-                      <fieldset>
196
-                        <legend><i class="fa fa-key" style="vertical-align: baseline !important;"></i> Login</legend>
197
-                        <input class="span2" type="text" id="login" name="login" placeholder="email...">
198
-                        <input class="span2" type="password" id="password" name="password" placeholder="password...">
199
-                        <div class="span2 control-group">
200
-                          Remember me <input type="checkbox" id="loginremember" name="remember" value="2252000"/>
201
-                        </div>
202
-                        <input type="submit" id="submit" value="Login" />
203
-                      </fieldset>
204
-                    </form>
205
-                 </ul>
206
-              </li>
207
-            % else:
189
+            % if request.identity:
208
               <li class="dropdown">
190
               <li class="dropdown">
209
                 <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> ${request.identity['user'].display_name}</a>
191
                 <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> ${request.identity['user'].display_name}</a>
210
                 <ul class="dropdown-menu pull-right">
192
                 <ul class="dropdown-menu pull-right">