##// END OF EJS Templates
Fix up representation of dates in hgweb....
Bryan O'Sullivan -
r1320:5f277e73 default
parent child Browse files
Show More
@@ -30,20 +30,6 b' def relpath(repo, args):'
30 return [util.normpath(os.path.join(cwd, x)) for x in args]
30 return [util.normpath(os.path.join(cwd, x)) for x in args]
31 return args
31 return args
32
32
33 def datestr(change=None):
34 if change is None:
35 t = time.time()
36 if time.daylight: tz = time.altzone
37 else: tz = time.timezone
38 else:
39 t, tz = change[2].split(' ')
40 try:
41 # a conversion tool was sticking non-integer offsets into repos
42 tz = int(tz)
43 except ValueError:
44 tz = 0
45 return time.asctime(time.gmtime(float(t) - tz)) + " %+05d" % (int(tz)/-36)
46
47 def matchpats(repo, cwd, pats=[], opts={}, head=''):
33 def matchpats(repo, cwd, pats=[], opts={}, head=''):
48 return util.matcher(repo.root, cwd, pats or ['.'], opts.get('include'),
34 return util.matcher(repo.root, cwd, pats or ['.'], opts.get('include'),
49 opts.get('exclude'), head)
35 opts.get('exclude'), head)
@@ -278,11 +264,11 b' def dodiff(fp, ui, repo, node1, node2, f'
278 if node2:
264 if node2:
279 change = repo.changelog.read(node2)
265 change = repo.changelog.read(node2)
280 mmap2 = repo.manifest.read(change[0])
266 mmap2 = repo.manifest.read(change[0])
281 date2 = datestr(change)
267 date2 = util.datestr(change)
282 def read(f):
268 def read(f):
283 return repo.file(f).read(mmap2[f])
269 return repo.file(f).read(mmap2[f])
284 else:
270 else:
285 date2 = datestr()
271 date2 = util.datestr()
286 if not node1:
272 if not node1:
287 node1 = repo.dirstate.parents()[0]
273 node1 = repo.dirstate.parents()[0]
288 def read(f):
274 def read(f):
@@ -296,7 +282,7 b' def dodiff(fp, ui, repo, node1, node2, f'
296
282
297 change = repo.changelog.read(node1)
283 change = repo.changelog.read(node1)
298 mmap = repo.manifest.read(change[0])
284 mmap = repo.manifest.read(change[0])
299 date1 = datestr(change)
285 date1 = util.datestr(change)
300
286
301 for f in c:
287 for f in c:
302 to = None
288 to = None
@@ -333,7 +319,7 b' def show_changeset(ui, repo, rev=0, chan'
333 return
319 return
334
320
335 changes = log.read(changenode)
321 changes = log.read(changenode)
336 date = datestr(changes)
322 date = util.datestr(changes)
337
323
338 parents = [(log.rev(p), ui.verbose and hex(p) or short(p))
324 parents = [(log.rev(p), ui.verbose and hex(p) or short(p))
339 for p in log.parents(changenode)
325 for p in log.parents(changenode)
@@ -9,7 +9,7 b''
9 import os, cgi, sys
9 import os, cgi, sys
10 from demandload import demandload
10 from demandload import demandload
11 demandload(globals(), "mdiff time re socket zlib errno ui hg ConfigParser")
11 demandload(globals(), "mdiff time re socket zlib errno ui hg ConfigParser")
12 demandload(globals(), "zipfile tempfile StringIO tarfile BaseHTTPServer")
12 demandload(globals(), "zipfile tempfile StringIO tarfile BaseHTTPServer util")
13 from node import *
13 from node import *
14
14
15 def templatepath():
15 def templatepath():
@@ -18,7 +18,7 b' def templatepath():'
18 if os.path.isdir(p):
18 if os.path.isdir(p):
19 return p
19 return p
20
20
21 def age(t):
21 def age(x):
22 def plural(t, c):
22 def plural(t, c):
23 if c == 1:
23 if c == 1:
24 return t
24 return t
@@ -27,7 +27,8 b' def age(t):'
27 return "%d %s" % (c, plural(t, c))
27 return "%d %s" % (c, plural(t, c))
28
28
29 now = time.time()
29 now = time.time()
30 delta = max(1, int(now - t))
30 then = int(x[2].split(' ')[0])
31 delta = max(1, int(now - then))
31
32
32 scales = [["second", 1],
33 scales = [["second", 1],
33 ["minute", 60],
34 ["minute", 60],
@@ -151,23 +152,18 b' class templater:'
151 yield tmpl
152 yield tmpl
152 return
153 return
153
154
154 def rfc822date(x):
155 return time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime(x))
156
157 common_filters = {
155 common_filters = {
158 "escape": cgi.escape,
156 "escape": cgi.escape,
159 "age": age,
157 "age": age,
160 "date": (lambda x: time.asctime(time.gmtime(x))),
158 "date": util.datestr,
161 "addbreaks": nl2br,
159 "addbreaks": nl2br,
162 "obfuscate": obfuscate,
160 "obfuscate": obfuscate,
163 "short": (lambda x: x[:12]),
161 "short": (lambda x: x[:12]),
164 "firstline": (lambda x: x.splitlines(1)[0]),
162 "firstline": (lambda x: x.splitlines(1)[0]),
165 "permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--"),
163 "permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--"),
166 "rfc822date": rfc822date,
164 "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S"),
167 }
165 }
168
166
169
170
171 class hgweb:
167 class hgweb:
172 def __init__(self, repo, name=None):
168 def __init__(self, repo, name=None):
173 if type(repo) == type(""):
169 if type(repo) == type(""):
@@ -189,7 +185,7 b' class hgweb:'
189 self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
185 self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
190
186
191 def date(self, cs):
187 def date(self, cs):
192 return time.asctime(time.gmtime(float(cs[2].split(' ')[0])))
188 return util.datestr(cs)
193
189
194 def listfiles(self, files, mf):
190 def listfiles(self, files, mf):
195 for f in files[:self.maxfiles]:
191 for f in files[:self.maxfiles]:
@@ -307,7 +303,6 b' class hgweb:'
307 n = cl.node(i)
303 n = cl.node(i)
308 changes = cl.read(n)
304 changes = cl.read(n)
309 hn = hex(n)
305 hn = hex(n)
310 t = float(changes[2].split(' ')[0])
311
306
312 l.insert(0, {"parity": parity,
307 l.insert(0, {"parity": parity,
313 "author": changes[1],
308 "author": changes[1],
@@ -316,7 +311,7 b' class hgweb:'
316 "changelogtag": self.showtag("changelogtag",n),
311 "changelogtag": self.showtag("changelogtag",n),
317 "manifest": hex(changes[0]),
312 "manifest": hex(changes[0]),
318 "desc": changes[4],
313 "desc": changes[4],
319 "date": t,
314 "date": changes,
320 "files": self.listfilediffs(changes[3], n),
315 "files": self.listfilediffs(changes[3], n),
321 "rev": i,
316 "rev": i,
322 "node": hn})
317 "node": hn})
@@ -368,7 +363,6 b' class hgweb:'
368
363
369 count += 1
364 count += 1
370 hn = hex(n)
365 hn = hex(n)
371 t = float(changes[2].split(' ')[0])
372
366
373 yield self.t('searchentry',
367 yield self.t('searchentry',
374 parity=count & 1,
368 parity=count & 1,
@@ -378,7 +372,7 b' class hgweb:'
378 changelogtag=self.showtag("changelogtag",n),
372 changelogtag=self.showtag("changelogtag",n),
379 manifest=hex(changes[0]),
373 manifest=hex(changes[0]),
380 desc=changes[4],
374 desc=changes[4],
381 date=t,
375 date=changes,
382 files=self.listfilediffs(changes[3], n),
376 files=self.listfilediffs(changes[3], n),
383 rev=i,
377 rev=i,
384 node=hn)
378 node=hn)
@@ -399,7 +393,6 b' class hgweb:'
399 cl = self.repo.changelog
393 cl = self.repo.changelog
400 changes = cl.read(n)
394 changes = cl.read(n)
401 p1 = cl.parents(n)[0]
395 p1 = cl.parents(n)[0]
402 t = float(changes[2].split(' ')[0])
403
396
404 files = []
397 files = []
405 mf = self.repo.manifest.read(changes[0])
398 mf = self.repo.manifest.read(changes[0])
@@ -425,7 +418,7 b' class hgweb:'
425 manifest=hex(changes[0]),
418 manifest=hex(changes[0]),
426 author=changes[1],
419 author=changes[1],
427 desc=changes[4],
420 desc=changes[4],
428 date=t,
421 date=changes,
429 files=files,
422 files=files,
430 archives=archivelist())
423 archives=archivelist())
431
424
@@ -443,7 +436,6 b' class hgweb:'
443 lr = fl.linkrev(n)
436 lr = fl.linkrev(n)
444 cn = cl.node(lr)
437 cn = cl.node(lr)
445 cs = cl.read(cl.node(lr))
438 cs = cl.read(cl.node(lr))
446 t = float(cs[2].split(' ')[0])
447
439
448 l.insert(0, {"parity": parity,
440 l.insert(0, {"parity": parity,
449 "filenode": hex(n),
441 "filenode": hex(n),
@@ -451,7 +443,7 b' class hgweb:'
451 "file": f,
443 "file": f,
452 "node": hex(cn),
444 "node": hex(cn),
453 "author": cs[1],
445 "author": cs[1],
454 "date": t,
446 "date": cs,
455 "parent": self.parents("filelogparent",
447 "parent": self.parents("filelogparent",
456 fl.parents(n),
448 fl.parents(n),
457 fl.rev, file=f),
449 fl.rev, file=f),
@@ -471,7 +463,6 b' class hgweb:'
471 cl = self.repo.changelog
463 cl = self.repo.changelog
472 cn = cl.node(changerev)
464 cn = cl.node(changerev)
473 cs = cl.read(cn)
465 cs = cl.read(cn)
474 t = float(cs[2].split(' ')[0])
475 mfn = cs[0]
466 mfn = cs[0]
476
467
477 def lines():
468 def lines():
@@ -489,7 +480,7 b' class hgweb:'
489 node=hex(cn),
480 node=hex(cn),
490 manifest=hex(mfn),
481 manifest=hex(mfn),
491 author=cs[1],
482 author=cs[1],
492 date=t,
483 date=cs,
493 parent=self.parents("filerevparent",
484 parent=self.parents("filerevparent",
494 fl.parents(n), fl.rev, file=f),
485 fl.parents(n), fl.rev, file=f),
495 permissions=self.repo.manifest.readflags(mfn)[f])
486 permissions=self.repo.manifest.readflags(mfn)[f])
@@ -504,7 +495,6 b' class hgweb:'
504 cl = self.repo.changelog
495 cl = self.repo.changelog
505 cn = cl.node(changerev)
496 cn = cl.node(changerev)
506 cs = cl.read(cn)
497 cs = cl.read(cn)
507 t = float(cs[2].split(' ')[0])
508 mfn = cs[0]
498 mfn = cs[0]
509
499
510 def annotate(**map):
500 def annotate(**map):
@@ -542,7 +532,7 b' class hgweb:'
542 node=hex(cn),
532 node=hex(cn),
543 manifest=hex(mfn),
533 manifest=hex(mfn),
544 author=cs[1],
534 author=cs[1],
545 date=t,
535 date=cs,
546 parent=self.parents("fileannotateparent",
536 parent=self.parents("fileannotateparent",
547 fl.parents(n), fl.rev, file=f),
537 fl.parents(n), fl.rev, file=f),
548 permissions=self.repo.manifest.readflags(mfn)[f])
538 permissions=self.repo.manifest.readflags(mfn)[f])
@@ -12,7 +12,7 b' platform-specific details from the core.'
12
12
13 import os, errno
13 import os, errno
14 from demandload import *
14 from demandload import *
15 demandload(globals(), "re cStringIO shutil popen2 tempfile threading")
15 demandload(globals(), "re cStringIO shutil popen2 tempfile threading time")
16
16
17 def pipefilter(s, cmd):
17 def pipefilter(s, cmd):
18 '''filter string S through command CMD, returning its output'''
18 '''filter string S through command CMD, returning its output'''
@@ -543,3 +543,23 b' def filechunkiter(f, size = 65536):'
543 while len(s) >= 0:
543 while len(s) >= 0:
544 yield s
544 yield s
545 s = f.read(size)
545 s = f.read(size)
546
547 def datestr(change=None, format='%c'):
548 """represent a change date as a localized time.
549 a change date is a 'unixtime offset' string, where unixtime is
550 seconds since the epoch, and offset is seconds away from UTC."""
551 if change is None:
552 t = time.time()
553 if time.daylight: tz = time.altzone
554 else: tz = time.timezone
555 else:
556 t, tz = change[2].split(' ')
557 try:
558 # a conversion tool was sticking non-integer offsets into repos
559 tz = int(tz)
560 except ValueError:
561 tz = 0
562 return ("%s %+03d%02d" %
563 (time.strftime(format, time.gmtime(float(t) - tz)),
564 -tz / 3600,
565 ((-tz % 3600) / 60)))
General Comments 0
You need to be logged in to leave comments. Login now