diff --git a/application/migrations/0001_initial.py b/application/migrations/0001_initial.py index d47390b..4b94d50 100644 --- a/application/migrations/0001_initial.py +++ b/application/migrations/0001_initial.py @@ -1,10 +1,9 @@ -# Generated by Django 2.0.6 on 2018-08-15 16:15 +# Generated by Django 2.1 on 2018-08-18 15:34 from django.conf import settings from django.db import migrations, models import django.db.models.deletion import django.utils.timezone -import taggit.managers class Migration(migrations.Migration): @@ -13,7 +12,6 @@ class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('taggit', '0002_auto_20150616_2121'), ] operations = [ @@ -21,8 +19,6 @@ class Migration(migrations.Migration): name='CustomUser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('mytags', taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( @@ -34,7 +30,6 @@ class Migration(migrations.Migration): ('created_date', models.DateTimeField(default=django.utils.timezone.now)), ('published_date', models.DateTimeField(blank=True, null=True)), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('tags', taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')), ], ), ] diff --git a/application/migrations/0002_auto_20180818_1734.py b/application/migrations/0002_auto_20180818_1734.py new file mode 100644 index 0000000..0e93e7b --- /dev/null +++ b/application/migrations/0002_auto_20180818_1734.py @@ -0,0 +1,35 @@ +# Generated by Django 2.1 on 2018-08-18 15:34 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('taggit', '0001_initial'), + ('application', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AddField( + model_name='post', + name='tags', + field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), + ), + migrations.AddField( + model_name='customuser', + name='mytags', + field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), + ), + migrations.AddField( + model_name='customuser', + name='user', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/application/static/bootstrap/js/jquery.tagcanvas.min.js b/application/static/bootstrap/js/jquery.tagcanvas.min.js new file mode 100644 index 0000000..0ed9f1d --- /dev/null +++ b/application/static/bootstrap/js/jquery.tagcanvas.min.js @@ -0,0 +1,2280 @@ +/** + * Copyright (C) 2010-2015 Graham Breach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +/** + * jQuery.tagcanvas 2.9 + * For more information, please contact + */ +(function($){ + "use strict"; + var i, j, abs = Math.abs, sin = Math.sin, cos = Math.cos, max = Math.max, + min = Math.min, ceil = Math.ceil, sqrt = Math.sqrt, pow = Math.pow, + hexlookup3 = {}, hexlookup2 = {}, hexlookup1 = { + 0:"0,", 1:"17,", 2:"34,", 3:"51,", 4:"68,", 5:"85,", + 6:"102,", 7:"119,", 8:"136,", 9:"153,", a:"170,", A:"170,", + b:"187,", B:"187,", c:"204,", C:"204,", d:"221,", D:"221,", + e:"238,", E:"238,", f:"255,", F:"255," + }, Oproto, Tproto, TCproto, Mproto, Vproto, TSproto, TCVproto, + doc = document, ocanvas, handlers = {}; + for(i = 0; i < 256; ++i) { + j = i.toString(16); + if(i < 16) + j = '0' + j; + hexlookup2[j] = hexlookup2[j.toUpperCase()] = i.toString() + ','; + } + function Defined(d) { + return typeof d != 'undefined'; + } + function IsObject(o) { + return typeof o == 'object' && o != null; + } + function Clamp(v, mn, mx) { + return isNaN(v) ? mx : min(mx, max(mn, v)); + } + function Nop() { + return false; + } + function TimeNow() { + return new Date().valueOf(); + } + function SortList(l, f) { + var nl = [], tl = l.length, i; + for(i = 0; i < tl; ++i) + nl.push(l[i]); + nl.sort(f); + return nl; + } + function Shuffle(a) { + var i = a.length-1, t, p; + while(i) { + p = ~~(Math.random()*i); + t = a[i]; + a[i] = a[p]; + a[p] = t; + --i; + } + } + function Vector(x, y, z) { + this.x = x; + this.y = y; + this.z = z; + } + Vproto = Vector.prototype; + Vproto.length = function() { + return sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + Vproto.dot = function(v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }; + Vproto.cross = function(v) { + var x = this.y * v.z - this.z * v.y, + y = this.z * v.x - this.x * v.z, + z = this.x * v.y - this.y * v.x; + return new Vector(x, y, z); + }; + Vproto.angle = function(v) { + var dot = this.dot(v), ac; + if(dot == 0) + return Math.PI / 2.0; + ac = dot / (this.length() * v.length()); + if(ac >= 1) + return 0; + if(ac <= -1) + return Math.PI; + return Math.acos(ac); + }; + Vproto.unit = function() { + var l = this.length(); + return new Vector(this.x / l, this.y / l, this.z / l); + }; + function MakeVector(lg, lt) { + lt = lt * Math.PI / 180; + lg = lg * Math.PI / 180; + var x = sin(lg) * cos(lt), y = -sin(lt), z = -cos(lg) * cos(lt); + return new Vector(x, y, z); + } + function Matrix(a) { + this[1] = {1: a[0], 2: a[1], 3: a[2]}; + this[2] = {1: a[3], 2: a[4], 3: a[5]}; + this[3] = {1: a[6], 2: a[7], 3: a[8]}; + } + Mproto = Matrix.prototype; + Matrix.Identity = function() { + return new Matrix([1,0,0, 0,1,0, 0,0,1]); + }; + Matrix.Rotation = function(angle, u) { + var sina = sin(angle), cosa = cos(angle), mcos = 1 - cosa; + return new Matrix([ + cosa + pow(u.x, 2) * mcos, u.x * u.y * mcos - u.z * sina, u.x * u.z * mcos + u.y * sina, + u.y * u.x * mcos + u.z * sina, cosa + pow(u.y, 2) * mcos, u.y * u.z * mcos - u.x * sina, + u.z * u.x * mcos - u.y * sina, u.z * u.y * mcos + u.x * sina, cosa + pow(u.z, 2) * mcos + ]); + } + Mproto.mul = function(m) { + var a = [], i, j, mmatrix = (m.xform ? 1 : 0); + for(i = 1; i <= 3; ++i) + for(j = 1; j <= 3; ++j) { + if(mmatrix) + a.push(this[i][1] * m[1][j] + + this[i][2] * m[2][j] + + this[i][3] * m[3][j]); + else + a.push(this[i][j] * m); + } + return new Matrix(a); + }; + Mproto.xform = function(p) { + var a = {}, x = p.x, y = p.y, z = p.z; + a.x = x * this[1][1] + y * this[2][1] + z * this[3][1]; + a.y = x * this[1][2] + y * this[2][2] + z * this[3][2]; + a.z = x * this[1][3] + y * this[2][3] + z * this[3][3]; + return a; + }; + function PointsOnSphere(n,xr,yr,zr,magic) { + var i, y, r, phi, pts = [], off = 2/n, inc; + inc = Math.PI * (3 - sqrt(5) + (parseFloat(magic) ? parseFloat(magic) : 0)); + for(i = 0; i < n; ++i) { + y = i * off - 1 + (off / 2); + r = sqrt(1 - y*y); + phi = i * inc; + pts.push([cos(phi) * r * xr, y * yr, sin(phi) * r * zr]); + } + return pts; + } + function Cylinder(n,o,xr,yr,zr,magic) { + var phi, pts = [], off = 2/n, inc, i, j, k, l; + inc = Math.PI * (3 - sqrt(5) + (parseFloat(magic) ? parseFloat(magic) : 0)); + for(i = 0; i < n; ++i) { + j = i * off - 1 + (off / 2); + phi = i * inc; + k = cos(phi); + l = sin(phi); + pts.push(o ? [j * xr, k * yr, l * zr] : [k * xr, j * yr, l * zr]); + } + return pts; + } + function Ring(o, n, xr, yr, zr, j) { + var phi, pts = [], inc = Math.PI * 2 / n, i, k, l; + for(i = 0; i < n; ++i) { + phi = i * inc; + k = cos(phi); + l = sin(phi); + pts.push(o ? [j * xr, k * yr, l * zr] : [k * xr, j * yr, l * zr]); + } + return pts; + } + function PointsOnCylinderV(n,xr,yr,zr,m) { return Cylinder(n, 0, xr, yr, zr, m) } + function PointsOnCylinderH(n,xr,yr,zr,m) { return Cylinder(n, 1, xr, yr, zr, m) } + function PointsOnRingV(n, xr, yr, zr, offset) { + offset = isNaN(offset) ? 0 : offset * 1; + return Ring(0, n, xr, yr, zr, offset); + } + function PointsOnRingH(n, xr, yr, zr, offset) { + offset = isNaN(offset) ? 0 : offset * 1; + return Ring(1, n, xr, yr, zr, offset); + } + function CentreImage(t) { + var i = new Image; + i.onload = function() { + var dx = i.width / 2, dy = i.height / 2; + t.centreFunc = function(c, w, h, cx, cy) { + c.setTransform(1, 0, 0, 1, 0, 0); + c.globalAlpha = 1; + c.drawImage(i, cx - dx, cy - dy); + }; + }; + i.src = t.centreImage; + } + function SetAlpha(c,a) { + var d = c, p1, p2, ae = (a*1).toPrecision(3) + ')'; + if(c[0] === '#') { + if(!hexlookup3[c]) + if(c.length === 4) + hexlookup3[c] = 'rgba(' + hexlookup1[c[1]] + hexlookup1[c[2]] + hexlookup1[c[3]]; + else + hexlookup3[c] = 'rgba(' + hexlookup2[c.substr(1,2)] + hexlookup2[c.substr(3,2)] + hexlookup2[c.substr(5,2)]; + d = hexlookup3[c] + ae; + } else if(c.substr(0,4) === 'rgb(' || c.substr(0,4) === 'hsl(') { + d = (c.replace('(','a(').replace(')', ',' + ae)); + } else if(c.substr(0,5) === 'rgba(' || c.substr(0,5) === 'hsla(') { + p1 = c.lastIndexOf(',') + 1, p2 = c.indexOf(')'); + a *= parseFloat(c.substring(p1,p2)); + d = c.substr(0,p1) + a.toPrecision(3) + ')'; + } + return d; + } + function NewCanvas(w,h) { + // if using excanvas, give up now + if(window.G_vmlCanvasManager) + return null; + var c = doc.createElement('canvas'); + c.width = w; + c.height = h; + return c; + } + // I think all browsers pass this test now... + function ShadowAlphaBroken() { + var cv = NewCanvas(3,3), c, i; + if(!cv) + return false; + c = cv.getContext('2d'); + c.strokeStyle = '#000'; + c.shadowColor = '#fff'; + c.shadowBlur = 3; + c.globalAlpha = 0; + c.strokeRect(2,2,2,2); + c.globalAlpha = 1; + i = c.getImageData(2,2,1,1); + cv = null; + return (i.data[0] > 0); + } + function SetGradient(c, l, o, g) { + var gd = c.createLinearGradient(0, 0, l, 0), i; + for(i in g) + gd.addColorStop(1 - i, g[i]); + c.fillStyle = gd; + c.fillRect(0, o, l, 1); + } + function FindGradientColour(tc, p, r) { + var l = 1024, h = 1, gl = tc.weightGradient, cv, c, i, d; + if(tc.gCanvas) { + c = tc.gCanvas.getContext('2d'); + h = tc.gCanvas.height; + } else { + if(IsObject(gl[0])) + h = gl.length; + else + gl = [gl]; + tc.gCanvas = cv = NewCanvas(l, h); + if(!cv) + return null; + c = cv.getContext('2d'); + for(i = 0; i < h; ++i) + SetGradient(c, l, i, gl[i]); + } + r = max(min(r || 0, h - 1), 0); + d = c.getImageData(~~((l - 1) * p), r, 1, 1).data; + return 'rgba(' + d[0] + ',' + d[1] + ',' + d[2] + ',' + (d[3]/255) + ')'; + } + function TextSet(ctxt, font, colour, strings, padx, pady, shadowColour, + shadowBlur, shadowOffsets, maxWidth, widths, align) { + var xo = padx + (shadowBlur || 0) + + (shadowOffsets.length && shadowOffsets[0] < 0 ? abs(shadowOffsets[0]) : 0), + yo = pady + (shadowBlur || 0) + + (shadowOffsets.length && shadowOffsets[1] < 0 ? abs(shadowOffsets[1]) : 0), i, xc; + ctxt.font = font; + ctxt.textBaseline = 'top'; + ctxt.fillStyle = colour; + shadowColour && (ctxt.shadowColor = shadowColour); + shadowBlur && (ctxt.shadowBlur = shadowBlur); + shadowOffsets.length && (ctxt.shadowOffsetX = shadowOffsets[0], + ctxt.shadowOffsetY = shadowOffsets[1]); + for(i = 0; i < strings.length; ++i) { + xc = 0; + if(widths) { + if('right' == align) { + xc = maxWidth - widths[i]; + } else if('centre' == align) { + xc = (maxWidth - widths[i]) / 2; + } + } + ctxt.fillText(strings[i], xo + xc, yo); + yo += parseInt(font); + } + } + function RRect(c, x, y, w, h, r, s) { + if(r) { + c.beginPath(); + c.moveTo(x, y + h - r); + c.arcTo(x, y, x + r, y, r); + c.arcTo(x + w, y, x + w, y + r, r); + c.arcTo(x + w, y + h, x + w - r, y + h, r); + c.arcTo(x, y + h, x, y + h - r, r); + c.closePath(); + c[s ? 'stroke' : 'fill'](); + } else { + c[s ? 'strokeRect' : 'fillRect'](x, y, w, h); + } + } + function TextCanvas(strings, font, w, h, maxWidth, stringWidths, align, valign, + scale) { + this.strings = strings; + this.font = font; + this.width = w; + this.height = h; + this.maxWidth = maxWidth; + this.stringWidths = stringWidths; + this.align = align; + this.valign = valign; + this.scale = scale; + } + TCVproto = TextCanvas.prototype; + TCVproto.SetImage = function(image, w, h, position, padding, align, valign, + scale) { + this.image = image; + this.iwidth = w * this.scale; + this.iheight = h * this.scale; + this.ipos = position; + this.ipad = padding * this.scale; + this.iscale = scale; + this.ialign = align; + this.ivalign = valign; + }; + TCVproto.Align = function(size, space, a) { + var pos = 0; + if(a == 'right' || a == 'bottom') + pos = space - size; + else if(a != 'left' && a != 'top') + pos = (space - size) / 2; + return pos; + }; + TCVproto.Create = function(colour, bgColour, bgOutline, bgOutlineThickness, + shadowColour, shadowBlur, shadowOffsets, padding, radius) { + var cv, cw, ch, c, x1, x2, y1, y2, offx, offy, ix, iy, iw, ih, rr, + sox = abs(shadowOffsets[0]), soy = abs(shadowOffsets[1]), shadowcv, shadowc; + padding = max(padding, sox + shadowBlur, soy + shadowBlur); + x1 = 2 * (padding + bgOutlineThickness); + y1 = 2 * (padding + bgOutlineThickness); + cw = this.width + x1; + ch = this.height + y1; + offx = offy = padding + bgOutlineThickness; + + if(this.image) { + ix = iy = padding + bgOutlineThickness; + iw = this.iwidth; + ih = this.iheight; + if(this.ipos == 'top' || this.ipos == 'bottom') { + if(iw < this.width) + ix += this.Align(iw, this.width, this.ialign); + else + offx += this.Align(this.width, iw, this.align); + if(this.ipos == 'top') + offy += ih + this.ipad; + else + iy += this.height + this.ipad; + cw = max(cw, iw + x1); + ch += ih + this.ipad; + } else { + if(ih < this.height) + iy += this.Align(ih, this.height, this.ivalign); + else + offy += this.Align(this.height, ih, this.valign); + if(this.ipos == 'right') + ix += this.width + this.ipad; + else + offx += iw + this.ipad; + cw += iw + this.ipad; + ch = max(ch, ih + y1); + } + } + + cv = NewCanvas(cw, ch); + if(!cv) + return null; + x1 = y1 = bgOutlineThickness / 2; + x2 = cw - bgOutlineThickness; + y2 = ch - bgOutlineThickness; + rr = min(radius, x2 / 2, y2 / 2); + c = cv.getContext('2d'); + if(bgColour) { + c.fillStyle = bgColour; + RRect(c, x1, y1, x2, y2, rr); + } + if(bgOutlineThickness) { + c.strokeStyle = bgOutline; + c.lineWidth = bgOutlineThickness; + RRect(c, x1, y1, x2, y2, rr, true); + } + if(shadowBlur || sox || soy) { + // use a transparent canvas to draw on + shadowcv = NewCanvas(cw, ch); + if(shadowcv) { + shadowc = c; + c = shadowcv.getContext('2d'); + } + } + + // don't use TextSet shadow support because it adds space for shadow + TextSet(c, this.font, colour, this.strings, offx, offy, 0, 0, [], + this.maxWidth, this.stringWidths, this.align); + + if(this.image) + c.drawImage(this.image, ix, iy, iw, ih); + + if(shadowc) { + // draw the text and image with the added shadow + c = shadowc; + shadowColour && (c.shadowColor = shadowColour); + shadowBlur && (c.shadowBlur = shadowBlur); + c.shadowOffsetX = shadowOffsets[0]; + c.shadowOffsetY = shadowOffsets[1]; + c.drawImage(shadowcv, 0, 0); + } + return cv; + }; + function ExpandImage(i, w, h) { + var cv = NewCanvas(w, h), c; + if(!cv) + return null; + c = cv.getContext('2d'); + c.drawImage(i, (w - i.width) / 2, (h - i.height) / 2); + return cv; + } + function ScaleImage(i, w, h) { + var cv = NewCanvas(w, h), c; + if(!cv) + return null; + c = cv.getContext('2d'); + c.drawImage(i, 0, 0, w, h); + return cv; + } + function AddBackgroundToImage(i, w, h, scale, colour, othickness, ocolour, + padding, radius, ofill) { + var cw = w + ((2 * padding) + othickness) * scale, + ch = h + ((2 * padding) + othickness) * scale, + cv = NewCanvas(cw, ch), c, x1, y1, x2, y2, ocanvas, cc, rr; + if(!cv) + return null; + othickness *= scale; + radius *= scale; + x1 = y1 = othickness / 2; + x2 = cw - othickness; + y2 = ch - othickness; + padding = (padding * scale) + x1; // add space for outline + c = cv.getContext('2d'); + rr = min(radius, x2 / 2, y2 / 2); + if(colour) { + c.fillStyle = colour; + RRect(c, x1, y1, x2, y2, rr); + } + if(othickness) { + c.strokeStyle = ocolour; + c.lineWidth = othickness; + RRect(c, x1, y1, x2, y2, rr, true); + } + + if(ofill) { + // use compositing to colour in the image and border + ocanvas = NewCanvas(cw, ch); + cc = ocanvas.getContext('2d'); + cc.drawImage(i, padding, padding, w, h); + cc.globalCompositeOperation = 'source-in'; + cc.fillStyle = ocolour; + cc.fillRect(0, 0, cw, ch); + cc.globalCompositeOperation = 'destination-over'; + cc.drawImage(cv, 0, 0); + cc.globalCompositeOperation = 'source-over'; + c.drawImage(ocanvas, 0, 0); + } else { + c.drawImage(i, padding, padding, i.width, i.height); + } + return {image: cv, width: cw / scale, height: ch / scale}; + } + /** + * Rounds off the corners of an image + */ + function RoundImage(i, r, iw, ih, s) { + var cv, c, r1 = parseFloat(r), l = max(iw, ih); + cv = NewCanvas(iw, ih); + if(!cv) + return null; + if(r.indexOf('%') > 0) + r1 = l * r1 / 100; + else + r1 = r1 * s; + c = cv.getContext('2d'); + c.globalCompositeOperation = 'source-over'; + c.fillStyle = '#fff'; + if(r1 >= l/2) { + r1 = min(iw,ih) / 2; + c.beginPath(); + c.moveTo(iw/2,ih/2); + c.arc(iw/2,ih/2,r1,0,2*Math.PI,false); + c.fill(); + c.closePath(); + } else { + r1 = min(iw/2,ih/2,r1); + RRect(c, 0, 0, iw, ih, r1, true); + c.fill(); + } + c.globalCompositeOperation = 'source-in'; + c.drawImage(i, 0, 0, iw, ih); + return cv; + } + /** + * Creates a new canvas containing the image and its shadow + * Returns an object containing the image and its dimensions at z=0 + */ + function AddShadowToImage(i, w, h, scale, sc, sb, so) { + var sw = abs(so[0]), sh = abs(so[1]), + cw = w + (sw > sb ? sw + sb : sb * 2) * scale, + ch = h + (sh > sb ? sh + sb : sb * 2) * scale, + xo = scale * ((sb || 0) + (so[0] < 0 ? sw : 0)), + yo = scale * ((sb || 0) + (so[1] < 0 ? sh : 0)), cv, c; + cv = NewCanvas(cw, ch); + if(!cv) + return null; + c = cv.getContext('2d'); + sc && (c.shadowColor = sc); + sb && (c.shadowBlur = sb * scale); + so && (c.shadowOffsetX = so[0] * scale, c.shadowOffsetY = so[1] * scale); + c.drawImage(i, xo, yo, w, h); + return {image: cv, width: cw / scale, height: ch / scale}; + } + function FindTextBoundingBox(s,f,ht) { + var w = parseInt(s.toString().length * ht), h = parseInt(ht * 2 * s.length), + cv = NewCanvas(w,h), c, idata, w1, h1, x, y, i, ex; + if(!cv) + return null; + c = cv.getContext('2d'); + c.fillStyle = '#000'; + c.fillRect(0,0,w,h); + TextSet(c,ht + 'px ' + f,'#fff',s,0,0,0,0,[],'centre') + + idata = c.getImageData(0,0,w,h); + w1 = idata.width; h1 = idata.height; + ex = { + min: { x: w1, y: h1 }, + max: { x: -1, y: -1 } + }; + for(y = 0; y < h1; ++y) { + for(x = 0; x < w1; ++x) { + i = (y * w1 + x) * 4; + if(idata.data[i+1] > 0) { + if(x < ex.min.x) ex.min.x = x; + if(x > ex.max.x) ex.max.x = x; + if(y < ex.min.y) ex.min.y = y; + if(y > ex.max.y) ex.max.y = y; + } + } + } + // device pixels might not be css pixels + if(w1 != w) { + ex.min.x *= (w / w1); + ex.max.x *= (w / w1); + } + if(h1 != h) { + ex.min.y *= (w / h1); + ex.max.y *= (w / h1); + } + + cv = null; + return ex; + } + function FixFont(f) { + return "'" + f.replace(/(\'|\")/g,'').replace(/\s*,\s*/g, "', '") + "'"; + } + function AddHandler(h,f,e) { + e = e || doc; + if(e.addEventListener) + e.addEventListener(h,f,false); + else + e.attachEvent('on' + h, f); + } + function RemoveHandler(h,f,e) { + e = e || doc; + if(e.removeEventListener) + e.removeEventListener(h, f); + else + e.detachEvent('on' + h, f); + } + function AddImage(i, o, t, tc) { + var s = tc.imageScale, mscale, ic, bc, oc, iw, ih; + // image not loaded, wait for image onload + if(!o.complete) + return AddHandler('load',function() { AddImage(i,o,t,tc); }, o); + if(!i.complete) + return AddHandler('load',function() { AddImage(i,o,t,tc); }, i); + + // Yes, this does look like nonsense, but it makes sure that both the + // width and height are actually set and not just calculated. This is + // required to keep proportional sizes when the images are hidden, so + // the images can be used again for another cloud. + o.width = o.width; + o.height = o.height; + + if(s) { + i.width = o.width * s; + i.height = o.height * s; + } + // the standard width of the image, with imageScale applied + t.iw = i.width; + t.ih = i.height; + if(tc.txtOpt) { + ic = i; + mscale = tc.zoomMax * tc.txtScale; + iw = t.iw * mscale; + ih = t.ih * mscale; + if(iw < o.naturalWidth || ih < o.naturalHeight) { + ic = ScaleImage(i, iw, ih); + if(ic) + t.fimage = ic; + } else { + iw = t.iw; + ih = t.ih; + mscale = 1; + } + if(parseFloat(tc.imageRadius)) + t.image = t.fimage = i = RoundImage(t.image, tc.imageRadius, iw, ih, mscale); + if(!t.HasText()) { + if(tc.shadow) { + ic = AddShadowToImage(t.image, iw, ih, mscale, tc.shadow, tc.shadowBlur, + tc.shadowOffset); + if(ic) { + t.fimage = ic.image; + t.w = ic.width; + t.h = ic.height; + } + } + if(tc.bgColour || tc.bgOutlineThickness) { + bc = tc.bgColour == 'tag' ? GetProperty(t.a, 'background-color') : + tc.bgColour; + oc = tc.bgOutline == 'tag' ? GetProperty(t.a, 'color') : + (tc.bgOutline || tc.textColour); + iw = t.fimage.width; + ih = t.fimage.height; + if(tc.outlineMethod == 'colour') { + // create the outline version first, using the current image state + ic = AddBackgroundToImage(t.fimage, iw, ih, mscale, bc, + tc.bgOutlineThickness, t.outline.colour, tc.padding, tc.bgRadius, 1); + if(ic) + t.oimage = ic.image; + } + ic = AddBackgroundToImage(t.fimage, iw, ih, mscale, bc, + tc.bgOutlineThickness, oc, tc.padding, tc.bgRadius); + if(ic) { + t.fimage = ic.image; + t.w = ic.width; + t.h = ic.height; + } + } + if(tc.outlineMethod == 'size') { + if(tc.outlineIncrease > 0) { + t.iw += 2 * tc.outlineIncrease; + t.ih += 2 * tc.outlineIncrease; + iw = mscale * t.iw; + ih = mscale * t.ih; + ic = ScaleImage(t.fimage, iw, ih); + t.oimage = ic; + t.fimage = ExpandImage(t.fimage, t.oimage.width, t.oimage.height); + } else { + iw = mscale * (t.iw + (2 * tc.outlineIncrease)); + ih = mscale * (t.ih + (2 * tc.outlineIncrease)); + ic = ScaleImage(t.fimage, iw, ih); + t.oimage = ExpandImage(ic, t.fimage.width, t.fimage.height); + } + } + } + } + t.Init(); + } + function GetProperty(e,p) { + var dv = doc.defaultView, pc = p.replace(/\-([a-z])/g,function(a){return a.charAt(1).toUpperCase()}); + return (dv && dv.getComputedStyle && dv.getComputedStyle(e,null).getPropertyValue(p)) || + (e.currentStyle && e.currentStyle[pc]); + } + function FindWeight(a, wFrom, tHeight) { + var w = 1, p; + if(wFrom) { + w = 1 * (a.getAttribute(wFrom) || tHeight); + } else if(p = GetProperty(a,'font-size')) { + w = (p.indexOf('px') > -1 && p.replace('px','') * 1) || + (p.indexOf('pt') > -1 && p.replace('pt','') * 1.25) || + p * 3.3; + } + return w; + } + function EventToCanvasId(e) { + return e.target && Defined(e.target.id) ? e.target.id : + e.srcElement.parentNode.id; + } + function EventXY(e, c) { + var xy, p, xmul = parseInt(GetProperty(c, 'width')) / c.width, + ymul = parseInt(GetProperty(c, 'height')) / c.height; + if(Defined(e.offsetX)) { + xy = {x: e.offsetX, y: e.offsetY}; + } else { + p = AbsPos(c.id); + if(Defined(e.changedTouches)) + e = e.changedTouches[0]; + if(e.pageX) + xy = {x: e.pageX - p.x, y: e.pageY - p.y}; + } + if(xy && xmul && ymul) { + xy.x /= xmul; + xy.y /= ymul; + } + return xy; + } + function MouseOut(e) { + var cv = e.target || e.fromElement.parentNode, tc = TagCanvas.tc[cv.id]; + if(tc) { + tc.mx = tc.my = -1; + tc.UnFreeze(); + tc.EndDrag(); + } + } + function MouseMove(e) { + var i, t = TagCanvas, tc, p, tg = EventToCanvasId(e); + for(i in t.tc) { + tc = t.tc[i]; + if(tc.tttimer) { + clearTimeout(tc.tttimer); + tc.tttimer = null; + } + } + if(tg && t.tc[tg]) { + tc = t.tc[tg]; + if(p = EventXY(e, tc.canvas)) { + tc.mx = p.x; + tc.my = p.y; + tc.Drag(e, p); + } + tc.drawn = 0; + } + } + function MouseDown(e) { + var t = TagCanvas, cb = doc.addEventListener ? 0 : 1, + tg = EventToCanvasId(e); + if(tg && e.button == cb && t.tc[tg]) { + t.tc[tg].BeginDrag(e); + } + } + function MouseUp(e) { + var t = TagCanvas, cb = doc.addEventListener ? 0 : 1, + tg = EventToCanvasId(e), tc; + if(tg && e.button == cb && t.tc[tg]) { + tc = t.tc[tg]; + MouseMove(e); + if(!tc.EndDrag() && !tc.touchState) + tc.Clicked(e); + } + } + function TouchDown(e) { + var tg = EventToCanvasId(e), tc = (tg && TagCanvas.tc[tg]), p; + if(tc && e.changedTouches) { + if(e.touches.length == 1 && tc.touchState == 0) { + tc.touchState = 1; + tc.BeginDrag(e); + if(p = EventXY(e, tc.canvas)) { + tc.mx = p.x; + tc.my = p.y; + tc.drawn = 0; + } + } else if(e.targetTouches.length == 2 && tc.pinchZoom) { + tc.touchState = 3; + tc.EndDrag(); + tc.BeginPinch(e); + } else { + tc.EndDrag(); + tc.EndPinch(); + tc.touchState = 0; + } + } + } + function TouchUp(e) { + var tg = EventToCanvasId(e), tc = (tg && TagCanvas.tc[tg]); + if(tc && e.changedTouches) { + switch(tc.touchState) { + case 1: + tc.Draw(); + tc.Clicked(); + break; + case 2: + tc.EndDrag(); + break; + case 3: + tc.EndPinch(); + } + tc.touchState = 0; + } + } + function TouchMove(e) { + var i, t = TagCanvas, tc, p, tg = EventToCanvasId(e); + for(i in t.tc) { + tc = t.tc[i]; + if(tc.tttimer) { + clearTimeout(tc.tttimer); + tc.tttimer = null; + } + } + tc = (tg && t.tc[tg]); + if(tc && e.changedTouches && tc.touchState) { + switch(tc.touchState) { + case 1: + case 2: + if(p = EventXY(e, tc.canvas)) { + tc.mx = p.x; + tc.my = p.y; + if(tc.Drag(e, p)) + tc.touchState = 2; + } + break; + case 3: + tc.Pinch(e); + } + tc.drawn = 0; + } + } + function MouseWheel(e) { + var t = TagCanvas, tg = EventToCanvasId(e); + if(tg && t.tc[tg]) { + e.cancelBubble = true; + e.returnValue = false; + e.preventDefault && e.preventDefault(); + t.tc[tg].Wheel((e.wheelDelta || e.detail) > 0); + } + } + function Scroll(e) { + var i, t = TagCanvas; + clearTimeout(t.scrollTimer); + for(i in t.tc) { + t.tc[i].Pause(); + } + t.scrollTimer = setTimeout(function() { + var i, t = TagCanvas; + for(i in t.tc) { + t.tc[i].Resume(); + } + }, t.scrollPause); + } + function DrawCanvas() { + DrawCanvasRAF(TimeNow()); + } + function DrawCanvasRAF(t) { + var tc = TagCanvas.tc, i; + TagCanvas.NextFrame(TagCanvas.interval); + t = t || TimeNow(); + for(i in tc) + tc[i].Draw(t); + } + function AbsPos(id) { + var e = doc.getElementById(id), r = e.getBoundingClientRect(), + dd = doc.documentElement, b = doc.body, w = window, + xs = w.pageXOffset || dd.scrollLeft, + ys = w.pageYOffset || dd.scrollTop, + xo = dd.clientLeft || b.clientLeft, + yo = dd.clientTop || b.clientTop; + return { x: r.left + xs - xo, y: r.top + ys - yo }; + } + function Project(tc,p1,sx,sy) { + var m = tc.radius * tc.z1 / (tc.z1 + tc.z2 + p1.z); + return { + x: p1.x * m * sx, + y: p1.y * m * sy, + z: p1.z, + w: (tc.z1 - p1.z) / tc.z2 + }; + } + /** + * @constructor + * for recursively splitting tag contents on
tags + */ + function TextSplitter(e) { + this.e = e; + this.br = 0; + this.line = []; + this.text = []; + this.original = e.innerText || e.textContent; + } + TSproto = TextSplitter.prototype; + TSproto.Empty = function() { + for(var i = 0; i < this.text.length; ++i) + if(this.text[i].length) + return false; + return true; + }; + TSproto.Lines = function(e) { + var r = e ? 1 : 0, cn, cl, i; + e = e || this.e; + cn = e.childNodes; + cl = cn.length; + + for(i = 0; i < cl; ++i) { + if(cn[i].nodeName == 'BR') { + this.text.push(this.line.join(' ')); + this.br = 1; + } else if(cn[i].nodeType == 3) { + if(this.br) { + this.line = [cn[i].nodeValue]; + this.br = 0; + } else { + this.line.push(cn[i].nodeValue); + } + } else { + this.Lines(cn[i]); + } + } + r || this.br || this.text.push(this.line.join(' ')); + return this.text; + }; + TSproto.SplitWidth = function(w, c, f, h) { + var i, j, words, text = []; + c.font = h + 'px ' + f; + for(i = 0; i < this.text.length; ++i) { + words = this.text[i].split(/\s+/); + this.line = [words[0]]; + for(j = 1; j < words.length; ++j) { + if(c.measureText(this.line.join(' ') + ' ' + words[j]).width > w) { + text.push(this.line.join(' ')); + this.line = [words[j]]; + } else { + this.line.push(words[j]); + } + } + text.push(this.line.join(' ')); + } + return this.text = text; + }; + /** + * @constructor + */ + function Outline(tc,t) { + this.ts = null; + this.tc = tc; + this.tag = t; + this.x = this.y = this.w = this.h = this.sc = 1; + this.z = 0; + this.pulse = 1; + this.pulsate = tc.pulsateTo < 1; + this.colour = tc.outlineColour; + this.adash = ~~tc.outlineDash; + this.agap = ~~tc.outlineDashSpace || this.adash; + this.aspeed = tc.outlineDashSpeed * 1; + if(this.colour == 'tag') + this.colour = GetProperty(t.a, 'color'); + else if(this.colour == 'tagbg') + this.colour = GetProperty(t.a, 'background-color'); + this.Draw = this.pulsate ? this.DrawPulsate : this.DrawSimple; + this.radius = tc.outlineRadius | 0; + this.SetMethod(tc.outlineMethod); + } + Oproto = Outline.prototype; + Oproto.SetMethod = function(om) { + var methods = { + block: ['PreDraw','DrawBlock'], + colour: ['PreDraw','DrawColour'], + outline: ['PostDraw','DrawOutline'], + classic: ['LastDraw','DrawOutline'], + size: ['PreDraw','DrawSize'], + none: ['LastDraw'] + }, funcs = methods[om] || methods.outline; + if(om == 'none') { + this.Draw = function() { return 1; } + } else { + this.drawFunc = this[funcs[1]]; + } + this[funcs[0]] = this.Draw; + }; + Oproto.Update = function(x,y,w,h,sc,z,xo,yo) { + var o = this.tc.outlineOffset, o2 = 2 * o; + this.x = sc * x + xo - o; + this.y = sc * y + yo - o; + this.w = sc * w + o2; + this.h = sc * h + o2; + this.sc = sc; // used to determine frontmost + this.z = z; + }; + Oproto.Ants = function(c) { + if(!this.adash) + return; + var l = this.adash, g = this.agap, s = this.aspeed, length = l + g, + l1 = 0, l2 = l, g1 = g, g2 = 0, seq = 0, ants; + if(s) { + seq = abs(s) * (TimeNow() - this.ts) / 50; + if(s < 0) + seq = 8.64e6 - seq; + s = ~~seq % length; + } + if(s) { + if(l >= s) { + l1 = l - s; + l2 = s; + } else { + g1 = length - s; + g2 = g - g1; + } + ants = [l1, g1, l2, g2]; + } else { + ants = [l,g]; + } + c.setLineDash(ants); + } + Oproto.DrawOutline = function(c,x,y,w,h,colour) { + var r = min(this.radius, h/2, w/2); + c.strokeStyle = colour; + this.Ants(c); + RRect(c, x, y, w, h, r, true); + }; + Oproto.DrawSize = function(c,x,y,w,h,colour,tag,x1,y1) { + var tw = tag.w, th = tag.h, m, i, sc; + if(this.pulsate) { + if(tag.image) + sc = (tag.image.height + this.tc.outlineIncrease) / tag.image.height; + else + sc = tag.oscale; + i = tag.fimage || tag.image; + m = 1 + ((sc - 1) * (1-this.pulse)); + tag.h *= m; + tag.w *= m; + } else { + i = tag.oimage; + } + tag.alpha = 1; + tag.Draw(c, x1, y1, i); + tag.h = th; + tag.w = tw; + return 1; + }; + Oproto.DrawColour = function(c,x,y,w,h,colour,tag,x1,y1) { + if(tag.oimage) { + if(this.pulse < 1) { + tag.alpha = 1 - pow(this.pulse, 2); + tag.Draw(c, x1, y1, tag.fimage); + tag.alpha = this.pulse; + } else { + tag.alpha = 1; + } + tag.Draw(c, x1, y1, tag.oimage); + return 1; + } + return this[tag.image ? 'DrawColourImage' : 'DrawColourText'](c,x,y,w,h,colour,tag,x1,y1); + }; + Oproto.DrawColourText = function(c,x,y,w,h,colour,tag,x1,y1) { + var normal = tag.colour; + tag.colour = colour; + tag.alpha = 1; + tag.Draw(c,x1,y1); + tag.colour = normal; + return 1; + }; + Oproto.DrawColourImage = function(c,x,y,w,h,colour,tag,x1,y1) { + var ccanvas = c.canvas, fx = ~~max(x,0), fy = ~~max(y,0), + fw = min(ccanvas.width - fx, w) + .5|0, fh = min(ccanvas.height - fy,h) + .5|0, cc; + if(ocanvas) + ocanvas.width = fw, ocanvas.height = fh; + else + ocanvas = NewCanvas(fw, fh); + if(!ocanvas) + return this.SetMethod('outline'); // if using IE and images, give up! + cc = ocanvas.getContext('2d'); + + cc.drawImage(ccanvas,fx,fy,fw,fh,0,0,fw,fh); + c.clearRect(fx,fy,fw,fh); + if(this.pulsate) { + tag.alpha = 1 - pow(this.pulse, 2); + } else { + tag.alpha = 1; + } + tag.Draw(c,x1,y1); + c.setTransform(1,0,0,1,0,0); + c.save(); + c.beginPath(); + c.rect(fx,fy,fw,fh); + c.clip(); + c.globalCompositeOperation = 'source-in'; + c.fillStyle = colour; + c.fillRect(fx,fy,fw,fh); + c.restore(); + c.globalAlpha = 1; + c.globalCompositeOperation = 'destination-over'; + c.drawImage(ocanvas,0,0,fw,fh,fx,fy,fw,fh); + c.globalCompositeOperation = 'source-over'; + return 1; + }; + Oproto.DrawBlock = function(c,x,y,w,h,colour) { + var r = min(this.radius, h/2, w/2); + c.fillStyle = colour; + RRect(c, x, y, w, h, r); + }; + Oproto.DrawSimple = function(c, tag, x1, y1, ga, useGa) { + var t = this.tc; + c.setTransform(1,0,0,1,0,0); + c.strokeStyle = this.colour; + c.lineWidth = t.outlineThickness; + c.shadowBlur = c.shadowOffsetX = c.shadowOffsetY = 0; + c.globalAlpha = useGa ? ga : 1; + return this.drawFunc(c,this.x,this.y,this.w,this.h,this.colour,tag,x1,y1); + }; + Oproto.DrawPulsate = function(c, tag, x1, y1) { + var diff = TimeNow() - this.ts, t = this.tc, + ga = t.pulsateTo + ((1 - t.pulsateTo) * + (0.5 + (cos(2 * Math.PI * diff / (1000 * t.pulsateTime)) / 2))); + this.pulse = ga = TagCanvas.Smooth(1,ga); + return this.DrawSimple(c, tag, x1, y1, ga, 1); + }; + Oproto.Active = function(c,x,y) { + var a = (x >= this.x && y >= this.y && + x <= this.x + this.w && y <= this.y + this.h); + if(a) { + this.ts = this.ts || TimeNow(); + } else { + this.ts = null; + } + return a; + }; + Oproto.PreDraw = Oproto.PostDraw = Oproto.LastDraw = Nop; + /** + * @constructor + */ + function Tag(tc, text, a, v, w, h, col, bcol, bradius, boutline, bothickness, + font, padding, original) { + this.tc = tc; + this.image = null; + this.text = text; + this.text_original = original; + this.line_widths = []; + this.title = a.title || null; + this.a = a; + this.position = new Vector(v[0], v[1], v[2]); + this.x = this.y = this.z = 0; + this.w = w; + this.h = h; + this.colour = col || tc.textColour; + this.bgColour = bcol || tc.bgColour; + this.bgRadius = bradius | 0; + this.bgOutline = boutline || this.colour; + this.bgOutlineThickness = bothickness | 0; + this.textFont = font || tc.textFont; + this.padding = padding | 0; + this.sc = this.alpha = 1; + this.weighted = !tc.weight; + this.outline = new Outline(tc,this); + } + Tproto = Tag.prototype; + Tproto.Init = function(e) { + var tc = this.tc; + this.textHeight = tc.textHeight; + if(this.HasText()) { + this.Measure(tc.ctxt,tc); + } else { + this.w = this.iw; + this.h = this.ih; + } + + this.SetShadowColour = tc.shadowAlpha ? this.SetShadowColourAlpha : this.SetShadowColourFixed; + this.SetDraw(tc); + }; + Tproto.Draw = Nop; + Tproto.HasText = function() { + return this.text && this.text[0].length > 0; + }; + Tproto.EqualTo = function(e) { + var i = e.getElementsByTagName('img'); + if(this.a.href != e.href) + return 0; + if(i.length) + return this.image.src == i[0].src; + return (e.innerText || e.textContent) == this.text_original; + }; + Tproto.SetImage = function(i) { + this.image = this.fimage = i; + }; + Tproto.SetDraw = function(t) { + this.Draw = this.fimage ? (t.ie > 7 ? this.DrawImageIE : this.DrawImage) : this.DrawText; + t.noSelect && (this.CheckActive = Nop); + }; + Tproto.MeasureText = function(c) { + var i, l = this.text.length, w = 0, wl; + for(i = 0; i < l; ++i) { + this.line_widths[i] = wl = c.measureText(this.text[i]).width; + w = max(w, wl); + } + return w; + }; + Tproto.Measure = function(c,t) { + var extents = FindTextBoundingBox(this.text, this.textFont, this.textHeight), + s, th, f, soff, cw, twidth, theight, img, tcv; + // add the gap at the top to the height to make equal gap at bottom + theight = extents ? extents.max.y + extents.min.y : this.textHeight; + c.font = this.font = this.textHeight + 'px ' + this.textFont; + twidth = this.MeasureText(c); + if(t.txtOpt) { + s = t.txtScale; + th = s * this.textHeight; + f = th + 'px ' + this.textFont; + soff = [s * t.shadowOffset[0], s * t.shadowOffset[1]]; + c.font = f; + cw = this.MeasureText(c); + tcv = new TextCanvas(this.text, f, cw + s, (s * theight) + s, cw, + this.line_widths, t.textAlign, t.textVAlign, s); + + if(this.image) + tcv.SetImage(this.image, this.iw, this.ih, t.imagePosition, t.imagePadding, + t.imageAlign, t.imageVAlign, t.imageScale); + + img = tcv.Create(this.colour, this.bgColour, this.bgOutline, + s * this.bgOutlineThickness, t.shadow, s * t.shadowBlur, soff, + s * this.padding, s * this.bgRadius); + + // add outline image using highlight colour + if(t.outlineMethod == 'colour') { + this.oimage = tcv.Create(this.outline.colour, this.bgColour, this.outline.colour, + s * this.bgOutlineThickness, t.shadow, s * t.shadowBlur, soff, + s * this.padding, s * this.bgRadius); + + } else if(t.outlineMethod == 'size') { + extents = FindTextBoundingBox(this.text, this.textFont, + this.textHeight + t.outlineIncrease); + th = extents.max.y + extents.min.y; + f = (s * (this.textHeight + t.outlineIncrease)) + 'px ' + this.textFont; + c.font = f; + cw = this.MeasureText(c); + + tcv = new TextCanvas(this.text, f, cw + s, (s * th) + s, cw, + this.line_widths, t.textAlign, t.textVAlign, s); + if(this.image) + tcv.SetImage(this.image, this.iw + t.outlineIncrease, + this.ih + t.outlineIncrease, t.imagePosition, t.imagePadding, + t.imageAlign, t.imageVAlign, t.imageScale); + + this.oimage = tcv.Create(this.colour, this.bgColour, this.bgOutline, + s * this.bgOutlineThickness, t.shadow, s * t.shadowBlur, soff, + s * this.padding, s * this.bgRadius); + + this.oscale = this.oimage.width / img.width; + if(t.outlineIncrease > 0) + img = ExpandImage(img, this.oimage.width, this.oimage.height); + else + this.oimage = ExpandImage(this.oimage, img.width, img.height); + } + if(img) { + this.fimage = img; + twidth = this.fimage.width / s; + theight = this.fimage.height / s; + } + this.SetDraw(t); + t.txtOpt = !!this.fimage; + } + this.h = theight; + this.w = twidth; + }; + Tproto.SetFont = function(f, c, bc, boc) { + this.textFont = f; + this.colour = c; + this.bgColour = bc; + this.bgOutline = boc; + this.Measure(this.tc.ctxt, this.tc); + }; + Tproto.SetWeight = function(w) { + var tc = this.tc, modes = tc.weightMode.split(/[, ]/), m, s, wl = w.length; + if(!this.HasText()) + return; + this.weighted = true; + for(s = 0; s < wl; ++s) { + m = modes[s] || 'size'; + if('both' == m) { + this.Weight(w[s], tc.ctxt, tc, 'size', tc.min_weight[s], + tc.max_weight[s], s); + this.Weight(w[s], tc.ctxt, tc, 'colour', tc.min_weight[s], + tc.max_weight[s], s); + } else { + this.Weight(w[s], tc.ctxt, tc, m, tc.min_weight[s], tc.max_weight[s], s); + } + } + this.Measure(tc.ctxt, tc); + }; + Tproto.Weight = function(w, c, t, m, wmin, wmax, wnum) { + w = isNaN(w) ? 1 : w; + var nweight = (w - wmin) / (wmax - wmin); + if('colour' == m) + this.colour = FindGradientColour(t, nweight, wnum); + else if('bgcolour' == m) + this.bgColour = FindGradientColour(t, nweight, wnum); + else if('bgoutline' == m) + this.bgOutline = FindGradientColour(t, nweight, wnum); + else if('outline' == m) + this.outline.colour = FindGradientColour(t, nweight, wnum); + else if('size' == m) { + if(t.weightSizeMin > 0 && t.weightSizeMax > t.weightSizeMin) { + this.textHeight = t.weightSize * + (t.weightSizeMin + (t.weightSizeMax - t.weightSizeMin) * nweight); + } else { + // min textHeight of 1 + this.textHeight = max(1, w * t.weightSize); + } + } + }; + Tproto.SetShadowColourFixed = function(c,s,a) { + c.shadowColor = s; + }; + Tproto.SetShadowColourAlpha = function(c,s,a) { + c.shadowColor = SetAlpha(s, a); + }; + Tproto.DrawText = function(c,xoff,yoff) { + var t = this.tc, x = this.x, y = this.y, s = this.sc, i, xl; + c.globalAlpha = this.alpha; + c.fillStyle = this.colour; + t.shadow && this.SetShadowColour(c,t.shadow,this.alpha); + c.font = this.font; + x += xoff / s; + y += (yoff / s) - (this.h / 2); + for(i = 0; i < this.text.length; ++i) { + xl = x; + if('right' == t.textAlign) { + xl += this.w / 2 - this.line_widths[i]; + } else if('centre' == t.textAlign) { + xl -= this.line_widths[i] / 2; + } else { + xl -= this.w / 2; + } + c.setTransform(s, 0, 0, s, s * xl, s * y); + c.fillText(this.text[i], 0, 0); + y += this.textHeight; + } + }; + Tproto.DrawImage = function(c,xoff,yoff,im) { + var x = this.x, y = this.y, s = this.sc, + i = im || this.fimage, w = this.w, h = this.h, a = this.alpha, + shadow = this.shadow; + c.globalAlpha = a; + shadow && this.SetShadowColour(c,shadow,a); + x += (xoff / s) - (w / 2); + y += (yoff / s) - (h / 2); + c.setTransform(s, 0, 0, s, s * x, s * y); + c.drawImage(i, 0, 0, w, h); + }; + Tproto.DrawImageIE = function(c,xoff,yoff) { + var i = this.fimage, s = this.sc, + w = i.width = this.w*s, h = i.height = this.h * s, + x = (this.x*s) + xoff - (w/2), y = (this.y*s) + yoff - (h/2); + c.setTransform(1,0,0,1,0,0); + c.globalAlpha = this.alpha; + c.drawImage(i, x, y); + }; + Tproto.Calc = function(m,a) { + var pp, t = this.tc, mnb = t.minBrightness, + mxb = t.maxBrightness, r = t.max_radius; + pp = m.xform(this.position); + this.xformed = pp; + pp = Project(t, pp, t.stretchX, t.stretchY); + this.x = pp.x; + this.y = pp.y; + this.z = pp.z; + this.sc = pp.w; + this.alpha = a * Clamp(mnb + (mxb - mnb) * (r - this.z) / (2 * r), 0, 1); + return this.xformed; + }; + Tproto.UpdateActive = function(c, xoff, yoff) { + var o = this.outline, w = this.w, h = this.h, + x = this.x - w/2, y = this.y - h/2; + o.Update(x, y, w, h, this.sc, this.z, xoff, yoff); + return o; + }; + Tproto.CheckActive = function(c,xoff,yoff) { + var t = this.tc, o = this.UpdateActive(c, xoff, yoff); + return o.Active(c, t.mx, t.my) ? o : null; + }; + Tproto.Clicked = function(e) { + var a = this.a, t = a.target, h = a.href, evt; + if(t != '' && t != '_self') { + if(self.frames[t]) { + self.frames[t].document.location = h; + } else{ + try { + if(top.frames[t]) { + top.frames[t].document.location = h; + return; + } + } catch(err) { + // different domain/port/protocol? + } + window.open(h, t); + } + return; + } + if(doc.createEvent) { + evt = doc.createEvent('MouseEvents'); + evt.initMouseEvent('click', 1, 1, window, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, null); + if(!a.dispatchEvent(evt)) + return; + } else if(a.fireEvent) { + if(!a.fireEvent('onclick')) + return; + } + doc.location = h; + }; + /** + * @constructor + */ + function TagCanvas(cid,lctr,opt) { + var i, p, c = doc.getElementById(cid), cp = ['id','class','innerHTML'], raf; + + if(!c) throw 0; + if(Defined(window.G_vmlCanvasManager)) { + c = window.G_vmlCanvasManager.initElement(c); + this.ie = parseFloat(navigator.appVersion.split('MSIE')[1]); + } + if(c && (!c.getContext || !c.getContext('2d').fillText)) { + p = doc.createElement('DIV'); + for(i = 0; i < cp.length; ++i) + p[cp[i]] = c[cp[i]]; + c.parentNode.insertBefore(p,c); + c.parentNode.removeChild(c); + throw 0; + } + for(i in TagCanvas.options) + this[i] = opt && Defined(opt[i]) ? opt[i] : + (Defined(TagCanvas[i]) ? TagCanvas[i] : TagCanvas.options[i]); + + this.canvas = c; + this.ctxt = c.getContext('2d'); + this.z1 = 250 / max(this.depth, 0.001); + this.z2 = this.z1 / this.zoom; + this.radius = min(c.height, c.width) * 0.0075; // fits radius of 100 in canvas + this.max_radius = 100; + this.max_weight = []; + this.min_weight = []; + this.textFont = this.textFont && FixFont(this.textFont); + this.textHeight *= 1; + this.imageRadius = this.imageRadius.toString(); + this.pulsateTo = Clamp(this.pulsateTo, 0, 1); + this.minBrightness = Clamp(this.minBrightness, 0, 1); + this.maxBrightness = Clamp(this.maxBrightness, this.minBrightness, 1); + this.ctxt.textBaseline = 'top'; + this.lx = (this.lock + '').indexOf('x') + 1; + this.ly = (this.lock + '').indexOf('y') + 1; + this.frozen = this.dx = this.dy = this.fixedAnim = this.touchState = 0; + this.fixedAlpha = 1; + this.source = lctr || cid; + this.repeatTags = min(64, ~~this.repeatTags); + this.minTags = min(200, ~~this.minTags); + if(~~this.scrollPause > 0) + TagCanvas.scrollPause = ~~this.scrollPause; + else + this.scrollPause = 0; + if(this.minTags > 0 && this.repeatTags < 1 && (i = this.GetTags().length)) + this.repeatTags = ceil(this.minTags / i) - 1; + this.transform = Matrix.Identity(); + this.startTime = this.time = TimeNow(); + this.mx = this.my = -1; + this.centreImage && CentreImage(this); + this.Animate = this.dragControl ? this.AnimateDrag : this.AnimatePosition; + this.animTiming = (typeof TagCanvas[this.animTiming] == 'function' ? + TagCanvas[this.animTiming] : TagCanvas.Smooth); + if(this.shadowBlur || this.shadowOffset[0] || this.shadowOffset[1]) { + // let the browser translate "red" into "#ff0000" + this.ctxt.shadowColor = this.shadow; + this.shadow = this.ctxt.shadowColor; + this.shadowAlpha = ShadowAlphaBroken(); + } else { + delete this.shadow; + } + this.Load(); + if(lctr && this.hideTags) { + (function(t) { + if(TagCanvas.loaded) + t.HideTags(); + else + AddHandler('load', function() { t.HideTags(); }, window); + })(this); + } + + this.yaw = this.initial ? this.initial[0] * this.maxSpeed : 0; + this.pitch = this.initial ? this.initial[1] * this.maxSpeed : 0; + if(this.tooltip) { + this.ctitle = c.title; + c.title = ''; + if(this.tooltip == 'native') { + this.Tooltip = this.TooltipNative; + } else { + this.Tooltip = this.TooltipDiv; + if(!this.ttdiv) { + this.ttdiv = doc.createElement('div'); + this.ttdiv.className = this.tooltipClass; + this.ttdiv.style.position = 'absolute'; + this.ttdiv.style.zIndex = c.style.zIndex + 1; + AddHandler('mouseover',function(e){e.target.style.display='none';},this.ttdiv); + doc.body.appendChild(this.ttdiv); + } + } + } else { + this.Tooltip = this.TooltipNone; + } + if(!this.noMouse && !handlers[cid]) { + handlers[cid] = [ + ['mousemove', MouseMove], + ['mouseout', MouseOut], + ['mouseup', MouseUp], + ['touchstart', TouchDown], + ['touchend', TouchUp], + ['touchcancel', TouchUp], + ['touchmove', TouchMove] + ]; + if(this.dragControl) { + handlers[cid].push(['mousedown', MouseDown]); + handlers[cid].push(['selectstart', Nop]); + } + if(this.wheelZoom) { + handlers[cid].push(['mousewheel', MouseWheel]); + handlers[cid].push(['DOMMouseScroll', MouseWheel]); + } + if(this.scrollPause) { + handlers[cid].push(['scroll', Scroll, window]); + } + for(i = 0; i < handlers[cid].length; ++i) { + p = handlers[cid][i]; + AddHandler(p[0], p[1], p[2] ? p[2] : c); + } + } + if(!TagCanvas.started) { + raf = window.requestAnimationFrame = window.requestAnimationFrame || + window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || + window.msRequestAnimationFrame; + TagCanvas.NextFrame = raf ? TagCanvas.NextFrameRAF : + TagCanvas.NextFrameTimeout; + TagCanvas.interval = this.interval; + TagCanvas.NextFrame(this.interval); + TagCanvas.started = 1; + } + } + TCproto = TagCanvas.prototype; + TCproto.SourceElements = function() { + if(doc.querySelectorAll) + return doc.querySelectorAll('#' + this.source); + return [doc.getElementById(this.source)]; + }; + TCproto.HideTags = function() { + var el = this.SourceElements(), i; + for(i = 0; i < el.length; ++i) + el[i].style.display = 'none'; + }; + TCproto.GetTags = function() { + var el = this.SourceElements(), etl, tl = [], i, j, k; + for(k = 0; k <= this.repeatTags; ++k) { + for(i = 0; i < el.length; ++i) { + etl = el[i].getElementsByTagName('a'); + for(j = 0; j < etl.length; ++j) { + tl.push(etl[j]); + } + } + } + return tl; + }; + TCproto.Message = function(text) { + var tl = [], i, p, tc = text.split(''), a, t, x, z; + for(i = 0; i < tc.length; ++i) { + if(tc[i] != ' ') { + p = i - tc.length / 2; + a = doc.createElement('A'); + a.href = '#'; + a.innerText = tc[i]; + x = 100 * sin(p / 9); + z = -100 * cos(p / 9); + t = new Tag(this, tc[i], a, [x,0,z], 2, 18, '#000', '#fff', 0, 0, 0, + 'monospace', 2, tc[i]); + t.Init(); + tl.push(t); + } + } + return tl; + }; + TCproto.CreateTag = function(e) { + var im, i, t, txt, ts, font, bc, boc, p = [0, 0, 0]; + if('text' != this.imageMode) { + im = e.getElementsByTagName('img'); + if(im.length) { + i = new Image; + i.src = im[0].src; + + if(!this.imageMode) { + t = new Tag(this, "", e, p, 0, 0); + t.SetImage(i); + //t.Init(); + AddImage(i, im[0], t, this); + return t; + } + } + } + if('image' != this.imageMode) { + ts = new TextSplitter(e); + txt = ts.Lines(); + if(!ts.Empty()) { + font = this.textFont || FixFont(GetProperty(e,'font-family')); + if(this.splitWidth) + txt = ts.SplitWidth(this.splitWidth, this.ctxt, font, this.textHeight); + + bc = this.bgColour == 'tag' ? GetProperty(e, 'background-color') : + this.bgColour; + boc = this.bgOutline == 'tag' ? GetProperty(e, 'color') : this.bgOutline; + } else { + ts = null; + } + } + if(ts || i) { + t = new Tag(this, txt, e, p, 2, this.textHeight + 2, + this.textColour || GetProperty(e,'color'), bc, this.bgRadius, + boc, this.bgOutlineThickness, font, this.padding, ts && ts.original); + if(i) { + t.SetImage(i); + AddImage(i, im[0], t, this); + } else { + t.Init(); + } + return t; + } + }; + TCproto.UpdateTag = function(t, a) { + var colour = this.textColour || GetProperty(a, 'color'), + font = this.textFont || FixFont(GetProperty(a, 'font-family')), + bc = this.bgColour == 'tag' ? GetProperty(a, 'background-color') : + this.bgColour, boc = this.bgOutline == 'tag' ? GetProperty(a, 'color') : + this.bgOutline; + t.a = a; + t.title = a.title; + if(t.colour != colour || t.textFont != font || t.bgColour != bc || + t.bgOutline != boc) + t.SetFont(font, colour, bc, boc); + }; + TCproto.Weight = function(tl) { + var ll = tl.length, w, i, s, weights = [], valid, + wfrom = this.weightFrom ? this.weightFrom.split(/[, ]/) : [null], + wl = wfrom.length; + for(i = 0; i < ll; ++i) { + weights[i] = []; + for(s = 0; s < wl; ++s) { + w = FindWeight(tl[i].a, wfrom[s], this.textHeight); + if(!this.max_weight[s] || w > this.max_weight[s]) + this.max_weight[s] = w; + if(!this.min_weight[s] || w < this.min_weight[s]) + this.min_weight[s] = w; + weights[i][s] = w; + } + } + for(s = 0; s < wl; ++s) { + if(this.max_weight[s] > this.min_weight[s]) + valid = 1; + } + if(valid) { + for(i = 0; i < ll; ++i) { + tl[i].SetWeight(weights[i]); + } + } + }; + TCproto.Load = function() { + var tl = this.GetTags(), taglist = [], shape, t, + shapeArgs, rx, ry, rz, vl, i, tagmap = [], pfuncs = { + sphere: PointsOnSphere, + vcylinder: PointsOnCylinderV, + hcylinder: PointsOnCylinderH, + vring: PointsOnRingV, + hring: PointsOnRingH + }; + + if(tl.length) { + tagmap.length = tl.length; + for(i = 0; i < tl.length; ++i) + tagmap[i] = i; + this.shuffleTags && Shuffle(tagmap); + rx = 100 * this.radiusX; + ry = 100 * this.radiusY; + rz = 100 * this.radiusZ; + this.max_radius = max(rx, max(ry, rz)); + + for(i = 0; i < tl.length; ++i) { + t = this.CreateTag(tl[tagmap[i]]); + if(t) + taglist.push(t); + } + this.weight && this.Weight(taglist, true); + + if(this.shapeArgs) { + this.shapeArgs[0] = taglist.length; + } else { + shapeArgs = this.shape.toString().split(/[(),]/); + shape = shapeArgs.shift(); + if(typeof window[shape] === 'function') + this.shape = window[shape]; + else + this.shape = pfuncs[shape] || pfuncs.sphere; + this.shapeArgs = [taglist.length, rx, ry, rz].concat(shapeArgs); + } + vl = this.shape.apply(this, this.shapeArgs); + this.listLength = taglist.length; + for(i = 0; i < taglist.length; ++i) + taglist[i].position = new Vector(vl[i][0], vl[i][1], vl[i][2]); + } + if(this.noTagsMessage && !taglist.length) { + i = (this.imageMode && this.imageMode != 'both' ? this.imageMode + ' ': ''); + taglist = this.Message('No ' + i + 'tags'); + } + this.taglist = taglist; + }; + TCproto.Update = function() { + var tl = this.GetTags(), newlist = [], + taglist = this.taglist, found, + added = [], removed = [], vl, ol, nl, i, j; + + if(!this.shapeArgs) + return this.Load(); + + if(tl.length) { + nl = this.listLength = tl.length; + ol = taglist.length; + + // copy existing list, populate "removed" + for(i = 0; i < ol; ++i) { + newlist.push(taglist[i]); + removed.push(i); + } + + // find added and removed tags + for(i = 0; i < nl; ++i) { + for(j = 0, found = 0; j < ol; ++j) { + if(taglist[j].EqualTo(tl[i])) { + this.UpdateTag(newlist[j], tl[i]); + found = removed[j] = -1; + } + } + if(!found) + added.push(i); + } + + // clean out found tags from removed list + for(i = 0, j = 0; i < ol; ++i) { + if(removed[j] == -1) + removed.splice(j,1); + else + ++j; + } + + // insert new tags in gaps where old tags removed + if(removed.length) { + Shuffle(removed); + while(removed.length && added.length) { + i = removed.shift(); + j = added.shift(); + newlist[i] = this.CreateTag(tl[j]); + } + + // remove any more (in reverse order) + removed.sort(function(a,b) {return a-b}); + while(removed.length) { + newlist.splice(removed.pop(), 1); + } + } + + // add any extra tags + j = newlist.length / (added.length + 1); + i = 0; + while(added.length) { + newlist.splice(ceil(++i * j), 0, this.CreateTag(tl[added.shift()])); + } + + // assign correct positions to tags + this.shapeArgs[0] = nl = newlist.length; + vl = this.shape.apply(this, this.shapeArgs); + for(i = 0; i < nl; ++i) + newlist[i].position = new Vector(vl[i][0], vl[i][1], vl[i][2]); + + // reweight tags + this.weight && this.Weight(newlist); + } + this.taglist = newlist; + }; + TCproto.SetShadow = function(c) { + c.shadowBlur = this.shadowBlur; + c.shadowOffsetX = this.shadowOffset[0]; + c.shadowOffsetY = this.shadowOffset[1]; + }; + TCproto.Draw = function(t) { + if(this.paused) + return; + var cv = this.canvas, cw = cv.width, ch = cv.height, max_sc = 0, + tdelta = (t - this.time) * TagCanvas.interval / 1000, + x = cw / 2 + this.offsetX, y = ch / 2 + this.offsetY, c = this.ctxt, + active, a, i, aindex = -1, tl = this.taglist, l = tl.length, + frontsel = this.frontSelect, centreDrawn = (this.centreFunc == Nop), fixed; + this.time = t; + if(this.frozen && this.drawn) + return this.Animate(cw,ch,tdelta); + fixed = this.AnimateFixed(); + c.setTransform(1,0,0,1,0,0); + for(i = 0; i < l; ++i) + tl[i].Calc(this.transform, this.fixedAlpha); + tl = SortList(tl, function(a,b) {return b.z-a.z}); + + if(fixed && this.fixedAnim.active) { + active = this.fixedAnim.tag.UpdateActive(c, x, y); + } else { + this.active = null; + for(i = 0; i < l; ++i) { + a = this.mx >= 0 && this.my >= 0 && this.taglist[i].CheckActive(c, x, y); + if(a && a.sc > max_sc && (!frontsel || a.z <= 0)) { + active = a; + aindex = i; + active.tag = this.taglist[i]; + max_sc = a.sc; + } + } + this.active = active; + } + + this.txtOpt || (this.shadow && this.SetShadow(c)); + c.clearRect(0,0,cw,ch); + for(i = 0; i < l; ++i) { + if(!centreDrawn && tl[i].z <= 0) { + // run the centreFunc if the next tag is at the front + try { this.centreFunc(c, cw, ch, x, y); } + catch(e) { + alert(e); + // don't run it again + this.centreFunc = Nop; + } + centreDrawn = true; + } + + if(!(active && active.tag == tl[i] && active.PreDraw(c, tl[i], x, y))) + tl[i].Draw(c, x, y); + active && active.tag == tl[i] && active.PostDraw(c); + } + if(this.freezeActive && active) { + this.Freeze(); + } else { + this.UnFreeze(); + this.drawn = (l == this.listLength); + } + if(this.fixedCallback) { + this.fixedCallback(this,this.fixedCallbackTag); + this.fixedCallback = null; + } + fixed || this.Animate(cw, ch, tdelta); + active && active.LastDraw(c); + cv.style.cursor = active ? this.activeCursor : ''; + this.Tooltip(active,this.taglist[aindex]); + }; + TCproto.TooltipNone = function() { }; + TCproto.TooltipNative = function(active,tag) { + if(active) + this.canvas.title = tag && tag.title ? tag.title : ''; + else + this.canvas.title = this.ctitle; + }; + TCproto.SetTTDiv = function(title, tag) { + var tc = this, s = tc.ttdiv.style; + if(title != tc.ttdiv.innerHTML) + s.display = 'none'; + tc.ttdiv.innerHTML = title; + tag && (tag.title = tc.ttdiv.innerHTML); + if(s.display == 'none' && ! tc.tttimer) { + tc.tttimer = setTimeout(function() { + var p = AbsPos(tc.canvas.id); + s.display = 'block'; + s.left = p.x + tc.mx + 'px'; + s.top = p.y + tc.my + 24 + 'px'; + tc.tttimer = null; + }, tc.tooltipDelay); + } + }; + TCproto.TooltipDiv = function(active,tag) { + if(active && tag && tag.title) { + this.SetTTDiv(tag.title, tag); + } else if(!active && this.mx != -1 && this.my != -1 && this.ctitle.length) { + this.SetTTDiv(this.ctitle); + } else { + this.ttdiv.style.display = 'none'; + } + }; + TCproto.Transform = function(tc, p, y) { + if(p || y) { + var sp = sin(p), cp = cos(p), sy = sin(y), cy = cos(y), + ym = new Matrix([cy,0,sy, 0,1,0, -sy,0,cy]), + pm = new Matrix([1,0,0, 0,cp,-sp, 0,sp,cp]); + tc.transform = tc.transform.mul(ym.mul(pm)); + } + }; + TCproto.AnimateFixed = function() { + var fa, t1, angle, m, d; + if(this.fadeIn) { + t1 = TimeNow() - this.startTime; + if(t1 >= this.fadeIn) { + this.fadeIn = 0; + this.fixedAlpha = 1; + } else { + this.fixedAlpha = t1 / this.fadeIn; + } + } + if(this.fixedAnim) { + if(!this.fixedAnim.transform) + this.fixedAnim.transform = this.transform; + fa = this.fixedAnim, t1 = TimeNow() - fa.t0, angle = fa.angle, + m, d = this.animTiming(fa.t, t1); + this.transform = fa.transform; + if(t1 >= fa.t) { + this.fixedCallbackTag = fa.tag; + this.fixedCallback = fa.cb; + this.fixedAnim = this.yaw = this.pitch = 0; + } else { + angle *= d; + } + m = Matrix.Rotation(angle, fa.axis); + this.transform = this.transform.mul(m); + return (this.fixedAnim != 0); + } + return false; + }; + TCproto.AnimatePosition = function(w, h, t) { + var tc = this, x = tc.mx, y = tc.my, s, r; + if(!tc.frozen && x >= 0 && y >= 0 && x < w && y < h) { + s = tc.maxSpeed, r = tc.reverse ? -1 : 1; + tc.lx || (tc.yaw = ((x * 2 * s / w) - s) * r * t); + tc.ly || (tc.pitch = ((y * 2 * s / h) - s) * -r * t); + tc.initial = null; + } else if(!tc.initial) { + if(tc.frozen && !tc.freezeDecel) + tc.yaw = tc.pitch = 0; + else + tc.Decel(tc); + } + this.Transform(tc, tc.pitch, tc.yaw); + }; + TCproto.AnimateDrag = function(w, h, t) { + var tc = this, rs = 100 * t * tc.maxSpeed / tc.max_radius / tc.zoom; + if(tc.dx || tc.dy) { + tc.lx || (tc.yaw = tc.dx * rs / tc.stretchX); + tc.ly || (tc.pitch = tc.dy * -rs / tc.stretchY); + tc.dx = tc.dy = 0; + tc.initial = null; + } else if(!tc.initial) { + tc.Decel(tc); + } + this.Transform(tc, tc.pitch, tc.yaw); + }; + TCproto.Freeze = function() { + if(!this.frozen) { + this.preFreeze = [this.yaw, this.pitch]; + this.frozen = 1; + this.drawn = 0; + } + }; + TCproto.UnFreeze = function() { + if(this.frozen) { + this.yaw = this.preFreeze[0]; + this.pitch = this.preFreeze[1]; + this.frozen = 0; + } + }; + TCproto.Decel = function(tc) { + var s = tc.minSpeed, ay = abs(tc.yaw), ap = abs(tc.pitch); + if(!tc.lx && ay > s) + tc.yaw = ay > tc.z0 ? tc.yaw * tc.decel : 0; + if(!tc.ly && ap > s) + tc.pitch = ap > tc.z0 ? tc.pitch * tc.decel : 0; + }; + TCproto.Zoom = function(r) { + this.z2 = this.z1 * (1/r); + this.drawn = 0; + }; + TCproto.Clicked = function(e) { + var a = this.active; + try { + if(a && a.tag) + if(this.clickToFront === false || this.clickToFront === null) + a.tag.Clicked(e); + else + this.TagToFront(a.tag, this.clickToFront, function() { + a.tag.Clicked(e); + }, true); + } catch(ex) { + } + }; + TCproto.Wheel = function(i) { + var z = this.zoom + this.zoomStep * (i ? 1 : -1); + this.zoom = min(this.zoomMax,max(this.zoomMin,z)); + this.Zoom(this.zoom); + }; + TCproto.BeginDrag = function(e) { + this.down = EventXY(e, this.canvas); + e.cancelBubble = true; + e.returnValue = false; + e.preventDefault && e.preventDefault(); + }; + TCproto.Drag = function(e, p) { + if(this.dragControl && this.down) { + var t2 = this.dragThreshold * this.dragThreshold, + dx = p.x - this.down.x, dy = p.y - this.down.y; + if(this.dragging || dx * dx + dy * dy > t2) { + this.dx = dx; + this.dy = dy; + this.dragging = 1; + this.down = p; + } + } + return this.dragging; + }; + TCproto.EndDrag = function() { + var res = this.dragging; + this.dragging = this.down = null; + return res; + }; + function PinchDistance(e) { + var t1 = e.targetTouches[0], t2 = e.targetTouches[1]; + return sqrt(pow(t2.pageX - t1.pageX, 2) + pow(t2.pageY - t1.pageY, 2)); + } + TCproto.BeginPinch = function(e) { + this.pinched = [PinchDistance(e), this.zoom]; + e.preventDefault && e.preventDefault(); + }; + TCproto.Pinch = function(e) { + var z, d, p = this.pinched; + if(!p) + return; + d = PinchDistance(e); + z = p[1] * d / p[0]; + this.zoom = min(this.zoomMax,max(this.zoomMin,z)); + this.Zoom(this.zoom); + }; + TCproto.EndPinch = function(e) { + this.pinched = null; + }; + TCproto.Pause = function() { this.paused = true; }; + TCproto.Resume = function() { this.paused = false; }; + TCproto.SetSpeed = function(i) { + this.initial = i; + this.yaw = i[0] * this.maxSpeed; + this.pitch = i[1] * this.maxSpeed; + }; + TCproto.FindTag = function(t) { + if(!Defined(t)) + return null; + Defined(t.index) && (t = t.index); + if(!IsObject(t)) + return this.taglist[t]; + var srch, tgt, i; + if(Defined(t.id)) + srch = 'id', tgt = t.id; + else if(Defined(t.text)) + srch = 'innerText', tgt = t.text; + + for(i = 0; i < this.taglist.length; ++i) + if(this.taglist[i].a[srch] == tgt) + return this.taglist[i]; + }; + TCproto.RotateTag = function(tag, lt, lg, time, callback, active) { + var t = tag.Calc(this.transform, 1), v1 = new Vector(t.x, t.y, t.z), + v2 = MakeVector(lg, lt), angle = v1.angle(v2), u = v1.cross(v2).unit(); + if(angle == 0) { + this.fixedCallbackTag = tag; + this.fixedCallback = callback; + } else { + this.fixedAnim = { + angle: -angle, + axis: u, + t: time, + t0: TimeNow(), + cb: callback, + tag: tag, + active: active + }; + } + }; + TCproto.TagToFront = function(tag, time, callback, active) { + this.RotateTag(tag, 0, 0, time, callback, active); + }; + TagCanvas.Start = function(id,l,o) { + TagCanvas.Delete(id); + TagCanvas.tc[id] = new TagCanvas(id,l,o); + }; + function tccall(f,id) { + TagCanvas.tc[id] && TagCanvas.tc[id][f](); + } + TagCanvas.Linear = function(t, t0) { return t0 / t; } + TagCanvas.Smooth = function(t, t0) { return 0.5 - cos(t0 * Math.PI / t) / 2; } + TagCanvas.Pause = function(id) { tccall('Pause',id); }; + TagCanvas.Resume = function(id) { tccall('Resume',id); }; + TagCanvas.Reload = function(id) { tccall('Load',id); }; + TagCanvas.Update = function(id) { tccall('Update',id); }; + TagCanvas.SetSpeed = function(id, speed) { + if(IsObject(speed) && TagCanvas.tc[id] && + !isNaN(speed[0]) && !isNaN(speed[1])) { + TagCanvas.tc[id].SetSpeed(speed); + return true; + } + return false; + }; + TagCanvas.TagToFront = function(id, options) { + if(!IsObject(options)) + return false; + options.lat = options.lng = 0; + return TagCanvas.RotateTag(id, options); + }; + TagCanvas.RotateTag = function(id, options) { + if(IsObject(options) && TagCanvas.tc[id]) { + if(isNaN(options.time)) + options.time = 500; + var tt = TagCanvas.tc[id].FindTag(options); + if(tt) { + TagCanvas.tc[id].RotateTag(tt, options.lat, options.lng, + options.time, options.callback, options.active); + return true; + } + } + return false; + }; + TagCanvas.Delete = function(id) { + var i, c; + if(handlers[id]) { + c = doc.getElementById(id); + if(c) { + for(i = 0; i < handlers[id].length; ++i) + RemoveHandler(handlers[id][i][0], handlers[id][i][1], c); + } + } + delete handlers[id]; + delete TagCanvas.tc[id]; + }; + TagCanvas.NextFrameRAF = function() { + requestAnimationFrame(DrawCanvasRAF); + }; + TagCanvas.NextFrameTimeout = function(iv) { + setTimeout(DrawCanvas, iv); + }; + TagCanvas.tc = {}; + TagCanvas.options = { + z1: 20000, + z2: 20000, + z0: 0.0002, + freezeActive: false, + freezeDecel: false, + activeCursor: 'pointer', + pulsateTo: 1, + pulsateTime: 3, + reverse: false, + depth: 0.5, + maxSpeed: 0.05, + minSpeed: 0, + decel: 0.95, + interval: 20, + minBrightness: 0.1, + maxBrightness: 1, + outlineColour: '#ffff99', + outlineThickness: 2, + outlineOffset: 5, + outlineMethod: 'outline', + outlineRadius: 0, + textColour: '#ff99ff', + textHeight: 15, + textFont: 'Helvetica, Arial, sans-serif', + shadow: '#000', + shadowBlur: 0, + shadowOffset: [0,0], + initial: null, + hideTags: true, + zoom: 1, + weight: false, + weightMode: 'size', + weightFrom: null, + weightSize: 1, + weightSizeMin: null, + weightSizeMax: null, + weightGradient: {0:'#f00', 0.33:'#ff0', 0.66:'#0f0', 1:'#00f'}, + txtOpt: true, + txtScale: 2, + frontSelect: false, + wheelZoom: true, + zoomMin: 0.3, + zoomMax: 3, + zoomStep: 0.05, + shape: 'sphere', + lock: null, + tooltip: null, + tooltipDelay: 300, + tooltipClass: 'tctooltip', + radiusX: 1, + radiusY: 1, + radiusZ: 1, + stretchX: 1, + stretchY: 1, + offsetX: 0, + offsetY: 0, + shuffleTags: false, + noSelect: false, + noMouse: false, + imageScale: 1, + paused: false, + dragControl: false, + dragThreshold: 4, + centreFunc: Nop, + splitWidth: 0, + animTiming: 'Smooth', + clickToFront: false, + fadeIn: 0, + padding: 0, + bgColour: null, + bgRadius: 0, + bgOutline: null, + bgOutlineThickness: 0, + outlineIncrease: 4, + textAlign: 'centre', + textVAlign: 'middle', + imageMode: null, + imagePosition: null, + imagePadding: 2, + imageAlign: 'centre', + imageVAlign: 'middle', + noTagsMessage: true, + centreImage: null, + pinchZoom: false, + repeatTags: 0, + minTags: 0, + imageRadius: 0, + scrollPause: false, + outlineDash: 0, + outlineDashSpace: 0, + outlineDashSpeed: 1 + }; + for(i in TagCanvas.options) TagCanvas[i] = TagCanvas.options[i]; + window.TagCanvas = TagCanvas; + jQuery.fn.tagcanvas = function(options, lctr) { + var fn = { + pause: function() { + $(this).each(function() { tccall('Pause',$(this)[0].id); }); + }, + resume: function() { + $(this).each(function() { tccall('Resume',$(this)[0].id); }); + }, + reload: function() { + $(this).each(function() { tccall('Load',$(this)[0].id); }); + }, + update: function() { + $(this).each(function() { tccall('Update',$(this)[0].id); }); + }, + tagtofront: function() { + $(this).each(function() { TagCanvas.TagToFront($(this)[0].id, lctr); }); + }, + rotatetag: function() { + $(this).each(function() { TagCanvas.RotateTag($(this)[0].id, lctr); }); + }, + 'delete': function() { + $(this).each(function() { TagCanvas.Delete($(this)[0].id); }); + }, + setspeed: function() { + $(this).each(function() { TagCanvas.SetSpeed($(this)[0].id, lctr); }); + } + }; + if(typeof options == 'string' && fn[options]) { + fn[options].apply(this); + return this; + } else { + TagCanvas.jquery = 1; + $(this).each(function() { TagCanvas.Start($(this)[0].id, lctr, options); }); + return TagCanvas.started; + } + }; + + // set a flag for when the window has loaded + AddHandler('load',function(){TagCanvas.loaded=1},window); + })(jQuery); \ No newline at end of file diff --git a/application/templates/base.html b/application/templates/base.html index 91958df..003ca2d 100644 --- a/application/templates/base.html +++ b/application/templates/base.html @@ -8,6 +8,8 @@ {% block title %}Seitenname{% endblock %} + {% include "taggit_templatetags2/tagcanvas_include_js_static.html" %} + {% include_tagcanvas 'tag-cloud' 'width px' 'height px' 'post_list.html' 'application' %} @@ -90,6 +92,7 @@ + diff --git a/application/templates/post_list.html b/application/templates/post_list.html index 0ba5587..ec323db 100644 --- a/application/templates/post_list.html +++ b/application/templates/post_list.html @@ -1,4 +1,4 @@ -{% extends 'base.html' %} {% block content %} {% for post in posts %} +{% extends 'base.html' %} {% block content %} {% for post in posts %} {% load taggit_templatetags2_tags %}
{{ post.published_date }} @@ -8,7 +8,7 @@

{{ post.text|linebreaks }}

- {% for tag in post.tags.all %} + {% for tag in post.tags.all %} {{ tag.name }}, {% endfor %}

@@ -17,4 +17,14 @@

-{% endfor %} {% endblock %} \ No newline at end of file +{% endfor %} +{% get_tagcloud as tags for 'application' %} +
+
    + {% for tag in tags %} +
  • {{tag}} ({{tag.num_times}})
  • + {% endfor %} +
+
+
+{% endblock %} \ No newline at end of file diff --git a/mysite/settings.py b/mysite/settings.py index cf98f33..78bbed9 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -45,6 +45,7 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'application', 'taggit', + 'taggit_templatetags2', ] MIDDLEWARE = [ diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/DESCRIPTION.rst b/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/DESCRIPTION.rst deleted file mode 100644 index c810a02..0000000 --- a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,45 +0,0 @@ -Django is a high-level Python Web framework that encourages rapid development -and clean, pragmatic design. Thanks for checking it out. - -All documentation is in the "``docs``" directory and online at -https://docs.djangoproject.com/en/stable/. If you're just getting started, -here's how we recommend you read the docs: - -* First, read ``docs/intro/install.txt`` for instructions on installing Django. - -* Next, work through the tutorials in order (``docs/intro/tutorial01.txt``, - ``docs/intro/tutorial02.txt``, etc.). - -* If you want to set up an actual deployment server, read - ``docs/howto/deployment/index.txt`` for instructions. - -* You'll probably want to read through the topical guides (in ``docs/topics``) - next; from there you can jump to the HOWTOs (in ``docs/howto``) for specific - problems, and check out the reference (``docs/ref``) for gory details. - -* See ``docs/README`` for instructions on building an HTML version of the docs. - -Docs are updated rigorously. If you find any problems in the docs, or think -they should be clarified in any way, please take 30 seconds to fill out a -ticket here: https://code.djangoproject.com/newticket - -To get more help: - -* Join the ``#django`` channel on irc.freenode.net. Lots of helpful people hang out - there. Read the archives at https://botbot.me/freenode/django/. - -* Join the django-users mailing list, or read the archives, at - https://groups.google.com/group/django-users. - -To contribute to Django: - -* Check out https://docs.djangoproject.com/en/dev/internals/contributing/ for - information about getting involved. - -To run Django's test suite: - -* Follow the instructions in the "Unit tests" section of - ``docs/internals/contributing/writing-code/unit-tests.txt``, published online at - https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests - - diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/metadata.json b/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/metadata.json deleted file mode 100644 index 2bd9b8d..0000000 --- a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules"], "description_content_type": "UNKNOWN", "extensions": {"python.commands": {"wrap_console": {"django-admin": "django.core.management:execute_from_command_line"}}, "python.details": {"contacts": [{"email": "foundation@djangoproject.com", "name": "Django Software Foundation", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "https://www.djangoproject.com/"}}, "python.exports": {"console_scripts": {"django-admin": "django.core.management:execute_from_command_line"}}}, "extras": ["argon2", "bcrypt"], "generator": "bdist_wheel (0.30.0)", "license": "BSD", "metadata_version": "2.0", "name": "Django", "project_url": "Documentation, https://docs.djangoproject.com/", "requires_python": ">=3.4", "run_requires": [{"extra": "argon2", "requires": ["argon2-cffi (>=16.1.0)"]}, {"extra": "bcrypt", "requires": ["bcrypt"]}, {"requires": ["pytz"]}], "summary": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.", "version": "2.0.6"} \ No newline at end of file diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/INSTALLER b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/INSTALLER similarity index 100% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/INSTALLER rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/INSTALLER diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/LICENSE.txt b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/LICENSE.txt similarity index 100% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/LICENSE.txt rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/LICENSE.txt diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/METADATA b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/METADATA similarity index 93% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/METADATA rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/METADATA index 2d9fce1..0f65ea1 100644 --- a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/METADATA +++ b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/METADATA @@ -1,6 +1,6 @@ -Metadata-Version: 2.0 +Metadata-Version: 2.1 Name: Django -Version: 2.0.6 +Version: 2.1 Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design. Home-page: https://www.djangoproject.com/ Author: Django Software Foundation @@ -10,7 +10,6 @@ Project-URL: Documentation, https://docs.djangoproject.com/ Project-URL: Funding, https://www.djangoproject.com/fundraising/ Project-URL: Source, https://github.com/django/django Project-URL: Tracker, https://code.djangoproject.com/ -Description-Content-Type: UNKNOWN Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment @@ -20,16 +19,18 @@ Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content Classifier: Topic :: Internet :: WWW/HTTP :: WSGI Classifier: Topic :: Software Development :: Libraries :: Application Frameworks Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=3.4 +Requires-Python: >=3.5 +Provides-Extra: argon2 +Provides-Extra: bcrypt Requires-Dist: pytz Provides-Extra: argon2 Requires-Dist: argon2-cffi (>=16.1.0); extra == 'argon2' @@ -64,7 +65,8 @@ ticket here: https://code.djangoproject.com/newticket To get more help: * Join the ``#django`` channel on irc.freenode.net. Lots of helpful people hang out - there. Read the archives at https://botbot.me/freenode/django/. + there. Read the archives at https://botbot.me/freenode/django/. See + https://en.wikipedia.org/wiki/Wikipedia:IRC/Tutorial if you're new to IRC. * Join the django-users mailing list, or read the archives, at https://groups.google.com/group/django-users. diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/RECORD b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/RECORD similarity index 82% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/RECORD rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/RECORD index d0923a7..bc02537 100644 --- a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/RECORD +++ b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/RECORD @@ -1,21 +1,19 @@ ../../../bin/django-admin.py,sha256=OOv0QKYqhDD2O4X3HQx3gFFQ-CC7hSLnWuzZnQXeiiA,115 -Django-2.0.6.dist-info/DESCRIPTION.rst,sha256=NuT5TeUtyz-nHLVm7XKxzTHE7a4pr2mUagKOwr2Y39c,1856 -Django-2.0.6.dist-info/LICENSE.txt,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552 -Django-2.0.6.dist-info/METADATA,sha256=d0FbE-K1tZ0ACGH9SNcL3FDrVzC-0GsK2fXaO4hyqKc,3495 -Django-2.0.6.dist-info/RECORD,, -Django-2.0.6.dist-info/WHEEL,sha256=8Lm45v9gcYRm70DrgFGVe4WsUtUMi1_0Tso1hqPGMjA,92 -Django-2.0.6.dist-info/entry_points.txt,sha256=daYW_s0r8Z5eiRi_bNU6vodHqVUXQWzm-DHFOQHTV2Q,83 -Django-2.0.6.dist-info/metadata.json,sha256=8WPyvSjB0-G4AepSx6HCTi7xIH_c6SQM6CYcfXSZ7sU,1789 -Django-2.0.6.dist-info/top_level.txt,sha256=V_goijg9tfO20ox_7os6CcnPvmBavbxu46LpJiNLwjA,7 -django/__init__.py,sha256=st-FmvEsU-DJ-114qWA76p7z1Wsi0Suowmc4h5Q11NU,799 +Django-2.1.dist-info/LICENSE.txt,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552 +Django-2.1.dist-info/METADATA,sha256=zCFRO2T3RUVshBb8Xea56ZJJ2okC685Hm6vyqvyyMaQ,3586 +Django-2.1.dist-info/RECORD,, +Django-2.1.dist-info/WHEEL,sha256=NzFAKnL7g-U64xnS1s5e3mJnxKpOTeOtlXdFwS9yNXI,92 +Django-2.1.dist-info/entry_points.txt,sha256=daYW_s0r8Z5eiRi_bNU6vodHqVUXQWzm-DHFOQHTV2Q,83 +Django-2.1.dist-info/top_level.txt,sha256=V_goijg9tfO20ox_7os6CcnPvmBavbxu46LpJiNLwjA,7 +django/__init__.py,sha256=N1ZnquwnyyeLBx5h2B3BRvzcZwHX8ulLUWKQTFEt3kk,799 django/__main__.py,sha256=9a5To1vQXqf2Jg_eh8nLvIc0GXmDjEXv4jE1QZEqBFk,211 -django/shortcuts.py,sha256=QJjkaXsj7FAt81SNxwee9mv4FmIFJtWx4Zi5B_9AbgQ,5577 +django/shortcuts.py,sha256=MA8fTTdbsz58DZV7_aD7ateNi9H_dYwobxHMAevyf94,5588 django/apps/__init__.py,sha256=t0F4yceU4SbybMeWBvpuE6RsGaENmQCVbNSdSuXiEMs,90 django/apps/config.py,sha256=meyWjXLt0qgPfqM14KGaWsZakbga-wuHXsu2gkHyQ-s,8047 -django/apps/registry.py,sha256=rvRxqCTbLRjxxqPcV5Sm2D5D7rmtFyzuDbBEKU4z5xk,17220 +django/apps/registry.py,sha256=Wy9qpGecWZFSf38hnekcdIoh3QNl2WUw2IHDkF-ysGY,17470 django/bin/django-admin.py,sha256=FWxg_nmLPNGqXwSMw0QvZsKNQsiVBHrSsNfgALIXqQ0,128 -django/conf/__init__.py,sha256=mFe5TxmoKTgqXEDRjqLOhwBQPz-TNEjQQakBcpVzkbY,7437 -django/conf/global_settings.py,sha256=QMugwAHe6GGHqpxV9M8eKhn_iLlRSnpymfIsYhc3zgw,22040 +django/conf/__init__.py,sha256=B6lGrTxbKIzI7v8Fo3DEtfcg3N6cbuO5BePtuOodJfI,7469 +django/conf/global_settings.py,sha256=H2oEivtGk5k2-yaWRlQfN3F9xMpXVoRPUThEGOXPlWc,21949 django/conf/app_template/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/app_template/admin.py-tpl,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63 django/conf/app_template/apps.py-tpl,sha256=lZ1k1B3K5ntPWSn-CSd0cvDuijeoQE43wztE0tXyeMQ,114 @@ -34,8 +32,8 @@ django/conf/locale/ast/LC_MESSAGES/django.mo,sha256=kmN-K4eQG_EvU565NnThO5qSkfcI django/conf/locale/ast/LC_MESSAGES/django.po,sha256=WnsaXWzvgTohaW7h5L6H5FG7QM8y5FifzB3GaahFLQY,23619 django/conf/locale/az/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/az/formats.py,sha256=qAxKv_-_ubsfH4qdtvvgCqDirBh9TnuemaLzdC5D5-s,1189 -django/conf/locale/az/LC_MESSAGES/django.mo,sha256=FrJmdBMwFu2tX12djk8B_QfPQKwwL7Zkyx-K6Ua-6RA,19457 -django/conf/locale/az/LC_MESSAGES/django.po,sha256=ZyqOTC22KTFhIKGWXqBtxExu8cMA-x8Ir34Oph3R_hw,24955 +django/conf/locale/az/LC_MESSAGES/django.mo,sha256=qgKIvWOsZgrws_y5_LeQ6lBrpg34xjfKWba8kgnpvuA,26359 +django/conf/locale/az/LC_MESSAGES/django.po,sha256=064CQ_GY3I6QV3PIfDc27Puo9-dQatwcFGI1QEw5Ky0,28395 django/conf/locale/be/LC_MESSAGES/django.mo,sha256=E-Qz-U_GunEhxGnOSbb93aKkY2-QWJkd5OwjYTgiiI4,34765 django/conf/locale/be/LC_MESSAGES/django.po,sha256=sHrLo3kO2dzfmlV743CH9KELtgRbXroQg-qcnJgAa_c,37039 django/conf/locale/bg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 @@ -58,24 +56,24 @@ django/conf/locale/ca/LC_MESSAGES/django.mo,sha256=h7GJelxKdhaHwVo7tsVhBfnkOOiN6 django/conf/locale/ca/LC_MESSAGES/django.po,sha256=343ow5vc51Tlljd1wuJGJyDT2M1eKBsKUWAnCOVW47g,26986 django/conf/locale/cs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/cs/formats.py,sha256=tlbaEQ994P6Bj-UliXagMW4Yu1D_neGspDOaQLL5HlU,1635 -django/conf/locale/cs/LC_MESSAGES/django.mo,sha256=_tyVOKWllAydQdoAGGskfz44moFiDwAtSKYgMC0M44c,27244 -django/conf/locale/cs/LC_MESSAGES/django.po,sha256=leS_OtX7EDSbzkCpr_knAq2X9qv4BZ8XvunUVY0mXSE,29431 +django/conf/locale/cs/LC_MESSAGES/django.mo,sha256=a1wHc5-JaZhKKJYHTwxdquLSYRFzDTprP7fFYCopxK4,28203 +django/conf/locale/cs/LC_MESSAGES/django.po,sha256=ZgT2rDSQdzS7cHBFQRCnEdcvU1eYj_Ql1VnEg5FeUPI,30632 django/conf/locale/cy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/cy/formats.py,sha256=WKp8F3IiISrgxXItSpIB1c0a8xFY8CsEzqXMQRYbsPQ,1755 django/conf/locale/cy/LC_MESSAGES/django.mo,sha256=CJL04VXl3vjRWff93fzWDLeEJPw_Il7G5YzjCHdZZok,22280 django/conf/locale/cy/LC_MESSAGES/django.po,sha256=C14r9gUOnCV5fNb4YZ-NN-fnLlZl1xHBP3H0tu-LgRk,27045 django/conf/locale/da/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/da/formats.py,sha256=YQaL8Y3H0AOPvJzxwiDXwtqrbY0EyHNGtfMu4BGha0Y,939 -django/conf/locale/da/LC_MESSAGES/django.mo,sha256=TmTYD1aOV7PmaGrUIbIwjeqqrQgQNjKedS3NxpqRC2U,25678 -django/conf/locale/da/LC_MESSAGES/django.po,sha256=QaQqyb-gpl6QMcPn8rtD8iYI5JyTis8JG9W_K9KyfOU,27723 +django/conf/locale/da/LC_MESSAGES/django.mo,sha256=MXX8re-4Luse-QeCJXSLmcmXD7wCM4sSceqW5fc9lS8,25950 +django/conf/locale/da/LC_MESSAGES/django.po,sha256=KeD60dPA_wXlTHI9QDiBDDSlfaKzL_zgSgGtbq8Hyrw,28039 django/conf/locale/de/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/de/formats.py,sha256=yPGP3kCbQCU0VY3P-Kuxx2yl7eWFMsMtGu5xzDdr6jo,1033 -django/conf/locale/de/LC_MESSAGES/django.mo,sha256=b6y542k7Nq5UxezQr9fZzciSW4s46wYqTwL7B-suGgg,27098 -django/conf/locale/de/LC_MESSAGES/django.po,sha256=2QIe6vGtkh8a-L0nY_sL_wO_nBJ8-MgEuylz0hPPpfs,29126 +django/conf/locale/de/LC_MESSAGES/django.mo,sha256=1RE6CWFy2UhRLh-cbYaonePyLk0Y1izQMTcxljtLP8Q,27131 +django/conf/locale/de/LC_MESSAGES/django.po,sha256=ra5FD3L3gyj9Jrc605Qd-xJTP3SHmxXJN7tbk5PdlZU,29417 django/conf/locale/de_CH/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/de_CH/formats.py,sha256=a6uQQxZrtRAd_8GesmMEjWa-quvjBq3gJ5Ka17sy1yM,1377 -django/conf/locale/dsb/LC_MESSAGES/django.mo,sha256=raMTVS7gVWyNPMl3w-nkNpJ7T6IYIhTiS7ynxGhyiLY,28398 -django/conf/locale/dsb/LC_MESSAGES/django.po,sha256=q0riWNA5IQxizAtGahGHeTl6SUwweOCGD8EXyLaHM_8,30587 +django/conf/locale/dsb/LC_MESSAGES/django.mo,sha256=a8aOMeBAiDKD28th2H1UeXNsZW9dBwy-jczy7S7sxkM,28658 +django/conf/locale/dsb/LC_MESSAGES/django.po,sha256=XTFOpSoSdVO0qSOTQ2T3bgfpSowQ_t7gOglfl3S1W54,30891 django/conf/locale/el/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/el/formats.py,sha256=0WF_ISbYSN0NtPuOk1sFsYITCPb3IG2jEaAxVSXLaqU,1385 django/conf/locale/el/LC_MESSAGES/django.mo,sha256=qjPNmi81vdMnfgpvNVjv6QI2CslBIlMq9dKKaT17D3k,32036 @@ -83,7 +81,7 @@ django/conf/locale/el/LC_MESSAGES/django.po,sha256=AiuSDxNIfaeItrzgk46v88hfwdEqb django/conf/locale/en/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/en/formats.py,sha256=HImytl2xU0ui_bdhmp6GZWLqfHIRf_1iidtajlfgh7g,1748 django/conf/locale/en/LC_MESSAGES/django.mo,sha256=mVpSj1AoAdDdW3zPZIg5ZDsDbkSUQUMACg_BbWHGFig,356 -django/conf/locale/en/LC_MESSAGES/django.po,sha256=WROjQo_CcfZJGOtsH-Ep0CTxXdMWYrzNhD9IXMcoa30,28066 +django/conf/locale/en/LC_MESSAGES/django.po,sha256=5CvSHAp3eXOJbPSqRgUf9hsHext2mOT4HykywLqvEhs,28372 django/conf/locale/en_AU/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/en_AU/formats.py,sha256=TnVSM6iUeAMqyfDNLnjGKwBiziVA7gwvokERm549Zzw,2050 django/conf/locale/en_AU/LC_MESSAGES/django.mo,sha256=vx8-wkZxPq-WseGghwXuLAK5MdDsRScKnrgBATVarwc,16288 @@ -94,22 +92,22 @@ django/conf/locale/en_GB/LC_MESSAGES/django.mo,sha256=whAV7H3YTMcdt-gFyKY5naykTa django/conf/locale/en_GB/LC_MESSAGES/django.po,sha256=vpqOmBh0ccf7P5-lcwFgxUhCJw35BWi39aALjmEa5nY,22060 django/conf/locale/eo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/eo/formats.py,sha256=rNeBMpv6p-eJSzdZvTyGuDDDIm3xY7FKsEpeyFZ05p0,2268 -django/conf/locale/eo/LC_MESSAGES/django.mo,sha256=Cny_cw42oJGl_piAIKptaEwark0ExSpRp0ILqgpxYvg,23484 -django/conf/locale/eo/LC_MESSAGES/django.po,sha256=ZhItCrUGbrSYmHYwcnbvcRPo6-BgqupFvRpPhXFEa9s,26780 +django/conf/locale/eo/LC_MESSAGES/django.mo,sha256=ZXtLDzsZue742yLN-FUW4-eQeSqSpzHykT5ktbXPIK4,25987 +django/conf/locale/eo/LC_MESSAGES/django.po,sha256=y2xBy27_lKHWCH4EkKw_aXo-UYPyfbAnFW6jce8Ah30,28117 django/conf/locale/es/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/es/formats.py,sha256=xks_4TjYTSGyz9cIYaE8OM3wbueP3ooM2QTsqNPOMF8,947 django/conf/locale/es/LC_MESSAGES/django.mo,sha256=6Ky02Z4XSO36xG1qVcJ1e8Pi44EM6xGGbkzoOyozzS8,26351 django/conf/locale/es/LC_MESSAGES/django.po,sha256=aNH_N2BZmk8ysiPgD_AQcPPoZ7npDsbiFVPITX8UDfg,29080 django/conf/locale/es_AR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/es_AR/formats.py,sha256=vhHFN4lkzOQARRXhgt5s8M7ITTLZMMLVwbjby-Y_UEk,933 -django/conf/locale/es_AR/LC_MESSAGES/django.mo,sha256=PnnKHPCCvrZ8A0jppS_AqMECxrAosQgjb58M0qY6-BI,26824 -django/conf/locale/es_AR/LC_MESSAGES/django.po,sha256=5_DV6HciuleRIhUUbVVh6Y94hQOZO2sCkxd7eNXpDo4,28730 +django/conf/locale/es_AR/LC_MESSAGES/django.mo,sha256=ciEXInlEYqONclof_HUW06Mgp77or7nCIa5hvtVezdw,27102 +django/conf/locale/es_AR/LC_MESSAGES/django.po,sha256=ev7Oj1UkvLUzkPCOpY3cfZvjzBwJAfZMzTBY_O6NxVs,29052 django/conf/locale/es_CO/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/es_CO/formats.py,sha256=kvTsKSaK7oDWK6a-SeO3V3e__64SjtDBMWoq0ouVDJ4,700 django/conf/locale/es_CO/LC_MESSAGES/django.mo,sha256=bXSa4kJtVu9xeQOFgP7RTfirJgEynWk4R32KSKjEezM,22791 django/conf/locale/es_CO/LC_MESSAGES/django.po,sha256=8X_pdt0Amtvbw3AZUE_fKMy20ItYR-zS1caqnHxKjIE,26533 django/conf/locale/es_MX/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_MX/formats.py,sha256=vrMMOSU8lh48jeVc1y69jdgSSI-AFLXp5-UbmH7zT0w,824 +django/conf/locale/es_MX/formats.py,sha256=tny9CPrJJV5qRJ_myuiQ8fMfg3fnNtv3q6aOSxLdK0E,799 django/conf/locale/es_MX/LC_MESSAGES/django.mo,sha256=0WYdCPgyC0XpF8to_bbyw__IRA5LGj8izt8DoCH1m6I,15095 django/conf/locale/es_MX/LC_MESSAGES/django.po,sha256=rwJvZGP-6uQX1bvQSW4pVE4y4dfriVZOCfkWRzC9QBI,23042 django/conf/locale/es_NI/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 @@ -128,16 +126,16 @@ django/conf/locale/eu/LC_MESSAGES/django.mo,sha256=bH7DIgqi-tCWvWs2z7KyFxsndRFHR django/conf/locale/eu/LC_MESSAGES/django.po,sha256=UbhLFHjW-nFTQjXdzD8G6EzSTZfeWtRVBX4LlEQ9fKc,28134 django/conf/locale/fa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/fa/formats.py,sha256=sZyCeIQAo6HCtKr5t6W6y8Ll_Y5Yh0zXuy9qz5CaUz8,720 -django/conf/locale/fa/LC_MESSAGES/django.mo,sha256=q4Eww63ggp2Zj0Ski_GCnnURIUu9_Y6EofPfpw6lDM8,26023 -django/conf/locale/fa/LC_MESSAGES/django.po,sha256=BU_qdBlidEoBDUJRoBgzO85HF90s5ehfWLgJEpwC1Pc,29571 +django/conf/locale/fa/LC_MESSAGES/django.mo,sha256=AHXeAiBQZHQlqt7EyZ5HN9zCQYBQdcIWN0kyo9w9IX4,28049 +django/conf/locale/fa/LC_MESSAGES/django.po,sha256=i7V164NzbBtFajSXWgixvYRsL1zcHldY0jcV2ENfz2E,31463 django/conf/locale/fi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/fi/formats.py,sha256=bZW36V91AaMAp_xJURr2FWfEFGUnts7MBE3euHF8De0,1323 -django/conf/locale/fi/LC_MESSAGES/django.mo,sha256=5b6NAxHFOuETT9c5_XoLhy-q4bgubXo1HLpY_rYZ-08,23713 -django/conf/locale/fi/LC_MESSAGES/django.po,sha256=hdp0Z724jce_5FPmczkqnZ7mBVSt9Efaa8ldEfynNOs,27016 +django/conf/locale/fi/LC_MESSAGES/django.mo,sha256=bZYDwGGF7NHVu5-9POxWNjniTHKxHUdNQPgsQy6XZd0,25600 +django/conf/locale/fi/LC_MESSAGES/django.po,sha256=VzG-5J_WM6iZTUEYt8Os2bxIfgFunaRebtg6B8keT0M,28098 django/conf/locale/fr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/fr/formats.py,sha256=S3BK2FbOdZdUUsPp8IHMb4GpDm_ctIIE1z4ZX3L7F1I,1387 -django/conf/locale/fr/LC_MESSAGES/django.mo,sha256=x_IT_zrxvWvvPvii4RI21VR-GqUodZRKad00NnOhOKw,27235 -django/conf/locale/fr/LC_MESSAGES/django.po,sha256=AI2wbCH2n1HKqnD5x4I1YBQqCoGTZQRG4MtZ8o-YSD8,29318 +django/conf/locale/fr/LC_MESSAGES/django.mo,sha256=jpNS0EhjAy6qJvLVfC_tK8yPZn9yGdfOoQ7gIyDJzJw,27558 +django/conf/locale/fr/LC_MESSAGES/django.po,sha256=29jN8nCqYmF6NbV78rJbpp357YLktwAqSPMAOLxdQAQ,29690 django/conf/locale/fy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/fy/formats.py,sha256=-wHp-HFUatmTEgGiQ7ekCMFMB8jpAQD4UC4mmhjRTL8,656 django/conf/locale/fy/LC_MESSAGES/django.mo,sha256=N13eBeS5pewXpx3yIAwiqB8ISjw-J2ku99dncOnz_lY,2525 @@ -148,8 +146,8 @@ django/conf/locale/ga/LC_MESSAGES/django.mo,sha256=Iw1dcW6tAoIFBgjFAWyfXH7lXz__f django/conf/locale/ga/LC_MESSAGES/django.po,sha256=Adp1JYadvckm_A4nlXZGM-hPAz_8bcdNw08BlEQNorQ,24000 django/conf/locale/gd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/gd/formats.py,sha256=4H_tXzwJIVIn9uxvszCWP9clNzY1dtCA9NC42JhvnBs,713 -django/conf/locale/gd/LC_MESSAGES/django.mo,sha256=CZ8l9P68RnGriRwFwq9zYZKAtomBej5OPw2hxSvMe9A,29409 -django/conf/locale/gd/LC_MESSAGES/django.po,sha256=V_jU770O0WkLt0eTOhlamk6seUSrVF5m2dnmN9o2NNs,31733 +django/conf/locale/gd/LC_MESSAGES/django.mo,sha256=6smT7_jkJK2oQTbvfi-crzN6nD5mX6LAlDduSUOd75A,29716 +django/conf/locale/gd/LC_MESSAGES/django.po,sha256=Y9d4Ry4CqmzIBgqrdAf3aoCVs6MuJxzEilxRROTsiYU,32089 django/conf/locale/gl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/gl/formats.py,sha256=BIDA50C9zjxUG7c-yFrdhxs0ROEP9OtJGCmCJDVtMbQ,755 django/conf/locale/gl/LC_MESSAGES/django.mo,sha256=sNVgEfEr_q6kth4MHJvBOZ34H-LkrkiFfjBsfmKA9fc,15342 @@ -166,32 +164,32 @@ django/conf/locale/hr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h django/conf/locale/hr/formats.py,sha256=VYQw5JpFK4GKOB9LhVcUSLprU7_66QP1JBu2XWss4L0,2039 django/conf/locale/hr/LC_MESSAGES/django.mo,sha256=Y5qAfjbubIQDJIbkJzw7tfzUsuIlEYUlsvGfvEYiFP8,24409 django/conf/locale/hr/LC_MESSAGES/django.po,sha256=iOHjAFvvu8OiBeh2IukSFXEkL-Uqr_dDEKKCAlvGtjo,28207 -django/conf/locale/hsb/LC_MESSAGES/django.mo,sha256=AB79njTDjO3ToclPozUN8j9bzzzuLF0Q99L_a6sIKfE,28149 -django/conf/locale/hsb/LC_MESSAGES/django.po,sha256=Hpt_bUavtGZtvNaJRcXllPNn7F011YjcRBzimr9Bm0s,30317 +django/conf/locale/hsb/LC_MESSAGES/django.mo,sha256=YZje1fqTOsgpBDmrGNPykntPniRt96-w4ResIi7yENI,28410 +django/conf/locale/hsb/LC_MESSAGES/django.po,sha256=-49l6dFHtSYlj2U8oJFe2vsxEYM9UmzDwqpE1rxgFyI,30622 django/conf/locale/hu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hu/formats.py,sha256=WSlkhX-1FPj0NuP_a_XmlCADrJZIRZ-xGmDhJ7M5O8w,1050 -django/conf/locale/hu/LC_MESSAGES/django.mo,sha256=b_P30VSZRI-9QTc8AqTk6qucg_axzcLHGebh3sFTwFU,26971 -django/conf/locale/hu/LC_MESSAGES/django.po,sha256=TUAoYIGuZlX45dkxIu-Yo-drlhn0otTLwN7WQvIfgfo,29023 +django/conf/locale/hu/formats.py,sha256=EP88XNWKZmuu94IPM_M_4vGK_E7AroAp4Tug7WEAV-k,1050 +django/conf/locale/hu/LC_MESSAGES/django.mo,sha256=95ZHZfPbsNNW0cx03YbPeNonIKfuyk7gikr97guOyJ8,27289 +django/conf/locale/hu/LC_MESSAGES/django.po,sha256=BW3mUi6smu9J9D0js_0d24XG4bmxsT-Es6mm2q8jy8s,29437 django/conf/locale/ia/LC_MESSAGES/django.mo,sha256=uctHDWY1qKSlNlcdaEGswjWkPYy3BDJawUbAfEddk4Y,23125 django/conf/locale/ia/LC_MESSAGES/django.po,sha256=ckopqh_kKLtaJC9upyGY4hh9NSkF-iHsZOm9sur4-A4,26641 django/conf/locale/id/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/id/formats.py,sha256=uwSpqmGF6Pyy3cnYEgyNH5m6ttoXNC_pofpbjqoAO_I,2068 -django/conf/locale/id/LC_MESSAGES/django.mo,sha256=LquE-13wxeTtSB_dlrw1yS_ISIRVgPs8Hc4jCiO6f64,25570 -django/conf/locale/id/LC_MESSAGES/django.po,sha256=ZYz5TdaWOlRz2ATG0I0hiL0OBVESgYCqIQSYBK1vJ_M,27495 +django/conf/locale/id/LC_MESSAGES/django.mo,sha256=J_mRvhqhpInzAdT9Gc5MgBzZLyfwIFzZvm9c2f_lIgU,25821 +django/conf/locale/id/LC_MESSAGES/django.po,sha256=w1JA3InkyVSaGdaDHK-UKLtDA79e-Z0sCN36p2O292g,27790 django/conf/locale/io/LC_MESSAGES/django.mo,sha256=1PUSoRgjcrjc8OHIvkjAAh0xtSkSaafGZuO6SYkx5CY,14965 django/conf/locale/io/LC_MESSAGES/django.po,sha256=aURK_SeTtqM8ko_kI_AM5jWyqKAb1iuqNvOKQ1GQ0SE,22892 django/conf/locale/is/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/is/formats.py,sha256=-OxThHQAWwCVrfVLDAkstCQUfaAHpbJhRPQlqZO_wGo,686 -django/conf/locale/is/LC_MESSAGES/django.mo,sha256=AvZcNA6n03-Rmw-EfkKGyhoOVvL3gankv6ejIp36-x8,24147 -django/conf/locale/is/LC_MESSAGES/django.po,sha256=kCl05ojMd_bNrU8pY-c-MynWqwvAX1EGjaHZ3_KXtlg,27444 +django/conf/locale/is/LC_MESSAGES/django.mo,sha256=WfIyHRukYAZE9PpWO_GERy5SFJJhBC8OorC0LswKeSs,24432 +django/conf/locale/is/LC_MESSAGES/django.po,sha256=ngP1mv25CJ29S7Mhx8EX7XANww71Ay-peyfQa1Pfs-U,27814 django/conf/locale/it/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/it/formats.py,sha256=coYr_ErN7oALN5ciqpRQcnb-xr3DFxjFpUSvaaoRhS8,2012 -django/conf/locale/it/LC_MESSAGES/django.mo,sha256=bxZBTLEDM9eaLX0rWzkFZNxpjbj14JH5ffm-SpYBPnA,26205 -django/conf/locale/it/LC_MESSAGES/django.po,sha256=9tNPsF-8oMThT1PHqUWloj6jVtXoDlCdQqsQnKHpGjc,28559 +django/conf/locale/it/LC_MESSAGES/django.mo,sha256=pj0tQeeDpyaZj2WnfnYj1kpf0MMgkfWY-oRkWCJjELE,26508 +django/conf/locale/it/LC_MESSAGES/django.po,sha256=ot0D2i1gIb17rtgNG4YBps-5hstTorFEPGdje2A8lOo,28999 django/conf/locale/ja/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/ja/formats.py,sha256=O84swETmvV3yxAifRl5iTADyg-ivY5rcXvtQz2B4rrI,727 -django/conf/locale/ja/LC_MESSAGES/django.mo,sha256=T-oPAFQxOIHVwFKexDJCjxd1FFY7og9xm6a5miD-c9I,28695 -django/conf/locale/ja/LC_MESSAGES/django.po,sha256=6u1bLwRfprLajk4Nlj_Me-7chvJH00YjfVHEoN2JqLE,30478 +django/conf/locale/ja/LC_MESSAGES/django.mo,sha256=UmE-yWFuBgvZLFabyOKrHFaRJcROXZq0QZ-3Zoy_pa4,28999 +django/conf/locale/ja/LC_MESSAGES/django.po,sha256=_ZMLkBHDxEMaFTTf-W-0IaA1BVBSY6SSxn6w1gWfiDk,30826 django/conf/locale/ka/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/ka/formats.py,sha256=dxWVYJ3XpryXgl8Kzp1he0AbIMNtvJStaGmmdFJim-E,2113 django/conf/locale/ka/LC_MESSAGES/django.mo,sha256=QaAqOu78WJU2RBnimMvT12_PkmNccLd4uqAGGrvRHnc,24781 @@ -210,18 +208,18 @@ django/conf/locale/kn/LC_MESSAGES/django.mo,sha256=Q0Wq7NKSYt5JqDWuV3gi4EPtqe-p3 django/conf/locale/kn/LC_MESSAGES/django.po,sha256=unXArg6NUEnyrEP8TYdeVK8CBtFzPJkianlfPgmzUzE,28177 django/conf/locale/ko/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/ko/formats.py,sha256=5-5Ht40mgk0covYgNoqZNi0yX1ldjC5VIGsZLb6CF9E,2253 -django/conf/locale/ko/LC_MESSAGES/django.mo,sha256=9E2l0RcKrs_ZaDEWDsv_xmzInDNqcTJ_-siiZ1zMVNc,27093 -django/conf/locale/ko/LC_MESSAGES/django.po,sha256=R3v5em2G224D6MWLdYf8EoNnapXOsEb9FBPPzWTJikY,29166 +django/conf/locale/ko/LC_MESSAGES/django.mo,sha256=DP4ZJcTdVmWz2nq2FMcpiPHgi-pKW5Pyi9VqzC0Es7o,27371 +django/conf/locale/ko/LC_MESSAGES/django.po,sha256=b3LIremps3MYWkBgfy1YpNNdi6IaXcrWBfkPUhIlpfg,29522 django/conf/locale/lb/LC_MESSAGES/django.mo,sha256=3JKBA-zIROxVEJFv8eoUKrVoRFjbY9bBk16jQF7Wp3s,8069 django/conf/locale/lb/LC_MESSAGES/django.po,sha256=v1_uBQpRI8fT88whqpah66AmaJG_uIX65_sRZEN2LPg,20131 django/conf/locale/lt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/lt/formats.py,sha256=ZLmKWFgKwrHeDeTO6fPyRLjgxkU3QCK3f0LxnYhLvqg,1763 -django/conf/locale/lt/LC_MESSAGES/django.mo,sha256=V3qoIhgP8Sj1aPGvEP-D0lwMi8OF42PIirx7zePsOOU,27423 -django/conf/locale/lt/LC_MESSAGES/django.po,sha256=zh4hyHuZOKDDZTMn9vx2EOPF_o0McIGhuYPc5uK6RIQ,29764 +django/conf/locale/lt/LC_MESSAGES/django.mo,sha256=vt9ywzFZA3qpW27RQX4RNzGOfLEYMc4SIokLzcygXMU,28474 +django/conf/locale/lt/LC_MESSAGES/django.po,sha256=Zyne10AK1a7lVzFrzlThc0f3MCnof4yWa3ad1rvuUwo,31063 django/conf/locale/lv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/lv/formats.py,sha256=Q42-XZ5aWtfoKhKuf07148Ir6-UrjaWNNeA8erBtlCE,1839 -django/conf/locale/lv/LC_MESSAGES/django.mo,sha256=o2J-ee00K12HBrTBAyn5CR2ImNc80IDNcDYntCsn5FI,27053 -django/conf/locale/lv/LC_MESSAGES/django.po,sha256=jruwNoz7JtEopvE85vskQTpOIK7hyIUZwyWZPQ7itLA,29309 +django/conf/locale/lv/LC_MESSAGES/django.mo,sha256=42wFu858fZrXiAfEZeP7KLhy_oE7oS2o7z3clp0_HLk,27341 +django/conf/locale/lv/LC_MESSAGES/django.po,sha256=YtT0Quf6eo6x8kaqmENN-gj0jMP4ELHqu92fE_04z1w,29692 django/conf/locale/mk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/mk/formats.py,sha256=DJVFqbqW7dq6GPzh_MSRQvQAicBtVUwRHX8RSLgqpFg,1675 django/conf/locale/mk/LC_MESSAGES/django.mo,sha256=GqcYWwCPmQZeBa9sxroK0LQYqlpwE9CPc088bpmv2Kg,29431 @@ -232,18 +230,18 @@ django/conf/locale/ml/LC_MESSAGES/django.mo,sha256=UcQSpkAl4anGotopGvF5ddOhz0Jln django/conf/locale/ml/LC_MESSAGES/django.po,sha256=aQeFRGiFB7vke7NuGuO7rZ2GuL94rZ_tqpfY-_U38a8,33211 django/conf/locale/mn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/mn/formats.py,sha256=EbTyiGTOXJdZxUwleItvk_CwK5MMl9R0pGniEUL-7HY,674 -django/conf/locale/mn/LC_MESSAGES/django.mo,sha256=bFbhqo-Lte1fQ3iGwZEv0qkUWtOBSwoHS7lC1rvyBAE,28307 -django/conf/locale/mn/LC_MESSAGES/django.po,sha256=6USi6rWqq6JwpZeLfaZqx9XqunL6oVuD7KOrHDSvPAU,31516 +django/conf/locale/mn/LC_MESSAGES/django.mo,sha256=qFWZ8GctVnj_NsCrxKJ4bMYvf_QzHGZ02gq72m34oGo,29053 +django/conf/locale/mn/LC_MESSAGES/django.po,sha256=iw7SMrWcn6MMx4eGxBL4DMKNpwClq-3XEFBxhAOiiNg,32124 django/conf/locale/mr/LC_MESSAGES/django.mo,sha256=Jy_VbHVKhgNj9MSmdLv3ouVYXYjJ_JFTn8_zmYoYcyg,1652 django/conf/locale/mr/LC_MESSAGES/django.po,sha256=yyPm1I1uqXG8VkS6yTrwECvi6p07RRep5h9iXx_v7eQ,18910 django/conf/locale/my/LC_MESSAGES/django.mo,sha256=5pYLrTOipARNLlpG5dp0VZYJUQNqdt0vK2blo1x6keg,2650 django/conf/locale/my/LC_MESSAGES/django.po,sha256=IVACCaTwYgAANqlcrthvSLFK9zvlOLhJTFRWCRBm11U,19193 django/conf/locale/nb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/nb/formats.py,sha256=y7XWPhuOv7QkDBvx4qkwehmqRpqwLzn75FWn-25mvcc,1699 -django/conf/locale/nb/LC_MESSAGES/django.mo,sha256=49Oyc61QoCTz-VU5mH5ifESqWtLI39edLfvh_9nlFyU,25567 -django/conf/locale/nb/LC_MESSAGES/django.po,sha256=Fx88KqyJjJOdDlv0zEvj8bhDN9OQScnQfpOVl4QK5UE,27704 -django/conf/locale/ne/LC_MESSAGES/django.mo,sha256=cQ335J_BiC02DNE3nbNHeVJJ9_gfi_zjx9YYu3TCCgM,28709 -django/conf/locale/ne/LC_MESSAGES/django.po,sha256=z3C0JHerC0EaV8Z96LmCZ2HcKpTzIpTus8hJwGxMGuI,33321 +django/conf/locale/nb/LC_MESSAGES/django.mo,sha256=t1hwjC-lQCwiXqGx2GPt24GhSPjgPM926oL9_nROpfI,25864 +django/conf/locale/nb/LC_MESSAGES/django.po,sha256=KMEemFfTGYZNDUhMkTImffL6_jSVE1gEFbcpbTtClSc,28052 +django/conf/locale/ne/LC_MESSAGES/django.mo,sha256=Mefu6vqxKyh9UvJ2M3aBHoAMa01TfDkjX4cdH0LZw5s,29534 +django/conf/locale/ne/LC_MESSAGES/django.po,sha256=Nidb1o65Z_L0RN5CJIH13qi1VUH6OjQtSE1exAaVTvo,33968 django/conf/locale/nl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/nl/formats.py,sha256=zpsypiDhFuZzGidyQYWPoeMwrL4cEsGqdZGTu4BdaAs,4405 django/conf/locale/nl/LC_MESSAGES/django.mo,sha256=GjOycm_b8DrWGSq-_OWTMoRuhxOcW_PnxdmOc7k17oY,23480 @@ -258,24 +256,24 @@ django/conf/locale/pa/LC_MESSAGES/django.mo,sha256=MZHSQcl584TTogQpYXzE1o_AqfZlw django/conf/locale/pa/LC_MESSAGES/django.po,sha256=-mzScJHrkxIMp4tbbd8NA1EG6V2_pail2PYhaJ8FWxU,22591 django/conf/locale/pl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/pl/formats.py,sha256=l_l0TfQ4pXGC3HmhhzKyYagS6i9CJTaOcUZvT4zU4PY,1080 -django/conf/locale/pl/LC_MESSAGES/django.mo,sha256=dN8bOqb66JrTC_zMaz_ZpTefLYiVWRIQ8lwf22LakFM,28479 -django/conf/locale/pl/LC_MESSAGES/django.po,sha256=zkrDK1Q5CXUSyL3NoDkrAsXNMN7hWnXv4la0XQPZ7hc,31707 +django/conf/locale/pl/LC_MESSAGES/django.mo,sha256=5NgP4TfiO7UUxc72AX-ooimAxgQPweldGSBFfJpQyeo,28748 +django/conf/locale/pl/LC_MESSAGES/django.po,sha256=c63XOUXG3zKDUqsqDt2w7D0qPuWJk276YT6Jq6engZ4,32020 django/conf/locale/pt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/pt/formats.py,sha256=VULz9oqB_gAJKfl6vsblpUzHwX3bYJXC4STqRcObJLg,1650 django/conf/locale/pt/LC_MESSAGES/django.mo,sha256=sn4p2gmHihkh2p30YOdcmuQbYomVgD8igFWR-ptN-78,26222 django/conf/locale/pt/LC_MESSAGES/django.po,sha256=9n3qfFngx6h2a69O91et9c97peQL6DeV7QhGT5J7mrY,28362 django/conf/locale/pt_BR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/pt_BR/formats.py,sha256=qRqGFjJ1lXCpRxj-UZ8Rxe4BKPe66ZN2ZZ6KblVTBig,1367 -django/conf/locale/pt_BR/LC_MESSAGES/django.mo,sha256=l-gLW0mKPtwMhWEFdF5SU6_OfdBsmjHXpspCn1X0ewg,25639 -django/conf/locale/pt_BR/LC_MESSAGES/django.po,sha256=YcLVLWR9juH0uRXsSqGCzUZm_RqQ7A31juOwQL_Cu0w,28689 +django/conf/locale/pt_BR/LC_MESSAGES/django.mo,sha256=O-eOlqg72imPc3qjl76IIU6eRSH8zj3VWEV7a8pSvRU,26672 +django/conf/locale/pt_BR/LC_MESSAGES/django.po,sha256=t583SpEmYUE3AEPh0PJ5XKOYLKpyojV3ouo1hADWIHE,29505 django/conf/locale/ro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ro/formats.py,sha256=3Ej_afExYIcmvjTEOtSxjVSZHU9DWaaS0Wiudra4Ocs,706 -django/conf/locale/ro/LC_MESSAGES/django.mo,sha256=rkiNnX7zQ3XwXKyjwKQFqvGr_WWgBCibBZLr0JhLf60,25242 -django/conf/locale/ro/LC_MESSAGES/django.po,sha256=XhoaELTVw03ielW4W90t3dcj8I9rfyjGQC7lUWQhLis,28511 +django/conf/locale/ro/formats.py,sha256=mclDAoPKn-vxMzAHPqQn-JTtzy9uzw6e8jHrgDEP4Ho,926 +django/conf/locale/ro/LC_MESSAGES/django.mo,sha256=TDItYrrMjQIVNRV-XJ-xbVRliVXEf6hK06IqBxoqI70,27406 +django/conf/locale/ro/LC_MESSAGES/django.po,sha256=h0Kh0sZqk-FNwwSTk_qugsh-At5INIb-MDlZY1Bj_Eg,29787 django/conf/locale/ru/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/ru/formats.py,sha256=xH12699iN_1SB_SeBILcMZNTS51PqVzZmNfoTO_9K5A,1200 -django/conf/locale/ru/LC_MESSAGES/django.mo,sha256=t096A5Zdo6liOlniDFIsMS1P1Kb9eKBaCLVMHLhA7Vg,36405 -django/conf/locale/ru/LC_MESSAGES/django.po,sha256=kY9CgOu4AJe7SSdrrISmg88xxXjyND17UP-aPKT6njI,39288 +django/conf/locale/ru/LC_MESSAGES/django.mo,sha256=ay3NXBB3zNc9V1vo3aD1e5yHWVdOwX2ijkcxA9Ss0Jg,36731 +django/conf/locale/ru/LC_MESSAGES/django.po,sha256=aqHNhpDKk7RMnX2b6aRo2Y6fJX6Jv1V5RdaxnyyLffE,39666 django/conf/locale/sk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/sk/formats.py,sha256=ptsIRV-fDQlK4vPtzjwjbdY8mbcnPYYvjZaUOkK2C98,1106 django/conf/locale/sk/LC_MESSAGES/django.mo,sha256=DhiNeWP0ogWyQfprgOoH9utiNYyehFWN_Ly6wvul_dI,27016 @@ -286,12 +284,12 @@ django/conf/locale/sl/LC_MESSAGES/django.mo,sha256=RnfBB1TUFbQl6Ux4fN2A06zGOQf6i django/conf/locale/sl/LC_MESSAGES/django.po,sha256=4xZ8TsVvDP1ex0ADRKhQOWLLeWJmEnLjh0q8JGL1k5A,30074 django/conf/locale/sq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/sq/formats.py,sha256=z_d_y6d46eL14p3WPaFxzB2zfF_YJNF1V4SF612VFJE,686 -django/conf/locale/sq/LC_MESSAGES/django.mo,sha256=QqpQtbQQISl4isaXmsVkMJW2qa75i6fztcsxY4l8np4,26370 -django/conf/locale/sq/LC_MESSAGES/django.po,sha256=fcud0pDHA_9X0EC6dtVpggH5zxs9RKlCD0tQZAINOgA,28477 +django/conf/locale/sq/LC_MESSAGES/django.mo,sha256=byp8FChY_oqrLWGgtixpkxbFJSobDtGkQh4eS4_PmS0,26846 +django/conf/locale/sq/LC_MESSAGES/django.po,sha256=jItXLe8NUiY3iegE9P_9Gk9tkkeuChpYL3KW2Mc0UGE,28889 django/conf/locale/sr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/sr/formats.py,sha256=hfwSNM9kkDAtDPkSas2QWX1qHIt7GsBgmQ80TUvBTsM,1944 -django/conf/locale/sr/LC_MESSAGES/django.mo,sha256=UOq3yU_W21d7wBrhhT9heEblO9AtE2NXktW9HStZfKE,32655 -django/conf/locale/sr/LC_MESSAGES/django.po,sha256=RdWI34X1Y6PzlvIDOd_vFhHSqlRNHQjLgikrqfeaCgk,34700 +django/conf/locale/sr/LC_MESSAGES/django.mo,sha256=FMlHNyxZhQemW_iOtfsr-LrO1DgvwXaFqtn2Uzg3fMo,32959 +django/conf/locale/sr/LC_MESSAGES/django.po,sha256=FBYFSAYfOGpLrZfx6wWvm7yKwv0RzKv_IXq89MrKJmg,35048 django/conf/locale/sr_Latn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/sr_Latn/formats.py,sha256=hfwSNM9kkDAtDPkSas2QWX1qHIt7GsBgmQ80TUvBTsM,1944 django/conf/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=ZPxsx5ss8kBzJ3uJi3kht-_y2a2nsELUZ3Q3W4__14c,13331 @@ -312,12 +310,12 @@ django/conf/locale/te/LC_MESSAGES/django.mo,sha256=h0T8JGVo0EzGXSbwDVWulpVs0PLJM django/conf/locale/te/LC_MESSAGES/django.po,sha256=G0x90aGtPjtouO99ZQMN9Nf-YW83d_qxMSc-7CrwhX4,24597 django/conf/locale/th/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/th/formats.py,sha256=TCP0rCaS7vFlhSfOIXbaBxQ6LeJfOsSSpNwufd7FZUg,1070 -django/conf/locale/th/LC_MESSAGES/django.mo,sha256=6EW5yaTtSlrZts7qo4LL5rgx1qQcSx7h2v6R-YzA0sw,19036 -django/conf/locale/th/LC_MESSAGES/django.po,sha256=37RzmfwXH2sn5LxHSCjDCS4ICdZtDJ7Oe1yJ2FwtXeI,27292 +django/conf/locale/th/LC_MESSAGES/django.mo,sha256=Sn7J8bolyiK25-sCKvKHKosEQy2I07XNTLYSUD3zoG8,20155 +django/conf/locale/th/LC_MESSAGES/django.po,sha256=t7Rqy36VExXTYNYnDwhrNq7QElZZw1hRFw7JPgSAizw,28144 django/conf/locale/tr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/tr/formats.py,sha256=Z6ZDt8-hgzX_NZbvc_npFYSGw6C_j7OKcV4ZQHBUyuc,1074 -django/conf/locale/tr/LC_MESSAGES/django.mo,sha256=wswgnofQ13cMjPoiCXZs-9RP4z7kWyoiHHYu9Sd-V2g,26717 -django/conf/locale/tr/LC_MESSAGES/django.po,sha256=ZfZY3EmypbB7moctzNCoez5-LivPK1lbBi40eEBdm70,28942 +django/conf/locale/tr/LC_MESSAGES/django.mo,sha256=Gb1B-wDO_ykDG1Aj_N_6sZ2HwLP-ba3K7DfOkwdZQZ8,27001 +django/conf/locale/tr/LC_MESSAGES/django.po,sha256=yKLTZLP0R4z0Hx6KZBh46Ni75-vROfX8ei1TTCsDSBY,29270 django/conf/locale/tt/LC_MESSAGES/django.mo,sha256=2YqPqclnPPiORixIWcuw2Ne-w_LzYjLsV3o1Ye1AQwo,15352 django/conf/locale/tt/LC_MESSAGES/django.po,sha256=o4_JxmlTXHAEoSx6vHxiKiZP1va_aRT5kFxIjXZcjSI,24745 django/conf/locale/udm/LC_MESSAGES/django.mo,sha256=eeu0nDatoybuYCF6z3hXG4XA1rs6FgX2x9d8r8cYc4Q,13564 @@ -334,36 +332,36 @@ django/conf/locale/vi/LC_MESSAGES/django.mo,sha256=MDt-w99IwQWBwpqjtPagMXe6UlMGa django/conf/locale/vi/LC_MESSAGES/django.po,sha256=BJ50rmwgIa1K52YOcQ9AidcKx1h_Edw5rS-TDylAqUw,25483 django/conf/locale/zh_Hans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/zh_Hans/formats.py,sha256=I8nkL38iWW2p8eRlPy3mK85btInMIK9mxILxmBjm8ic,1743 -django/conf/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=krj9N5VCZitX9ClD5Qyb64hjV7vlfLFza5p-kIIr0Yw,25008 -django/conf/locale/zh_Hans/LC_MESSAGES/django.po,sha256=w5az8MPEo16sjvQX3u8cfF4KLg78sUxQUTEqUJWMDTU,27256 +django/conf/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=jKDd10YVqMEnM34XpS2OGcIKBvxsrWS06h6-bAFqP_0,25134 +django/conf/locale/zh_Hans/LC_MESSAGES/django.po,sha256=gkJNQbr8uYYU0okHwp6J4WHrX0udk9A-4Hr17w51ojM,27557 django/conf/locale/zh_Hant/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/locale/zh_Hant/formats.py,sha256=I8nkL38iWW2p8eRlPy3mK85btInMIK9mxILxmBjm8ic,1743 django/conf/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=TEn43zMlXUa9XjkqvXOS98GB77ZNFl3IraNO1zppM1U,24865 django/conf/locale/zh_Hant/LC_MESSAGES/django.po,sha256=XZABm4NMgxZEz3rfhu256fsk9D-kcHpBcgBbt-zbP-U,26676 -django/conf/project_template/manage.py-tpl,sha256=L9sKzlpvlJtysHenCAVoERXvXFvUn_FtfNApKHC4PQM,550 +django/conf/project_template/manage.py-tpl,sha256=8ga8MYnkPY1UhvF2eGcrdvXjB0u34nNoT8jDgLt5USs,550 django/conf/project_template/project_name/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/conf/project_template/project_name/settings.py-tpl,sha256=4JwYHW6nbDUufEkQOQjOY08slnLMETQAJ9dqr4PjsmU,3210 django/conf/project_template/project_name/urls.py-tpl,sha256=vrokVPIRgYajr3Osw2_D1gCndrJ-waGU3tkpnzhWync,775 -django/conf/project_template/project_name/wsgi.py-tpl,sha256=YlvOJDVlRT5GdECwWEpeK8i6gRsliG3sLQog8cYPsC8,428 +django/conf/project_template/project_name/wsgi.py-tpl,sha256=OCfjjCsdEeXPkJgFIrMml_FURt7msovNUPnjzb401fs,428 django/conf/urls/__init__.py,sha256=Lp9Zc17tRy3bVwULxq1_8qBloXbgmqiQiIzzbqkqDSk,402 django/conf/urls/i18n.py,sha256=TG_09WedGtcOhijJtDxxcQkcOU15Dikq0NkLGVvwvCI,1184 django/conf/urls/static.py,sha256=3Hr170gzVpmIOsHUQOpgG16LE6nG_U5L8kSoSiNKeFQ,844 django/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/admin/__init__.py,sha256=K5IZ6J5ujshspna6ubTvpFfTBjU7p8EhsbvW6G7fMwY,1243 -django/contrib/admin/actions.py,sha256=MFwZgt4qFQvwrm_AP2FIg3cGxuIlEfpYVE4T9x2tbL0,3207 -django/contrib/admin/apps.py,sha256=IKXRyRFIiWUmwm0-wigmpAE-iEHH_XqNl6FRSmEZfXQ,708 -django/contrib/admin/checks.py,sha256=YQgseIL_rhM8HF6QjKyJY1j1peMXHVybePHTR82aA1I,41793 +django/contrib/admin/actions.py,sha256=S7p0NpRADNwhPidrN3rKN_LCJaFCKHXX9wcJyVpplsw,3018 +django/contrib/admin/apps.py,sha256=p0EKbVZEU82JyEKrGA5lIY6uPCWgJGzyJM_kij-Juvg,766 +django/contrib/admin/checks.py,sha256=KLEvOfP5yYoSE4CU6nNT36XQj9wUhVsw2DIbKDEEkH4,42748 django/contrib/admin/decorators.py,sha256=jQS6FQ2PxaqGYTYNa4jdx-qSVPV9Uf5bRhbC9PF0BMM,969 django/contrib/admin/exceptions.py,sha256=lWAupa8HTBROgZbDeYS1n_vOl_85dcmPhDwz0-Ke1ug,331 -django/contrib/admin/filters.py,sha256=3iKFsSTchtIsz4Zo9vtcs-voWwxTG1YjRo_Pc2nk4BQ,17821 -django/contrib/admin/forms.py,sha256=Ft6mb1iOIb3zXBRakRipI6TB_7d6D_mSrGQ9olj7k2k,934 -django/contrib/admin/helpers.py,sha256=ORpSrYvcLw8MOAfN_Q3rE0dcP3k6R8Op6XSbLVuOONc,14309 -django/contrib/admin/models.py,sha256=ALiXbQuBrWgN8ZKFFNK0JWV9YGLzmzuFh6GUhoIQSIw,5454 -django/contrib/admin/options.py,sha256=3AgS7N8UtwepcNRq44kbzEyTSw-1EFH9lbIehDYS_tI,84867 -django/contrib/admin/sites.py,sha256=SD4gdJ3Qa5OfJ0xC1VtykAbID40DokIduHbD7-_7kmk,20011 -django/contrib/admin/tests.py,sha256=Y7_BrWS4T7vMc7lW5ba5I4uBlEC5OgAaslLb_90NYNM,7307 -django/contrib/admin/utils.py,sha256=-ljhmigMpLkEJ-qFXND5Eemw3e4u6Ad0TvIKmuMdsQo,18493 -django/contrib/admin/widgets.py,sha256=EC3bawDyBb5HLPwelCk9vr31cXAGM35HrVEImDjRb9E,17719 +django/contrib/admin/filters.py,sha256=NDeO7wUW7ZT6Qgx7cxkwDrGdUHKSo0LMr7N43HNibiU,17240 +django/contrib/admin/forms.py,sha256=hDFBqCKLLp8_ea0T0gshsgUHw0RgUtNoHCp3Q5fkOhA,1001 +django/contrib/admin/helpers.py,sha256=sobOgHhRY19iSnPEAoHHKDMuUmbB4iona6niZD_psSc,15123 +django/contrib/admin/models.py,sha256=Csgo9rlRqVutDYH7PI1cPuNrwTg9pdueVgRKe7QFreI,5609 +django/contrib/admin/options.py,sha256=0bBR7HoDXRqRp11hKsN_Bf1iOtkb1Os5awVQ2phT7Jg,91683 +django/contrib/admin/sites.py,sha256=7krEzGhhAdYIjr9ez2GQ-30B-vPi5m-JkuUJIfkPYo8,20470 +django/contrib/admin/tests.py,sha256=eO-iV08qo6zrNuPibtb5hrQyByq20VDk0pjWSLYTXFE,7301 +django/contrib/admin/utils.py,sha256=hcTDUtmiTScW-LfBDt6jB1OyDGoUR5RN7f4qlkripIU,18394 +django/contrib/admin/widgets.py,sha256=zEUZLwGRV4tSt7ibQToE0BI2MIJWHLOVCJEwkAIf_zw,17009 django/contrib/admin/locale/af/LC_MESSAGES/django.mo,sha256=sbS-86l1kVvdcIV7n0xHqcy6iL14Ktnym0CifEkrEd4,9372 django/contrib/admin/locale/af/LC_MESSAGES/django.po,sha256=vNkvN5lbhg5iRk42-5rlR0zqQpsraIXXsc7Ke9kO0z0,14280 django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo,sha256=GDKkp7mc4LaMwT_Eli1rPLCwo75R4htvXfyCLWRvJdw,1158 @@ -406,34 +404,34 @@ django/contrib/admin/locale/ca/LC_MESSAGES/django.mo,sha256=gQ-g3OzRpyqae7U8BLAP django/contrib/admin/locale/ca/LC_MESSAGES/django.po,sha256=txJB9CZNOXBvLMZteXPodWku5aiDu0hyW4F2u_XHOng,17942 django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo,sha256=jQuQQAoB-_hggWhGXDFhk71xu70rKF0GqHN-DjR9o-c,4560 django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po,sha256=Mfn1tgpuhe05MBQShhMoJDZ7L5Nn2p1jFy_jYIt0H0g,5098 -django/contrib/admin/locale/cs/LC_MESSAGES/django.mo,sha256=BEM-fRNY0w99W0GE7X9G09dySM3Qgzf9CwA2ufKrkSE,16572 -django/contrib/admin/locale/cs/LC_MESSAGES/django.po,sha256=uVKGJgKc23jUIQ4_vIlhy6d0ZwsnlwNnPx5bgaSpaYM,18026 -django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo,sha256=BvxuAQ-ndFx2opXSg8FUhBLfOs1DBAdL5rweypbNuUU,4819 -django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po,sha256=YOnd2RyXmM8-K2OgVVubcXuy-St7FesLrRUb7mXVEdI,5393 +django/contrib/admin/locale/cs/LC_MESSAGES/django.mo,sha256=i0S22WKq3pUEovUn5NPpkq7k9C73fyPvARmOtfAqCAQ,17272 +django/contrib/admin/locale/cs/LC_MESSAGES/django.po,sha256=RSqLicnUEw3WTnMksi5H5lgcfE33yQoCK9SyeE66gZ0,18786 +django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo,sha256=K9lJ7JQ2BmIxZuZDIlCfMkIo6pvormd3wYIoPxMH8VU,5053 +django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po,sha256=FWiaxDEWDMQjkm5j2CidZoRx8RqbWdmTCd-EHZE6gUo,5666 django/contrib/admin/locale/cy/LC_MESSAGES/django.mo,sha256=7ifUyqraN1n0hbyTVb_UjRIG1jdn1HcwehugHBiQvHs,12521 django/contrib/admin/locale/cy/LC_MESSAGES/django.po,sha256=bS_gUoKklZwd3Vs0YlRTt24-k5ure5ObTu-b5nB5qCA,15918 django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo,sha256=fOCA1fXEmJw_QaXEISLkuBhaMnEmP1ssP9lhqdCCC3c,3801 django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po,sha256=OVcS-3tlMJS_T58qnZbWLGczHwFyAjbuWr35YwuxAVM,5082 -django/contrib/admin/locale/da/LC_MESSAGES/django.mo,sha256=_u56MXv-Dh5k-0QHZImE3Ds3VTky6sVa1iDD3_omR5U,15961 -django/contrib/admin/locale/da/LC_MESSAGES/django.po,sha256=U7PqDwHI5VaX7wiHdKvmGQTwKzGuYry-UeQSk55DQCk,17343 -django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo,sha256=_2EDOsYDt9p-b5L-SAPRXOD2CtrUbgqPrS9cYmoIbtM,4518 -django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po,sha256=zw_JfNVAMhMOgYVCl-ZNMjch4ui4mmUucLBtqbwXHBc,5120 +django/contrib/admin/locale/da/LC_MESSAGES/django.mo,sha256=f7RNGrdfDyu3GtGequ0X54m-ssuUHESQAHFPqmCpcYU,16428 +django/contrib/admin/locale/da/LC_MESSAGES/django.po,sha256=sSm3V_QMeJu5PZZF7IKz8ULM70uaAzemrYCHXgaUmxI,17834 +django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo,sha256=_K0UgjdfnYyLtno5ibSDtwCNz_4Ak4NASvKMd-2rhP4,4518 +django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po,sha256=KUXicxZHf8rLPKBE64HjMQVB4n3U0hxKGGw_a6Oah3w,5120 django/contrib/admin/locale/de/LC_MESSAGES/django.mo,sha256=hyMoYk3p3PM18E6CzbhwRuUpnVU4vjwjnsrHT9P0R2o,16793 django/contrib/admin/locale/de/LC_MESSAGES/django.po,sha256=4sDSiyev5dDjId1T2IuUvXle7YeETy5FINeMiczEVhI,18192 django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo,sha256=_aUsqSeIo9dHAiy6daB-BLselNy7tuPUEf7kVCgEByM,4602 django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po,sha256=ilCflt4q60Rr1D9wEPNpZQMvJO1R7udNsRgZiml3PdI,5068 -django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo,sha256=sG9r565jG5n98DOZ1zDr8fViR-j7CCcBlgxhftCPCNM,16835 -django/contrib/admin/locale/dsb/LC_MESSAGES/django.po,sha256=cMR5KtWeMqKRQOP6IYT_nr0kGfSmYIWeJJ92DiXH9Gg,18071 -django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo,sha256=Bl1Tcn0LYM6ZunclcgjvXXLAdezS3SXU-9IGZ0hvbPw,5016 -django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po,sha256=aK07LLjObo3lQfVMj6GmR4THIkKFODAQz7iZ99spzJA,5490 +django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo,sha256=uPeXW7UCEoN6nkVIKYXHMnBanRxtU6yZlaM_NGWnCwo,17347 +django/contrib/admin/locale/dsb/LC_MESSAGES/django.po,sha256=Qg6UpwInVPy4Vj62vj81jqoRbN8S222t4eBZMJVrYyc,18604 +django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo,sha256=dXeUPn56ZlRRGbBeHaG6YIwou46k0mu00FU7HCX1ou8,5016 +django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po,sha256=TGt8DJWrQ5Qs0SgJjjjeDmwZTGTPEBgeDFRvUhrrMRA,5490 django/contrib/admin/locale/el/LC_MESSAGES/django.mo,sha256=JY7lZREod67l_l1XFlAAEVdscW878SJSo7EUSR65zo8,22536 django/contrib/admin/locale/el/LC_MESSAGES/django.po,sha256=6yqiFfL07fjR_P31kWlS1LANHzDMFPh2j2aUUXQQcdc,24100 django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo,sha256=vfha6S1wDTxgteeprHdCY6j1SnSWDdbC67aoks7TVFw,5888 django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po,sha256=GJQytMIHNrJeWWnpaoGud4M6aiJCtJ7csyXzmfS6GZs,6560 django/contrib/admin/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admin/locale/en/LC_MESSAGES/django.po,sha256=bJ9vJyvU1p21jk5-aCdWdoOX8mQGev0heavhj_q3bgA,22308 +django/contrib/admin/locale/en/LC_MESSAGES/django.po,sha256=IFmFIAGdGhVbqmyy8Rl65kW3JYKTumVKy0TapGN8FO8,23722 django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po,sha256=Ktbb5PuFfGQarYm7GVnzqqJulz7Bpa3fcfuqD7pXMKI,6555 +django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po,sha256=02sibdoGO77DCuqCRr_w9-4wd50f-TK1m-TFZ7vVf5o,6601 django/contrib/admin/locale/en_AU/LC_MESSAGES/django.mo,sha256=DVjhYEbArfdAQLuE0YAG99eWxa9_eNEz2o9A6X6MrEY,2894 django/contrib/admin/locale/en_AU/LC_MESSAGES/django.po,sha256=CO7AV-NmmmwnXyBIybSfNZLdXiavphWsd9LNZQNqDL4,11800 django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.mo,sha256=LWNYXUicANYZeiNx4mb6pFpjnsaggPTxTBCbNKxPtFw,1714 @@ -442,18 +440,18 @@ django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo,sha256=F4L7ZjQkHdiMTPlhK django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po,sha256=SbpW4kc3NmETWmfwmEzv-c46iXM1g-InxuHt7nlT26s,14840 django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo,sha256=hW325c2HlYIIdvNE308c935_IaDu7_qeP-NlwPnklhQ,3147 django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po,sha256=Ol5j1-BLbtSIDgbcC0o7tg_uHImcjJQmkA4-kSmZY9o,4581 -django/contrib/admin/locale/eo/LC_MESSAGES/django.mo,sha256=r7x8dVw5s6lukzHaK_5lcGF_e2roMddky9HeHJ2oVaQ,15869 -django/contrib/admin/locale/eo/LC_MESSAGES/django.po,sha256=bmvCQTJumI6vVRpKKiH2v9JBMIAXxtOeISP_Z1KusKc,17369 -django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo,sha256=QwYzm1KkoyCZ2YwrkXUUCOT2qnFCcyetCCa4U1Z1c_A,4452 -django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po,sha256=8czUc1ju9YopCCqr5RMIIOwmolJTSBFWZsN-FhrIcnI,5040 +django/contrib/admin/locale/eo/LC_MESSAGES/django.mo,sha256=kIV8K9z42HsMi59c8Qp5VzXJutHlwI6JPDvUc22tRzg,16318 +django/contrib/admin/locale/eo/LC_MESSAGES/django.po,sha256=K9FTzzo4LgbktXejLRXvYOunYPBcvpsP6q42JyODu-c,17839 +django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo,sha256=I1Ue345qSHPmJpX4yiYgomQ8vMgshRt1S1D_ZVJWf7g,4452 +django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po,sha256=BdSRWCYCDxLxtbcPSfRdAMGoTRWOWaxRGpdCIm-3HA0,5040 django/contrib/admin/locale/es/LC_MESSAGES/django.mo,sha256=Rbe3xIQLcfJ2wqvXuNkRqxruYe2NbeiaZ8bw04nn5IE,16810 django/contrib/admin/locale/es/LC_MESSAGES/django.po,sha256=5R2fAMPaLooJBsx35H-VyhHlOqNyQHF2fEuHKPoEaRo,18682 django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo,sha256=44RpmIC1vT7OGz4ubSAzoiU8OysfLsnueZcIqdF6gjQ,4627 django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po,sha256=t2Jn5RZo7e-UzqVwgBAejuBceWCidWjXvd--cWEq6rI,5302 -django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo,sha256=sWkRtdW090y-8rC8Q0kOR8AEr_Z5Y4kxcUD_Tm9RDkA,16955 -django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po,sha256=qI3MouJlakkdZgC_V7sxMiv54am09-1ublI8o5RYoFY,18242 -django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo,sha256=lqWxSD90JLBg2ei316TPHGNTgwWyzl9u0-Zy7aQ5WFI,4892 -django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po,sha256=qZJMi1DsBy2tl2MMo322wTjaO0yb0n5ALzc1tK4SZQM,5350 +django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo,sha256=h7b5NymKgGuSKz_d5ffumW2drAU5wvurkTEBb7FBiZI,17445 +django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po,sha256=mmkt5IrM8rAvwRUpn8BBxou-vbzDIFW1mE0H_TGIZIA,18753 +django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo,sha256=am2ZkZFNC_7L7aNKc6imVX-7aY5QK1E26AIe75eEyTU,4892 +django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po,sha256=DB0e4M6Y5sUdEAvByhGA2nhScOnBZx40SManaAWvpyo,5350 django/contrib/admin/locale/es_CO/LC_MESSAGES/django.mo,sha256=0k8kSiwIawYCa-Lao0uetNPLUzd4m_me3tCAVBvgcSw,15156 django/contrib/admin/locale/es_CO/LC_MESSAGES/django.po,sha256=4T_syIsVY-nyvn5gEAtfN-ejPrJSUpNT2dmzufxaBsE,17782 django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.mo,sha256=PLS10KgX10kxyy7MUkiyLjqhMzRgkAFGPmzugx9AGfs,3895 @@ -474,18 +472,18 @@ django/contrib/admin/locale/eu/LC_MESSAGES/django.mo,sha256=ctSeJLgjy2FeKVwAGxer django/contrib/admin/locale/eu/LC_MESSAGES/django.po,sha256=AAm15QBeFLRDHeG3Rrfqh5Gl1wXPEzQ4vlBa3E8cIag,17308 django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo,sha256=bZHiuTFj8MNrO3AntBAY5iUhmCa6LSluGLYw504RKWg,4522 django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po,sha256=eMpM70UTWIiCDigCgYVOZ9JKQ2IidYZxYcUWunvG8js,5051 -django/contrib/admin/locale/fa/LC_MESSAGES/django.mo,sha256=SDTXAM7LYcv8d5cGoSyVdU5vvRNt619p8MD3EW0eOho,19131 -django/contrib/admin/locale/fa/LC_MESSAGES/django.po,sha256=zwzLWBUq_aHJuKCfKU4KolI4pYrENet8Rj12A4och3k,20529 -django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo,sha256=nvG_i8FrtkTPLpZqCkEYSaVJFiRPYLosBhc1s-FsgnI,5068 -django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po,sha256=XVI2k0cGr-1iqrDL8-k-vbgmPQJm3DH58cw_O5cR04s,5680 +django/contrib/admin/locale/fa/LC_MESSAGES/django.mo,sha256=ucSWfToadRGLeQEzyhiMJ7tiS1Czt_oLvWwWKTWxTHg,19583 +django/contrib/admin/locale/fa/LC_MESSAGES/django.po,sha256=Kn52WDnbxxrJnd4cHxObkzu-nrXaXR21JlYgDRF8q-c,21237 +django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo,sha256=VXKiFMQnm3YrvanPhoV24y3O_y4BQe8DaXLa6bDiuQQ,5267 +django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po,sha256=4PJhPH1EiAMiiQo2W0g_jiXp6p7g7FYT973T80rhVng,5915 django/contrib/admin/locale/fi/LC_MESSAGES/django.mo,sha256=tkuQsXPqB0dpG_PKYvssN-rTbQ-VP3bswgrckqJ9wfM,15923 django/contrib/admin/locale/fi/LC_MESSAGES/django.po,sha256=aaVMgWFnz5ysorFBieY-vG7dDJN0wiEeUL-3tYxot2I,17217 django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo,sha256=ez7WTtE6OE878kSxqXniDOQY-wdURYEfxYQXBQJTVpg,4561 django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po,sha256=rquknGvUFlWNLcrOc1wwhAPn63PZA48qBN8oWiINiQ0,5045 -django/contrib/admin/locale/fr/LC_MESSAGES/django.mo,sha256=7Fne4TDRamUndHqhY5mhqfCIk4brV1tcx_ruEPFFRWo,17504 -django/contrib/admin/locale/fr/LC_MESSAGES/django.po,sha256=TMycKKdYQQsgU3ltPm-A2uPUIYgjBl__N20SIeTdvPk,18792 -django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo,sha256=1pABUr752ITt14MXm6yqZjU7lWcQ2ZYeymqnQOZqthU,4735 -django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po,sha256=Z2rPIY8xryfJqAYan2K5Rc0NOZTKTh80BvuWJav-Atg,5228 +django/contrib/admin/locale/fr/LC_MESSAGES/django.mo,sha256=fRCoDnyFhkaDHVyhQp1mwgWRztqZWipvDt5UKbuokuI,18028 +django/contrib/admin/locale/fr/LC_MESSAGES/django.po,sha256=FQvETa2bfIo2QZf1GxdCBXm3LUeg0Mz8vSVnsEuce6w,19337 +django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo,sha256=KewGnfKOxbAlC7VgPnSkNM-5ASAHw36d_HdKBt06ecw,4735 +django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po,sha256=xa0hANFCx2bR98OHtpYWny5ggyJhzX2C01umaCxqqQE,5228 django/contrib/admin/locale/fy/LC_MESSAGES/django.mo,sha256=mWnHXGJUtiewo1F0bsuJCE_YBh7-Ak9gjTpwjOAv-HI,476 django/contrib/admin/locale/fy/LC_MESSAGES/django.po,sha256=oSKEF_DInUC42Xzhw9HiTobJjE2fLNI1VE5_p6rqnCE,10499 django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 @@ -494,10 +492,10 @@ django/contrib/admin/locale/ga/LC_MESSAGES/django.mo,sha256=wMM857oxSd8c182lYD2W django/contrib/admin/locale/ga/LC_MESSAGES/django.po,sha256=cGFmkA6XOhXyKycmoF_KbTHAgFDjx7fbF9LWwJXH7BM,16798 django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo,sha256=fa2MlEm3XUig1C3X26u_kZzPKcUGR-Uy5jfwG6RQIJ4,4379 django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po,sha256=ixvu6pm3asTKvHisWdcZ6YMb3fjsKOEnHZGG5g3l-tw,5725 -django/contrib/admin/locale/gd/LC_MESSAGES/django.mo,sha256=DMWU4a5b5M1rwDXYq_ZLWUVBRAqx0WX3GtUA79-e4yI,18177 -django/contrib/admin/locale/gd/LC_MESSAGES/django.po,sha256=J0nOji3Q30AYcCNEjh6EP_J_u2Y8G53SEhlRchQNTlY,19476 -django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo,sha256=uZigxSJ1bBQhvhVMAyp7R4-JlZE14b3mu3hCcnwMjMQ,5304 -django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po,sha256=7x7qPCf9WcLBrmJ5uFbp4-9b8QsdYisoAlTVdtXmqYw,5809 +django/contrib/admin/locale/gd/LC_MESSAGES/django.mo,sha256=5D_bPlVaOxjWUAddUHgltyfItGzTcI1LcvWF_KQyVTk,18685 +django/contrib/admin/locale/gd/LC_MESSAGES/django.po,sha256=MSWiN5WA9ffzb1DjSAyvi3xXrUx6gGs71wcN4K9fi7c,20005 +django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo,sha256=GwtvzwSO_lE6yHEdZLNl3Vzxk0E8KAjhJyIn6aSyc0s,5304 +django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po,sha256=RJv2lrB2UamHczIbCzzLBnEWodMLqgNX9ihofmL6XRo,5809 django/contrib/admin/locale/gl/LC_MESSAGES/django.mo,sha256=_9JW7LdCw2on4M1oz3Iyl_VMrhrw_0oVIQl4h_rCX6g,13246 django/contrib/admin/locale/gl/LC_MESSAGES/django.po,sha256=xqdcVwIX5zPxq471crW0yxcOYcbZVaRwKiKx-MAGiqk,16436 django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo,sha256=YkT7l3U9ffSGqXmu6S41Ex0r7tbK-0BKH5lS6O8PAGs,3279 @@ -514,38 +512,38 @@ django/contrib/admin/locale/hr/LC_MESSAGES/django.mo,sha256=s9m770GwDohk1TS2u2Ka django/contrib/admin/locale/hr/LC_MESSAGES/django.po,sha256=Wfn3w39GHvKVV32DvmdfCdaghVxsstnxaGPokFkIFnw,17040 django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo,sha256=rhZ3Jr6ItrGzeBqJUrHGeTamc3bgJmoMjasV9s0rmtQ,3360 django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po,sha256=otuJ1-VmP-MVS1hEeBFbatdweeasHYAVUpLmJ7eE5p0,4870 -django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo,sha256=Hqf74Da0l2w6xVBew1-j3C9L-evR0rA3wcXcyqmAZ70,16584 -django/contrib/admin/locale/hsb/LC_MESSAGES/django.po,sha256=23265vZGcTehU9hwEGY4WndjIMwVteaPyk2zxpGW16g,17796 -django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo,sha256=t0FSFpoVBOf8tzw3EmKAaML5lcJJJRPIfTucfBj0zIU,5087 -django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po,sha256=xrPdmcc1o1ZDMbTPvnNk84vsBPB7P2atlBK0e0RWyJ4,5564 -django/contrib/admin/locale/hu/LC_MESSAGES/django.mo,sha256=Zuhq5Tj-9a7_yFQGeSXNk-LSIUYeOvjBubLtOxm_-5k,16464 -django/contrib/admin/locale/hu/LC_MESSAGES/django.po,sha256=v-LWAj-ZX4YT9EMUnwPXheUbRN08_oahKigBDTtU8dI,17891 -django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo,sha256=71Dhytp7dJplmQzc9MHLTh0k-Fvy1gdeQwi9oafg1wg,4524 -django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po,sha256=bYu4XVz6wmeVfrY2PFxjeaR_RObBsAYQ-yzWxdMgmIo,5105 +django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo,sha256=UOVBsCOpUQiZuYVxwDQ_aGwSpdx_YE2C0SAWOTxkIXs,17091 +django/contrib/admin/locale/hsb/LC_MESSAGES/django.po,sha256=5M64Gz6RoAYTKD9kspFvKPeupjGyoXEIZqOj4RQGTDI,18324 +django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo,sha256=w_gJCnB7aw68UzYwwMPmBaj5pHpXRx6AQgFdQkKsgZ4,5087 +django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po,sha256=t4S38sEiNXswarvPUFKzP4rms0AfQgydGv7W4qIa9eQ,5564 +django/contrib/admin/locale/hu/LC_MESSAGES/django.mo,sha256=G5S-eCg2Eg54D3M9Y-UgXl5fke7wATDhJFkTIYeasAI,17022 +django/contrib/admin/locale/hu/LC_MESSAGES/django.po,sha256=g74pZDEzDqK4U6KBh5Tv4UtaxbGCVprcF0SR-ePHyzg,18525 +django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo,sha256=l3pXOmu379TYVMwPD-6rT4YtBff_MQPtbzfKz1C-jzY,4524 +django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po,sha256=fVI0wNWgfHJ68cM9RgQgdQ_2KpaZRMDfNeSiXjJ5Dlg,5105 django/contrib/admin/locale/ia/LC_MESSAGES/django.mo,sha256=SRKlr8RqW8FQhzMsXdA9HNqttO3hc0xf4QdQJd4Dy8c,11278 django/contrib/admin/locale/ia/LC_MESSAGES/django.po,sha256=pBQLQsMinRNh0UzIHBy3qEW0etUWMhFALu4-h-woFyE,15337 django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo,sha256=28MiqUf-0-p3PIaongqgPQp2F3D54MLAujPslVACAls,3177 django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po,sha256=CauoEc8Fiowa8k6K-f9N8fQDle40qsgtXdNPDHBiudQ,4567 -django/contrib/admin/locale/id/LC_MESSAGES/django.mo,sha256=oqb4tMeB8Vz1TmHmeutmzxcFKdWSJKtN8tLVzxkDnUs,15684 -django/contrib/admin/locale/id/LC_MESSAGES/django.po,sha256=5EVJPBbM4YYV6WG9yaNb9cM-bPAhb0Fa0RXNGShYpww,17162 -django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo,sha256=_FT2WXJ4inRZDlWJe2iaU0idpJdBiE7Ecd1IcghrsH0,4407 -django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po,sha256=9FYLgVUUXqgYSndWDNilL0een9UTRIzzM3DY4or-SGM,4915 +django/contrib/admin/locale/id/LC_MESSAGES/django.mo,sha256=k24VPyY4M6lvgFDcWPZrotxH1JWNUPHsnDzAKUD9Kow,16194 +django/contrib/admin/locale/id/LC_MESSAGES/django.po,sha256=1aMRs9XS2J9DFD3gMRZ2pZoo3zWAaPXG5T3GjBEGx4k,17693 +django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo,sha256=IsrbImLKoye0KHfaJ1ddPh2TXtvcuoq5aRskTAUwRhE,4407 +django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po,sha256=o7zQcSD2QkF_DVwHOKS4jxZi7atLPsQQIoG_szM4xFg,4915 django/contrib/admin/locale/io/LC_MESSAGES/django.mo,sha256=URiYZQZpROBedC-AkpVo0q3Tz78VfkmwN1W7j6jYpMo,12624 django/contrib/admin/locale/io/LC_MESSAGES/django.po,sha256=y0WXY7v_9ff-ZbFasj33loG-xWlFO8ttvCB6YPyF7FQ,15562 django/contrib/admin/locale/io/LC_MESSAGES/djangojs.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 django/contrib/admin/locale/io/LC_MESSAGES/djangojs.po,sha256=WLh40q6yDs-8ZG1hpz6kfMQDXuUzOZa7cqtEPDywxG4,2852 -django/contrib/admin/locale/is/LC_MESSAGES/django.mo,sha256=W-t3UPqpOhi4hWJVaISNGfppMIX47zJUkAP5vOKPezo,16223 -django/contrib/admin/locale/is/LC_MESSAGES/django.po,sha256=FH_HTXGBIkBO2tqPdIZoruNfPMDChqTlocxNF9yQubA,17530 -django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo,sha256=q2W800Di3ibCO32xisxqpO8GHwTB9bEYBfXgYXgb87k,4587 -django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po,sha256=C_hcOfRSmZtA9vTuaT9X5btk_z61SKcaDbF86yDfgks,5122 -django/contrib/admin/locale/it/LC_MESSAGES/django.mo,sha256=Px0LhGU8va1jCIcZFr-1iYkKJO3TSvAKutXD66jK4OA,16441 -django/contrib/admin/locale/it/LC_MESSAGES/django.po,sha256=EA8sEhnHNDlzO68oAvWsqnYBXbMi6A0Piv8aP8zyK0M,18020 -django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo,sha256=P2wm_9ihqu1t1T3epDhlCia-OhwYNtTcfpAbOdjpElI,4537 -django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po,sha256=-cvn4xW3LgMTeLu7Zcurz_ezUOmc4NQNkCeseZdMTyU,5171 -django/contrib/admin/locale/ja/LC_MESSAGES/django.mo,sha256=XFhPX8zpz6GeYaXDKUyw1GTWfqDHO-DyT2MWP7qoD1o,17590 -django/contrib/admin/locale/ja/LC_MESSAGES/django.po,sha256=5dCIRF_yMYy5BmLu795IoJhBYlEF_qFIZ6gcEug65ss,18895 -django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo,sha256=Eki83Z0uecO6oyRrvVdCEMmctehw62HHRaoznf4sKtg,4688 -django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po,sha256=5_AkaIMOx1h-mcr1C3m-JoSiIRx754BN6Qw-e8RFQ1E,5098 +django/contrib/admin/locale/is/LC_MESSAGES/django.mo,sha256=l5W_xfT2bzyN5EZMI7w1NcCoMEZBWMvzRm0Zu791PB8,16612 +django/contrib/admin/locale/is/LC_MESSAGES/django.po,sha256=5KOS2Mudn9uOi2bjdnvrNbPl82HGfYCuza1bS6cfL1E,18016 +django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo,sha256=H7vMdlTEejHg-lYjxS11mVa4o7alXMxcAIfsxrM0gpc,4559 +django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po,sha256=AU39DyYbiu8fMzJhL9cVFc2bfqKcm2Si6HHGGtbewpw,5109 +django/contrib/admin/locale/it/LC_MESSAGES/django.mo,sha256=1s4s7n0KZBAUyNOrW9D1gNYPWusC2vmJb4IS4x-EXCQ,16958 +django/contrib/admin/locale/it/LC_MESSAGES/django.po,sha256=Yp3RnV6rRaJpbXaavGSF_ljef_zpZNTq3hx5OO4Plrw,18649 +django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo,sha256=QHgE9TmlziDuR3XooAHLhp6fAYrBHj7JkZGwZMeutQM,4537 +django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po,sha256=5VcM_25w9a2d_H57l24q5mJUXMlhLF0WjuAdiWOG2MI,5171 +django/contrib/admin/locale/ja/LC_MESSAGES/django.mo,sha256=NNgMzwHWDgZAjqptETxkRAhhbpN0zHIlc3gdXdIqD30,18084 +django/contrib/admin/locale/ja/LC_MESSAGES/django.po,sha256=vH-AnF5yMowgIvFNN5qtdnHCghT0CEeRqD-6XptAcdw,19410 +django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo,sha256=e1psnvl2PWI9RpwDRY0UV5cqn_jhz_ms6OlKUQnEBt0,4688 +django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po,sha256=5-4GlF-p7REuRaMvRGBTuTMJW6slZLqdR-UrEEEJjtA,5098 django/contrib/admin/locale/ka/LC_MESSAGES/django.mo,sha256=WtCZkU5d5VsUCboXo7GO8mXCq3Z4Z-2zp3Sj4j1aqk4,20248 django/contrib/admin/locale/ka/LC_MESSAGES/django.po,sha256=GQutjRKrVbWLlHYeX5FUT-sLXh3zsskQSIDbQsqpKmk,23236 django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo,sha256=7XSBdq-DMWfyGmAHJnwNaexOevuitsNiPDifnbUU19o,5199 @@ -566,22 +564,22 @@ django/contrib/admin/locale/kn/LC_MESSAGES/django.mo,sha256=955iPq05ru6tm_iPFVMe django/contrib/admin/locale/kn/LC_MESSAGES/django.po,sha256=xMGtsVCItMTs18xdFQHELdVZKCwTNNyKfb8n1ARcFws,16053 django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo,sha256=dHzxizjDQWiZeRfBqnVFcK1yk1-M5p1KOfQ1ya9TMVU,1872 django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po,sha256=MqRj6ozyr1e9-qNORUTJXNahe6SL3ee3OveSm3efV4g,4214 -django/contrib/admin/locale/ko/LC_MESSAGES/django.mo,sha256=HGwZQLyvo7ZwhhapTwI04leRIA1B5_g-JR5SmRaWTo8,17006 -django/contrib/admin/locale/ko/LC_MESSAGES/django.po,sha256=cZ7N1sxBgJtL52SaB3pC-9kzEkglcVp9zi3oOmRqLME,18444 -django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo,sha256=ejjPHM0HjXBXfsyFGyxAnzj7K296EK7kgxhMhT8-9wA,4493 -django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po,sha256=R4ruBO7896mDe8ksU8iIwVjZM_6OB0dohAaek0Srkbg,5029 +django/contrib/admin/locale/ko/LC_MESSAGES/django.mo,sha256=gE-N_BIWeg7KZ-v3ZHHWC5tyVu7O3Y6vRA2QZ31MfNw,17320 +django/contrib/admin/locale/ko/LC_MESSAGES/django.po,sha256=ERmk5FVOMSgB7w7nVCXB2kBMzoEUOD4VpLTePrqjsv4,18935 +django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo,sha256=ziL3F4ymY5DChHli3ZJqvkOz1YLzDgDbLl_mL3meomY,4493 +django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po,sha256=0oGHxYVwtQEz0sTPE1DoksK-LRTQOyuLzcT2tqcU15U,5029 django/contrib/admin/locale/lb/LC_MESSAGES/django.mo,sha256=8GGM2sYG6GQTQwQFJ7lbg7w32SvqgSzNRZIUi9dIe6M,913 django/contrib/admin/locale/lb/LC_MESSAGES/django.po,sha256=PZ3sL-HvghnlIdrdPovNJP6wDrdDMSYp_M1ok6dodrw,11078 django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po,sha256=fiMelo6K0_RITx8b9k26X1R86Ck2daQXm86FLJpzt20,2862 -django/contrib/admin/locale/lt/LC_MESSAGES/django.mo,sha256=bYiOprxWo54Uky70hmTIzjiSTqfWarP57-KUOWjy7eo,16410 -django/contrib/admin/locale/lt/LC_MESSAGES/django.po,sha256=sARv8FpCWC2oQskLGebVYI56v9shcPScbMHONJXyaD0,17835 -django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo,sha256=ixKwmi59zj8oVCzxFYjXVRE3_EKQFdS7fZYrtngIDtU,4934 -django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po,sha256=Zzq-hPaQUe3r7WMOWAuoTITVUkTtkDnYwShy5vogaAE,5570 -django/contrib/admin/locale/lv/LC_MESSAGES/django.mo,sha256=xD7Wvz9_Yn-PoqyhsQid1fv0IO7irGTiQ3V7w4rYuPU,16220 -django/contrib/admin/locale/lv/LC_MESSAGES/django.po,sha256=z_tyZSi-D7zSEV-keRnvlKARqgmJzp6Dl497PcKUJPo,17595 -django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo,sha256=fPfAqPJxqmFRYSPlLch8eBKfXwZ7jTPBlcs3-LXMu7k,4908 -django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po,sha256=pAwBGRKZVtF0I0XqlrO_UMo7WWd_P0WgLOunzGJQaYA,5428 +django/contrib/admin/locale/lt/LC_MESSAGES/django.mo,sha256=rDL3odIwP-sh_nVmSe_mj9vF9svmZA77QozjD-pqBfs,16971 +django/contrib/admin/locale/lt/LC_MESSAGES/django.po,sha256=6PTFk40aM6eaxxvyMB8jVh42TOl9DpbF8ekDXy6ud_E,18540 +django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo,sha256=vZtnYQupzdTjVHnWrtjkC2QKNpsca5yrpb4SDuFx0_0,5183 +django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po,sha256=dMjFClA0mh5g0aNFTyHC8nbYxwmFD0-j-7gCKD8NFnw,5864 +django/contrib/admin/locale/lv/LC_MESSAGES/django.mo,sha256=phzWiD6Ulz7wXPU-FaYdNPvcOYQlR5eBuMfiCal2CSU,16733 +django/contrib/admin/locale/lv/LC_MESSAGES/django.po,sha256=uiyqhUFie4O3vJMBdS9LmhPgM6jw3-tQwkGn-jxipCs,18165 +django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo,sha256=eZAxtfdIDk07LhKgbWG0nAdHLn88mmWXbFX9ZvPPZdo,4903 +django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po,sha256=xCNNC4beYfhQWx8iC-qS8Hx7J5BGi2O2zq7Y2tQ96J4,5418 django/contrib/admin/locale/mk/LC_MESSAGES/django.mo,sha256=luKonZA7H7yeCILl4BWXsYn_BncPzYy7_sfCWq7vlI4,20661 django/contrib/admin/locale/mk/LC_MESSAGES/django.po,sha256=LyznsrasvV6Rtq7X6NnIrdZESGo_PlhISShHrCTbDgc,22056 django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo,sha256=ZyQQ49zqs8GiS73XBaSd5l3Rh3vOA0glMpX98GH6nhU,5633 @@ -590,10 +588,10 @@ django/contrib/admin/locale/ml/LC_MESSAGES/django.mo,sha256=RzG1Bu5fVUe0yagKxq5P django/contrib/admin/locale/ml/LC_MESSAGES/django.po,sha256=w1xncysUEfTk6owbX6_2PMAH5emG_DMBOsshmc_64So,24562 django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo,sha256=ALD2ba1V37Xo9mWShD9KNr7iE3F30nytEbHnP1gxz8o,6362 django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po,sha256=Fa_b2gBa-JJkxGrJhdQ-T0QigGLeHnu8lhhmdqKiq6s,7607 -django/contrib/admin/locale/mn/LC_MESSAGES/django.mo,sha256=ew8-JvbkDihdAdNh9bC17H7BL0qw6ETwGWIg2EdXWDs,20092 -django/contrib/admin/locale/mn/LC_MESSAGES/django.po,sha256=18g6zBpC4sQ5ZbbKhsdsMdEUYr0ylV3KbCyFuoKF02c,21513 -django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo,sha256=p4vwkVWIQWCbz-YzN--75wMlhZw-UFAEyJLBOjHgMCM,5215 -django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po,sha256=6Bqlo2zHRu3RVQP2QGPVZVNP1aPHalBcKaoouHVU8y8,5761 +django/contrib/admin/locale/mn/LC_MESSAGES/django.mo,sha256=Kz3fA7eU9qx3XNeEaSieD_UxSRTylT9N-DFSEed4DZw,20634 +django/contrib/admin/locale/mn/LC_MESSAGES/django.po,sha256=KjENqF1KADrxfGJk07MDcULbMHQr8G2BPfNa0ejkMxM,22059 +django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo,sha256=TlPEpGeVo8QfvNIK3AJ85Qkpyt0u575ftmELZF9XevU,5193 +django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po,sha256=4cc_PXqXeYNxFUL70FTOjYC8jjqwt9REzYqwuzbv83E,5717 django/contrib/admin/locale/mr/LC_MESSAGES/django.mo,sha256=UAxGnGliid2PTx6SMgIuHVfbCcqVvcwC4FQUWtDuSTc,468 django/contrib/admin/locale/mr/LC_MESSAGES/django.po,sha256=TNARpu8Pfmu9fGOLUP0bRwqqDdyFmlh9rWjFspboTyc,10491 django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 @@ -602,10 +600,10 @@ django/contrib/admin/locale/my/LC_MESSAGES/django.mo,sha256=xvlgM0vdYxZuA7kPQR7L django/contrib/admin/locale/my/LC_MESSAGES/django.po,sha256=zdUCYcyq2-vKudkYvFcjk95YUtbMDDSKQHCysmQ-Pvc,12522 django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo,sha256=1fS9FfWi8b9NJKm3DBKETmuffsrTX-_OHo9fkCCXzpg,3268 django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po,sha256=-z1j108uoswi9YZfh3vSIswLXu1iUKgDXNdZNEA0yrA,5062 -django/contrib/admin/locale/nb/LC_MESSAGES/django.mo,sha256=IroGpA0_OpPSHjw8llcKD7XoPMqtLLPcYtyiUTQXG6k,15643 -django/contrib/admin/locale/nb/LC_MESSAGES/django.po,sha256=U_vdIdGmmEvivVU2Z5ZgZwvdsjM31d9zjZl6clc4bx0,17068 -django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo,sha256=VSt2qyv3IsyongCj9VUuceksd2L7X8uluPJMeGgfOIo,4375 -django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po,sha256=NJ1EcuXD8LEuLwe_FbOe1NEgAoAi-v2qljCiYrxhA9M,4915 +django/contrib/admin/locale/nb/LC_MESSAGES/django.mo,sha256=5juAkhBHZ840DUdEOfyLLEw84bcM2vfzeLqrDq_PL4Y,16081 +django/contrib/admin/locale/nb/LC_MESSAGES/django.po,sha256=xJxWqd6bSBIWXnQAVhZb8Dl3K6jUH-MUNcINQsVspCg,17532 +django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo,sha256=M9-bGaylF_ZgF9PN_IcNSlwmJASh9UCp-XTt70OI-GE,4375 +django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po,sha256=RfP3ay2dJ7jIVoOw923KR9yJUGKs6SBQiiprgB-rFJ0,4915 django/contrib/admin/locale/ne/LC_MESSAGES/django.mo,sha256=vkGnGxQFgLe9TFxEalAj-wLa0mos4ylG24clOGzRWr8,15710 django/contrib/admin/locale/ne/LC_MESSAGES/django.po,sha256=qWDifq6NZdeyYS2uM7OFuypxeWCmBkCZBKhVEOAvd5g,19569 django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo,sha256=mJdtpLT9k4vDbN9fk2fOeiy4q720B3pLD3OjLbAjmUI,5362 @@ -622,30 +620,30 @@ django/contrib/admin/locale/os/LC_MESSAGES/django.mo,sha256=c51PwfOeLU2YcVNEEPCK django/contrib/admin/locale/os/LC_MESSAGES/django.po,sha256=yugDw7iziHto6s6ATNDK4yuG6FN6yJUvYKhrGxvKmcY,18188 django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo,sha256=0gMkAyO4Zi85e9qRuMYmxm6JV98WvyRffOKbBVJ_fLQ,3806 django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po,sha256=skiTlhgUEN8uKk7ihl2z-Rxr1ZXqu5qV4wB4q9qXVq0,5208 -django/contrib/admin/locale/pa/LC_MESSAGES/django.mo,sha256=XRkVFMMBuHA86K16qlN5X2c1DliD-hUwFIB9NIbhPXk,10171 -django/contrib/admin/locale/pa/LC_MESSAGES/django.po,sha256=XTZMIuOCZRC7aG-iRSokjDy9f126VV63S6TLX0sKrOA,16093 -django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo,sha256=lwkcLUw3N-uFwqP2p1sZzaMVeXUGIMPDO-IPoYnalGo,1207 -django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po,sha256=7BYA76FmHAJVe_GRt2fIYei57Sk3B7G_qHy-lrCUxgs,3717 -django/contrib/admin/locale/pl/LC_MESSAGES/django.mo,sha256=SvX2PwbwwzhbsX6VE3S11KV8sA4Ue51Ams1kA-62mRY,16766 -django/contrib/admin/locale/pl/LC_MESSAGES/django.po,sha256=2PTMAAsRkpkHwtxuLAoGtdQcPlSg7eBBqMHvG1QyFA0,18475 -django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo,sha256=ec1TSIUAbti7sn1vEkF_JwsAKtJw7AQ_P_QgyAq8R38,5124 -django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po,sha256=u0KYrSzRQm49ZVcLqocF0bJjzL8fQXjR5dHtrdWvYhc,5885 +django/contrib/admin/locale/pa/LC_MESSAGES/django.mo,sha256=n31qIjOVaJRpib4VU4EHZRua3tBnBM6t_ukH9Aj37GM,10185 +django/contrib/admin/locale/pa/LC_MESSAGES/django.po,sha256=MR6ZOTypay-qCvafn0J0rZF06rOsWz771CLDD1qvISE,16446 +django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo,sha256=vdEMaVBuJtK1bnECgbqd_dS06PcmN7cgdv0hKGH5UKA,1207 +django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po,sha256=xU8tchSEH3MCLFSu4-71oVCR8pliKmILqFevM13IQ5M,3717 +django/contrib/admin/locale/pl/LC_MESSAGES/django.mo,sha256=PzeZA_7rF6LK5_4Z1tRTi_svh8NhBlJ7js8b8uMwtvY,17253 +django/contrib/admin/locale/pl/LC_MESSAGES/django.po,sha256=loRzKv8syWaknj1l8y_Z48UoeP5Y86BrAayiuItTySg,18983 +django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo,sha256=ZiNB7VjkxpIcu3B7r4slW0IsBwWZl_yzp8-ZFG2nRGE,5124 +django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po,sha256=OqqgTzcE2BNomqFOZlPvGf1IBIz3CaiNeen1VFm_hPE,5885 django/contrib/admin/locale/pt/LC_MESSAGES/django.mo,sha256=kJQFBZeg8oTQySbwGEA2U5KX-SD4jSNDTQKqNkwADJM,16612 django/contrib/admin/locale/pt/LC_MESSAGES/django.po,sha256=tkaISKw8FWa0AWjwqyGJO8h_HQRy_-NjOAHezoOFynk,18021 django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo,sha256=D6-8QwX6lsACkEcYXq1tK_4W2q_NMc6g5lZQJDZRFHw,4579 django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po,sha256=__a9WBgO_o0suf2xvMhyRk_Wkg2tfqNHmJOM5YF86sk,5118 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5LfoCVXCKPB0YoxVvijk6viVmNH6DOjQT0LdSV3wTPI,16398 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po,sha256=pHFIJArrkTV8TTp90h7J-Irf3wLjA4zhXxoXValg8X4,18246 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo,sha256=wOoG2N8JrONQDPsXZ0LstCOUwL0Dtkrg5tv5LUfdLPQ,4619 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po,sha256=VGvet4lDdbvOiWQiXEJzZncw5KpeiK6vPITwmIiwLXU,5256 -django/contrib/admin/locale/ro/LC_MESSAGES/django.mo,sha256=i9xCmjjK89RDyZbv4byzzXp10n-XzwsLpFrkNcpmKD8,16508 -django/contrib/admin/locale/ro/LC_MESSAGES/django.po,sha256=KXM5hrWJOmXe0uJ8hAcnAyubdFmfiHGqQD4TlDiVIB4,17936 -django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo,sha256=ecZWK29CdeMH21OfOuv0dZ9907hWu_1gUsUeDxRJd-c,4711 -django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po,sha256=2Vm36kASBB8RlNTWV3xnLkl06qGbPex4zJeXKV1ihCc,5388 -django/contrib/admin/locale/ru/LC_MESSAGES/django.mo,sha256=UUsVqTtdz3RrPeo3zNTpyfzj6q9X6akrEW_iiYhTMM8,21129 -django/contrib/admin/locale/ru/LC_MESSAGES/django.po,sha256=2aSRrHBP4Is4ROggjZmEXkb3AhWadFbBJBfAkwTslXo,22684 -django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo,sha256=aKfi6-U6lHDVoCT0vnr5u02POMb2ZZq6RBWkYM3ZTGs,6564 -django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po,sha256=qJElbC05QixcTmPe4_QN_p0UiiXxVXRMXEK8ZsTYS58,7372 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo,sha256=9SjRP63e3DFvKYmIWSFxfw1qNDLXyxJzpWrN0LKYOU0,16911 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po,sha256=S247yIhy-lidXtm8kgwlZ3qcaLYkCFVjkfkYuYvA1OE,18927 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo,sha256=a7KPhFtcwVa7PX1XK1cgF3HOOcRSkT-XYSiRCFyFQFQ,4619 +django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po,sha256=ENE4HAsUNcYJq2KvLrfBOLuxr1chEyEi39OSlaQU98g,5256 +django/contrib/admin/locale/ro/LC_MESSAGES/django.mo,sha256=YNh8StWxKDKJy7eKPaMZHa84t_qcrLN2tEIZXWtF--0,17007 +django/contrib/admin/locale/ro/LC_MESSAGES/django.po,sha256=TSYX9GoNiVodku9mWCmNga7JKdypQKzifqc8Ur9GbD8,18480 +django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo,sha256=pb_H0zmtdSjvpacoMnLZuZy3B2PSeUGteL6-MoldLpg,4686 +django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po,sha256=OlT5yOHT3MK7M0ZXy467gJfsqNSLgUlUnXqQBhfHy3I,5387 +django/contrib/admin/locale/ru/LC_MESSAGES/django.mo,sha256=9msu1WFKZYYCuUgQ1xqoPPrWiXzwxb7AB_RWgp0ziKE,21855 +django/contrib/admin/locale/ru/LC_MESSAGES/django.po,sha256=Hh-delLL1x6psW5AkXQc7Tnm8diEhvYvCj6THWZoHmI,23489 +django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo,sha256=LnAupy3FSz9zH6axWnvh1wtW27O5e8N6Apl5jFeFj0k,6560 +django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po,sha256=BMFEVFmYedhcRprutX1VBnoD6OuC79hExVt-h4Ep-ng,7360 django/contrib/admin/locale/sk/LC_MESSAGES/django.mo,sha256=qfJ6iSOPH215iuk7dGbbbkYFbDTFr3DgXTH5PKyakX0,16405 django/contrib/admin/locale/sk/LC_MESSAGES/django.po,sha256=_efzcdpl-KkRFglILyRBp2lXLu1jAnoeWjFHRmE4vio,17792 django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo,sha256=FIrWSjWt0qRGLmjt3wODBr4Dm9rfGGJNo_aQomRlL9w,4551 @@ -654,14 +652,14 @@ django/contrib/admin/locale/sl/LC_MESSAGES/django.mo,sha256=iqcg1DYwwDVacRAKJ3QR django/contrib/admin/locale/sl/LC_MESSAGES/django.po,sha256=VeIJDh1PojyUy-4AdPcVezbQ-XVWqp04vFE_u3KU2tU,17508 django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo,sha256=0jqGv5lgcfyxh9pdnB0Nt7e0bF2G0nO-iVWJjKwyZqI,4724 django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po,sha256=1DEs7obfCCf-hNM2nIkMizcRcq1KoLBvngMaXLlozUo,5269 -django/contrib/admin/locale/sq/LC_MESSAGES/django.mo,sha256=mz4DGjNy67A6s3gbYuWSrjeGyQgZ29HjEQ22c7oq3HA,16593 -django/contrib/admin/locale/sq/LC_MESSAGES/django.po,sha256=1TlVYvPiB1UztB-fEAcw0iTs0rzd2NrBKH4XXv7-eq0,17876 -django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo,sha256=Kke8CoU6tgem52SEYXyN-GD31iE0X2DtXljgEx2u5Dc,4590 -django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po,sha256=Xr0i6Ru0KgO1fmXHJbF_8_QC6mCVU8lKKNDB0lQWVdU,5052 -django/contrib/admin/locale/sr/LC_MESSAGES/django.mo,sha256=xcPq0tHEmWuHzjORFiHXqJoRMd2ztq9ZQklkEadB_6c,14663 -django/contrib/admin/locale/sr/LC_MESSAGES/django.po,sha256=BmZiFbw8Wbv3YY-m7JFyEB0PVyGH71MaAe5lGwJWvCQ,18499 -django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo,sha256=_xxpc37j4ea5rfzTNLfmkF1BTea7rc5ZIfAwlS1xMgs,5221 -django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po,sha256=qcjIyqk-3c1qzuRdo0NVjLK-C-hLXvQvehAKUQhhsfs,5729 +django/contrib/admin/locale/sq/LC_MESSAGES/django.mo,sha256=et_qX5zIJSoOAFcH699rBgtV9MDTsFOR-3WBQqBkNY8,16968 +django/contrib/admin/locale/sq/LC_MESSAGES/django.po,sha256=C75jomu3faOUK6UJHrdZLHWvlZ2_-qhlrccbQ8tjAT4,18345 +django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo,sha256=Y8QxQzzoGCTZ61b1Y9OSbPosunTPmRv3fGa1anV6vTg,4590 +django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po,sha256=LbSmumf9GglYFGM60mFvPFoEayWFVL72rPJ1WUYO_d8,5052 +django/contrib/admin/locale/sr/LC_MESSAGES/django.mo,sha256=QBVRQ_QV1q00MPi6FN5ZGW9IeGht2LWyHnFtUsWBiZw,21023 +django/contrib/admin/locale/sr/LC_MESSAGES/django.po,sha256=TOvO7b7bUJ6-qPnspH5I9uAhzvudnMP6zzynJtE39Rw,22337 +django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo,sha256=No_O4m32WrmnovKZ7CgusTPZOiMRDvMusQNS9FAg_pg,5221 +django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po,sha256=lj1TZE6I5YK0KUBD7ZVGMLV97sYwlIIwZjC5WQyxSyE,5729 django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=MCdPPbt_Rob5o-oiXrrh04yJdpzj1_LH2u6iNQrUZ0U,11339 django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po,sha256=z7Kmej61JawIMlGVei9SznO_yzgijWZ5P-YZDNZQGxI,15457 django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo,sha256=Q9Z-L--PCpPQkbqm2JmNX0jGQt42RVX9I7LdQLEgoQQ,2978 @@ -682,14 +680,14 @@ django/contrib/admin/locale/te/LC_MESSAGES/django.mo,sha256=aIAG0Ey4154R2wa-vNe2 django/contrib/admin/locale/te/LC_MESSAGES/django.po,sha256=-zJYrDNmIs5fp37VsG4EAOVefgbBNl75c-Pp3RGBDAM,16941 django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo,sha256=VozLzWQwrY-USvin5XyVPtUUKEmCr0dxaWC6J14BReo,1362 django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po,sha256=HI8IfXqJf4I6i-XZB8ELGyp5ZNr-oi5hW9h7n_8XSaQ,3919 -django/contrib/admin/locale/th/LC_MESSAGES/django.mo,sha256=3M_F_61KZCpwDW59j69WocWl5BvdOP2kP0ghqjWuvtU,18775 -django/contrib/admin/locale/th/LC_MESSAGES/django.po,sha256=L2VnfVan4tJ0Lafv0Mc7oVNy2HG6l2tlwDaetLCpByY,21693 -django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo,sha256=Pf2RPgOPysCBvi_5dA73rGrrfs6E4fwtQslrJ0C1-0E,5584 -django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po,sha256=dJWCRdd48kZYyhWcOrqqrBIrFKnZt5BL4Dj0pLH-vYk,6386 -django/contrib/admin/locale/tr/LC_MESSAGES/django.mo,sha256=AMH9iJeDnFNroamlplOgstt5LCDMLYaQHf11ZeHaZGA,16541 -django/contrib/admin/locale/tr/LC_MESSAGES/django.po,sha256=l554XQjF1bObdqocEkUUEOd83PS_Evs6on3YdLnzZXQ,18065 -django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo,sha256=_UZ4Vl3iMn2jr69RdNsamDcQUi8Z40gb_cXGM6v7htM,4547 -django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po,sha256=DH2pZ5OEc8jhW3gzRvq9E_Z6pUA7yayyikszK86MBYg,5070 +django/contrib/admin/locale/th/LC_MESSAGES/django.mo,sha256=7X6-Mgf5QiBV7xbcl_rwxyNF63v3zKAAAVqjFO6c8gg,18986 +django/contrib/admin/locale/th/LC_MESSAGES/django.po,sha256=bt87Nyr9UXksedki4Hlr3pPF4V1shsBAlBp583vmzEI,22157 +django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo,sha256=ukj5tyDor9COi5BT9oRLucO2wVTI6jZWclOM-wNpXHM,6250 +django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po,sha256=3L5VU3BNcmfiqzrAWK0tvRRVOtgR8Ceg9YIxL54RGBc,6771 +django/contrib/admin/locale/tr/LC_MESSAGES/django.mo,sha256=5H-SFTLfhEWTpBiZjWVlWKTpkIlpe18ZlxvtOEvx00A,17033 +django/contrib/admin/locale/tr/LC_MESSAGES/django.po,sha256=u0o1F6t9s05Y1N0l1-u-3PmnMmwKlX_0x0S14RjGJkI,18578 +django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo,sha256=1kem0Biv2nHRWs89KfqJew6Vk-uxsFiBV7Do7NB5ykE,4547 +django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po,sha256=ctZld3zOFwulpBGoE26KbbQxeaaZmbwLSWbERrNeKhs,5070 django/contrib/admin/locale/tt/LC_MESSAGES/django.mo,sha256=ObJ8zwVLhFsS6XZK_36AkNRCeznoJJwLTMh4_LLGPAA,12952 django/contrib/admin/locale/tt/LC_MESSAGES/django.po,sha256=VDjg5nDrLqRGXpxCyQudEC_n-6kTCIYsOl3izt1Eblc,17329 django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo,sha256=Sz5qnMHWfLXjaCIHxQNrwac4c0w4oeAAQubn5R7KL84,2607 @@ -710,27 +708,28 @@ django/contrib/admin/locale/vi/LC_MESSAGES/django.mo,sha256=jl3bBXOh26m8Egaw3N8V django/contrib/admin/locale/vi/LC_MESSAGES/django.po,sha256=eDAYTe4FiiMZO3dzMFu_3qNqYDC7s1gXRUeBSOePIrQ,17618 django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo,sha256=M_wqHg1NO-I7xfY-mMZ29BqUAqGzlizgJ3_DIGBWOUc,3733 django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po,sha256=d3YtQhNuCqtfMO3u5-6zoNhhGBNYkoUhTrxz7I3PRkQ,5018 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=Ym2hB8IIiAqx6v8ZmVYCy7f0sQkblv-kCeYHDO7Ffdk,15164 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po,sha256=NrQDcOmkMemKSUJG5AfjNuyt3fCNMpw128I9RfGyy0M,16806 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo,sha256=LqYixSP4KAwCMcKNMpU3v-v-Ck66YjpDQYf9V_PtUNA,4229 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po,sha256=n9Idwm6fJ4e1JGsT5ptjoJwu6Qp-gBzG1RE58O4NHhI,4950 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=od1Nkt8dg8gAQIwh1LpD2uBhw7yH8hmYc6f6YlBaaL8,15361 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po,sha256=gNcLxC9d2y7z-3ZfuShVgpaJ59LBfztrrFPp66zy08Q,17291 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo,sha256=ypJV8qNOfp5NDdC4bciIoSST2txTnQZWFJD0bIUNd78,4245 +django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po,sha256=p48E5tOcZbks7JipYsUOg3FWuG_6mP2wSWJeb5otzHQ,4982 django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=kEKX-cQPRFCNkiqNs1BnyzEvJQF-EzA814ASnYPFMsw,15152 django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po,sha256=iH3w7Xt_MelkZefKi8F0yAWN6QGdQCJBz8VaFY4maUg,16531 django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.mo,sha256=yFwS8aTJUAG5lN4tYLCxx-FLfTsiOxXrCEhlIA-9vcs,4230 django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.po,sha256=C4Yk5yuYcmaovVs_CS8YFYY2iS4RGi0oNaUpTm7akeU,4724 django/contrib/admin/migrations/0001_initial.py,sha256=0p5TjterT80FOrCxhO7YqZPag-xnyRin_mQ01Qj579o,1893 django/contrib/admin/migrations/0002_logentry_remove_auto_add.py,sha256=_7XFWubtQ7NG0eQ02MqtxXQmjBmYc6Od5rwcAiT1aCs,554 +django/contrib/admin/migrations/0003_logentry_add_action_flag_choices.py,sha256=UCS9mPrkhZ5YL_9RMSrgA7uWDTzvLzqSLq_LSXVXimM,539 django/contrib/admin/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/admin/static/admin/css/autocomplete.css,sha256=MGqRzeZ1idtUnRM7MnEHw7ClmOVe_Uo7SdLoudapNMU,8440 -django/contrib/admin/static/admin/css/base.css,sha256=Pplnc9jKFUDyZvspY9dqhhACUvR33cf4Lp0DkK6zEdA,16106 +django/contrib/admin/static/admin/css/base.css,sha256=CuAW_3Ywwtu8i5qSPm3XaRlPJAKCoqWPKl-w7w7Ihpo,16225 django/contrib/admin/static/admin/css/changelists.css,sha256=z-w-H416nJzM01ysLRhynHH-4zyjtkoDlzRPFDARX6U,6170 django/contrib/admin/static/admin/css/dashboard.css,sha256=M_duSlzrcec1HXMWlLXJQkFw4m6v2dgB3PRaJlWQo14,412 django/contrib/admin/static/admin/css/fonts.css,sha256=SnBl3KjeUZqRmZw3F0iNm1YpqFhjrNC_fNN0H2TkuYc,423 -django/contrib/admin/static/admin/css/forms.css,sha256=NtSdGKiwEksxVFU-0XeP8Ijv69Zp9sMGYrZqYTh9_s8,8173 +django/contrib/admin/static/admin/css/forms.css,sha256=F33IkdQ8H5uoOOaaGAEEgfPqwFdBzSrCJsHfZsdV6eM,8505 django/contrib/admin/static/admin/css/login.css,sha256=lHpzTw50VkxttDANxGiCnANx46B8HaROciU_sRHbTRs,1203 -django/contrib/admin/static/admin/css/responsive.css,sha256=UAMABM7h5rRZ8FocJw4bfx36Q5XtIDm4ddXN8lMC4SQ,17894 +django/contrib/admin/static/admin/css/responsive.css,sha256=nleMgEuyzRdoXUVvd0d6A4L6ETRa6SaZZv7_VqkvfHw,17976 django/contrib/admin/static/admin/css/responsive_rtl.css,sha256=kdXYUgMd5uXiLthyjc1pv4VXCu9Wy8Mxk1q_f8eQNz0,1859 -django/contrib/admin/static/admin/css/rtl.css,sha256=4FQYhqc4pttIAS0ealmRFrEIwirPs7v9YK3f7DxqTEQ,3731 +django/contrib/admin/static/admin/css/rtl.css,sha256=q3xhmDu5q1eDSw1zQNC16g-imFBXsLmmziCeoH-Al1I,3741 django/contrib/admin/static/admin/css/widgets.css,sha256=FbxIKiGYkWjZwRMm5A_Qv-kKrhsPnfzhsF1j28eSqnA,10340 django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 django/contrib/admin/static/admin/css/vendor/select2/select2.css,sha256=xqxV4FDj5tslOz6MV13pdnXgf63lJwViadn__ciKmIs,17604 @@ -752,6 +751,7 @@ django/contrib/admin/static/admin/img/icon-deletelink.svg,sha256=06XOHo5y59UfNBt django/contrib/admin/static/admin/img/icon-no.svg,sha256=QqBaTrrp3KhYJxLYB5E-0cn_s4A_Y8PImYdWjfQSM-c,560 django/contrib/admin/static/admin/img/icon-unknown-alt.svg,sha256=LyL9oJtR0U49kGHYKMxmmm1vAw3qsfXR7uzZH76sZ_g,655 django/contrib/admin/static/admin/img/icon-unknown.svg,sha256=ePcXlyi7cob_IcJOpZ66uiymyFgMPHl8p9iEn_eE3fc,655 +django/contrib/admin/static/admin/img/icon-viewlink.svg,sha256=NL7fcy7mQOQ91sRzxoVRLfzWzXBRU59cFANOrGOwWM0,581 django/contrib/admin/static/admin/img/icon-yes.svg,sha256=_H4JqLywJ-NxoPLqSqk9aGJcxEdZwtSFua1TuI9kIcM,436 django/contrib/admin/static/admin/img/inline-delete.svg,sha256=Ni1z8eDYBOveVDqtoaGyEMWG5Mdnt9dniiuBWTlnr5Y,560 django/contrib/admin/static/admin/img/search.svg,sha256=HgvLPNT7FfgYvmbt1Al1yhXgmzYHzMg8BuDLnU9qpMU,458 @@ -762,31 +762,31 @@ django/contrib/admin/static/admin/img/tooltag-arrowright.svg,sha256=GIAqy_4Oor9c django/contrib/admin/static/admin/img/gis/move_vertex_off.svg,sha256=ou-ppUNyy5QZCKFYlcrzGBwEEiTDX5mmJvM8rpwC5DM,1129 django/contrib/admin/static/admin/img/gis/move_vertex_on.svg,sha256=DgmcezWDms_3VhgqgYUGn-RGFHyScBP0MeX8PwHy_nE,1129 django/contrib/admin/static/admin/js/SelectBox.js,sha256=xB_jbdmwUFitjqFcGankTIkhcTGaluR9rmBoVy0w4fg,5755 -django/contrib/admin/static/admin/js/SelectFilter2.js,sha256=haJFnUq97-Uat1iVigFh9y0ssqTcIjKjba8NbHkv5fA,12680 -django/contrib/admin/static/admin/js/actions.js,sha256=PveOc3V1J5uCsTIgKlujfaZjXgXh_grkxGNgZUuPV_4,6502 -django/contrib/admin/static/admin/js/actions.min.js,sha256=5yXpKSwzdlPdUsxCu_yrYTa68mJuNyD5Pzs6kbaSeiI,3161 +django/contrib/admin/static/admin/js/SelectFilter2.js,sha256=27G5NolBoqNgsL3jdYvaoLEB3jY7Yll09fBVbXUW_l0,12712 +django/contrib/admin/static/admin/js/actions.js,sha256=u1AAP9rHBwoBjXvZKDzVMBzmzt5GO6ZPHL0szMHSmEc,6538 +django/contrib/admin/static/admin/js/actions.min.js,sha256=wqvSFm3FGV8KnCfsA2XgxsJM7-QhBT4kLAMFKnCBMrY,3195 django/contrib/admin/static/admin/js/autocomplete.js,sha256=LgImTP2VTEaJKqxBqvJKRa-mfenZBjeVg7LnHetaxQU,1124 django/contrib/admin/static/admin/js/calendar.js,sha256=8ej_F8SBtoFhNmmoLwONpyVwOJHd5JBWUMe1mwgxpwE,7777 -django/contrib/admin/static/admin/js/cancel.js,sha256=A9TJZ9Ih6xWf-3ETNJXwXYgzCRu6BlMQhncwS6KWiSk,204 +django/contrib/admin/static/admin/js/cancel.js,sha256=iS0oLbvEb4rtR1QdEhB7OFh_DOlXvrmtB3TTbcELaVI,410 django/contrib/admin/static/admin/js/change_form.js,sha256=J-beGDyqR6uyb3iW_OI9Yo0ZFrfwJVqNFFDeL7-njqA,712 -django/contrib/admin/static/admin/js/collapse.js,sha256=089NhKcy5cbhzScg6vWEfoXxItzFpxVsYYJ2C7KMQUE,1151 -django/contrib/admin/static/admin/js/collapse.min.js,sha256=2ouFB9PV4qb6btAYqFc-mMUc651Jq4ZPVXJ7AaF_ZTY,1634 +django/contrib/admin/static/admin/js/collapse.js,sha256=cAKzs45XLeR0iZNQALKGo4-BeBmh_KTFahVkeJV1XrY,1157 +django/contrib/admin/static/admin/js/collapse.min.js,sha256=vpayHk1rd7rF0ISUqN91Kk6XdMGiCjsyp7keP-CheWk,1685 django/contrib/admin/static/admin/js/core.js,sha256=9XcoubW_oyev18M3x8f82mYQ7S2IyL75jZmu4XaIdBo,7134 -django/contrib/admin/static/admin/js/inlines.js,sha256=l9QepZOAUgZ9rEJ-OcR_3Lh3JQtsza9H8y3k0CLBvqE,13673 -django/contrib/admin/static/admin/js/inlines.min.js,sha256=rQt0u9jd1SyYaNhQWb34UHBxRMctRmtIT1O7WMJK3Rc,5824 +django/contrib/admin/static/admin/js/inlines.js,sha256=FdPdsyKEe40OV-7WTzdIqq0zAW1IAlUDFpcG50aor40,13813 +django/contrib/admin/static/admin/js/inlines.min.js,sha256=7hU_NQKXczvSsYBNL_ClcRgP-b8o1TzOzgocZuXI8Ao,5864 django/contrib/admin/static/admin/js/jquery.init.js,sha256=Gr-yEd61wY6uBDMhOaVq-amfciz7EZhMvJfai_WxrHE,363 django/contrib/admin/static/admin/js/popup_response.js,sha256=7XyHe9SDYkB8OMxF7fhL6N5l4Oxf-gXqzGlpPK63tcc,569 -django/contrib/admin/static/admin/js/prepopulate.js,sha256=PCNwmurilcnTH8ve8QXdAM0rHHWvLIaCU6HEnyRKJyg,1538 -django/contrib/admin/static/admin/js/prepopulate.min.js,sha256=pVBz-2RAxr0d6ebCNjkfOEiUXtd9f6Ppwtl7HOHw2Pk,372 +django/contrib/admin/static/admin/js/prepopulate.js,sha256=jBV6-T9KNi-JCczRf_bOkA9tjjWpIYbXxRhG_vNbadc,1530 +django/contrib/admin/static/admin/js/prepopulate.min.js,sha256=j3KNblf8i0JjoV5w5HAd4vEDogZ421xolYqGrzdSC9o,379 django/contrib/admin/static/admin/js/prepopulate_init.js,sha256=uD3_ZoYfJ62mcSgqzHfePA3Y5jaOBjxn7SU0LuYFgEE,495 django/contrib/admin/static/admin/js/timeparse.js,sha256=oVk0xpGmRjS0V2sMsjGulzMSNDvIr1gQ6_fpivvh_kQ,2984 -django/contrib/admin/static/admin/js/urlify.js,sha256=58xpviBrxcL0ojOn0tAyAUfcqMCcA74qQZtpJ7_gN9c,8729 -django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js,sha256=R2WRhH2444LARslaEB01MB8MyLh_XnRvuUJiVvnAYV0,20283 -django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js,sha256=GEruiyMhTd6Q5pX-C5z3z0Xv4BMcpGFKuonaAYuSW0A,6897 -django/contrib/admin/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt,sha256=GIg3JQapSjFSu38FkC7Wm4cW4HUcvoWPb0YdP5LxKfU,1282 -django/contrib/admin/static/admin/js/vendor/jquery/jquery.js,sha256=laXWtGydpwqJ8JA-X9x2miwmaiKhn8tVmOVEigRNtP4,258648 -django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js,sha256=a23g1Nt4dtEYOj7bR-vTu7-T8VP13humZFBJNIYoEJo,85659 -django/contrib/admin/static/admin/js/vendor/select2/LICENSE-SELECT2.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 +django/contrib/admin/static/admin/js/urlify.js,sha256=SIz0W49xYFdPL9idWm5IB6ROvVWtpw6juZUUYysFcXA,8972 +django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js,sha256=gBa9k-UaYxOf1CsmygyymXdeH7Il_eMU14gUsVn4o9o,20281 +django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js,sha256=9LIqZywmXGzPkc8sRJEmAsYzScCMZDM_xZrjtIjuPyE,6918 +django/contrib/admin/static/admin/js/vendor/jquery/LICENSE.txt,sha256=GIg3JQapSjFSu38FkC7Wm4cW4HUcvoWPb0YdP5LxKfU,1282 +django/contrib/admin/static/admin/js/vendor/jquery/jquery.js,sha256=2Kok7MbOyxpgUVvAk_HJ2jigOSYS2auK4Pfzbm7uH60,271751 +django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js,sha256=FgpCb_KJQlLNfOu91ta32o_NMZxltwRo8QtmkMRdAu8,86927 +django/contrib/admin/static/admin/js/vendor/select2/LICENSE.md,sha256=Py5KwtTr_nv_wJAqcAa1YqXiIY_0XyS08UQXZhXiqNo,1124 django/contrib/admin/static/admin/js/vendor/select2/select2.full.js,sha256=nwWu44AW64pJgDdb4wY7wcWkfUPTfBgwjHkIsnBFUE4,161832 django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js,sha256=FJuLxhiJiX-5Qgs0c2JYLIyJ5i0o4ccg6DQ6zgitCYY,75005 django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js,sha256=fgVH5qCYQqvtWwa8MGiOx4VSKCg5d_BkMbaknNoncWw,887 @@ -836,69 +836,72 @@ django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js,sha256=LsPBQ5q5xi django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js,sha256=ZWpJDPBtRbDJ3YyQ4Z02Le6BRnN0gRxSAoFzYqFE7Nw,801 django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js,sha256=J4dFzbG57aghBD5x1PmkURHSi5y6AytiJgcl9iq-3z0,769 django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js,sha256=zqyrNXby3B33G7De41AQ-OFpy-Cgi3vTXZm_-IGnsXY,708 -django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt,sha256=tyAi9RwLIDwjSrjyBhtyJIkgOHWM469_UzZTr1MmRys,1103 +django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE.txt,sha256=tyAi9RwLIDwjSrjyBhtyJIkgOHWM469_UzZTr1MmRys,1103 django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js,sha256=TjYx21bQgQXDFTdvSqSUh7S8TkYRjT4L4X-SlWNR8CE,128820 django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js,sha256=E-Plu9EZfyt0PJCSYrCkHuPquVVj9V7g7jQklIOgGDU,62474 django/contrib/admin/templates/admin/404.html,sha256=o528Ro8Q0JMgd7mtszp8nl1ADHNA12AyclVdmGQnYGc,268 django/contrib/admin/templates/admin/500.html,sha256=AUIdN7Ka_1KRAGzvo1GvwAHCSJNIbo8oNSF07cMKcj4,527 -django/contrib/admin/templates/admin/actions.html,sha256=FQYsvoJrq949UZHjL1j65Ne_gnSHmMMbgSfUhE-1ciM,1012 +django/contrib/admin/templates/admin/actions.html,sha256=dLU-S_iMBWkrzc1LRJd3TKViD8lhHoGkl3ok8u4F-TI,1200 django/contrib/admin/templates/admin/app_index.html,sha256=BSJsWtgum_H2hCxcb2xe-XJozbVOVpUBN_KTe8pcRts,385 -django/contrib/admin/templates/admin/base.html,sha256=oK_cRQ70cxqj0vFdKS0EulJeGPrnJ_ODnjcKZfy6uLA,3668 +django/contrib/admin/templates/admin/base.html,sha256=2H2owQZumUnSZL6O80Z-wYYWKtUE1lwz4xQcBWKVmJ8,3656 django/contrib/admin/templates/admin/base_site.html,sha256=1v0vGrcN4FNEIF_VBiQE6yf2HPdkKhag2_v0AUsaGmM,316 -django/contrib/admin/templates/admin/change_form.html,sha256=Ta-hNbm9cOOU4ht4OpFaYW5r19mtgWn4jJC79gRB5vY,3356 -django/contrib/admin/templates/admin/change_list.html,sha256=zoB-LaxqWYhG4ftnYmjm7K1EqBr4nXlU-dG4nOnueBc,3253 +django/contrib/admin/templates/admin/change_form.html,sha256=E-zUkd_ONrRG2BwHE9kHexGmKbzLhOIq16YYlgapMnE,3043 +django/contrib/admin/templates/admin/change_form_object_tools.html,sha256=jrTmQiU24E7srnWpjTkKABohw9LNoMevSqKSoS4GrqQ,395 +django/contrib/admin/templates/admin/change_list.html,sha256=-8f03b4Bm7GgFoA5TPEfq76vk_5bQ8clg6V2wa4-68c,2916 +django/contrib/admin/templates/admin/change_list_object_tools.html,sha256=7usDFjSpWHUv3m4mjtRPOqgoY_heo3950PJvgvLCaC8,370 django/contrib/admin/templates/admin/change_list_results.html,sha256=jZ9lN7EYWsG9Gt7_4eA-HjXHic46v-Dl-e61ruSFWVE,1553 -django/contrib/admin/templates/admin/date_hierarchy.html,sha256=uW1_ZMd-7biE28Ix2pQiY1lTvRX1VjyZhUkp-IHA0NI,372 -django/contrib/admin/templates/admin/delete_confirmation.html,sha256=-TrukS8C9205zRv63WI7s9WOa0-O42_jsClKCE_SgSA,2405 -django/contrib/admin/templates/admin/delete_selected_confirmation.html,sha256=856nsJUtL_3yArQAFdJFKI2WCiV8Z3VoLd8F8TUCy7s,2320 +django/contrib/admin/templates/admin/date_hierarchy.html,sha256=I9Nj9WJb3JM_9ZBHrg4xIFku_a59U-KoqO5yuSaqVJQ,518 +django/contrib/admin/templates/admin/delete_confirmation.html,sha256=yomrRPvVB5SORbn38IGiApTvv75RUke4hHZHoBPOH8Y,2397 +django/contrib/admin/templates/admin/delete_selected_confirmation.html,sha256=BPRdmt4BerVSQnzI4wQzbTUYLYWIRdFp0TJukKTypUI,2312 django/contrib/admin/templates/admin/filter.html,sha256=A59SgwTTgEf2iYjV0IiDIixSZ7yCu1Fs66n0Vguu-NI,330 -django/contrib/admin/templates/admin/index.html,sha256=lwKJMWsD4tdmZRUeutXWAqUWch-DmFZAJh3dwEnH-Ek,2983 +django/contrib/admin/templates/admin/index.html,sha256=JkWPzNip--iek76cnSycjo3GIa1dpWOHt-2C6uyu4t8,3181 django/contrib/admin/templates/admin/invalid_setup.html,sha256=58ugkYPi6FHmS--y77fhLAdUr4PyrtGwTg6-hm0_Xxg,437 -django/contrib/admin/templates/admin/login.html,sha256=l5s6CMlDeZ7_9nea9JAarSO8ECJ7JgKyrpdfpYxXjKc,1876 +django/contrib/admin/templates/admin/login.html,sha256=-lORxVDc8VDNcfuKzMqIgJTL5bPttOnJC2TznlfbtFE,1870 django/contrib/admin/templates/admin/object_history.html,sha256=tjE0pTYaSM43e8QxjNabL2FmrB5wPKm8V3jpuziwPdI,1444 -django/contrib/admin/templates/admin/pagination.html,sha256=h5ZgDSNezRlvz22KhtaRY-3GCnEe8AjRcjCfEktVgWA,554 +django/contrib/admin/templates/admin/pagination.html,sha256=T4ssv7ALQ776tE6NKMGFmYLfoBhi4ZeMya_Up91889A,553 django/contrib/admin/templates/admin/popup_response.html,sha256=DDlE_fEKHsGvPcSRy4zFAw_czr3hcCj6YcKRXBNfQEM,358 django/contrib/admin/templates/admin/prepopulated_fields_js.html,sha256=Q3QxBgVvxePpiz502FjSHOS3szSlHkvUQoPe8sF1YDs,245 -django/contrib/admin/templates/admin/related_widget_wrapper.html,sha256=0xA6-N9cO3ED4W397pwjvjbj5ZS5yhZjeqe89Ri6VHs,1397 -django/contrib/admin/templates/admin/search_form.html,sha256=umCPvMnvXX_BlHs_296pKniVn7Ycg-nKk3nKwrwNAQc,1027 -django/contrib/admin/templates/admin/submit_line.html,sha256=CvdFFZBKfGcspS2MgJbmmDCwcHv9hG9NPBxJ_MzY530,790 +django/contrib/admin/templates/admin/related_widget_wrapper.html,sha256=3jqcYPEkg0RPIUEZyrSQgZox3gJrK010s4JcDz23H-w,1747 +django/contrib/admin/templates/admin/search_form.html,sha256=Qq_vEbQup3hzfbuCmS8pyCfzMdnm_9NUZ5iJHfLl7_M,1020 +django/contrib/admin/templates/admin/submit_line.html,sha256=lhAkdi8jxWb31Gp8rcB1nmSNQRZ9Z8p-Fb64KhA-McM,1011 django/contrib/admin/templates/admin/auth/user/add_form.html,sha256=pMsoxDLGJDzjIkcMmKdTYEnUzZ1ESEhBeDLCW17XN5k,310 -django/contrib/admin/templates/admin/auth/user/change_password.html,sha256=a3gZLx4MfgZJrj_fllruwyfy293mmMmVqjcvmsA5dIc,2347 -django/contrib/admin/templates/admin/edit_inline/stacked.html,sha256=fn7GWmIBXEj3ShZ7zzfsQvNzYk5v_tZtzy1C7rWVqAI,2092 -django/contrib/admin/templates/admin/edit_inline/tabular.html,sha256=AZ8eO6PNTKrrRZaaGrhWNbcublSExIKyvz3eJoeOy7c,3897 -django/contrib/admin/templates/admin/includes/fieldset.html,sha256=-_S9dzsEGnmo10xioe7v833gY3tGHBIphzOJ_8rM1fM,1788 +django/contrib/admin/templates/admin/auth/user/change_password.html,sha256=qQhT2rSRdZK-VJ3Tc4H8gtAcWKh-Rsj2E7YWmEw5Hss,2339 +django/contrib/admin/templates/admin/edit_inline/stacked.html,sha256=4yfe8v7tzB88_MXpsB-mp18taqWi5M-GaikLjbJWgBA,2312 +django/contrib/admin/templates/admin/edit_inline/tabular.html,sha256=gCnIpi3zHttMhmVxX4w4THQSH0aEPko7F8aXguEd7xE,4115 +django/contrib/admin/templates/admin/includes/fieldset.html,sha256=DgcBbVUfkho33IMZGEg42Xr9P5y3ZAefFzqkxf74v1Q,1787 django/contrib/admin/templates/admin/includes/object_delete_summary.html,sha256=i_I2BADSutoccAxARIwbP4VRlDHsag-llDOi3kjcoXw,188 -django/contrib/admin/templates/admin/widgets/clearable_file_input.html,sha256=xmlmv2ioEI6ozk5KbzBjC75SNKuYlO07EzjANQ8tH4w,574 +django/contrib/admin/templates/admin/widgets/clearable_file_input.html,sha256=w6Lx3NII4fh2e6BNbJ-VahriO8FA9aOB7opUalGZPjs,568 django/contrib/admin/templates/admin/widgets/foreign_key_raw_id.html,sha256=0-PzMOEe3KSRVOBeivruUc8nJRcziIqWO-DyU8pvgEE,346 django/contrib/admin/templates/admin/widgets/many_to_many_raw_id.html,sha256=w18JMKnPKrw6QyqIXBcdPs3YJlTRtHK5HGxj0lVkMlY,54 django/contrib/admin/templates/admin/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html,sha256=QBovkKbXrGTBy7DzbWQ3Q16WihHW8txvWgV6vdumbnw,1406 -django/contrib/admin/templates/admin/widgets/split_datetime.html,sha256=ORI1EM3mf4g49PgEE6GWTpVnXdRpKP-0dPtLCbDEHQ0,240 -django/contrib/admin/templates/admin/widgets/url.html,sha256=HDc93YIZhUNe-2gXKLt4SFwrap_wE68aaJXY5JcXCVs,226 +django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html,sha256=LB6CD5b5CCko8ZuMEc4m013mexwSJ_7UeCVbV1dPE2Q,1403 +django/contrib/admin/templates/admin/widgets/split_datetime.html,sha256=BQ9XNv3eqtvNqZZGW38VBM2Nan-5PBxokbo2Fm_wwCQ,238 +django/contrib/admin/templates/admin/widgets/url.html,sha256=n7hasq2PF_tyddvbYjBQLWtohSFeMubXej9WQ-HgJPM,224 django/contrib/admin/templates/registration/logged_out.html,sha256=9NdzlTMq7QQpj2ftUqZ7FPeHDv0KYbjETF8qMJVGGqI,374 django/contrib/admin/templates/registration/password_change_done.html,sha256=ldLa6UAVgn_FiKQ9TkO2EZraTBZx1URJrRGOn-_VZJs,671 -django/contrib/admin/templates/registration/password_change_form.html,sha256=W8eYpuusNCZ6EZRkT--QWyXR5rHDienElsw-cMDjB1w,2050 +django/contrib/admin/templates/registration/password_change_form.html,sha256=Q1-5p82B7oFkbFocUSBaelomL4u8NIadxzgbY3fE70I,2046 django/contrib/admin/templates/registration/password_reset_complete.html,sha256=RD0DbFybLTVfHtkU4yN7HG3YXY-xs_BLVgl3vSB7czU,505 -django/contrib/admin/templates/registration/password_reset_confirm.html,sha256=oEDhtdzhrmIc9BhaAgaxvw0qBcpI4I_BQLt5GE8teXI,1373 +django/contrib/admin/templates/registration/password_reset_confirm.html,sha256=a1jISSwO_3OkJD1-Q_20Sv4oB8NhEcn7dcQBcm9ipI8,1369 django/contrib/admin/templates/registration/password_reset_done.html,sha256=ofGCzPs--2mOPLlGcTbZJAoZQkEpfwFb5reLxaKq12g,669 django/contrib/admin/templates/registration/password_reset_email.html,sha256=d_NtuuiWTS9AZu6qObmp-lux0UkUCdA9ZUIUKyYJeHE,582 -django/contrib/admin/templates/registration/password_reset_form.html,sha256=b-wxQ_mk7FtqeJ6KQcXbEeXlMWCaiNGafj-7dPeHfDg,970 +django/contrib/admin/templates/registration/password_reset_form.html,sha256=NGW3MhDnsD3bmrLEhEtJuMaHByN79uUTyr0QJXP20Pg,966 django/contrib/admin/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/templatetags/admin_list.py,sha256=6yW09uGViJQ-yLdvoql3q7JnXKdDD408M4l7jeucTjk,16860 -django/contrib/admin/templatetags/admin_modify.py,sha256=uQy-5HqVSeZWnfH98AjGmjIR6oR1rm9Yt71xQYieMhk,3004 -django/contrib/admin/templatetags/admin_static.py,sha256=yDOpxEP2OK0N0e4-wbVd2vepUUmgGPJ7-SYxAE0rJ_4,304 -django/contrib/admin/templatetags/admin_urls.py,sha256=19YZ6jO3NIhyyfHvmBU2UWCJpkxCILIWbXRB7SWPZiQ,1773 +django/contrib/admin/templatetags/admin_list.py,sha256=WLKl2F2C9gNpeE51-FuWHW0iQlFdOB4BGl2JKNrVULY,17934 +django/contrib/admin/templatetags/admin_modify.py,sha256=yr73KRXuizBIiKrSsgf8jatziGrUTMF7vwfm4mHlAcg,4222 +django/contrib/admin/templatetags/admin_static.py,sha256=WQitV4udeLfD8B36sRJn7QqncP0KWc5a8A83LsIOIeU,399 +django/contrib/admin/templatetags/admin_urls.py,sha256=b_RxDLR7yLBTMe-_ylzO-m0R3ITq3ZP_pnddRyM_Nos,1791 +django/contrib/admin/templatetags/base.py,sha256=54mdDPyCnaMS4N0WNgZBJakx_e1204CNSn68vaLP5Bg,1321 django/contrib/admin/templatetags/log.py,sha256=mxV6mvfVJo0qRCelkjRBNWfrurLABhZvGQlcp5Bn4IU,2079 django/contrib/admin/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/views/autocomplete.py,sha256=7uZSnvQ1GPdYx6zDEJjCoqIqng8piIzrSmlIPjOJADM,1964 +django/contrib/admin/views/autocomplete.py,sha256=vfLa2YPZNRSHlbZXVNnlpBtTwLtY-GQ1yvvCd8D1fHY,1962 django/contrib/admin/views/decorators.py,sha256=J4wYcyaFr_-xY1ANl6QF4cFhOupRvjjmBotN0FshVYg,658 -django/contrib/admin/views/main.py,sha256=9NsN36bB79iNYywLeN5FueTjts1FLgeEETMcKuFl2Fk,16874 +django/contrib/admin/views/main.py,sha256=CYG8JKwD5_xO6uwEn4wF0UrEn0dVBGmaJwkScdLDJKY,18758 django/contrib/admindocs/__init__.py,sha256=oY-eBzAOwpf5g222-vlH5BWHpDzpkj_DW7_XGDj7zgI,69 django/contrib/admindocs/apps.py,sha256=rV3aWVevgI6o8_9WY0yQ62O5CSMRRZrVwZFt1gpfKk0,216 django/contrib/admindocs/middleware.py,sha256=AZpS3DbqX7jhGl3Va1ylGl7IXrRS-5xaBiDA8CLEyT0,1302 django/contrib/admindocs/urls.py,sha256=zdHaV60yJMjuLqO9xU0H-j7hz1PmSsepEWZA2GH-eI0,1310 -django/contrib/admindocs/utils.py,sha256=uCldAlwItBGadCVKDM19YsmHErFIsyybJSmeIBdgsmI,8148 -django/contrib/admindocs/views.py,sha256=7TFapBsBwQjwKtwm8cokpoA5KzGVu9yK-O-Uqwb90RU,16883 +django/contrib/admindocs/utils.py,sha256=1HMZDqdx3Oor3D22cjjsAZ3OkHFXAWjVa3eSPYUwF5c,8140 +django/contrib/admindocs/views.py,sha256=hBQtYZSVaFznVlVw42nuSksRQ9uqbKsd4HQTLdZNRAs,16657 django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo,sha256=GFydi1uBAAkOzJP0FXBCbQFNzX9jK7xqXNsiK7JsOwM,705 django/contrib/admindocs/locale/af/LC_MESSAGES/django.po,sha256=7nIsCfz1HabA8oPvLBqaofdN8nlFYRi3roXxDpUe_Hs,4680 django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo,sha256=IoUExlNwqSYql6zMAuXcFt0cmkjMc_i0fb0qp7cBQlA,7286 @@ -1035,8 +1038,8 @@ django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo,sha256=WcXhSlbGdJgVMvyd django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po,sha256=J98Hxa-ApyzRevBwcAldK9bRYbkn5DFw3Z5P7SMEwx0,7191 django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo,sha256=7R52AIZM0NjoASXDmNLzv4x1fePtn9Fj3HJy3iSOsz4,6601 django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po,sha256=gIraoQfr6DLWV418adqzym7untmC4fN42WT6X057_A4,7404 -django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo,sha256=OahWPVuzae_CG3hTXkqycHG97TIIfkS4hnVe8SXQ_cg,6804 -django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po,sha256=tgjbrXGCnM5K-vDsAMLO46G6AMPijNz-0Y0hQgctX0I,7416 +django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo,sha256=wEimPgw2SwK1LDEuAc1cw9LBO-a09LZrR0b6qcpyxXk,6755 +django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po,sha256=SOA9H817U6hntoqJ5Bf5PAEXr1tMwcuG5yWE29KL4Qc,7391 django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo,sha256=m6sfSIxFI5WJjxdSXZvDcm9A1xIxXJD2r5-UdeIbdlc,8569 django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po,sha256=i0xEq4zScDKrmRJODgIewx_kUMkmeIPxPNE42Vw9AsI,9226 django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo,sha256=_hYfHHwypg7psErP-3c2TY2xITIxaLaAfNofrfoboTA,6637 @@ -1045,8 +1048,8 @@ django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo,sha256=FMg_s9ZpeRD42OsS django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po,sha256=JWO_WZAwBpXw-4FoB7rkWXGhi9aEVq1tH2fOC69rcgg,7105 django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo,sha256=lbUhjyQWbGARQ6BggqWH1tO6kNi5lMwu-523mC9JCMA,6565 django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po,sha256=ZA_o7xIUMTVYadovn4Yxl7W54nGzPnIBjkrL66V8pAE,7081 -django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo,sha256=GnfckcHcuOaXYY1wNmI6VQmGjPX3dpnhgtANIdz8NrE,2217 -django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po,sha256=bYCdRzdUTTmg-UYF-IWSHvA1H0g7C0T2Z3wrWbLwGkw,5425 +django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo,sha256=dIYe3zKZm5rSbSJpUrPfnGJ9rngfgKOS1e7keuduBrQ,3626 +django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po,sha256=B5G2emovHpUp6iZKQArfdtpFaVOBb0SGt_apV6WBHdQ,6051 django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=au90IT43VR162L2jEsYqhRpso2dvOjpCPSCFiglokTc,1932 django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po,sha256=tJ4tHLJj0tDaVZba3WIkI0kg95_jEYWTmqXD0rFb6T8,5140 django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo,sha256=cxjvRWC4s9h6TWzY4OE6pec3wh9gbMI_cpKNcfi3RSI,5661 @@ -1081,30 +1084,30 @@ django/contrib/admindocs/templates/admin_doc/missing_docutils.html,sha256=LA8fyI django/contrib/admindocs/templates/admin_doc/model_detail.html,sha256=OfrSMc1vE_qItQrHO6GBBkwlhOQKex03ogvJJSyr2Jg,1824 django/contrib/admindocs/templates/admin_doc/model_index.html,sha256=ow10WgNZUa6fUCp23ZmvR-kVdYUL29i3HBJ_iwlezfw,1322 django/contrib/admindocs/templates/admin_doc/template_detail.html,sha256=xN-QihBsDVvpAI3C219Q__FMijnxw8j-wevYkk_mxMQ,995 -django/contrib/admindocs/templates/admin_doc/template_filter_index.html,sha256=PAzC_vpGSddmcza2UXWRuoSkhd0YVYiK_EEtP3eWJQo,1751 -django/contrib/admindocs/templates/admin_doc/template_tag_index.html,sha256=hmLoj_nh53MVJdnqrrlIg36rgSXj4k0IlimMSsQQmVE,1707 +django/contrib/admindocs/templates/admin_doc/template_filter_index.html,sha256=QB9_QWIvHCGACzOo6yPOZtKIoKsJM8XLVgWhb5nJxmc,1747 +django/contrib/admindocs/templates/admin_doc/template_tag_index.html,sha256=rAyUTvECyomyB9u2er8oJE_FIMbQOd1auABqEHIupzE,1703 django/contrib/admindocs/templates/admin_doc/view_detail.html,sha256=4mNkUt1_Q8ZGsvsZ1XMirPWNzJyptYMXZVIdPo9UVMc,896 -django/contrib/admindocs/templates/admin_doc/view_index.html,sha256=McuormWD-bVpIiSbnRvy09A-AURhMJeEhy9YX-kbzfs,1684 -django/contrib/auth/__init__.py,sha256=ADkkXnZcCe1qdMn77UgkgKnxZLTjk6gYocI5ZvEcpDE,9206 -django/contrib/auth/admin.py,sha256=5ibrsi934r3-9V7KhSYDm-59mcIaCm6jOXZ2AFTFwHg,8682 -django/contrib/auth/apps.py,sha256=fJNu_-e4MK2zPm9EvUfMBVrW9rw74zsiYih4SmhufW4,956 -django/contrib/auth/backends.py,sha256=_P9ZSQ0NeMFMuRdCsTuXSbnpVFdSQnm7nAZmtv4I06g,6684 +django/contrib/admindocs/templates/admin_doc/view_index.html,sha256=ewSVys3o1hzMjKmHJFZHqBdASsJnV6BJDlvnRuAMrs4,1682 +django/contrib/auth/__init__.py,sha256=BR69jz0xC6a1r7qyMur4YG5eoB9-4snK-TSQvJWxYB0,7986 +django/contrib/auth/admin.py,sha256=lx1fyuJr5c_cLJFk_liJzE49OXrtRRDOI9gZquVOSoE,8617 +django/contrib/auth/apps.py,sha256=NGdy1h4yrogCn9YZOkhnO7LcVFHZAS60j-Bb7-Rz17A,1168 +django/contrib/auth/backends.py,sha256=vXUCfFSGDzVfjx_kh593dZ27W43oI1b0pTk2OBdZ4_4,6554 django/contrib/auth/base_user.py,sha256=GYzu5MFX4qA9SkBUnviWDChne6A-PiRKuOzsMdUgLAQ,4457 django/contrib/auth/checks.py,sha256=eml6rKyw4rEIHxBJUcqChUdvfEh69Monyjkm9FDTOoY,6355 -django/contrib/auth/common-passwords.txt.gz,sha256=EQsJeKUVEhNdKz_y83Tyip8sTs6R2eIKEAZpfmI66LE,3876 +django/contrib/auth/common-passwords.txt.gz,sha256=K_D9bh_oBpZTCTQ1Xs9WAHNLx5yb336v-lscUBnudZM,82603 django/contrib/auth/context_processors.py,sha256=Vb91feuKV9a3BBgR0hrrGmZvVPw0JyYgeA_mRX9QK1c,1822 -django/contrib/auth/decorators.py,sha256=m7U2K7FSMimPdRQd6ozp_asje5srCBmNnvlxh7wfqek,2893 -django/contrib/auth/forms.py,sha256=Op7cZFagwd45v0ZCC9l13xNPLUosJ-2PAlOmT0vcZgQ,15003 -django/contrib/auth/hashers.py,sha256=rq942WSDgrRntTMeGpdYxtP6Z16ADGXFqgeKP8nnHG0,22132 +django/contrib/auth/decorators.py,sha256=2iowUAGrkZBzaX_Wf0UkUbd0po00UCxtdFQxXj1HIyo,2892 +django/contrib/auth/forms.py,sha256=IJar5OMlj0bKH0CBtCu8uqzBs8g53VTK_KMQEfbJJmw,15041 +django/contrib/auth/hashers.py,sha256=Fmehjs9HFiQELka5fwLgc5ucWdMdpq47LClKZA5qmKY,22084 django/contrib/auth/middleware.py,sha256=ihtkwdqyINaDDix1w3WKE9GayaGABY88j6drV0mHGDs,5399 -django/contrib/auth/mixins.py,sha256=NE4XTW5ooDIkFynB7bYvPmn2nZ4rfmf1No7oSmXCVOE,3809 -django/contrib/auth/models.py,sha256=cNiEZ8zgI9rDGsc4mKqMC9d0NECuoemroE7Dcabn71E,14263 -django/contrib/auth/password_validation.py,sha256=QNm-95BUKXU3naaKGtF9666EU2FTyoKHAPmSyZ3Ar8s,7464 +django/contrib/auth/mixins.py,sha256=qdnrUp7L9WTCVimH1ULAoZcsaO5g6_2iE_pT4dea0dY,3846 +django/contrib/auth/models.py,sha256=iJXKjq7FSkQPHrs2OiP1vVxBdm9d8kRBJSBbAqKjHlI,14198 +django/contrib/auth/password_validation.py,sha256=FaatKafryOghnW8MWRN0G7bdHPgCmUFidSmJN3xaEL8,7504 django/contrib/auth/signals.py,sha256=_QNYY-RzkwTvY3FRo01AW1S-D9l8lVb3ebt6F1GBfMU,227 -django/contrib/auth/tokens.py,sha256=YFS_0l8A2Fpdm0BR9vmRgMjPmdchgEWgPXfmux7XcPo,2823 +django/contrib/auth/tokens.py,sha256=c6J7cD5SceyWjmIbwh9he7iaIWaVK27sgrkWjGmRezs,3556 django/contrib/auth/urls.py,sha256=6M54eTFdCFEqW0pzzKND4R5-8S9JrzoPcaVt0qA3JXc,1054 django/contrib/auth/validators.py,sha256=AXlNhfwEd2sonzVAsitbBvKLnBc9CqdGuAmjUB8mEPM,685 -django/contrib/auth/views.py,sha256=VZXwVKKWRcPlBRJCw8WzBroQcz6X8Zq2dkRUf8S-0Wo,22536 +django/contrib/auth/views.py,sha256=aX2frKj1DrVCs-kSusIWUIaqffzXWWXdA5oD77fXRPw,13410 django/contrib/auth/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/auth/handlers/modwsgi.py,sha256=h0T065RiZwMAh3ai2IMeiEQdzmWK62qah7WmOlou6CI,1298 django/contrib/auth/locale/af/LC_MESSAGES/django.mo,sha256=35F25KM8TCmA0iGFdN_v_SI-3BExezOffEgr_urb06Y,649 @@ -1113,8 +1116,8 @@ django/contrib/auth/locale/ar/LC_MESSAGES/django.mo,sha256=lw7pjDDz5lRnSE6bvyGjd django/contrib/auth/locale/ar/LC_MESSAGES/django.po,sha256=3RZUD_C65heRnHppLoljc8REA_l1Df-vJ5rvhjEPr-g,9762 django/contrib/auth/locale/ast/LC_MESSAGES/django.mo,sha256=Pt3gYY3j8Eroo4lAEmf-LR6u9U56mpE3vqLhjR4Uq-o,2250 django/contrib/auth/locale/ast/LC_MESSAGES/django.po,sha256=Kiq4s8d1HnYpo3DQGlgUl3bOkxmgGW8CvGp9AbryRk8,5440 -django/contrib/auth/locale/az/LC_MESSAGES/django.mo,sha256=ljzBNGFBc9lV1K2goFd5o2GZf1T46_zCYylYRiKr9eE,5859 -django/contrib/auth/locale/az/LC_MESSAGES/django.po,sha256=hMBPuh7FKj4JPV-i45h44r_6ctuRNQCGq1e61bzYOJY,6828 +django/contrib/auth/locale/az/LC_MESSAGES/django.mo,sha256=oE-fzJ6uz7Tdhs-8V9C65I-x1AakaxYR1rR8H1XqmQk,7450 +django/contrib/auth/locale/az/LC_MESSAGES/django.po,sha256=YnDzQ-iinkAcbYm_F7MHaj5-dEyVyiXtTZ_yS0IL7Kc,7691 django/contrib/auth/locale/be/LC_MESSAGES/django.mo,sha256=YmJ7Gh14qYbk1OTHXqR4GEVdHcxGRHnpgf7xqzUKCR8,10008 django/contrib/auth/locale/be/LC_MESSAGES/django.po,sha256=vPm5UJWEbhpoAslJhfvHyeTw6MGAfkrvSMd3EbnnmGk,10285 django/contrib/auth/locale/bg/LC_MESSAGES/django.mo,sha256=ZwwXfAeWM92GObhxU6zzGu36KJUpkGOuEeprRMu5mZc,8751 @@ -1145,26 +1148,26 @@ django/contrib/auth/locale/en_AU/LC_MESSAGES/django.mo,sha256=74v8gY8VcSrDgsPDaI django/contrib/auth/locale/en_AU/LC_MESSAGES/django.po,sha256=lg-LFEeZXxGsNNZ656ePDvAAncjuy0LKuQxUFvQCUJk,5921 django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo,sha256=p57gDaYVvgEk1x80Hq4Pn2SZbsp9ly3XrJ5Ttlt2yOE,3179 django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po,sha256=-yDflw5-81VOlyqkmLJN17FRuwDrhYXItFUJwx2aqpE,5787 -django/contrib/auth/locale/eo/LC_MESSAGES/django.mo,sha256=MVVvy0lE75e5wJt4jUdmW3UTOlCT1xTTFfct2bvgj9k,7354 -django/contrib/auth/locale/eo/LC_MESSAGES/django.po,sha256=UzFI6GpwaWHsW-eNDcKOxLSJki566WWfXdlKa54g_qQ,7623 +django/contrib/auth/locale/eo/LC_MESSAGES/django.mo,sha256=Rzc9Tv3hZjjf68hHQFu0YVNpZBBZzLr_m7Rgor58SlU,7353 +django/contrib/auth/locale/eo/LC_MESSAGES/django.po,sha256=YE2VeRqJmrWNSyHRn1TVAueV0cghx_az8X2hqkEG7kc,7622 django/contrib/auth/locale/es/LC_MESSAGES/django.mo,sha256=fu-Qpqz4XyYu1_irM742YYT4KUFa2niDZuVo1bbXpTM,7766 django/contrib/auth/locale/es/LC_MESSAGES/django.po,sha256=U3C1QK5ZVLREVepW6oLVnD3hBNhdlv7ZrjzzMyDLcY4,8427 django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo,sha256=DnK67G_cBQ62T8FzOeT9UAe5dkYOOYo__cUoCRAcv8w,7920 django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po,sha256=vcwNz5PSwMs5vOIFR-xN4ZIjYfzTOAmiYTJHAFFDaxU,8146 django/contrib/auth/locale/es_CO/LC_MESSAGES/django.mo,sha256=K5VaKTyeV_WoKsLR1x8ZG4VQmk3azj6ZM8Phqjs81So,6529 django/contrib/auth/locale/es_CO/LC_MESSAGES/django.po,sha256=qJywTaYi7TmeMB1sjwsiwG8GXtxAOaOX0voj7lLVZRw,7703 -django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo,sha256=B5WKjfMrvFMcj7xi7-0BsH-G_KhGvTcSycyzjQGC2WA,7514 -django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po,sha256=Dsj4cZ0E2KsZphTh3zgJjy45CgWwj85O1QmMmPaJYAA,7936 +django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo,sha256=WUwyvMgNFfKTRfzP4hExhNVMsZ0pee_ZT0p5mwMsu3E,7860 +django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po,sha256=K-QHks0l3VP9R2LXsgcPcSIvRYlYQ7zNIkekMHr2_4o,8166 django/contrib/auth/locale/es_VE/LC_MESSAGES/django.mo,sha256=GwpZytNHtK7Y9dqQKDiVi4SfA1AtPlk824_k7awqrdI,7415 django/contrib/auth/locale/es_VE/LC_MESSAGES/django.po,sha256=G3mSCo_XGRUfOAKUeP_UNfWVzDPpbQrVYQt8Hv3VZVM,7824 django/contrib/auth/locale/et/LC_MESSAGES/django.mo,sha256=DgY1GY3M_oBtdW692gk2RxcrGMiy7Eqdg2mD0iHsNVo,7432 django/contrib/auth/locale/et/LC_MESSAGES/django.po,sha256=Wvqd4XplrtEA2dXg1SLGFgWcchkh3gPHgj8cOovQ3XU,7842 django/contrib/auth/locale/eu/LC_MESSAGES/django.mo,sha256=K0AoFJGJJSnD1IzYqCY9qB4HZHwx-F7QaDTAGehyo7w,7396 django/contrib/auth/locale/eu/LC_MESSAGES/django.po,sha256=y9BAASQYTTYfoTKWFVQUYs5-zPlminfJ6C5ZORD6g-s,7749 -django/contrib/auth/locale/fa/LC_MESSAGES/django.mo,sha256=I82T66B_dQGhcrQkJFNA8wB1nGmqFCTo2XLQzzvD-bA,8263 -django/contrib/auth/locale/fa/LC_MESSAGES/django.po,sha256=nxq_eDjLj3fBZpKW5UYFCGOMdgSMztHrUIRE1plBrlI,8733 -django/contrib/auth/locale/fi/LC_MESSAGES/django.mo,sha256=xjjxjOsXyJ4is_tTXHdiA46lKK_-23F9qMTPn5ivF20,7195 -django/contrib/auth/locale/fi/LC_MESSAGES/django.po,sha256=AFYR_nqn9iYHL8OgxF1WQD3IrifkNjLGL2aK4TF_l94,7650 +django/contrib/auth/locale/fa/LC_MESSAGES/django.mo,sha256=7oQ_0XxUniTEDAGKLXODgouH80NdkDANKBQ749gLkok,8963 +django/contrib/auth/locale/fa/LC_MESSAGES/django.po,sha256=OUGU1vy0hLFb8Bv8V6gykbOB9Qw2Gk1MVMR7aHXS4FU,9362 +django/contrib/auth/locale/fi/LC_MESSAGES/django.mo,sha256=g8UTplFBR9rPuglnruZtE0Vo6tkhDhqbSlc1eh0DSFE,7514 +django/contrib/auth/locale/fi/LC_MESSAGES/django.po,sha256=1znv9S6mls8uwk6AVt8pYkYEG9Qr7TnHNOwL8rB6b-A,7824 django/contrib/auth/locale/fr/LC_MESSAGES/django.mo,sha256=U1cycgOoKsx65naJRvcEa0qaI40olHZpH2I7IKluStM,8116 django/contrib/auth/locale/fr/LC_MESSAGES/django.po,sha256=Dap58AsfuLC7Z4tWpoZzoUAP2Sz_wxRB7aUiGPHBSCA,8451 django/contrib/auth/locale/fy/LC_MESSAGES/django.mo,sha256=95N-77SHF0AzQEer5LuBKu5n5oWf3pbH6_hQGvDrlP4,476 @@ -1243,12 +1246,12 @@ django/contrib/auth/locale/pt/LC_MESSAGES/django.mo,sha256=oyKCSXRo55UiO3-JKcodM django/contrib/auth/locale/pt/LC_MESSAGES/django.po,sha256=tEazw0kctJ3BaP21IblsMhno6qooOGW54zwende522Q,8128 django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo,sha256=Laj_VAYZZX8xYAKcYotpIvPLTECd6tRQS3RjQJuO9MU,7564 django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po,sha256=AaOc5jr5L7JwCOukc9WOWZNQvTHiMPopqQy-herWno0,8386 -django/contrib/auth/locale/ro/LC_MESSAGES/django.mo,sha256=MmEf0Jj3dpKtDS4afiJKU-1guA2_kXIG6XXjWAOfONM,7919 -django/contrib/auth/locale/ro/LC_MESSAGES/django.po,sha256=QR-qOr1NHNkDmwHme_ePI7_236c9_Ha6Kgnf-cHJ9yQ,8356 +django/contrib/auth/locale/ro/LC_MESSAGES/django.mo,sha256=ltOJP8BImDO1eVPQ_iA4UtZm4pMfLI3HsgRKiY_Gtx8,7961 +django/contrib/auth/locale/ro/LC_MESSAGES/django.po,sha256=NHHwZ8qVGgLkBXT_r2y13ZJiWNJ2kFI20-qaZChco5o,8398 django/contrib/auth/locale/ru/LC_MESSAGES/django.mo,sha256=tfK9L7EYNZd9d1k_EGQrDcr8ruUGJ1JbRJ3-TvJ6cR8,10482 django/contrib/auth/locale/ru/LC_MESSAGES/django.po,sha256=nQnaxPKmCJ6N2VVJzNDNt6oeqwSxG0lfY60DSDotJ94,10959 -django/contrib/auth/locale/sk/LC_MESSAGES/django.mo,sha256=shT_E4LFHMuUSjvTtFtaTFfFREhuTS8FjFhje5ZF5yo,7651 -django/contrib/auth/locale/sk/LC_MESSAGES/django.po,sha256=aanpDooZWeV-wuByaJ6TB-Qa7fpjc-bshcpM_qgcRrU,7977 +django/contrib/auth/locale/sk/LC_MESSAGES/django.mo,sha256=hJ_ep7FCbG4DVZawMfx4GjOPcJc4ruFSki8bkYn2l2Y,7838 +django/contrib/auth/locale/sk/LC_MESSAGES/django.po,sha256=NOYdZ3dv3Vtl-5vOwJH26Rthl-5nn4JrXgnm3i-d0bY,8199 django/contrib/auth/locale/sl/LC_MESSAGES/django.mo,sha256=UAzD5UAqHBdiCMIPjZdouGt14xoHuo5EXDctNSDTEJk,7552 django/contrib/auth/locale/sl/LC_MESSAGES/django.po,sha256=tUqZLZJegGLteWOQiDwFRUGayBB2j9qATmL6SMgEhb8,7943 django/contrib/auth/locale/sq/LC_MESSAGES/django.mo,sha256=Nrfoks9rpAdeYtAvbd78imw20YrBQLbqXezC28GG5Xg,7846 @@ -1283,10 +1286,9 @@ django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=hYIfJ_om6DZb1kQ- django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.po,sha256=wSUPMbtI7XdTzoUYjzkAoXEMFSt4nI41FmoH2Xx-q6A,7273 django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=Pnc78tGkY9-ZH6HaQBl4NQ6-ITp8Mt103ZoCvm65Lr4,6759 django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.po,sha256=4N7kl30QCVVL5f3CkD7tKOd2SxP6owmBjxsPooUalzM,7130 -django/contrib/auth/management/__init__.py,sha256=ubESj2X1ZwPmRdesZtlTfE4_v14RfqUTCaXOmCfr1GE,4601 -django/contrib/auth/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/contrib/auth/management/__init__.py,sha256=rA1UYePcdVEoI0DCnrx6Sz2yd_mtYpwxDc-FR0yij4M,4609 django/contrib/auth/management/commands/changepassword.py,sha256=GHKZIJ2YBzQW4SvqezkjTPj-W7VwNFD1wokko9rFQFI,2581 -django/contrib/auth/management/commands/createsuperuser.py,sha256=be_zrcb9NXycAYTafDW2nTgb8t8ZiS6X1Hx8DNHYEqo,8531 +django/contrib/auth/management/commands/createsuperuser.py,sha256=0y6kMV_35Vq4Vv-IV7wc234Vg6WU9WUGy80wlxsz0p4,8809 django/contrib/auth/migrations/0001_initial.py,sha256=bz7B12K5Ovs0aiXfZGMEbVtWAeV05JyLKDGyMrhCd_c,4960 django/contrib/auth/migrations/0002_alter_permission_name_max_length.py,sha256=xSlhMiUbrVCPMOwmwVNAUgYjZih3t-ieALNm7rQ1OI0,347 django/contrib/auth/migrations/0003_alter_user_email_max_length.py,sha256=bPcpCTPAJV2NgrwEa6WFfxkhbPmj5J-EqU1HM3RXtq0,389 @@ -1300,11 +1302,11 @@ django/contrib/auth/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5 django/contrib/auth/templates/auth/widgets/read_only_password_hash.html,sha256=cMrG-iMsrVQ6Qd6T_Xz21b6WIWhXxaIwgNDW2NpDpuM,185 django/contrib/auth/templates/registration/password_reset_subject.txt,sha256=j8rO05woNdwv8-_F6EMy6FTZGMf-Dp9usdUJXSZHs7Q,124 django/contrib/contenttypes/__init__.py,sha256=OVcoCHYF9hFs-AnFfg2tjmdetuqx9-Zhi9pdGPAgwH4,75 -django/contrib/contenttypes/admin.py,sha256=ktSb2Pj0gFwoxA-gkvSn19l-0qy4WFSFfYYTGYwe7HM,5212 +django/contrib/contenttypes/admin.py,sha256=QeElFtZgIUzCWa1QfLhb9rpb-XZSY-xalx-RNAN5CoQ,5104 django/contrib/contenttypes/apps.py,sha256=lVmnJW7DgIc42uc0V5vZL8qxnsnVijQmgelhs3nybIE,797 django/contrib/contenttypes/checks.py,sha256=ooW997jE1y5goWgO3dzc7tfJt5Z4tJPWRRSG1P1-AcU,1234 -django/contrib/contenttypes/fields.py,sha256=X-VUW7-3ynJvafPujw0pkAgU6xsfONIfiCttw7rTkn8,26607 -django/contrib/contenttypes/forms.py,sha256=9Lk374J-AHUP1P97oTnbTqQrU_Z0NcsqBsILzYco1pU,3557 +django/contrib/contenttypes/fields.py,sha256=3M5XslVL4ersM46S3njBxZxbpiuFeDaG5XnXFBfL8HA,26302 +django/contrib/contenttypes/forms.py,sha256=95tGX_F2KkIjoBTFQcdvraypLz6Fj3LdCLOHx-8gCrQ,3615 django/contrib/contenttypes/models.py,sha256=QX-nY08YMDN5cUqKNFf6G0IVFs9oIeKa8hOIl5jkTjE,6491 django/contrib/contenttypes/views.py,sha256=2IwvlE6KGhDUJMGTFkY6iXShu_jpATDM-kQcc3MDpLU,3634 django/contrib/contenttypes/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 @@ -1482,8 +1484,7 @@ django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.po,sha256=bJp1GCxJ django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=fPIlKpeLGhOtsbLsJOef5d5Y8jCyT9hFiOfZ1v9yFTQ,1083 django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.po,sha256=Jwtnwk0R2c2Kh7KUg0t0GKjQrMO48YUNntbCT6dIHAM,1329 django/contrib/contenttypes/management/__init__.py,sha256=KKf4YWuuvUAOf5l2Xn5zEIR4WHA8vKQ5R5paVfYAPeM,4857 -django/contrib/contenttypes/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py,sha256=2YgWYGPx8YQPbXuyE_iLNUwvPTczlKTSyNlOqAqFCxg,3340 +django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py,sha256=AcUR1Q9_lR_BzouiqiINqe34jZqNsVaKbahnbr9T7RY,3315 django/contrib/contenttypes/migrations/0001_initial.py,sha256=o3bVVr-O_eUNiloAC1z-JIHDoCJQ4ifdA-6DhdVUrp8,1157 django/contrib/contenttypes/migrations/0002_remove_content_type_name.py,sha256=4h1AUWSWAvwfEMAaopJZce-yNj1AVpCYFAk2E-Ur-wM,1103 django/contrib/contenttypes/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 @@ -1502,8 +1503,8 @@ django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo,sha256=G1GCOfhvPoJA5XpI django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po,sha256=ZypIMRzRQA72sV4lVB8RVUtLjcmbqhow97-e20R02uk,2732 django/contrib/flatpages/locale/ast/LC_MESSAGES/django.mo,sha256=4SEsEE2hIZJwQUNs8jDgN6qVynnUYJUIE4w-usHKA6M,924 django/contrib/flatpages/locale/ast/LC_MESSAGES/django.po,sha256=5UlyS59bVo1lccM6ZgdYSgHe9NLt_WeOdXX-swLKubU,1746 -django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo,sha256=sJvplYk3-3shfvnTKzCiCEQGbCa_aFLatZZHtop_4FI,2208 -django/contrib/flatpages/locale/az/LC_MESSAGES/django.po,sha256=Pn2wkV8ks1JO7GJwsfH1VilE4vS6u6Xd0IC2qaKYPwA,2452 +django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo,sha256=_7vXhoLm5K8LuzkNOXK-D0DIP0XFF-EcDM0DPF-BZjI,2235 +django/contrib/flatpages/locale/az/LC_MESSAGES/django.po,sha256=HDo3gW0Pz4L3KZkVJMbFfFKrgMTjXuPAtgBMArsR78I,2496 django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo,sha256=N1snVmwE9oa2Hi_77quF7DhOFJwFNdv07x6pSXF_hKE,2801 django/contrib/flatpages/locale/be/LC_MESSAGES/django.po,sha256=4iBnHyRJ1XkixqUWrmxfMlmKsqyZYhMb3zsI0aLIJwY,2933 django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo,sha256=p3RZmS9PAqdlAmbc7UswSoG0t1eeuXYDp1WZ3mWfFow,2569 @@ -1673,9 +1674,9 @@ django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.po,sha256=GtvYArHRgiE django/contrib/flatpages/migrations/0001_initial.py,sha256=dLSlPpjfc6jMKhxYPsw6yKohxn4ejRXVOJ1VyJf12r4,1710 django/contrib/flatpages/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/flatpages/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/flatpages/templatetags/flatpages.py,sha256=AH29WWZNLWH2B2GMt7cHoN9-Bmxn5k1w9Qi48Uhn-kc,3576 +django/contrib/flatpages/templatetags/flatpages.py,sha256=q0wsGQqXHhSCH4_UR-wHkj_pJsxBOo_liODBT_BZcTc,3561 django/contrib/gis/__init__.py,sha256=GTSQJbKqQkNiljWZylYy_ofRICJeqIkfqmnC9ZdxZ2I,57 -django/contrib/gis/apps.py,sha256=wEquhS1IKyUphVzs9QL4J-94onezMkC5tK_WkrUEa3o,396 +django/contrib/gis/apps.py,sha256=YkIbEk4rWlbN0zZru2uewGsLzqWsMDl7yqA4g_5pT10,341 django/contrib/gis/feeds.py,sha256=vCYhNC7qRvPIPGLw8GnAqi-c1SCwQJlwuBtZ36n7LSY,5733 django/contrib/gis/geometry.py,sha256=sTXZdh3D1UGGDBP-WZ2jvLUVstcJ_2Kn1_PlKJshNDo,677 django/contrib/gis/measure.py,sha256=BLWTkDMMunvaN9lR8QDujmKOxUyhBQKy10Auo0npDaQ,11948 @@ -1689,54 +1690,54 @@ django/contrib/gis/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h django/contrib/gis/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/gis/db/backends/utils.py,sha256=y4q0N0oDplot6dZQIFnjGPqVsTiGyLTmEMt5-xj-2b4,784 django/contrib/gis/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/base/adapter.py,sha256=gzUjdM_lU9pBK3NlrX_Fx1W96TT1cYJdWZjhV7eQZ4s,482 -django/contrib/gis/db/backends/base/features.py,sha256=F4Xhc-OSHsV-IjB2PbcU_DcVmRITXYnOe2xgXOj_iHo,3406 +django/contrib/gis/db/backends/base/adapter.py,sha256=zBcccriBRK9JowhREgLKirkWllHzir0Hw3BkC3koAZs,481 +django/contrib/gis/db/backends/base/features.py,sha256=hz9h_D5BD39M1-uGviOISrPfsCH7ELJL1MYM0HiREyQ,3402 django/contrib/gis/db/backends/base/models.py,sha256=vkDweNsExmKWkHNSae9G6P-fT-SMdIgHZ85i31ihXg0,3962 -django/contrib/gis/db/backends/base/operations.py,sha256=v3jyAGBz8oqtShYzvoYLa8oyWjmKcwl-HQB-usnPT8w,6321 +django/contrib/gis/db/backends/base/operations.py,sha256=I69Yyv0EIBl0GXVfdTqMEqXBBclaj1ZTLcB2QPXGaiw,6363 django/contrib/gis/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/gis/db/backends/mysql/base.py,sha256=rz8tnvXJlY4V6liWxYshuxQE-uTNuKSBogCz_GtXoaY,507 django/contrib/gis/db/backends/mysql/features.py,sha256=zyl131i6rwEqn3prTzMMOgy7AuUfcCCNx4lKj9YmXQ4,756 -django/contrib/gis/db/backends/mysql/introspection.py,sha256=-Ff3nDRI7Rz3Cc33UlD0TgajjNH5rde9u0SKTMwuAUw,1771 -django/contrib/gis/db/backends/mysql/operations.py,sha256=RRD37VSAMHbVoBfU7TA1LI_9x4Wox8Yw_Cw0Evj3tnE,4077 +django/contrib/gis/db/backends/mysql/introspection.py,sha256=_efDbLNzL7BeO7YWJ8siq11pApGAnLZiqGQ-rnZOFLM,1720 +django/contrib/gis/db/backends/mysql/operations.py,sha256=frP6_EgUWNDYTHUh0AhQKWd9g39urFxgOuzvt4Gr_pc,3664 django/contrib/gis/db/backends/mysql/schema.py,sha256=I8eJcKXqiyv15ATHLs5qVsHfWDE07lf0_-iaNdGv0ew,2890 django/contrib/gis/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/gis/db/backends/oracle/adapter.py,sha256=y9ewCXAoQZ4iXCHzf_bsRwSXpCHdK9HJyUZy_1AiA40,1872 django/contrib/gis/db/backends/oracle/base.py,sha256=NQYlEvE4ioobvMd7u2WC7vMtDiRq_KtilGprD6qfJCo,516 django/contrib/gis/db/backends/oracle/features.py,sha256=lHjxvF4bQqlv8VQGgXhCNrfnDgbUUm6GwjYeva4HKMc,420 -django/contrib/gis/db/backends/oracle/introspection.py,sha256=NrjdXhbXbEtYEYQfohbBlxD1pMlhmcW44S_z_ZL09Ns,1839 +django/contrib/gis/db/backends/oracle/introspection.py,sha256=0mikP0QbOsM4Fm2hHXU9iWv23ds13UXXcuzgFkhRxDs,1788 django/contrib/gis/db/backends/oracle/models.py,sha256=qn2TayTuC67MD7gEZo954DKa5ddB9CNS4rTkXkdXo8E,2084 -django/contrib/gis/db/backends/oracle/operations.py,sha256=wMg1U6JAJga-n_16Ht-CCsngxi4I2xnozNao8ye25oE,8269 +django/contrib/gis/db/backends/oracle/operations.py,sha256=qmFi5i0YtYA5sh-q5bq4htMZuRVil9bEoBn_n829m8Q,8287 django/contrib/gis/db/backends/oracle/schema.py,sha256=wnb56CJ9Er40E4Yw7RK1hOOYZAHRJJFbNGNK9E9IHRk,3916 django/contrib/gis/db/backends/postgis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/postgis/adapter.py,sha256=Qa1z5H2p2iDegEmuQDH_yUR8sbmYvg1S51F7BArng7g,2154 +django/contrib/gis/db/backends/postgis/adapter.py,sha256=jDa5X2uIj6qRpgJ8DUfEkWBZETMifyxqDtnkA73kUu8,2117 django/contrib/gis/db/backends/postgis/base.py,sha256=sFCNoMHRzd-a_MRc9hv-tyVHEODmGveyIopbP6CTPCg,937 django/contrib/gis/db/backends/postgis/const.py,sha256=a536866Z3EPWtcjYUXewOe0QjyfFIhxRTk_tFmRu1NA,1484 django/contrib/gis/db/backends/postgis/features.py,sha256=iBZqX6o1YBrmw5pSUYeft-ga6FGa05J-9ADFNsRtLgk,422 -django/contrib/gis/db/backends/postgis/introspection.py,sha256=EMl6H0OOQzzKLMKDOuMQXwaxo6S0JMQ4WRmynFcmxEA,5410 +django/contrib/gis/db/backends/postgis/introspection.py,sha256=I5Kf14nZKew-NWFAPo-rRkJ85Qg_NDNEEwByEH9xrcA,4388 django/contrib/gis/db/backends/postgis/models.py,sha256=EE3RLh8ywcJ7NAYhPAQbORChwsgntssvDqXkLxDGR2A,1962 -django/contrib/gis/db/backends/postgis/operations.py,sha256=r0RfufIz-seq2JPpzdiz_lEy5Jrw9wYrL9dMbkpnPqA,15946 -django/contrib/gis/db/backends/postgis/pgraster.py,sha256=xo7S1sR_xaaUGCZOcZlNriSLb_Rw7yTkPHgcy-9o7Xo,4586 +django/contrib/gis/db/backends/postgis/operations.py,sha256=8EZGVc1g-3Z16BOGfJ6VCGQ692g6Zl2-IAliQPQYzio,16069 +django/contrib/gis/db/backends/postgis/pgraster.py,sha256=_XKNfncFbEPgeiHCfkZmQv8rjnCNN0r90pa4DZSOW00,4444 django/contrib/gis/db/backends/postgis/schema.py,sha256=8OLvoGWRnm8WNhVzfd_4hk58I_IErPMdvswL2D4DG2I,2647 django/contrib/gis/db/backends/spatialite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/gis/db/backends/spatialite/adapter.py,sha256=y74p_UEgLtoYjNZEi72mwcJOh_b-MzJ7sZd68WJXBiY,317 -django/contrib/gis/db/backends/spatialite/base.py,sha256=UeWmlPtr1VUZgogPV-S-poAds4hgcGcrAhIBzery3f4,2875 +django/contrib/gis/db/backends/spatialite/base.py,sha256=RtSD7_XWsjbOzNwQGs4hPaTeYKgINJeM8p2nWOwBg70,2769 django/contrib/gis/db/backends/spatialite/client.py,sha256=NsqD2vAnfjqn_FbQnCQeAqbGyZf9oa6gl7EPsMTPf8c,138 -django/contrib/gis/db/backends/spatialite/features.py,sha256=UcNZz6Pn5ULxxafA35EqapaopfrG1A77LDfadKUuwX0,783 -django/contrib/gis/db/backends/spatialite/introspection.py,sha256=hfvLrbpXfCJaEHnajPR4UNS69bHL_WGvQi6s0vYsy0A,3169 +django/contrib/gis/db/backends/spatialite/features.py,sha256=HeeWFDRGxkgfTQ_ryzEKzRxJPnf5BJVs0ifYs8SEIXU,449 +django/contrib/gis/db/backends/spatialite/introspection.py,sha256=CvQfKqV-pOR7S21XYKLKvnV5pys3F5X2SxI0hPpUqiQ,3054 django/contrib/gis/db/backends/spatialite/models.py,sha256=Im-NSbDbUMjvZgZpABrOMuKqmygbcKxTZv0k1YZf1gE,1890 -django/contrib/gis/db/backends/spatialite/operations.py,sha256=nnET48MGuG6ZP2YUVJaVYvlEtdNbm-MTjvuCPIO-BGY,8309 +django/contrib/gis/db/backends/spatialite/operations.py,sha256=Cdn6JFUgdBYaMxyT6AOuOl318PwZn-AnETfYkFkRumw,8247 django/contrib/gis/db/backends/spatialite/schema.py,sha256=WLvCcCOqdTcBmsjaBNt15YwVzE05vXzQVvfGva6q1Xo,6838 django/contrib/gis/db/models/__init__.py,sha256=BR3kQAefIv4O1NksiVCUShwlSO4OCNoUGan6dCRGIyU,817 django/contrib/gis/db/models/aggregates.py,sha256=6pu08PWnXFhFe2yWOoaBKVk87pcIm5LSKSlIlM3hJ24,2583 -django/contrib/gis/db/models/fields.py,sha256=dXgNMhVzzoqMxrTv8lOb-7yxBVX-jr1CzxzuKk9gRFQ,13514 -django/contrib/gis/db/models/functions.py,sha256=1mpm9lPWFUmZoF1EsFYKQJlYPql6R8n5TiDG7R6giJo,16264 -django/contrib/gis/db/models/lookups.py,sha256=vmQVxVe62O0hcTIsd-03bQl2R7JdwYx6Fzz4MMKa7g8,10878 -django/contrib/gis/db/models/proxy.py,sha256=F_y7gVePcxpywNxMMEzS0A_t4LCbkhfrOllQZ0ZDPgU,3172 +django/contrib/gis/db/models/fields.py,sha256=BuSdf3KDBsGti8fnCG_HP54I_JqyU_1nfccYjfVGmcU,13496 +django/contrib/gis/db/models/functions.py,sha256=d9CkzZHx56U4n9GxIO1kqdmg9LSKNucAJGieNqZCkqU,16627 +django/contrib/gis/db/models/lookups.py,sha256=yleGLXa0oLkYrH4QgFV3d5zgzgmCpU2DIi3J_Th2DmQ,10849 +django/contrib/gis/db/models/proxy.py,sha256=uO-35A6mMrritgzfrZvDfEe2w7TX9BsnhYJ7KMjvilI,3163 django/contrib/gis/db/models/sql/__init__.py,sha256=oYJYL-5DAO-DIcpIQ7Jmeq_cuKapRB83V1KLVIs_5iU,139 django/contrib/gis/db/models/sql/conversion.py,sha256=gG1mTUWb33YK_Uf1ZJRg5MRhkCTLtgajD3xxi7thODA,2400 django/contrib/gis/forms/__init__.py,sha256=fREam1OSkDWr9ugUMNZMFn8Y9TufpRCn3Glj14DTMbQ,298 django/contrib/gis/forms/fields.py,sha256=1BTX2i2tqpLEIGjnjhZwmlpuYPH_v6a84PixcXOcxKA,4314 -django/contrib/gis/forms/widgets.py,sha256=-5N3m4ilhs0HjNmYWwqF4WiJtt07X0swU_lyn1wPIBw,3851 +django/contrib/gis/forms/widgets.py,sha256=J8EMJkmHrGkZVqf6ktIwZbO8lYmg63CJQbUYILVsVNc,3739 django/contrib/gis/gdal/LICENSE,sha256=VwoEWoNyts1qAOMOuv6OPo38Cn_j1O8sxfFtQZ62Ous,1526 django/contrib/gis/gdal/__init__.py,sha256=Zs9bOGm9RStYhhlWCnqRNChJG4K_oWDPRXYylplur1Q,1760 django/contrib/gis/gdal/base.py,sha256=yymyL0vZRMBfiFUzrehvaeaunIxMH5ucGjPRfKj-rAo,181 @@ -1746,7 +1747,7 @@ django/contrib/gis/gdal/envelope.py,sha256=ZsX4QPtg60yVl5MMjc_mbolnbA0lWWV-85ZW4 django/contrib/gis/gdal/error.py,sha256=WNtvm0k-Msbo5pW2rO1_5fDvLRqoF8D5ka9UC6hfclM,1575 django/contrib/gis/gdal/feature.py,sha256=41qBdM1bVmKh4W-5QO6-3mrEbyL-1lCEGgclsOIJAzg,3927 django/contrib/gis/gdal/field.py,sha256=64_BJ1SyJXqByVPiQB2HU6_5KiPSe2IE-5Wq4heKbEo,6699 -django/contrib/gis/gdal/geometries.py,sha256=tvtVLuW-W23tlp-rGGj4Fx6aNqFNxDqr2hAlAjdjO2Y,24515 +django/contrib/gis/gdal/geometries.py,sha256=QKkhyVWx3fwJt-lIw7cjzOPjIg7cC56AXlkyHXR5ZvI,24357 django/contrib/gis/gdal/geomtype.py,sha256=wV9vW9lalMtMSEja161xMdZVqmaf6rR-PC2GdzeIwMs,3175 django/contrib/gis/gdal/layer.py,sha256=NeFb78T4O8KBuAUfMdR2t-tK5UO4GCCSGd3ZY5Temyo,8537 django/contrib/gis/gdal/libgdal.py,sha256=H0sugVJuTEPvjJZ2S3SUjZOs_9yn4Yq5FDYV4UNOEhw,3612 @@ -1759,13 +1760,13 @@ django/contrib/gis/gdal/prototypes/geom.py,sha256=ELRO7bR8RxO3HIuxtitr06yhsG4DxY django/contrib/gis/gdal/prototypes/raster.py,sha256=aXOXg3B_NcFt4AoX6sDSr0u_yEvhWPF2D00qhxCFnzc,5763 django/contrib/gis/gdal/prototypes/srs.py,sha256=yzAqWOFjP626Kovwd1HOlJuWcT3kuLCFq_PCVNN7Gaw,3540 django/contrib/gis/gdal/raster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/gdal/raster/band.py,sha256=jGoWznyK-4MYElT3KpuUTyWjGmv_Eou_c76BqBXMMR4,8304 -django/contrib/gis/gdal/raster/base.py,sha256=VJk16KfArc2SbTjRK3iLuFmzXW1B7VUSctG0Jc6m4Vg,3014 +django/contrib/gis/gdal/raster/band.py,sha256=xY3OCQzLIgHTJSYghDdmpV7ZW7aHEW4w_Z5kd4fI9TA,8249 +django/contrib/gis/gdal/raster/base.py,sha256=5aVYFfPikni3CX21c7N6tFtfhwvBY4CMnfuCiEIALMg,3002 django/contrib/gis/gdal/raster/const.py,sha256=D976ENrWFWdoH1fS5DuyhcS8ix7zJB8UIu4_NvEJtgI,2889 -django/contrib/gis/gdal/raster/source.py,sha256=3URK_Vp9VsObLWLDB5tT59XVAUs-pBUsJrojeD6fdJE,16854 +django/contrib/gis/gdal/raster/source.py,sha256=_rOAFGeuxkm0q9qyfOsX6P80ikwtSkvcy8wQZU-kBaI,16634 django/contrib/gis/geoip2/__init__.py,sha256=uIUWQyMsbSrYL-oVqFsmhqQkYGrh7pHLIVvIM3W_EG4,822 -django/contrib/gis/geoip2/base.py,sha256=BuT-N9PuRqjuP8kohfKxvnft-nI7J7orPzLrOUDF2qE,9033 -django/contrib/gis/geoip2/resources.py,sha256=UFle7-6gOKg-En5z_uaO3VzlUmhGoSxWsy_hbIh-tjQ,651 +django/contrib/gis/geoip2/base.py,sha256=rz8KYyxRuWBBrWIU2OXoQsFm7mj43vHc9VsBkiHi4ZY,9074 +django/contrib/gis/geoip2/resources.py,sha256=YlldCGQe_U-J90znMdAEQ0SxWIkfZvkuD7uSGKHVcG8,748 django/contrib/gis/geos/LICENSE,sha256=CL8kt1USOK4yUpUkVCWxyuua0PQvni0wPHs1NQJjIEU,1530 django/contrib/gis/geos/__init__.py,sha256=DXFaljVp6gf-E0XAbfO1JnYjPYSDfGZQ2VLtGYBcUZQ,648 django/contrib/gis/geos/base.py,sha256=NdlFg5l9akvDp87aqzh9dk0A3ZH2TI3cOq10mmmuHBk,181 @@ -1773,32 +1774,32 @@ django/contrib/gis/geos/collections.py,sha256=OHpBZoruCk_rySBZ4gpEA2ZWLODFCHwkOy django/contrib/gis/geos/coordseq.py,sha256=cMGg3XPm2x3VYjkYys8rojRG7uzMez8FpOr2HD-Jy8Q,6419 django/contrib/gis/geos/error.py,sha256=r3SNTnwDBI6HtuyL3mQ_iEEeKlOqqqdkHnhNoUkMohw,104 django/contrib/gis/geos/factory.py,sha256=f6u2m1AtmYYHk_KrIC9fxt7VGsJokJVoSWEx-DkPWx0,961 -django/contrib/gis/geos/geometry.py,sha256=Gbz_K0_QMluq69V-wxp2AQwScueIz5K5bBgxkLXY__g,24845 +django/contrib/gis/geos/geometry.py,sha256=WjN1Tw0aZVpx4wKwrwWtvEvJdvgL-QnEqxlZSM1vXbI,25378 django/contrib/gis/geos/io.py,sha256=Om5DBSlttixUc3WQAGZDhzPdb5JTe82728oImIj_l3k,787 django/contrib/gis/geos/libgeos.py,sha256=AtMP5GPGgjPPQzgzk8G-fxDFWlhd7e-LWR4idA3dXh8,5127 -django/contrib/gis/geos/linestring.py,sha256=xBs4p9osA_zUK6xCdgg_nBLBmbvZ_Qxa7aZ8T5ao0vs,5960 +django/contrib/gis/geos/linestring.py,sha256=6CctplhRZKi8UvK-B2kJGRZySVsonUJwieQ8S0kxj6U,5935 django/contrib/gis/geos/mutable_list.py,sha256=_dHOe_CF9jQGv0UFbKUwSqLWcl4EQBFLJ0wtO8cf5Y4,10489 django/contrib/gis/geos/point.py,sha256=vBBmdajc7GXisTdRDriHEJRc0irjNJsTF8qDtHr5o4U,4443 -django/contrib/gis/geos/polygon.py,sha256=qYVaXi9rxs3yUQH-z2Kqr4vw5Pjd-HneTa7iB6r-86c,6691 +django/contrib/gis/geos/polygon.py,sha256=itel_uGvDQxrhYD5VsQt_jFHyWB0XgDW4xkwq8f3KiI,6685 django/contrib/gis/geos/prepared.py,sha256=rJf35HOTxPrrk_yA-YR9bQlL_pPDKecuhwZlcww8lxY,1575 django/contrib/gis/geos/prototypes/__init__.py,sha256=0jfLanLmI1q-3NIpdIZr3EHnMzhPRXMhbCNIHf3glfI,1221 -django/contrib/gis/geos/prototypes/coordseq.py,sha256=jd8jmxXbhZjNmWRad9917ar8ozDIih-EnFvmamgLxm0,2989 +django/contrib/gis/geos/prototypes/coordseq.py,sha256=Cq7HqMVXt8F-0C1cOfYfkapHY0t5ZNu9v7h7_YLD5mo,2993 django/contrib/gis/geos/prototypes/errcheck.py,sha256=YTUBFoHU5pZOAamBPgogFymDswgnMr1_KL59sZfInYo,2654 django/contrib/gis/geos/prototypes/geom.py,sha256=FoWEduMbbWb6_blM2IJOP_WkYCVISLksuXOaFAL_9c8,3565 -django/contrib/gis/geos/prototypes/io.py,sha256=Rxzgg_SeZcO55XP2pKCD3X4Ilqrh-6YU-Q1hKkigSxk,11221 +django/contrib/gis/geos/prototypes/io.py,sha256=PnWSFLrw_JPdjafR_OeVh6LqJgLjcBVFKRBT3J8z1yY,11195 django/contrib/gis/geos/prototypes/misc.py,sha256=7Xwk0HG__JtPt6wJD-ieMkD-7KxpnofYrHSk6NEUeJo,1161 django/contrib/gis/geos/prototypes/predicates.py,sha256=Ya06ir7LZQBSUypB05iv9gpvZowOSLIKa4fhCnhZuYY,1587 django/contrib/gis/geos/prototypes/prepared.py,sha256=SC7g9_vvsW_ty7LKqlMzJfF9v3EvsJX9-j3kpSeCRfY,1184 -django/contrib/gis/geos/prototypes/threadsafe.py,sha256=mMS57uRZmYrsWluD4Y8Sej5gH7IFiGCHjERfQMsE6Ak,2389 -django/contrib/gis/geos/prototypes/topology.py,sha256=AD9s3yytjEaF6YZpa7nBufZlxaC7lM8q7GfXaEWRvxY,2139 +django/contrib/gis/geos/prototypes/threadsafe.py,sha256=Ll_TmpfJhRTmWV5dgKJx_Dh67ay1pa-SdlH558NRPw4,2309 +django/contrib/gis/geos/prototypes/topology.py,sha256=wd0OxkUQiMNioDXpJdRc1h9swsZ2CeOgqMvHxqJFY5s,2256 django/contrib/gis/locale/af/LC_MESSAGES/django.mo,sha256=TN3GddZjlqXnhK8UKLlMoMIXNw2szzj7BeRjoKjsR5c,470 django/contrib/gis/locale/af/LC_MESSAGES/django.po,sha256=XPdXaQsZ6yDPxF3jVMEI4bli_5jrEawoO-8DHMk8Q_A,1478 django/contrib/gis/locale/ar/LC_MESSAGES/django.mo,sha256=q0DhiLoyS8WBktN150bvtusd885p2E7e23VMFAqJPj0,2428 django/contrib/gis/locale/ar/LC_MESSAGES/django.po,sha256=rnZPCzub0GRmC3FwmfyhATesLcm4yTRNr8jDSvM9wBQ,2639 django/contrib/gis/locale/ast/LC_MESSAGES/django.mo,sha256=8o0Us4wR14bdv1M5oBeczYC4oW5uKnycWrj1-lMIqV4,850 django/contrib/gis/locale/ast/LC_MESSAGES/django.po,sha256=0beyFcBkBOUNvPP45iqewTNv2ExvCPvDYwpafCJY5QM,1684 -django/contrib/gis/locale/az/LC_MESSAGES/django.mo,sha256=Fa4dVabHbnYIaJNor3mac1dXOHEEiO2MN9LqGe-r5kg,1211 -django/contrib/gis/locale/az/LC_MESSAGES/django.po,sha256=Xj1cR_yGYeqHDiNU-UVoWjVevwAfT7bOTj5Cbbx49pk,1801 +django/contrib/gis/locale/az/LC_MESSAGES/django.mo,sha256=i52TIQuWn72ykTPYSRfBgqeJ254hhGt8LvBQHtXCWMg,2013 +django/contrib/gis/locale/az/LC_MESSAGES/django.po,sha256=tXdeAVGebIVd-K1c5ANtQaba5ll_ELIseJdpqC3UUCE,2163 django/contrib/gis/locale/be/LC_MESSAGES/django.mo,sha256=ySlqE1WXTqM5DGsE_fEF5pipbyqj4A10SZgvQlFAyKc,2488 django/contrib/gis/locale/be/LC_MESSAGES/django.po,sha256=HzR5MKPYfc-xeRnb0oPIi9OLa-iA86_IbbM3Poj8h_k,2651 django/contrib/gis/locale/bg/LC_MESSAGES/django.mo,sha256=1A5wo7PLz0uWsNMHv_affxjNnBsY3UQNz7zHszu56do,2452 @@ -1905,8 +1906,8 @@ django/contrib/gis/locale/mn/LC_MESSAGES/django.mo,sha256=-Nn70s2On94C-jmSZwTppW django/contrib/gis/locale/mn/LC_MESSAGES/django.po,sha256=I0ZHocPlRYrogJtzEGVPsWWHpoVEa7e2KYP9Ystlj60,2770 django/contrib/gis/locale/mr/LC_MESSAGES/django.mo,sha256=sO2E__g61S0p5I6aEwnoAsA3epxv7_Jn55TyF0PZCUA,468 django/contrib/gis/locale/mr/LC_MESSAGES/django.po,sha256=McWaLXfWmYTDeeDbIOrV80gwnv07KCtNIt0OXW_v7vw,1476 -django/contrib/gis/locale/my/LC_MESSAGES/django.mo,sha256=i6JlVxP_finJ6vMVsv_csixtZa1qGs3ezVJZDIsE7G8,461 -django/contrib/gis/locale/my/LC_MESSAGES/django.po,sha256=eqtpOzHodtyr15aVOVVMtirg6XSUm6n7BsQpSIZ6D2k,1469 +django/contrib/gis/locale/my/LC_MESSAGES/django.mo,sha256=e6G8VbCCthUjV6tV6PRCy_ZzsXyZ-1OYjbYZIEShbXI,525 +django/contrib/gis/locale/my/LC_MESSAGES/django.po,sha256=R3v1S-904f8FWSVGHe822sWrOJI6cNJIk93-K7_E_1c,1580 django/contrib/gis/locale/nb/LC_MESSAGES/django.mo,sha256=AmVS8gbKlqYHpr-v2UdOuYt17wO2WMhVJzfDWX6Tl78,1930 django/contrib/gis/locale/nb/LC_MESSAGES/django.po,sha256=psdNBDn8IvOyAChU7NqUKIOIssUocfQKSsXnt-89fd8,2146 django/contrib/gis/locale/ne/LC_MESSAGES/django.mo,sha256=nB-Ta8w57S6hIAhAdWZjDT0Dg6JYGbAt5FofIhJT7k8,982 @@ -1935,8 +1936,8 @@ django/contrib/gis/locale/sl/LC_MESSAGES/django.mo,sha256=9-efMT2MoEMa5-SApGWTRi django/contrib/gis/locale/sl/LC_MESSAGES/django.po,sha256=foZY7N5QkuAQS7nc3CdnJerCPk-lhSb1xZqU11pNGNo,2303 django/contrib/gis/locale/sq/LC_MESSAGES/django.mo,sha256=LVdXsubPRVA-1-VeEJEWoGoAWR9kK072boRKaqzyb28,1918 django/contrib/gis/locale/sq/LC_MESSAGES/django.po,sha256=PFeGnVwfzGcFRm2SCV8-iB5z9TVwyN66qz5X9NClQkQ,2148 -django/contrib/gis/locale/sr/LC_MESSAGES/django.mo,sha256=SuHuwU54Rxweb8lkw7RjlS2ipvxWMQeBUk8OGyzFlUE,1778 -django/contrib/gis/locale/sr/LC_MESSAGES/django.po,sha256=k-cWF8JVf_2b-tp1u9uGROQk9f75mRMTtmyZNsRyKYw,2319 +django/contrib/gis/locale/sr/LC_MESSAGES/django.mo,sha256=J20yLH-sD2a2KGFqN3GDdJPISOS7YMe9K6UR9ZXlbl4,2442 +django/contrib/gis/locale/sr/LC_MESSAGES/django.po,sha256=cw89jyImmFqspzFVcnkncUNYAH_j3ozId-Ou2lc0L6U,2682 django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=i-pBCBcNZMz-3rRcQEJrXZLmPHF7YtIEJnzcsAzgma8,1470 django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po,sha256=MpcOTqw1HiPzr7IikrEwm63x4ypUv9BnQCOKYSjqL0A,2009 django/contrib/gis/locale/sv/LC_MESSAGES/django.mo,sha256=6TDgv3FdLP-BvB5BszCB7JcNzk2oDLXxuAkXgg7tYRY,1733 @@ -1965,8 +1966,6 @@ django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=rjeFyj0X_v3qP8NHY django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.po,sha256=GFZzUTmlQXZ1pDhwaYgH9_Lr8OQp9s402jHfHmX9Jso,2245 django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=SRSpoSMtx8PDTpHroMUymZ_-Eu7zzjqPDBiAm3XSV2I,2012 django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.po,sha256=b6NQK1--AC67NiUaOew_ajDIj5uSrPzW_rUpLU71yA8,2277 -django/contrib/gis/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/gis/management/commands/inspectdb.py,sha256=Z2Do56mM2tBvnujnCk5C7JhI3z_LQWB4L0M626hmumk,750 django/contrib/gis/management/commands/ogrinspect.py,sha256=Vv-MAfE0uNieJF6W9gQ4TO-IHCCQvL1qAU7lyEK4izk,5848 django/contrib/gis/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 @@ -1981,7 +1980,7 @@ django/contrib/gis/static/gis/img/draw_point_off.svg,sha256=PICrywZPwuBkaQAKxR9n django/contrib/gis/static/gis/img/draw_point_on.svg,sha256=raGk3oc8w87rJfLdtZ4nIXJyU3OChCcTd4oH-XAMmmM,803 django/contrib/gis/static/gis/img/draw_polygon_off.svg,sha256=gnVmjeZE2jOvjfyx7mhazMDBXJ6KtSDrV9f0nSzkv3A,981 django/contrib/gis/static/gis/img/draw_polygon_on.svg,sha256=ybJ9Ww7-bsojKQJtjErLd2cCOgrIzyqgIR9QNhH_ZfA,982 -django/contrib/gis/static/gis/js/OLMapWidget.js,sha256=-Ry6ICBpsfq3XoAU2SshQeCyMuaGd1ZlgPgHapgKFWU,8981 +django/contrib/gis/static/gis/js/OLMapWidget.js,sha256=VCC3BqFJSkcJtOKgf998WA2QLDUTeqYxr46gPzCjE9w,8961 django/contrib/gis/templates/gis/openlayers-osm.html,sha256=TeiUqCjt73W8Hgrp_6zAtk_ZMBxskNN6KHSmnJ1-GD4,378 django/contrib/gis/templates/gis/openlayers.html,sha256=P_sBibtZ8ybiBG6dtYbVhRgDYJE-oKYPzl452xad5Ok,1912 django/contrib/gis/templates/gis/admin/openlayers.html,sha256=GsjT4sNA-2iHRe7PJKsBIGDEAa29vGXwFNNACowj1lw,1867 @@ -1994,7 +1993,7 @@ django/contrib/gis/utils/__init__.py,sha256=OmngSNhywEjrNKGXysMlq_iFYvx7ycDWojpC django/contrib/gis/utils/layermapping.py,sha256=rvQRfEa5lBrnXKMPjyrG5NmiV3Au_6YwJvdU7YgCePQ,27125 django/contrib/gis/utils/ogrinfo.py,sha256=VmbxQ5Ri4zjtTxNymuxJp3t3cAntUC83YBMp9PuMMSU,1934 django/contrib/gis/utils/ogrinspect.py,sha256=DEitGcJBpsFKWjHzFwQQukIuwBR90n2-NTKt0vYU-VY,8935 -django/contrib/gis/utils/srs.py,sha256=SIVPj3MmKhp-C9IPdM6o5KRRdj38fYIpmo-FjzrwBCM,3024 +django/contrib/gis/utils/srs.py,sha256=4O1pQ-D0k3scCaz58Cl1Rl1iT2ASao7DHsgvkY31M0w,3011 django/contrib/humanize/__init__.py,sha256=88gkwJxqbRpmigRG0Gu3GNQkXGtTNpica4nf3go-_cI,67 django/contrib/humanize/apps.py,sha256=ODfDrSH8m3y3xYlyIIwm7DZmrNcoYKG2K8l5mU64V7g,194 django/contrib/humanize/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 @@ -2017,30 +2016,30 @@ django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo,sha256=1-RNRHPgZR_9UyiEn django/contrib/humanize/locale/bs/LC_MESSAGES/django.po,sha256=M017Iu3hyXmINZkhCmn2he-FB8rQ7rXN0KRkWgrp7LI,5498 django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo,sha256=U3wnUZ-xwFZsYCd2Brr3rPVMVlatpnuXRYMCHYtB240,4040 django/contrib/humanize/locale/ca/LC_MESSAGES/django.po,sha256=YgPF3fjBFqj4wmZ1r0I4sS9fRv65my9so4fjyfGbH6o,6025 -django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo,sha256=SsuK8dcYBRPs2_sT8Xnbq2k5swS4Sm1XUsdIQFXl0W0,4706 -django/contrib/humanize/locale/cs/LC_MESSAGES/django.po,sha256=olnH60vKAYaPcP2vYomYuA8q8iJnr2BqdpNIcErIx0k,6976 +django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo,sha256=Fr7-yH-FrHf7RKv3SYsDpa-56GcCchaolYhxlMVyuVQ,6846 +django/contrib/humanize/locale/cs/LC_MESSAGES/django.po,sha256=lfQ1tt7_fhpvtfJy7lmVaMX6mvdFOnO8KWFAF94VNbA,11582 django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo,sha256=VjJiaUUhvX9tjOEe6x2Bdp7scvZirVcUsA4-iE2-ElQ,5241 django/contrib/humanize/locale/cy/LC_MESSAGES/django.po,sha256=sylmceSq-NPvtr_FjklQXoBAfueKu7hrjEpMAsVbQC4,7813 -django/contrib/humanize/locale/da/LC_MESSAGES/django.mo,sha256=J2fWZWpFuD0XvGi5B8cm3-xrDqAHk2Qlfz-Ciwblvr8,4108 -django/contrib/humanize/locale/da/LC_MESSAGES/django.po,sha256=MwloOPiuBPv1DAC12FEqTOHZWkFkpl5jc8naP_BLvk8,6120 -django/contrib/humanize/locale/de/LC_MESSAGES/django.mo,sha256=ZDdNGQvTBkJDDoT1Bq9XxEMpxs4sFY10wuOfSvlTeoQ,4152 -django/contrib/humanize/locale/de/LC_MESSAGES/django.po,sha256=N_Tl5t0zQYGS7iWNIi68TSrA8-Nvv0oJ38nbz64p1wE,6118 -django/contrib/humanize/locale/dsb/LC_MESSAGES/django.mo,sha256=wD8ibBn17MzmF1HjqqksgFUsSwjUdS_JSOWlAQGK34g,5467 -django/contrib/humanize/locale/dsb/LC_MESSAGES/django.po,sha256=YTU1ebIY0g5RSlZowpHwSQtGpxeVOXLIFHNLUm5QvVY,8033 +django/contrib/humanize/locale/da/LC_MESSAGES/django.mo,sha256=BXydfI-OWLN-K4udBT5oeDeOWwKtrMn8pcj4qRf_wKg,5339 +django/contrib/humanize/locale/da/LC_MESSAGES/django.po,sha256=R3obxY6dlgrWRxf9uRGcKlGWTxr7DcuZFg9N5SOU8tI,9154 +django/contrib/humanize/locale/de/LC_MESSAGES/django.mo,sha256=j2IfSs4MY9Np1awSVoQHwEOWuF-YqazHWOwE_fBk2YM,4669 +django/contrib/humanize/locale/de/LC_MESSAGES/django.po,sha256=_b5rxv57_AvX5SZqHK0SmnUu2hYB4lnhDr4CNA87pd4,6993 +django/contrib/humanize/locale/dsb/LC_MESSAGES/django.mo,sha256=-ujGv80xC02W3svo2UHZUXQ5dR9Jz7Y-aIpqWmcrerI,7036 +django/contrib/humanize/locale/dsb/LC_MESSAGES/django.po,sha256=4Rxzt2SJkywoCOsxEAxyfpZSUdWrIBg1w_LInXXnqc8,11693 django/contrib/humanize/locale/el/LC_MESSAGES/django.mo,sha256=xibi0Bv45kBRYEyFnkgNFf0InnGJyv9KQIWDlfj7LUM,5350 django/contrib/humanize/locale/el/LC_MESSAGES/django.po,sha256=WW9fqED-lBmgvt6UfGTo-B_KGn_OQXRUSHEUZPXbn9g,7428 django/contrib/humanize/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/humanize/locale/en/LC_MESSAGES/django.po,sha256=2ykg4liEm0g1uv0iZlDXvIZQOvrT3AxMhgnm1QfTy5Y,7085 +django/contrib/humanize/locale/en/LC_MESSAGES/django.po,sha256=Iqb0XS0sZvkuEV5-GmxMkPMo5i0yJzVDkxXzlLRr2ZU,10744 django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.po,sha256=dVOlMtk3-d-KrNLM5Rji-Xrk6Y_n801ofjGQvxSu67M,4742 django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo,sha256=mkx192XQM3tt1xYG8EOacMfa-BvgzYCbSsJQsWZGeAo,3461 django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po,sha256=MArKzXxY1104jxaq3kvDZs2WzOGYxicfJxFKsLzFavw,5801 -django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo,sha256=Htv0o1DV8no2MfC8M-lfl8HPGZc6HIVxMGIjVSwmyy8,4107 -django/contrib/humanize/locale/eo/LC_MESSAGES/django.po,sha256=FFtvhZULWsOgl0XSEBngqs3BRp_l7WUiRcXDzbP7K1w,6016 +django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo,sha256=S6JRxaHEtmRiOAhGykR6ywsOtQja-vNrHbZiH4iayCk,5386 +django/contrib/humanize/locale/eo/LC_MESSAGES/django.po,sha256=9rnZwSXCBm6HqtO1dmkfoIqGzAhbgt0yzfXZwLqSi6k,9098 django/contrib/humanize/locale/es/LC_MESSAGES/django.mo,sha256=0aram7l_JemTmkw04jdlWXh1DOlmPWQD7_O3srdOP6o,4183 django/contrib/humanize/locale/es/LC_MESSAGES/django.po,sha256=bOM7KA6NTTwRGbR1o0o-5JrXM_mOIIPGxASwtoTl_9o,6306 -django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo,sha256=J_GRAcxrsRqeVJIPcA16DeDPWuh8EAzX6UW4ncv8yFI,4254 -django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po,sha256=LgnGvLxoWS2hh7_26pTpyCKtkcmqUWGaYrvLn2pqgWU,6270 +django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo,sha256=ZKBGQ4j6FHfKes-4SIABGnJ8szNWIIFzK8I16qdtD04,5502 +django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po,sha256=8nCRacJE5D7AVlNXRkfkMs6s_cE3GtbmGkQC31Npkyo,9363 django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.mo,sha256=2GhQNtNOjK5mTov5RvnuJFTYbdoGBkDGLxzvJ8Vsrfs,4203 django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.po,sha256=JBf2fHO8jWi6dFdgZhstKXwyot_qT3iJBixQZc3l330,6326 django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo,sha256=82DL2ztdq10X5RIceshK1nO99DW5628ZIjaN8Xzp9ok,3939 @@ -2051,18 +2050,18 @@ django/contrib/humanize/locale/et/LC_MESSAGES/django.mo,sha256=WBBZ7Uk5nL-Z6qfYQ django/contrib/humanize/locale/et/LC_MESSAGES/django.po,sha256=n_nuAVBjwJd-RZXrbINpxubHetNJijvg5NJRUmECmGc,6213 django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo,sha256=pw2s1xZV8yS4QaKCS-qq6aihFDGObWcKjPSVLcgqN-E,4041 django/contrib/humanize/locale/eu/LC_MESSAGES/django.po,sha256=LoWxuo_7aXHEAIJRu4S9rKqdvnXr4VMOqHjMd70OnA0,6119 -django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo,sha256=zQlQmEyZ0ErUlfLg62AqOf5w8EnbgTw5VpuOEBQlGXo,3754 -django/contrib/humanize/locale/fa/LC_MESSAGES/django.po,sha256=iF8fvnzRtCx_HYOZhXbXu10T9R6jc7ZmvKItAicFWEg,5538 +django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo,sha256=DoYDzLeXjwqSQ1uv727FXpZh3cKhVMG-g-KxdA8HD70,5808 +django/contrib/humanize/locale/fa/LC_MESSAGES/django.po,sha256=SEnstPQwYHovFwQvF_PwYmJ_ad_wFdkwzcQLIsstSrY,9778 django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo,sha256=qlx3w4Y0CNcC5rIrbig_sqCvKAwh_IS-YseoQX3zymc,4177 django/contrib/humanize/locale/fi/LC_MESSAGES/django.po,sha256=6xTZvvC_VxAyAQpUibJUDu4V2Gdryy8vJc2OviaYNnw,6180 -django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo,sha256=PFCsv1q5W_Y5-2cHfyle9bQyLMz_IxnI3q99kJ7L038,4174 -django/contrib/humanize/locale/fr/LC_MESSAGES/django.po,sha256=TFedN6WujsxMXJpevuHLM7xhoeeMT7fIAlo91b5o8lk,6178 +django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo,sha256=dgdU-1GhfodIDTELyCCLfEwIkq7C4mqISE2BiETFLP8,5510 +django/contrib/humanize/locale/fr/LC_MESSAGES/django.po,sha256=JIr4EQsomqgUYig9iHDI07ir0u6faCawHi4AlqLNIRU,9317 django/contrib/humanize/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 django/contrib/humanize/locale/fy/LC_MESSAGES/django.po,sha256=pPvcGgBWiZwQ5yh30OlYs-YZUd_XsFro71T9wErVv0M,4732 django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo,sha256=vzp6R9xVQ6KRr5NMSkVCQfDea6ZvdoFiOuenzSHyZmI,4929 django/contrib/humanize/locale/ga/LC_MESSAGES/django.po,sha256=fKw4frizXXcH-B9TKdFQXeoBhSodgraE_g37yuwXTHs,8304 -django/contrib/humanize/locale/gd/LC_MESSAGES/django.mo,sha256=ZMkrFR1irolryUIAZNb4XTpv1f0HRFK70VVNulqE2lI,5545 -django/contrib/humanize/locale/gd/LC_MESSAGES/django.po,sha256=OS7umBbdKJjPvA39Zn38MkdOAPtyLKz8MNmgN2Pwsms,8086 +django/contrib/humanize/locale/gd/LC_MESSAGES/django.mo,sha256=2xWLdpuE471W20KkvWSx2f0I5EDWraCnShxv9og12_c,7232 +django/contrib/humanize/locale/gd/LC_MESSAGES/django.po,sha256=mj5nBx18gT-rgcZTnonLSIAQ1Dz6vCynbf0uto34CBM,11877 django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo,sha256=ChoVHsJ_bVIaHtHxhxuUK99Zu1tvRu0iY5vhtB1LDMg,3474 django/contrib/humanize/locale/gl/LC_MESSAGES/django.po,sha256=U5D505aBKEdg80BGWddcwWuzmYdoNHx1WEPzVHQfbTE,5903 django/contrib/humanize/locale/he/LC_MESSAGES/django.mo,sha256=9jTg6s4yQ4f4idhWe8oGDxuQ5P-agqWxAxbv06n_klU,4525 @@ -2071,24 +2070,24 @@ django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo,sha256=qrzm-6vXIUsxA7nOx django/contrib/humanize/locale/hi/LC_MESSAGES/django.po,sha256=BrypbKaQGOyY_Gl1-aHXiBVlRqrbSjGfZ2OK8omj_9M,6527 django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo,sha256=29XTvFJHex31hbu2qsOfl5kOusz-zls9eqlxtvw_H0s,1274 django/contrib/humanize/locale/hr/LC_MESSAGES/django.po,sha256=OuEH4fJE6Fk-s0BMqoxxdlUAtndvvKK7N8Iy-9BP3qA,5424 -django/contrib/humanize/locale/hsb/LC_MESSAGES/django.mo,sha256=aQsAoaJWWQ9XMl5MS8hLXJh1jh1at0ar8RwFq9K6Usw,5530 -django/contrib/humanize/locale/hsb/LC_MESSAGES/django.po,sha256=LpEwVdqV3JsobMp_yEUGBgAY5Wxep1mZtoivYTD4mnQ,8096 -django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo,sha256=-DeFtfmzqaT_H5ZkORSFshsQQIP9roBcLM2Ug7yQ4no,4086 -django/contrib/humanize/locale/hu/LC_MESSAGES/django.po,sha256=6vGKFvNDvijsgNEJcMJ2VTCEvIynq2QqT3-WU4lYUsI,6062 +django/contrib/humanize/locale/hsb/LC_MESSAGES/django.mo,sha256=-LW8Eh8G66zaPxtotLfQUk4kN41g-06VKL9nsp1Wsck,7146 +django/contrib/humanize/locale/hsb/LC_MESSAGES/django.po,sha256=TpQoQAbF6N35PM1qb5o5hms8ulpgRad4YBmGk8aI2Yk,11803 +django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo,sha256=Jupi8AHfDUwWcAw_fRv3CUYlKBqx4LbFoKrohsY4jnw,5348 +django/contrib/humanize/locale/hu/LC_MESSAGES/django.po,sha256=bNHdDSrI_x3w8SaZX1b7P-9QwCUKgrB49vriGQeckFc,9127 django/contrib/humanize/locale/hy/LC_MESSAGES/django.mo,sha256=bIhc8KbvaJystkLcJfZt5vJdQ4uL2XfXyuVEIbZP59c,1058 django/contrib/humanize/locale/hy/LC_MESSAGES/django.po,sha256=EpFGmcz_Wt-kFQmXtV_OVUJDrhiz3WkciHgLeDboUEs,4860 django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo,sha256=d0m-FddFnKp08fQYQSC9Wr6M4THVU7ibt3zkIpx_Y_A,4167 django/contrib/humanize/locale/ia/LC_MESSAGES/django.po,sha256=qX6fAZyn54hmtTU62oJcHF8p4QcYnoO2ZNczVjvjOeE,6067 -django/contrib/humanize/locale/id/LC_MESSAGES/django.mo,sha256=F1JT8OXmLl8XkhOnlHdv0HTeIv1yMalwWdklh2EDdXA,3553 -django/contrib/humanize/locale/id/LC_MESSAGES/django.po,sha256=8CMXZfWpMh8y_MPfZOlW4cylctUuSeKkiDYhk-Nr6zU,5284 +django/contrib/humanize/locale/id/LC_MESSAGES/django.mo,sha256=T5pVIyFQtRdbBxZ5kW15NnsJQV2W0sgb9ltncyORJog,4665 +django/contrib/humanize/locale/id/LC_MESSAGES/django.po,sha256=fQSJprf0UF3FYGA7i_vWbZ7PX5bhH7pJaH1JAWvr9NI,8055 django/contrib/humanize/locale/io/LC_MESSAGES/django.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 django/contrib/humanize/locale/io/LC_MESSAGES/django.po,sha256=RUs8JkpT0toKOLwdv1oCbcBP298EOk02dkdNSJiC-_A,4720 -django/contrib/humanize/locale/is/LC_MESSAGES/django.mo,sha256=xc_nb854oMBP_bcFq-3aYUHjBgau18XsxbmS7tnSOb0,3586 -django/contrib/humanize/locale/is/LC_MESSAGES/django.po,sha256=GgWsXviADjyKEHQ99jXhQBeSaIUF45HCMOm-IVChT1k,6027 -django/contrib/humanize/locale/it/LC_MESSAGES/django.mo,sha256=NstBWl50Vp62dm8AP2GmLNABjkTu4o4vzwVHYFn-YmQ,4690 -django/contrib/humanize/locale/it/LC_MESSAGES/django.po,sha256=SMBC53O2Ze4N1RbIgxxAH9eZ5YvjyPIoz0kal6p7aus,6877 -django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo,sha256=Z712qDg5UNqsCOJukUk6JQVjrjlegE4vkEfSBLWjZco,3678 -django/contrib/humanize/locale/ja/LC_MESSAGES/django.po,sha256=M64-U-_x1PWYPsVWCpNKtYyhSCLHuxB1Lqt4y4VW-K4,5323 +django/contrib/humanize/locale/is/LC_MESSAGES/django.mo,sha256=D6ElUYj8rODRsZwlJlH0QyBSM44sVmuBCNoEkwPVxko,3805 +django/contrib/humanize/locale/is/LC_MESSAGES/django.po,sha256=1VddvtkhsK_5wmpYIqEFqFOo-NxIBnL9wwW74Tw9pbw,8863 +django/contrib/humanize/locale/it/LC_MESSAGES/django.mo,sha256=E-83rstHy_gscbdEHm_77HqH2IkIJA8ZcqWe_GD4Wco,5981 +django/contrib/humanize/locale/it/LC_MESSAGES/django.po,sha256=0dF-NRmW2fetk5DHkZEmpiZyLQ2JyvFlDs5EXxXMz9s,10049 +django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo,sha256=XYV-llqoZAazu_idchujnUdGpfAa8mZDMUG1xo3CmE4,4840 +django/contrib/humanize/locale/ja/LC_MESSAGES/django.po,sha256=kjCkSQHFZ4jUDc6rxRvPM6OczUVCe1timYSyI0isujI,8144 django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo,sha256=I_5NXFxdCGnJKI29_h3OgemK9KulPiv0P60qEQjdra8,4139 django/contrib/humanize/locale/ka/LC_MESSAGES/django.po,sha256=wUMRbhz5wpw-Rn8WepMIyADzgOUD7RLu3WxAW6t93p4,5740 django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo,sha256=uP7HkHrdX0b7z2MsxSuHyDGBFYxZPckBhSbgrn7gcok,2106 @@ -2097,14 +2096,14 @@ django/contrib/humanize/locale/km/LC_MESSAGES/django.mo,sha256=mfXs9p8VokORs6JqI django/contrib/humanize/locale/km/LC_MESSAGES/django.po,sha256=JQBEHtcy-hrV_GVWIjvUJyOf3dZ5jUzzN8DUTAbHKUg,4351 django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo,sha256=Oq3DIPjgCqkn8VZMb6ael7T8fQ7LnWobPPAZKQSFHl4,461 django/contrib/humanize/locale/kn/LC_MESSAGES/django.po,sha256=yrXx6TInsxjnyJfhl8sXTLmYedd2jaAku9L_38CKR5A,4353 -django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo,sha256=zNjlVckSQWWpGBMdgp0LNBxosfnlaP8Z0J-20jyWNLE,3673 -django/contrib/humanize/locale/ko/LC_MESSAGES/django.po,sha256=lprgxAY85u1w0ZceHZsnEoZ3WiRxEr8ciU9K9MQyKTE,5344 +django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo,sha256=O0WB715-2iTi2CRmfq5wAayBIIHat_w6S3MNjH_p3CM,3781 +django/contrib/humanize/locale/ko/LC_MESSAGES/django.po,sha256=ZcV04OEJdRQvmrECQ9K_CbWzG-kuB5I7UrVTdMoMA2A,8014 django/contrib/humanize/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 django/contrib/humanize/locale/lb/LC_MESSAGES/django.po,sha256=_y0QFS5Kzx6uhwOnzmoHtCrbufMrhaTLsHD0LfMqtcM,4730 -django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo,sha256=5Iy5CNukpm6h8oIP9xNvXP5kLCp9nfJKyN3qYkFCWas,5036 -django/contrib/humanize/locale/lt/LC_MESSAGES/django.po,sha256=shVVrEuZNDFRQzR8RabtVOf5fOZDJitGFeLV_SawPVQ,7321 -django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo,sha256=ZjMj_0KJke8TwheDUrXIZ5IPlMd22nZBVo739aK5cQU,4848 -django/contrib/humanize/locale/lv/LC_MESSAGES/django.po,sha256=htt4OY9m2zjsW5T_ckINDUSkW4ju91FN00rDePOXs3w,7234 +django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo,sha256=9S3Fx2Es10uMIVooheEH3HZaKqXju2gUE-uVLgCEwe8,7374 +django/contrib/humanize/locale/lt/LC_MESSAGES/django.po,sha256=ZnsyLaRbhaSk0zNl6qZkKKlDVWJ6M_a3cIuGqUNVS28,12089 +django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo,sha256=dFrXeAiw976Zi2fWwdPigyo3rieo8yrhN54dYZChIQE,6252 +django/contrib/humanize/locale/lv/LC_MESSAGES/django.po,sha256=24-3dJTQeiqzf3wKAQggC7rZq3q67e9ltCyXhEYSJw4,10575 django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo,sha256=htUgd6rcaeRPDf6UrEb18onz-Ayltw9LTvWRgEkXm08,4761 django/contrib/humanize/locale/mk/LC_MESSAGES/django.po,sha256=Wl9Rt8j8WA_0jyxKCswIovSiCQD-ZWFYXbhFsCUKIWo,6665 django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo,sha256=QcVVfN27E0YIc_pdCJthRXo_iDizt36qkElzHuOGYsk,5077 @@ -2115,8 +2114,8 @@ django/contrib/humanize/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk django/contrib/humanize/locale/mr/LC_MESSAGES/django.po,sha256=M44sYiBJ7woVZZlDO8rPDQmS_Lz6pDTCajdheyxtdaI,4724 django/contrib/humanize/locale/my/LC_MESSAGES/django.mo,sha256=55CWHz34sy9k6TfOeVI9GYvE9GRa3pjSRE6DSPk9uQ8,3479 django/contrib/humanize/locale/my/LC_MESSAGES/django.po,sha256=jCiDhSqARfqKcMLEHJd-Xe6zo3Uc9QpiCh3BbAAA5UE,5433 -django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo,sha256=E5s-_ssH4NicLXQpzv-yVjXhZNV_w0M53trqY8CvcAc,4133 -django/contrib/humanize/locale/nb/LC_MESSAGES/django.po,sha256=vEXWpyGxQeB0kLgjBXc_uSfVay9G8kQT4ZgiPp_vW-c,6084 +django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo,sha256=5ia28xUNmXT5gsLVJ1A9v1UHZJnFTe7i7lwraUO2jvs,5358 +django/contrib/humanize/locale/nb/LC_MESSAGES/django.po,sha256=_FE2vx5v7eLXzNQ-4qvxA-ia8AJrilcJyQXZ38I9IUU,9137 django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo,sha256=OR0cBS_sNftLjHBLtQkRsA_SOxlc41G83vBGCvYaG2I,2285 django/contrib/humanize/locale/ne/LC_MESSAGES/django.po,sha256=t9ukUPhAxkNlLlAMI2ftMUATPBS29UQ7q76WN2rjBWA,5544 django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo,sha256=MrUWmjHP-PnKHOVw9sv_lY9Zc9C7gc7_Q-pvMv-v_ck,4092 @@ -2127,24 +2126,24 @@ django/contrib/humanize/locale/os/LC_MESSAGES/django.mo,sha256=BwS3Mj7z_Fg5s7Qm- django/contrib/humanize/locale/os/LC_MESSAGES/django.po,sha256=CGrxyL5l-5HexruOc7QDyRbum7piADf-nY8zjDP9wVM,6212 django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo,sha256=TH1GkAhaVVLk2jrcqAmdxZprWyikAX6qMP0eIlr2tWM,1569 django/contrib/humanize/locale/pa/LC_MESSAGES/django.po,sha256=_7oP0Hn-IU7IPLv_Qxg_wstLEdhgWNBBTCWYwSycMb0,5200 -django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo,sha256=LDdQZOQCF8mP_zYa9V-92yzwveCWTNNfDProLGv1twc,5529 -django/contrib/humanize/locale/pl/LC_MESSAGES/django.po,sha256=F4kNtZQzHDszLbqq8HnqkpPmhJz8jcEC5Bunm5PzTKU,8321 +django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo,sha256=uz0OAv0VFNcf09x0nN2EBDiX248ZrtGSz_6jhBgY6H0,7018 +django/contrib/humanize/locale/pl/LC_MESSAGES/django.po,sha256=3y6Net6u3PvYyTsvliLG_2dEI-3utPW9UG6gFmf2DZ0,11936 django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo,sha256=DdrToaq5E5Kap-zxhG8wf8zbAc8HZg1lu-2SD9i1i0Y,4154 django/contrib/humanize/locale/pt/LC_MESSAGES/django.po,sha256=Jea815CpFnPMEUwW9bxGrFXhchmspQADY6_Yw3oajtY,6175 -django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo,sha256=YIcwaSVUZsZA7Ewy1hnx0GlsNBSAcP-OuG596Js5XYU,4209 -django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po,sha256=Ohofjmm5KL5cVMEx6RaOGAINUK8i0TibNqxmKor2Opo,6284 -django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo,sha256=DEGe-uMxn0J32A-4Oxymv_B9ijMzqu1SCL2tx887oxc,4809 -django/contrib/humanize/locale/ro/LC_MESSAGES/django.po,sha256=4QeGoZoQ48-J0BeWhTf4EPrtLMNvCBrxnOxbxEprZVU,7192 -django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo,sha256=iSO02s7aCtRW9B3e8CioHFCfaBC1SsMlOhVs-cWX2XE,6887 -django/contrib/humanize/locale/ru/LC_MESSAGES/django.po,sha256=5AXIQgGoyaHVSLW81HTKrCpegh80FZL4NnIwe3iUxGw,9697 +django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo,sha256=3z_3ZGZ2SreaAFfGvy2AoFQTY5i2QRF5ULG1PX5yMEI,5425 +django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po,sha256=mLx4DN42xH3MPcVGRGlumI4LJ-rmFr81XQveJx6FlZ0,9340 +django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo,sha256=NcQde9eakJYiI4R3wE2R4ek9iq0p9OmHVktiJGdfmXM,6229 +django/contrib/humanize/locale/ro/LC_MESSAGES/django.po,sha256=lYA7q6-qiISsf-SpH40QB92Fyr3QXd05sPHN4bzyubM,10578 +django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo,sha256=MM_vEyGwicNov45lc1uhatfgHRhTIy7e7HsNU8-hFlc,7859 +django/contrib/humanize/locale/ru/LC_MESSAGES/django.po,sha256=w2DUtEqLJfHR7cHgmCl_FAAQ4oo2KwRSM1l0aw12Z00,13433 django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo,sha256=U4iWXostWL1gUvrIbalfqhYjhL0mvlig3mlD1DU8_m8,4762 django/contrib/humanize/locale/sk/LC_MESSAGES/django.po,sha256=kJUNxtiRawS2QtJqNRq2UtlRwF58kTH_fqPu1pD7t9M,7112 django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo,sha256=f_07etc_G4OdYiUBKPkPqKm2iINqXoNsHUi3alUBgeo,5430 django/contrib/humanize/locale/sl/LC_MESSAGES/django.po,sha256=mleF0fvn0oEfszhGLoaQkWofTwZJurKrJlIH8o-6kAI,8166 -django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo,sha256=CRP5lgqDsEGndO2njVsrzz3teaHui_tcXxT2E-x-_pE,4126 -django/contrib/humanize/locale/sq/LC_MESSAGES/django.po,sha256=48tIBBQaneqtWnvldp113UVTYQ6LcDVGmGZJMW1EzvM,6083 -django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo,sha256=4xTHr6LdV97Iy4Lcer3_CAEi2Xi7pJZwqxPYVxa5bjI,5680 -django/contrib/humanize/locale/sr/LC_MESSAGES/django.po,sha256=W9700j2ut14Q_ew6xU_IHHpmmvwiHOrMbbFrCPixV1M,7915 +django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo,sha256=XBcBAc6zMMOy-Qx3OlV5rxnt1-dZxj16QHtpyGDWfDk,4912 +django/contrib/humanize/locale/sq/LC_MESSAGES/django.po,sha256=tMkJRa5hOBjH91p3j2VuoFFLIn3lxrm7G7vAT1OLrT8,9085 +django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo,sha256=_YudgsUlnmAqspuuHFh2pMZ8H7SCEqm6UZ7-U7-kCnI,7246 +django/contrib/humanize/locale/sr/LC_MESSAGES/django.po,sha256=8AvdR2SIuIPbqndDWZrB0DHaWGAEGtgSCy3HG2J1AXQ,11423 django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=PaGxGtTZSzguwipvTdOhO7bvM8WlzCWb1RCEaIupRUQ,562 django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po,sha256=FrPnMu6xX0NypoRYRAOBhdICGSv8geuHXQKKn3Gd9ck,5185 django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo,sha256=BwB7K9qfHGNIdP65Pa70lTZRSdhkX5F4eoAZLOtaVSk,4097 @@ -2157,8 +2156,8 @@ django/contrib/humanize/locale/te/LC_MESSAGES/django.mo,sha256=iKd4dW9tan8xPxgaS django/contrib/humanize/locale/te/LC_MESSAGES/django.po,sha256=FQdjWKMsiv-qehYZ4AtN9iKRf8Rifzcm5TZzMkQVfQI,5103 django/contrib/humanize/locale/th/LC_MESSAGES/django.mo,sha256=wg--ON3KI_VvonwNy04eSkKQSGVz89IJF8Kf41WBWzo,3922 django/contrib/humanize/locale/th/LC_MESSAGES/django.po,sha256=qrDqW3DS1yxUIdUqMKRHygg2kcUXyx3nZuNxsx11tcg,5689 -django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo,sha256=feX8ZCE3GJqnN71FLVcLesBuERKmi9Uutj3ebW27Nns,4109 -django/contrib/humanize/locale/tr/LC_MESSAGES/django.po,sha256=g0bK25v2vJgzRTS3XeohzEohWwysrLFuECj0GE4WpBA,6154 +django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo,sha256=IpHLnlAZ-gp6WUFSu_LJLMZqmqZqTXRtBRPcnaU_3fQ,5304 +django/contrib/humanize/locale/tr/LC_MESSAGES/django.po,sha256=FroATMApIsS1UfhjQl7NPG0QgmXXkHZU7JjOd4jaEhM,9163 django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo,sha256=z8VgtMhlfyDo7bERDfrDmcYV5aqOeBY7LDgqa5DRxDM,3243 django/contrib/humanize/locale/tt/LC_MESSAGES/django.po,sha256=j_tRbg1hzLBFAmPQt0HoN-_WzWFtA07PloCkqhvNkcY,5201 django/contrib/humanize/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 @@ -2174,44 +2173,45 @@ django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.po,sha256=gGuUfdDHyxX7 django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=MXoemB7iwj3zMOZfPxRi9rc_1xsYZKPpGerwZjbM2m8,3314 django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.po,sha256=RSmQwPspRIe0U15m4zYz7x8VAiXHp6z55oLXxk9yFKE,5130 django/contrib/humanize/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/humanize/templatetags/humanize.py,sha256=eafUdDGaq8YJEZ0OoWO_0tlxDfpQ2iJ6lRPUqoih4z0,9288 +django/contrib/humanize/templatetags/humanize.py,sha256=lRKGLkY0kuqgQxJNeGa7VBdiqshh8ixDcXq5IKhgMec,11961 django/contrib/messages/__init__.py,sha256=Sjt2mgia8vqSpISrs67N27rAXgvqR-MPq37VB-nmSvE,174 django/contrib/messages/api.py,sha256=sWP2DP-n8ZWOTM-BLFDGrH_l-voGwrSxC0OgEyJt1F4,3071 django/contrib/messages/apps.py,sha256=yGXBKfV5WF_ElcPbX4wJjXq6jzp39ttnO7sp8N_IzOQ,194 django/contrib/messages/constants.py,sha256=WZxjzvEoKI7mgChSFp_g9e-zUH8r6JLhu9sFsftTGNA,312 django/contrib/messages/context_processors.py,sha256=0LniZjxZ7Fx2BxYdJ0tcruhG4kkBEEhsc7Urcf31NnE,354 django/contrib/messages/middleware.py,sha256=4L-bzgSjTw-Kgh8Wg8MOqkJPyilaxyXi_jH1UpP1h-U,986 -django/contrib/messages/utils.py,sha256=wvGHYnU9zocxzwIEkFgo5deHxZ5aDlAY7q2MpyOPLFk,284 +django/contrib/messages/utils.py,sha256=6PzAryJ0e6oOwtSAMrjAIsYGu_nWIpgMG0p8f_rzOrg,256 django/contrib/messages/views.py,sha256=R5xD2DLmAO0x6EGpE8TX5bku4zioOiYkQnAtf6r-VAE,523 django/contrib/messages/storage/__init__.py,sha256=gXDHbQ9KgQdfhYOla9Qj59_SlE9WURQiKzIA0cFH0DQ,392 django/contrib/messages/storage/base.py,sha256=SyLyVQeRdmPvVt9SO4srCdIb0m2oBu1H_iOx40M48BM,5643 -django/contrib/messages/storage/cookie.py,sha256=CTDV2dYgm_DQsnkY8nZOO6gLYanYTCQ9Z05xm1XUyxY,6463 -django/contrib/messages/storage/fallback.py,sha256=irMgvzx5RgSaZLOPHR_pS5wCwK6HY7ABvOAzDk7Hhno,2145 +django/contrib/messages/storage/cookie.py,sha256=vAvUYBznSRY2ztfeZe5a38yuq1a11LGkDchs3c3AwME,6532 +django/contrib/messages/storage/fallback.py,sha256=IbyyZg8cTU-19ZeRg6LndLfRK0SoevDwqKtrqzhVp6c,2095 django/contrib/messages/storage/session.py,sha256=KTAqur1KMJUc-liD-I0mVDYbafMS23zxZfnFz4XPiiU,1729 django/contrib/postgres/__init__.py,sha256=jtn9-mwOISc5D_YUoQ5z_3sN4bEPNxBOCDzbGNag_mc,67 django/contrib/postgres/apps.py,sha256=4rTTwfGmSsLoiMBgT7PLmx7ROSaas18tkZp0n2rcjwk,1602 django/contrib/postgres/functions.py,sha256=zHeAyKR5MhnsIGI5qbtmRdxPm8OtycEBE5OmCNyynD8,252 -django/contrib/postgres/indexes.py,sha256=y5Lb_DDiRBXKO2B6RgiS4IaHNhj5u3Ai3wnHISO6kwQ,3623 -django/contrib/postgres/lookups.py,sha256=p-1NZhB4kXC1e-lvJTDHh2Qpiz7A4W7TuG9NuvdF_4Y,1578 +django/contrib/postgres/indexes.py,sha256=qsWfm-uEZYWu3tv5_Hn70hlXbn2gw7vcaArS04RgS84,3567 +django/contrib/postgres/lookups.py,sha256=CIzOtQhabWI5_GERU95REYVA5wzhimdz9hpGXtKpW08,1901 django/contrib/postgres/operations.py,sha256=R8jm7u9K5dPvdbmsSvCO95x8oI7LSat01CeXtPUzL5c,2010 django/contrib/postgres/search.py,sha256=h5Ri5X0aha29YMMfLM1OKq7rrKWeSTidHzXFhRIYV-Q,8295 django/contrib/postgres/signals.py,sha256=MmUklgaTW1-UBMGQTxNO_1fsO7mZugGs9ScovuCIyJo,2245 -django/contrib/postgres/utils.py,sha256=46XKNKRB1aUUU7ALNiDLrZpPWbAwanxUxuTir7XDuDI,1188 -django/contrib/postgres/validators.py,sha256=h1d2Sw-gU3hfkgXNjjIf5TUDSjTeY-2xBQD1N3zj7GQ,2688 +django/contrib/postgres/utils.py,sha256=gBGBmAYMKLkB6nyaRgx5Yz_00bXaOA6BDK9koiE-_co,1187 +django/contrib/postgres/validators.py,sha256=CA_iygE2q3o8tXlQ9JfMYxoO6HDJk3D0PIcmGrahwdI,2675 django/contrib/postgres/aggregates/__init__.py,sha256=QCznqMKqPbpraxSi1Y8-B7_MYlL42F1kEWZ1HeLgTKs,65 -django/contrib/postgres/aggregates/general.py,sha256=nRA1EiUk9_H9IDu1M5mxLm48Nl2S4L9l_SrCfBBlBis,1481 +django/contrib/postgres/aggregates/general.py,sha256=WZqSs7XcnRW4iXIJ7oib3aoLPrHCEOLh-K_EDBJpseU,1603 django/contrib/postgres/aggregates/statistics.py,sha256=NWyxMgDsfQ3f5yvqAcxJ13LayjGkRPj90wVJa4k7QdM,1691 django/contrib/postgres/fields/__init__.py,sha256=Xo8wuWPwVNOkKY-EwV9U1zusQ2DjMXXtL7_8R_xAi5s,148 -django/contrib/postgres/fields/array.py,sha256=h3JPunEEF7VgrLi48DBDiYCRXni14LtiLOXRM5QvBMU,10220 +django/contrib/postgres/fields/array.py,sha256=4_ygF8Bw0vBHSlyKJ_NnY_ZTshVZNnVpGvbjmM1dYo0,10291 django/contrib/postgres/fields/citext.py,sha256=G40UZv4zop8Zrq2vMhluZ-MT7yPLEc8IEDi3hZ27gGw,439 -django/contrib/postgres/fields/hstore.py,sha256=sXoTtghueLtLl7dlVXFKSj7km3G_ZV9zVau_6Q4F-3w,3144 -django/contrib/postgres/fields/jsonb.py,sha256=8Mt9v2dGV1Pi2r8ux5ttwwbg9W-uHe7tg3B2DZcgoDw,5603 +django/contrib/postgres/fields/hstore.py,sha256=oZdUXSAy3MpZ3vZSU6eKWDnwRGQopFGvGUco_qOlMNg,3209 +django/contrib/postgres/fields/jsonb.py,sha256=FmmkGq9Z08fXZnWCS3Ize8ndvIOGAAcMyKxqWyxYliw,5736 +django/contrib/postgres/fields/mixins.py,sha256=eYtXzR2ec8J8564b-eaUsE17UO_AIkqrlKD-p0GlTGo,986 django/contrib/postgres/fields/ranges.py,sha256=ozBEsZjvGQGWOZTN8VupDMVL19mHLXMyWZpESVgzWC0,7565 django/contrib/postgres/fields/utils.py,sha256=TV-Aj9VpBb13I2iuziSDURttZtz355XakxXnFwvtGio,95 django/contrib/postgres/forms/__init__.py,sha256=GSqucR50I9jrZUYZUFVmb8nV_FSlXu1BcCpFck2pVXI,118 -django/contrib/postgres/forms/array.py,sha256=7TU7UZr8hcbzbOyfh8rg79okSPctxrD-zFDsIv1Cvq0,7083 -django/contrib/postgres/forms/hstore.py,sha256=G2s-SO0VGK4oUgP8uNYopU5FM6143tfF814qpWKNTLE,1756 -django/contrib/postgres/forms/jsonb.py,sha256=JSDIyLVREKtesUGNmznxX06NqAFEBR0lCrlHMogNfic,1335 +django/contrib/postgres/forms/array.py,sha256=3Hp4Q9JSziuaie2c0KLH-Z7RHs3t0MgbicsjnLIxV2k,7413 +django/contrib/postgres/forms/hstore.py,sha256=f7PJ41fsd8D7cvyJG-_ugslM-hXL7qnZPdx08UZQNXY,1766 +django/contrib/postgres/forms/jsonb.py,sha256=1tRmaNUvH8ITxGSAtg0bIUwPzgLW-8o1sRgsbCIV1ek,1729 django/contrib/postgres/forms/ranges.py,sha256=_LWXysT2AdvgSsAtNyPxHP0hgTolsQoUOCLWT7KukoA,3069 django/contrib/postgres/jinja2/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 django/contrib/postgres/locale/ar/LC_MESSAGES/django.mo,sha256=AFcSJOhEOAWVIXw9q7FoyyT9G1ufw530IG2GwOYNOJw,4416 @@ -2222,24 +2222,24 @@ django/contrib/postgres/locale/bg/LC_MESSAGES/django.mo,sha256=7VaGqc8TO0NVL-eZb django/contrib/postgres/locale/bg/LC_MESSAGES/django.po,sha256=9S2pgIZFOv3qp0QunLFUfPiNk40RZjHIiVA39Uj3zFs,4010 django/contrib/postgres/locale/ca/LC_MESSAGES/django.mo,sha256=FpOKL9S0AWN5r2epnr7SdDX6VmwjBrHNGCSisxjw6H0,3167 django/contrib/postgres/locale/ca/LC_MESSAGES/django.po,sha256=O3JMTA3jFpV0oV3GPpBSDsv98KBe6MDXJCO1c50VjiQ,3577 -django/contrib/postgres/locale/cs/LC_MESSAGES/django.mo,sha256=6G4wVJb4F3mon_Kbu4NH_BI3ODcfuu7XKVWB5sQa6zo,3454 -django/contrib/postgres/locale/cs/LC_MESSAGES/django.po,sha256=DhYZaWynWF0LsfucNUMoL-LbRWQnX7QPEqnQdF0ggeA,3887 -django/contrib/postgres/locale/da/LC_MESSAGES/django.mo,sha256=lTWGoAM4SCEn1UWK8fw1qyW8AwB4U6SW9LdWjs5Z1D8,3168 -django/contrib/postgres/locale/da/LC_MESSAGES/django.po,sha256=9syIhFzERg9Kojmz-QXYzm4F1F4UnPps79XwMx6p31M,3559 +django/contrib/postgres/locale/cs/LC_MESSAGES/django.mo,sha256=SGSzVScCYcVeQPQYsKKLv_k9hmxt_nZGwpebGqa_e5g,3686 +django/contrib/postgres/locale/cs/LC_MESSAGES/django.po,sha256=SgmCLIHUXIUl8zkonXynj_MyHXsOmqpYGbE3N5YQ80M,4158 +django/contrib/postgres/locale/da/LC_MESSAGES/django.mo,sha256=JHKBvq-wN9YvR3GF5TWjdzRYDJCENRrdld_bfoMf_L0,3167 +django/contrib/postgres/locale/da/LC_MESSAGES/django.po,sha256=fUR3Edxifn3OeeccpxyycqgSRwOQgbLFkqEtZQBQMjo,3558 django/contrib/postgres/locale/de/LC_MESSAGES/django.mo,sha256=1K356glWEevm4oteYtUKV1Loh1fpAjjlrFgF9yfwjcI,3275 django/contrib/postgres/locale/de/LC_MESSAGES/django.po,sha256=MXPu492vKgQLLHngr6m2d08YUNAcwz01e3h9GxfbvIE,3723 -django/contrib/postgres/locale/dsb/LC_MESSAGES/django.mo,sha256=TPK-iwbKFpXnPtct5K13cTbdFSxHHyAUlS4U9nVysZI,3856 -django/contrib/postgres/locale/dsb/LC_MESSAGES/django.po,sha256=FiSOY82p0UWnkXS05BeEQ5Uzhs74ZlNaxFIMMSRGpVo,4289 +django/contrib/postgres/locale/dsb/LC_MESSAGES/django.mo,sha256=1fVpsCGFtvcOtjM7nkTq3mPAHeFKUt7iafEbeU126NY,3853 +django/contrib/postgres/locale/dsb/LC_MESSAGES/django.po,sha256=czUFqMMzMa6ie50w6mVekNaFLNoY4wPsyIt3zRHQ3Z0,4286 django/contrib/postgres/locale/el/LC_MESSAGES/django.mo,sha256=kHjTGVK-3Y06GyjqRBi5_Ki_epzPUYt7zQKpukUOwFo,3918 django/contrib/postgres/locale/el/LC_MESSAGES/django.po,sha256=VP82YDf9x1EmSOVmBY7zkgQcX7EfQQZFUpeRV3dtHtk,4407 django/contrib/postgres/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/postgres/locale/en/LC_MESSAGES/django.po,sha256=IfHN0MYCktjtf0jKfyb4I1oEU9fqhCyqS4X4qZr2lDs,3131 +django/contrib/postgres/locale/en/LC_MESSAGES/django.po,sha256=V559m1IltKecaNYnowZ3e1iIFNFKeO949YVUPjOwvUw,3130 django/contrib/postgres/locale/eo/LC_MESSAGES/django.mo,sha256=N1T-nA1IdhKKDbZ76nV968OSMMbteXwwBdhzRi3taWs,3149 django/contrib/postgres/locale/eo/LC_MESSAGES/django.po,sha256=KJbhFGHiJI2chKO9BytzpzRvlSsBvkNqoxP1N0okdko,3528 django/contrib/postgres/locale/es/LC_MESSAGES/django.mo,sha256=9tNVeSpK1jUt7V2qZyKwbJbfJl3vH2Sy_3Y2GkvLnSY,3177 django/contrib/postgres/locale/es/LC_MESSAGES/django.po,sha256=9N3ZeiyEZ7_DIgskPFIAIoEGLAGhiPMJdR-SHftisOo,3688 -django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.mo,sha256=NbkQzNZxVjBSH6NmFhvKxtU1FJzlbSjNTaq53Ml5WKQ,3173 -django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.po,sha256=0jrDzJ2PbzuKxBKlpUtEXLMsjVTio-CIaHRooYbIuR8,3511 +django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.mo,sha256=7VC-8uU5uphnQOpwhpHUxvE74RQTTsgbByg8MOB27uo,3178 +django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.po,sha256=SfTGSajrsJi2t3mYQif4eN2yP5ifYQVQvKzplgPpfRk,3516 django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.mo,sha256=wmkoFFXblYw1ufz4gcSntO79yq20mHl8hlbj4Hhmcug,2903 django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.po,sha256=Br2Lo11i-EeryGFsRmUWr_PD6_xk8kavVzdwqtR7AuU,3579 django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.mo,sha256=4-c48HNLkDnIIPIBOaIhxoOf4muYRRelX0rR0dVrpAE,882 @@ -2248,74 +2248,76 @@ django/contrib/postgres/locale/et/LC_MESSAGES/django.mo,sha256=_BZuR25C1mzMVR2LT django/contrib/postgres/locale/et/LC_MESSAGES/django.po,sha256=BF6hMf4uD6sFFXBJoudgimwKCj25jlzt7rjK3lg-BFA,3592 django/contrib/postgres/locale/eu/LC_MESSAGES/django.mo,sha256=T7pDulEqODUPdC4sI4w-COAM5nT9C3jbAas8i24l_ms,3139 django/contrib/postgres/locale/eu/LC_MESSAGES/django.po,sha256=OQlFVw0YFSF6s6iG6omYP1ISwevmSmAVSrH1FrqE2G8,3545 -django/contrib/postgres/locale/fa/LC_MESSAGES/django.mo,sha256=TlOdD8SW4sddFi5kAk0p0mvgDuq7SNre4LWZnOxBu9s,3134 -django/contrib/postgres/locale/fa/LC_MESSAGES/django.po,sha256=hE9GISly_L-wxF7CjHDv35GuHLcK8sLsVOpimMmtfHw,3638 +django/contrib/postgres/locale/fa/LC_MESSAGES/django.mo,sha256=0E8pqNUlKTUXSY1o8A1TmMbAE49QZpa5yxqqECJbZ04,3614 +django/contrib/postgres/locale/fa/LC_MESSAGES/django.po,sha256=Zdcp_d3unZ4JnRQdcMIPQVsV9ysal7W1zu_vJsMqJx4,4083 django/contrib/postgres/locale/fi/LC_MESSAGES/django.mo,sha256=eVu4C_rIzT2fQGNbJDEkrQb4pjF00lOPAixxqpYvbhs,3212 django/contrib/postgres/locale/fi/LC_MESSAGES/django.po,sha256=zILj96C-jR-bjBRVVLScZngm7MRA-BtUM4j4IUMNJ48,3555 -django/contrib/postgres/locale/fr/LC_MESSAGES/django.mo,sha256=YomiZJPQJn88dkoaw7oXHGbq3oR3i35KopCGndxu5bY,3394 -django/contrib/postgres/locale/fr/LC_MESSAGES/django.po,sha256=t1fRjfzAQ0Y1nN9vSe5SUsBMw4NZXr_ensyHcOPrDr0,3752 -django/contrib/postgres/locale/gd/LC_MESSAGES/django.mo,sha256=-KqMRc027ysJr0R1rjgM3zJGeJpl8S3IXhmZTTmbrag,3830 -django/contrib/postgres/locale/gd/LC_MESSAGES/django.po,sha256=SflmgOSRvtcVT3ik94Cln-B0-wrkEmtraJUOXaKlGEc,4260 +django/contrib/postgres/locale/fr/LC_MESSAGES/django.mo,sha256=9QUsR8xzL04X48DNJXijH1h0yc7Lw9-rK73-rJKXM5s,3393 +django/contrib/postgres/locale/fr/LC_MESSAGES/django.po,sha256=6iGiT_QRTcMTg9V2pyQsrfHr4pW-GnDirS4N8KJIDAQ,3751 +django/contrib/postgres/locale/gd/LC_MESSAGES/django.mo,sha256=0c_5bWFtIPFkBJ_CbXUt-2BIDxZbjM_tuJ-EqdKGMXc,3828 +django/contrib/postgres/locale/gd/LC_MESSAGES/django.po,sha256=ox1CJI5BZgCNIXHmZMyzXKyE49LoJ54FRCiG6AWp29s,4276 django/contrib/postgres/locale/gl/LC_MESSAGES/django.mo,sha256=YlBrsev1RIUA4Zxbnl_ufkTANki4VM9O42Ge07u5QPc,722 django/contrib/postgres/locale/gl/LC_MESSAGES/django.po,sha256=h4Z-Fdi9o1MG33vCWGMHqSj6dklYy653vGkq81lYeKA,2433 django/contrib/postgres/locale/he/LC_MESSAGES/django.mo,sha256=KTUQ0NyBzsVOp1lEtbAmCaLiDHSf1R9EX_tV14oHm_g,3496 django/contrib/postgres/locale/he/LC_MESSAGES/django.po,sha256=Ea3_H_jUWZLm9q22bcN_ClKkyehTjXAcCujRvgsTav8,3832 django/contrib/postgres/locale/hr/LC_MESSAGES/django.mo,sha256=oIY9TCvkVmv-fGbGs-N2acx5VC3PNzZxWW4FRjWbTUQ,1217 django/contrib/postgres/locale/hr/LC_MESSAGES/django.po,sha256=EnvgxKmz6qBe6cH05CAm0bO5zuXkAOYFnRF5c4LmIRo,2762 -django/contrib/postgres/locale/hsb/LC_MESSAGES/django.mo,sha256=3h5K1tt9ykZjomwtSU3J7XZfF__yAL7RpFRzi0lHFcY,3770 -django/contrib/postgres/locale/hsb/LC_MESSAGES/django.po,sha256=TWUk3s8iDmS4msL0w1gwWpqLDXqfPDA9oq_c4U2PECE,4197 -django/contrib/postgres/locale/hu/LC_MESSAGES/django.mo,sha256=Qe5bXdGZLV0wG8bZhGK1ybGjATkKZ7OHaqEOcbZGcA4,3182 -django/contrib/postgres/locale/hu/LC_MESSAGES/django.po,sha256=puxHgfIWm0Vd3RHp1TnOKnY1mQ1hsDWNJar8NVNsyfk,3591 +django/contrib/postgres/locale/hsb/LC_MESSAGES/django.mo,sha256=Pmzqoa3ajEjxxw8SgGg1MBpnoZm9twhlNPSxgnvMYKQ,3767 +django/contrib/postgres/locale/hsb/LC_MESSAGES/django.po,sha256=-ETxl8oh999zt4VzHAwN4fK7z3BS15k9qIKKOxITu6s,4194 +django/contrib/postgres/locale/hu/LC_MESSAGES/django.mo,sha256=f-PDNBR8UFtXqgLEQ-w1kAUgMwiP8MsQ_m1PosrSKts,3185 +django/contrib/postgres/locale/hu/LC_MESSAGES/django.po,sha256=SUMBKfJPRzlTPXGSkC1iKfL4DNFi_16YW3vkFCDCl5c,3644 django/contrib/postgres/locale/ia/LC_MESSAGES/django.mo,sha256=dnyXX0ii0CFMrI02mZhkCzY66KTFdWXBOlXjo6gP_Ps,758 django/contrib/postgres/locale/ia/LC_MESSAGES/django.po,sha256=jNRfADlv6JldyeezHt_3LXpudpmA-cXr73GIe3aPd6E,2475 -django/contrib/postgres/locale/id/LC_MESSAGES/django.mo,sha256=2HRHOOC--1Rvm2goSDBk_sSIW1DjXwh3rNEEPKJqwOw,3039 -django/contrib/postgres/locale/id/LC_MESSAGES/django.po,sha256=6yQ_Evu0aiIabZcwIgsFmDaDxWBvbZh_3hDK8aVyUsw,3557 -django/contrib/postgres/locale/is/LC_MESSAGES/django.mo,sha256=B5rRF5HIz4ervHG45GxzSVDYL6rclTOUREuaP28sCjs,3213 -django/contrib/postgres/locale/is/LC_MESSAGES/django.po,sha256=mIm4o1WDfQ1wBQuGXMzm1AulMIDU6iZPvYEMWvZqUSw,3571 -django/contrib/postgres/locale/it/LC_MESSAGES/django.mo,sha256=kW6Oh5NNTvpiMewskoW3AmU9WcY_zO0OTcscgwbStrE,3249 -django/contrib/postgres/locale/it/LC_MESSAGES/django.po,sha256=vBOsM6PRYKQrPrOEe1PlhPGyZbGs-3YVCSnUlnfaYlM,3805 -django/contrib/postgres/locale/ja/LC_MESSAGES/django.mo,sha256=jvSBcIEgAlIsRCPz997u-5eH9Ioi5YjuktReayURCAU,3350 -django/contrib/postgres/locale/ja/LC_MESSAGES/django.po,sha256=-YHBmtzc_xG-E_vbndLBd0ax_9mexkuTDGVCyEEYhpM,3665 +django/contrib/postgres/locale/id/LC_MESSAGES/django.mo,sha256=e6Ef9FtgoZl2LQmyfMrjvIV5_qpjwkkCYCvwV1dlRrI,3035 +django/contrib/postgres/locale/id/LC_MESSAGES/django.po,sha256=_ndR6AO13JntyL3beVBEwvfrKzCQB3xRCFamUUxBAPM,3553 +django/contrib/postgres/locale/is/LC_MESSAGES/django.mo,sha256=tpeJt6pALKWF4g_dN_c-rAG3hdRi4S68-XJw2l7tDQY,3212 +django/contrib/postgres/locale/is/LC_MESSAGES/django.po,sha256=F06l1CoYwMydHPiT92MjMPW9FqwhkxLgs4ZQ7y2etGI,3570 +django/contrib/postgres/locale/it/LC_MESSAGES/django.mo,sha256=_qHttDX3mqYgsavBhsSzFLxkljTBAnfjO9UybUsY9iY,3243 +django/contrib/postgres/locale/it/LC_MESSAGES/django.po,sha256=tGG27pe5w9y5ReeHOnlO1BPGmTf_VmY45t_yWuKlKmI,3855 +django/contrib/postgres/locale/ja/LC_MESSAGES/django.mo,sha256=Ffenxw4bewdZBTQqIjRri4KwWmSeUZm8M6ExvX-vT68,3349 +django/contrib/postgres/locale/ja/LC_MESSAGES/django.po,sha256=qVAKneCc7YbVv6eNeP1LptgKKVXNzFnel8Hoyak-KUg,3664 django/contrib/postgres/locale/ka/LC_MESSAGES/django.mo,sha256=0ChFF9W99iPidTL-CC2R0owYonG-UKys7TS_2W97V3E,767 django/contrib/postgres/locale/ka/LC_MESSAGES/django.po,sha256=i5KHzekJykKxdFgAYpQ_KBzFY3R3TXr9FrQcdHKVYko,2494 django/contrib/postgres/locale/kk/LC_MESSAGES/django.mo,sha256=TGzYaFdRPsEqIo6tsjScDSDKuQLMYOrr8grzA0l45kc,868 django/contrib/postgres/locale/kk/LC_MESSAGES/django.po,sha256=JL7TPe92MWWX9U1ARGPmBPKQU2EZ9lJamiwn_C51aK4,2552 django/contrib/postgres/locale/ko/LC_MESSAGES/django.mo,sha256=0koE2OIe1bizQsdtvO2nrcY48kM72eHGRn7KOgeXm44,3194 django/contrib/postgres/locale/ko/LC_MESSAGES/django.po,sha256=e_D3CoKvNmfnfKqV9drQdj9c2VaYQEjFU87C3a30AIM,3637 -django/contrib/postgres/locale/lt/LC_MESSAGES/django.mo,sha256=zlgggxW5wR_ougmTMYWEaAxLC7_ZTEOQwtifN-EupOQ,3564 -django/contrib/postgres/locale/lt/LC_MESSAGES/django.po,sha256=FDEsLus6STxMRg6LRLKfTZ8es554yLP_pvHQ-g5tbSM,3954 -django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo,sha256=68lVQD3NgI3dfKKl2Gsb-O8x9AWCSzgrRJZmA9adBwY,3399 -django/contrib/postgres/locale/lv/LC_MESSAGES/django.po,sha256=SptJipFI0GvtcTvVozDCvSi_Lq1qk-vOsCh4whDOKjQ,3825 +django/contrib/postgres/locale/lt/LC_MESSAGES/django.mo,sha256=RjZ0I6Dut3iDur2LwMwkiCbFYScfBlHBjPXPnKGwdDc,3853 +django/contrib/postgres/locale/lt/LC_MESSAGES/django.po,sha256=xrAuourVTpfB3aRn8EN5yDkYQ4xuWjXiLQF33OOhq_k,4282 +django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo,sha256=fROgwHN9x9IibDl4-PGk_N0q2ghXnaOaB2qMk2dxcN0,3382 +django/contrib/postgres/locale/lv/LC_MESSAGES/django.po,sha256=2lE-Sy4xyScfl8bPmd-LOh__LLXS6eOO0PozOydnysI,3844 django/contrib/postgres/locale/mk/LC_MESSAGES/django.mo,sha256=UFofPo5u8GZFQeJUXpXv9WkzN8-L3RYB4QtpWSPZucw,3717 django/contrib/postgres/locale/mk/LC_MESSAGES/django.po,sha256=p6bHPCPH1XuUJ_62EXW3fXnaKCtAvuDLAvS3H1JcX9s,4284 django/contrib/postgres/locale/mn/LC_MESSAGES/django.mo,sha256=emgB5tVUbpnT76xUh0nuMKryQyYMrySCQ4dlYQeCYco,3755 django/contrib/postgres/locale/mn/LC_MESSAGES/django.po,sha256=6GKhHqnrt-Sg3JtYHiy-_-1l1MLBymREuQRXKQgmOCM,4229 -django/contrib/postgres/locale/nb/LC_MESSAGES/django.mo,sha256=1TOafNdcKTEJaAolBV-RpA7fxDe46wkxYJuSXSYQ9Mw,3113 -django/contrib/postgres/locale/nb/LC_MESSAGES/django.po,sha256=VSSxNYqiKX30j6n2ju3_1iYHFx4TIqDeT2Vp9R24hOc,3482 +django/contrib/postgres/locale/nb/LC_MESSAGES/django.mo,sha256=SY_EMMXIT-WXai7ubBt7SdR05hfRoxRPxDKWhB3iiWo,3112 +django/contrib/postgres/locale/nb/LC_MESSAGES/django.po,sha256=pyDi1-0Mfk67bRvu9lGLRdluyRgmzaasR9P_-q46o8c,3486 django/contrib/postgres/locale/ne/LC_MESSAGES/django.mo,sha256=wZ0UYJI4qUpPjLvsPCqRCuHbEKpBz9uOh6qncgXh59g,934 django/contrib/postgres/locale/ne/LC_MESSAGES/django.po,sha256=ndvFMUw2XzBukzedzXUiPQfnnOitrOlJtz2TZgv0TX4,2590 django/contrib/postgres/locale/nl/LC_MESSAGES/django.mo,sha256=SluBtCazF6LA_EpX5pAwJP1mOtH9vJcv7d_8ZjNyPuE,3243 django/contrib/postgres/locale/nl/LC_MESSAGES/django.po,sha256=FgAgj21e2fPZwmQPoToqKPrxeYFrDGx01Heo9SU9sgM,3745 -django/contrib/postgres/locale/pl/LC_MESSAGES/django.mo,sha256=Tlrhv__Nj1jD5CGGChirF-ujHGO32F6r3DclQkdMB1A,3740 -django/contrib/postgres/locale/pl/LC_MESSAGES/django.po,sha256=x8RdxSRhRq2l9WmQTamN2-gRtkaWObfVP83tblcEM6M,4381 +django/contrib/postgres/locale/pl/LC_MESSAGES/django.mo,sha256=aPJQPKnpZBvXE65Hoao54cPwLw8IBjqVo1TfDsVN5-M,3734 +django/contrib/postgres/locale/pl/LC_MESSAGES/django.po,sha256=j9wwV3bOl-HmFDc6SQ0AdX-5bHQBBFX7Qf08O_ZXx0E,4375 django/contrib/postgres/locale/pt/LC_MESSAGES/django.mo,sha256=rXcN8bscv14PzPRIDxmJGHcRPNUdEbOE_cWFI-hjf1g,3136 django/contrib/postgres/locale/pt/LC_MESSAGES/django.po,sha256=Urf8o67oVUpzTHuWGna3Cn6FxgRKPbCVI2CtXmRP220,3576 -django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.mo,sha256=jJvTRzWJVEEo1ash3rhm1rFbF7FJvt188MPHPsbpIzo,3194 -django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.po,sha256=uEY62Tl09VUmV_f-CPPITyvk-I8jBePzqPZajrrekjo,3855 -django/contrib/postgres/locale/ro/LC_MESSAGES/django.mo,sha256=xQdeGHTLGLDBDDiehtzGnTdZh8oQrVG9hGRTh0FT56g,3488 -django/contrib/postgres/locale/ro/LC_MESSAGES/django.po,sha256=RIOdMn_XBWqafZrxV5vjPs-lZLkGi5-jpxsRentFcFM,3907 -django/contrib/postgres/locale/ru/LC_MESSAGES/django.mo,sha256=MU2dyAcO-xeF1y6Ea_MSEFGbc-8y_7p1GH-NRJe62Cs,5123 -django/contrib/postgres/locale/ru/LC_MESSAGES/django.po,sha256=hcl1Uuof6ENYVPQ_7ycEAzxghpoGwMKYFjK_DU-D6_A,5773 +django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.mo,sha256=JxFj-dnRDEwjJuaSVJu__NkqRF30GMASZNfOZpQfC2w,3190 +django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.po,sha256=fJ6nfXMCnBDGbu2TfAvqv4abcGUVbxjlULrUyuLdHOE,3905 +django/contrib/postgres/locale/ro/LC_MESSAGES/django.mo,sha256=wIyzI-mQ_wTDpsU5QhIVek_Wf6RfUUWzRsOEu7fdtIY,3454 +django/contrib/postgres/locale/ro/LC_MESSAGES/django.po,sha256=4MyOnJbBSza7grnCQ2-_-knfs5w6oBdlMFHrS9DbYXQ,3897 +django/contrib/postgres/locale/ru/LC_MESSAGES/django.mo,sha256=tJm0QXyOt7USDeVXRE9ZoE5EDA0Xman6JooYEO3odNQ,5119 +django/contrib/postgres/locale/ru/LC_MESSAGES/django.po,sha256=G3Fsbh2qjnPNDeufzCs7SwITCaWsHEX30ltPJSpySQ4,5831 django/contrib/postgres/locale/sk/LC_MESSAGES/django.mo,sha256=CLTqMW_0M-gEqH3Z_-uXanLMi2IxLr6y9u323Q3OJg8,3400 django/contrib/postgres/locale/sk/LC_MESSAGES/django.po,sha256=D-HhtGgJQ0KnSnf6dHTo9LpetvruFJ7hw_XjjBq_z7g,3777 django/contrib/postgres/locale/sl/LC_MESSAGES/django.mo,sha256=BT1LywwWuDO9iENJm-pqBksEisuETBlh0r4ILn4wgx0,3524 django/contrib/postgres/locale/sl/LC_MESSAGES/django.po,sha256=YmFNHoKR5av9ychiCloy5OXeL_v-rDzA0vYqUy84umc,3988 -django/contrib/postgres/locale/sq/LC_MESSAGES/django.mo,sha256=0143JMFtUYLXOoSRvFydzC-xl1V6QkbL3oHQ-QBOoZk,3110 -django/contrib/postgres/locale/sq/LC_MESSAGES/django.po,sha256=GuT0Ax6Vka7xdSgXyr4-0_nuxIcihRSs8xMiTCQBGdE,3516 +django/contrib/postgres/locale/sq/LC_MESSAGES/django.mo,sha256=kee7WbANs3H4qgSme6ERtCgsgvvTusVX92bpl3nR7oQ,3192 +django/contrib/postgres/locale/sq/LC_MESSAGES/django.po,sha256=3t0SaZ4hOGga9e2vRjmluinajxJERXaEr5IDpgfUPb4,3546 +django/contrib/postgres/locale/sr/LC_MESSAGES/django.mo,sha256=6gW7KQoByAgFBZkJcQ1jKZjqEb1F4jIOiG_MdShwkPI,4106 +django/contrib/postgres/locale/sr/LC_MESSAGES/django.po,sha256=GrxjCPa0hhfDPPf6QoSbMrKuxb_3w5IQ9KK6fOkYtRo,4497 django/contrib/postgres/locale/sv/LC_MESSAGES/django.mo,sha256=i4z7Yn_Ows9G_UoCW8zIulJIrAfB1sJWib-kpG7Y_PA,2875 django/contrib/postgres/locale/sv/LC_MESSAGES/django.po,sha256=5VjgW0c_nTPeh_4nsiUHpv_toFn0c5ytKfM06g-NrlQ,3477 -django/contrib/postgres/locale/tr/LC_MESSAGES/django.mo,sha256=WX43GC_VDxf-36UxWrab6dCBPBvPj9O06hVoWzsS8JU,3164 -django/contrib/postgres/locale/tr/LC_MESSAGES/django.po,sha256=sfqVCqaFZtbRnDmqTVK4190-AYKJwgyMopuYjkjXmh4,3511 +django/contrib/postgres/locale/tr/LC_MESSAGES/django.mo,sha256=2pcddOVCVFzHvw19Oa9xpEu46mjkzJTnykunyDvDYZ4,3162 +django/contrib/postgres/locale/tr/LC_MESSAGES/django.po,sha256=Hrw_xRYpMWTVqj-xpNADRenPDXlicdictu12Nx1JJvY,3509 django/contrib/postgres/locale/uk/LC_MESSAGES/django.mo,sha256=3uPY2QOsonJJ67IZipxS45D6nhiS0p1-egxWqQBIyU8,4309 django/contrib/postgres/locale/uk/LC_MESSAGES/django.po,sha256=n2qxj5e7ipENpTFganpkcSAJUMnASM2w5l0YxmTijzg,4861 django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=t4Zea1ndeWCQMDYvdprtTDkyPXnqg3lAV7WB5TAZFNI,2854 @@ -2486,8 +2488,8 @@ django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo,sha256=AE6Py2_CV2gQKjKQ django/contrib/redirects/locale/ta/LC_MESSAGES/django.po,sha256=ojdq8p4HnwtK0n6By2I6_xuucOpJIobJEGRMGc_TrS8,1700 django/contrib/redirects/locale/te/LC_MESSAGES/django.mo,sha256=Gtcs4cbgrD7-bSkPKiPbM5DcjONS2fSdHhvWdbs_E1M,467 django/contrib/redirects/locale/te/LC_MESSAGES/django.po,sha256=RT-t3TjcOLyNQQWljVrIcPWErKssh_HQMyGujloy-EI,939 -django/contrib/redirects/locale/th/LC_MESSAGES/django.mo,sha256=cnPvlsVYioWu6g3wRN7j0TGfUvi2mSHjygsLe5XQ_RA,1210 -django/contrib/redirects/locale/th/LC_MESSAGES/django.po,sha256=ACxr7blSSbcHljHKwvU5JBJ24pgNv9aKg1RdP4H5kGY,1393 +django/contrib/redirects/locale/th/LC_MESSAGES/django.mo,sha256=1l6eO0k1KjcmuRJKUS4ZdtJGhAUmUDMAMIeNwEobQqY,1331 +django/contrib/redirects/locale/th/LC_MESSAGES/django.po,sha256=DVVqpGC6zL8Hy8e6P8ZkhKbvcMJmXV5euLxmfoTCtms,1513 django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo,sha256=RiZJ_Acsxwz0d4q1JTZWPnbCpW8uiedE_X8PRJdZB0E,1124 django/contrib/redirects/locale/tr/LC_MESSAGES/django.po,sha256=Gr6fwZ2nLkbosrikKpSgODsRf40GKXBc3RL9pOffCGM,1348 django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo,sha256=Hf1JXcCGNwedxy1nVRM_pQ0yUebC-tvOXr7P0h86JyI,1178 @@ -2498,6 +2500,8 @@ django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo,sha256=nCpHZGF8aYaw3UDr django/contrib/redirects/locale/uk/LC_MESSAGES/django.po,sha256=-UDqtKOxcTA4C4O0QW7GnjtnXtEmwDfvfLmNQFMI1No,1700 django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo,sha256=CQkt-yxyAaTd_Aj1ZZC8s5-4fI2TRyTEZ-SYJZgpRrQ,1138 django/contrib/redirects/locale/ur/LC_MESSAGES/django.po,sha256=CkhmN49PvYTccvlSRu8qGpcbx2C-1aY7K3Lq1VC2fuM,1330 +django/contrib/redirects/locale/uz/LC_MESSAGES/django.mo,sha256=Q5r3tSAy6M2wsn59n68a9bwAgi5oakrtqKLv4f1fSRs,592 +django/contrib/redirects/locale/uz/LC_MESSAGES/django.po,sha256=8A3YApKQjbEDhEMrI-2yR8XNNiXUScXAfDbyP7epS-0,1058 django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo,sha256=BquXycJKh-7-D9p-rGUNnjqzs1d6S1YhEJjFW8_ARFA,1106 django/contrib/redirects/locale/vi/LC_MESSAGES/django.po,sha256=xsCASrGZNbQk4d1mhsTZBcCpPJ0KO6Jr4Zz1wfnL67s,1301 django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=6BYNDezC7sivl2kFYJRZf2lphYze8z4PVhdRG9XU0xY,1093 @@ -2510,15 +2514,15 @@ django/contrib/sessions/__init__.py,sha256=W7kKt-gCROzrUA6UpIRAit3SHa-coN4_A4fph django/contrib/sessions/apps.py,sha256=q_fkp7a7_1GT14XHkHgNIET0sItgfBeFT7B137_KeZM,194 django/contrib/sessions/base_session.py,sha256=5FofwClB_ukwCsXPfJbzUvKoYaMQ78B_lWXU0fqSg1k,1490 django/contrib/sessions/exceptions.py,sha256=epvfG9haHc8p34Ic6IqUSC-Yj06Ruh2TSm9G6HQMdno,256 -django/contrib/sessions/middleware.py,sha256=sbpLTYtkGNo5TfYaHPestSVrhMEbcGL9LXRDk4OD5LQ,3423 +django/contrib/sessions/middleware.py,sha256=3fVSQXjKOPhVLEiLvgkpF-PxdBQO5a6EX0ugryjzSl8,3490 django/contrib/sessions/models.py,sha256=vmROoszsXHnPHoSbFca8k-U9Z8Wg6EAHYeEK87VHHk8,1257 django/contrib/sessions/serializers.py,sha256=FUUY-XXwipIA085gJSNNcTxVQqo12YE9EFainIxNPdU,394 django/contrib/sessions/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/backends/base.py,sha256=aFxoGhXQaZb6nj6Q_KbpyFWjrYUuDOOLh3uY3objGFc,11967 +django/contrib/sessions/backends/base.py,sha256=uSbl8x4BurAuDYaupFnA469bC2_VydUAMuLa_g1SskM,11930 django/contrib/sessions/backends/cache.py,sha256=-qeSz07gUidiY_xq7imMJ3SP17J_rLsIO50KxOhq_8E,2713 -django/contrib/sessions/backends/cached_db.py,sha256=S1EMi_8GiSbImzdndIvzX8iMnJwHI-G1km40fbZeLXg,2686 -django/contrib/sessions/backends/db.py,sha256=JVPC09-K9a7yIhvFDWPfpu6QP7A0jeUkome5dbLXELY,3703 -django/contrib/sessions/backends/file.py,sha256=iI2Q3qdHDEAbYpGBdvkTeWDU3Rrx_DsR--OjIAXX_bI,7906 +django/contrib/sessions/backends/cached_db.py,sha256=c9JtGXxyJYRT7MMVrqwo0jw1v3JCpaBNXeL8d1tAfBE,2011 +django/contrib/sessions/backends/db.py,sha256=zzhv0nQ4OIFeyM2QXrIUG26l_IJosagKaGOI2NcZnz4,3770 +django/contrib/sessions/backends/file.py,sha256=--r-hpfCVAGostoUlFZ2wc9rUxw2s7r-QINOIlSbiNI,7741 django/contrib/sessions/backends/signed_cookies.py,sha256=jcBrD3gUHrdETWf6JvwDVCFe4eAiRbH8i2oMJjwpXPs,2696 django/contrib/sessions/locale/af/LC_MESSAGES/django.mo,sha256=CeuKxmXn3PSw7eh7O_0bC4NUBVmOhdDcOsnsYycLD44,470 django/contrib/sessions/locale/af/LC_MESSAGES/django.po,sha256=fdRPUBMVUrpvAi9zsvwSnts55Wdnj4r2kLxKeroIsSM,745 @@ -2526,8 +2530,8 @@ django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo,sha256=yoepqaR68PTGLx--c django/contrib/sessions/locale/ar/LC_MESSAGES/django.po,sha256=ZgwtBYIdtnqp_8nKHXF1NVJFzQU81-3yv9b7STrQHMc,995 django/contrib/sessions/locale/ast/LC_MESSAGES/django.mo,sha256=hz2m-PkrHby2CKfIOARj6kCzisT-Vs0syfDSTx_iVVw,702 django/contrib/sessions/locale/ast/LC_MESSAGES/django.po,sha256=M90j1Nx6oDJ16hguUkfKYlyb5OymUeZ5xzPixWxSC7I,846 -django/contrib/sessions/locale/az/LC_MESSAGES/django.mo,sha256=XJskCf7jcxBH-i_gqfJIHVO3Loh3w6_kIyod5nxLu7Y,700 -django/contrib/sessions/locale/az/LC_MESSAGES/django.po,sha256=74663H2-Uz-RMRfDN8E4-Z5LxZ6deAlgdEdvpa-_YK0,846 +django/contrib/sessions/locale/az/LC_MESSAGES/django.mo,sha256=_4XcYdtRasbCjRoaWGoULsXX2cEa--KdRdqbnGoaRuM,731 +django/contrib/sessions/locale/az/LC_MESSAGES/django.po,sha256=qYd7vz6A-hHQNwewzI6wEsxRVLdoc2xLGm1RPW0Hxc4,891 django/contrib/sessions/locale/be/LC_MESSAGES/django.mo,sha256=8b7MeFDTL6VStOnVHtkb_o4Iiy0gTHoCwTUbT1vRr9Q,895 django/contrib/sessions/locale/be/LC_MESSAGES/django.po,sha256=tHsYVn3XNTcukB0SrHUWP1iV763rrQHCimOyJHRPiek,1023 django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo,sha256=DGp3j3E0-5bBjFCKx9c6Jcz9ZaXysd2DgVPuxROWDmU,783 @@ -2632,8 +2636,8 @@ django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo,sha256=4oTWp8-qzUQBiqG32 django/contrib/sessions/locale/mk/LC_MESSAGES/django.po,sha256=afApb5YRhPXUWR8yF_TTym73u0ov7lWiwRda1-uNiLY,988 django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo,sha256=P1z831CbjKP38Sd_-d6_1P7V8fFXOGS6pyznw_x7dhg,780 django/contrib/sessions/locale/ml/LC_MESSAGES/django.po,sha256=eTDbMq3x_kk7YkSzVLYk9szi1D3EwDwqeSnmuOXVxyY,927 -django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo,sha256=NgVteIZT90EJ3TJCQFzMHfxeZ5m9IGcGnMYd5SaMnT4,769 -django/contrib/sessions/locale/mn/LC_MESSAGES/django.po,sha256=PmEcp36DnnvGScoVjc6GtRK9XIxnXHnHaD6ZflOIXP8,972 +django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo,sha256=CcCH2ggVYrD29Q11ZMthcscBno2ePkQDbZfoYquTRPM,784 +django/contrib/sessions/locale/mn/LC_MESSAGES/django.po,sha256=nvcjbJzXiDvWFXrM5CxgOQIq8XucsZEUVdYkY8LnCRE,992 django/contrib/sessions/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 django/contrib/sessions/locale/mr/LC_MESSAGES/django.po,sha256=FQRdZ-qIDuvTCrwbnWfxoxNi8rywLSebcNbxGvr-hb0,743 django/contrib/sessions/locale/my/LC_MESSAGES/django.mo,sha256=8zzzyfJYok969YuAwDUaa6YhxaSi3wcXy3HRNXDb_70,872 @@ -2678,8 +2682,8 @@ django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo,sha256=qLIThhFQbJKc1_UVr django/contrib/sessions/locale/ta/LC_MESSAGES/django.po,sha256=bYqtYf9XgP9IKKFJXh0u64JhRhDvPPUliI1J-NeRpKE,945 django/contrib/sessions/locale/te/LC_MESSAGES/django.mo,sha256=kteZeivEckt4AmAeKgmgouMQo1qqSQrI8M42B16gMnQ,786 django/contrib/sessions/locale/te/LC_MESSAGES/django.po,sha256=dQgiNS52RHrL6bV9CEO7Jk9lk3YUQrUBDCg_bP2OSZc,980 -django/contrib/sessions/locale/th/LC_MESSAGES/django.mo,sha256=xJE3u78wMj916Y4aJoeqduxa1L1QqiWzgNTtz1FXWJQ,757 -django/contrib/sessions/locale/th/LC_MESSAGES/django.po,sha256=Ks4o9M9Oo7E_A3bFnthS4RkI7Ht0ijPFkMCalItdj3w,901 +django/contrib/sessions/locale/th/LC_MESSAGES/django.mo,sha256=D41vbkoYMdYPj3587p-c5yytLVi9pE5xvRZEYhZrxPs,814 +django/contrib/sessions/locale/th/LC_MESSAGES/django.po,sha256=43704TUv4ysKhL8T5MowZwlyv1JZrPyVGrpdIyb3r40,988 django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo,sha256=H-DMP3N3AHZj1Q9aYeBOMA10nN1CIuJkUEY7QAy1b3g,726 django/contrib/sessions/locale/tr/LC_MESSAGES/django.po,sha256=XYKo0_P5xitYehvjMzEw2MTp_Nza-cIXEECV3dA6BmY,863 django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo,sha256=Q-FGu_ljTsxXO_EWu7zCzGwoqFXkeoTzWSlvx85VLGc,806 @@ -2690,22 +2694,20 @@ django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo,sha256=jzNrLuFghQMCHNRQ0 django/contrib/sessions/locale/uk/LC_MESSAGES/django.po,sha256=GM9kNL1VoFSRfbHB5KiivIbp-nJl1aZ69wL2xszNqlM,1017 django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo,sha256=FkGIiHegr8HR8zjVyJ9TTW1T9WYtAL5Mg77nRKnKqWk,729 django/contrib/sessions/locale/ur/LC_MESSAGES/django.po,sha256=qR4QEBTP6CH09XFCzsPSPg2Dv0LqzbRV_I67HO2OUwk,879 +django/contrib/sessions/locale/uz/LC_MESSAGES/django.mo,sha256=asPu0RhMB_Ui1li-OTVL4qIXnM9XpjsYyx5yJldDYBY,744 +django/contrib/sessions/locale/uz/LC_MESSAGES/django.po,sha256=KsHuLgGJt-KDH0h6ND7JLP2dDJAdLVHSlau4DkkfqA8,880 django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo,sha256=KriTpT-Hgr10DMnY5Bmbd4isxmSFLmav8vg2tuL2Bb8,679 django/contrib/sessions/locale/vi/LC_MESSAGES/django.po,sha256=M7S46Q0Q961ykz_5FCAN8SXQ54w8tp4rZeZpy6bPtXs,909 django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=zsbhIMocgB8Yn1XEBxbIIbBh8tLifvvYNlhe5U61ch8,722 django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.po,sha256=tPshgXjEv6pME4N082ztamJhd5whHB2_IV_egdP-LlQ,889 django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=WZzfpFKZ41Pu8Q9SuhGu3hXwp4eiq8Dt8vdiQfxvF9M,733 django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.po,sha256=6IRDQu6-PAYh6SyEIcKdhuR172lX0buY8qqsU0QXlYU,898 -django/contrib/sessions/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/sessions/management/commands/clearsessions.py,sha256=yDcSmK65l5H1-2hiHhDlN0zivQrxm_ihNKLKt6MmRiQ,650 django/contrib/sessions/migrations/0001_initial.py,sha256=F7fzk2d9hDPjUwx2w-lXdZcFG1h4HyHnkfcJ6aK7C-0,955 django/contrib/sessions/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/sitemaps/__init__.py,sha256=4pL-xZ3nNPbczruFZqnL8xTH5KrGL_C1AgdfBMfWfwY,5632 django/contrib/sitemaps/apps.py,sha256=ktY9PcWsmv5TOlvEdG6IL8ZBbGMtZRpO24j5g7DGilU,195 django/contrib/sitemaps/views.py,sha256=KP-cCkD4VGFbd4ZavWK79gAkZa83APeRgTx-eouny4M,3516 -django/contrib/sitemaps/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sitemaps/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/contrib/sitemaps/management/commands/ping_google.py,sha256=IzUg9OZa2e3AjwX4bCFEldXzaLsT4O4WnbUgeUKe6qg,412 django/contrib/sitemaps/templates/sitemap.xml,sha256=KTiksPVpo22dkRjjavoJtckzo-Rin7aZ_QgbC42Y8O0,479 django/contrib/sitemaps/templates/sitemap_index.xml,sha256=VqDmRlWMx9kC6taiBoi1h9JVspV54ou3nFjE8Nfofl8,209 @@ -2724,8 +2726,8 @@ django/contrib/sites/locale/ar/LC_MESSAGES/django.mo,sha256=kLoytp2jvhWn6p1c8kNV django/contrib/sites/locale/ar/LC_MESSAGES/django.po,sha256=HYA3pA29GktzXBP-soUEn9VP2vkZuhVIXVA8TNPCHCs,1135 django/contrib/sites/locale/ast/LC_MESSAGES/django.mo,sha256=eEvaeiGnZFBPGzKLlRz4M9AHemgJVAb-yNpbpxRqtd0,774 django/contrib/sites/locale/ast/LC_MESSAGES/django.po,sha256=huBohKzLpdaJRFMFXXSDhDCUOqVqyWXfxb8_lLOkUd0,915 -django/contrib/sites/locale/az/LC_MESSAGES/django.mo,sha256=TOdJMsIhxYvxT1-ZFiPD5JDhA9fBBpu84tpiYhv7tgE,608 -django/contrib/sites/locale/az/LC_MESSAGES/django.po,sha256=M5mYWSyOohsNTtC_BWlDbw4PTsQWdEnbirf_4S0zInw,835 +django/contrib/sites/locale/az/LC_MESSAGES/django.mo,sha256=CjAGI4qGoXN95q4LpCLXLKvaNB33Ocf5SfXdurFBkas,773 +django/contrib/sites/locale/az/LC_MESSAGES/django.po,sha256=E84kNPFhgHmIfYT0uzCnTPGwPkAqKzqwFvJB7pETbVo,933 django/contrib/sites/locale/be/LC_MESSAGES/django.mo,sha256=b-0febeZF-EX53E--W-G3lkpiozt7En6yfDIJYnNrQw,1024 django/contrib/sites/locale/be/LC_MESSAGES/django.po,sha256=W5FhVJKcmd3WHl2Lpd5NJUsc7_sE_1Pipk3CVPoGPa4,1152 django/contrib/sites/locale/bg/LC_MESSAGES/django.mo,sha256=a2R52umIQIhnzFaFYSRhQ6nBlywE8RGMj2FUOFmyb0A,904 @@ -2878,8 +2880,8 @@ django/contrib/sites/locale/ta/LC_MESSAGES/django.mo,sha256=CLO41KsSKqBrgtrHi6fm django/contrib/sites/locale/ta/LC_MESSAGES/django.po,sha256=YsTITHg7ikkNcsP29tDgkZrUdtO0s9PrV1XPu4mgqCw,939 django/contrib/sites/locale/te/LC_MESSAGES/django.mo,sha256=GmIWuVyIOcoQoAmr2HxCwBDE9JUYEktzYig93H_4v50,687 django/contrib/sites/locale/te/LC_MESSAGES/django.po,sha256=jbncxU9H3EjXxWPsEoCKJhKi392XXTGvWyuenqLDxps,912 -django/contrib/sites/locale/th/LC_MESSAGES/django.mo,sha256=4BQRjNbPJEQog4oe8CUHxHXszfZpw09Qa3XIku41eac,850 -django/contrib/sites/locale/th/LC_MESSAGES/django.po,sha256=OpTsWP-Whkf-j4qdjdOh-Gw72qJtiLyMllKefENTAcA,1047 +django/contrib/sites/locale/th/LC_MESSAGES/django.mo,sha256=dQOp4JoP3gvfsxqEQ73L6F8FgH1YtAA9hYY-Uz5sv6Y,898 +django/contrib/sites/locale/th/LC_MESSAGES/django.po,sha256=auZBoKKKCHZbbh0PaUr9YKiWB1TEYZoj4bE7efAonV8,1077 django/contrib/sites/locale/tr/LC_MESSAGES/django.mo,sha256=NxEKAJFmns0tWftlgyKXHJcBKBxo6ImR4SjIw8-zbgk,799 django/contrib/sites/locale/tr/LC_MESSAGES/django.po,sha256=L9tsnwxw1BEJD-Nm3m1RAS7ekgdmyC0ETs_mr7tQw1E,1043 django/contrib/sites/locale/tt/LC_MESSAGES/django.mo,sha256=gmmjXeEQUlBpfDmouhxE-qpEtv-iWdQSobYL5MWprZc,706 @@ -2890,6 +2892,8 @@ django/contrib/sites/locale/uk/LC_MESSAGES/django.mo,sha256=H4806mPqOoHJFm549F7d django/contrib/sites/locale/uk/LC_MESSAGES/django.po,sha256=jmJKTuGLhfP4rg8M_d86XR4X8qYB-JAtEf6jRKuzi3w,1187 django/contrib/sites/locale/ur/LC_MESSAGES/django.mo,sha256=s6QL8AB_Mp9haXS4n1r9b0YhEUECPxUyPrHTMI3agts,654 django/contrib/sites/locale/ur/LC_MESSAGES/django.po,sha256=R9tv3qtett8CUGackoHrc5XADeygVKAE0Fz8YzK2PZ4,885 +django/contrib/sites/locale/uz/LC_MESSAGES/django.mo,sha256=OsuqnLEDl9gUAwsmM2s1KH7VD74ID-k7JXcjGhjFlEY,799 +django/contrib/sites/locale/uz/LC_MESSAGES/django.po,sha256=RoaOwLDjkqqIJTuxpuY7eMLo42n6FoYAYutCfMaDk4I,935 django/contrib/sites/locale/vi/LC_MESSAGES/django.mo,sha256=YOaKcdrN1238Zdm81jUkc2cpxjInAbdnhsSqHP_jQsI,762 django/contrib/sites/locale/vi/LC_MESSAGES/django.po,sha256=AHcqR2p0fdscLvzbJO_a-CzMzaeRL4LOw4HB9K3noVQ,989 django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=7D9_pDY5lBRpo1kfzIQL-PNvIg-ofCm7cBHE1-JWlMk,779 @@ -2903,45 +2907,43 @@ django/contrib/staticfiles/__init__.py,sha256=eGxMURIKxiv-dE7rP1hwNgUhfzUN36-Bc5 django/contrib/staticfiles/apps.py,sha256=q0Tfga23RfN9gCRPhopgChqOFqbtGfkc3-VeH1CRClg,413 django/contrib/staticfiles/checks.py,sha256=rH9A8NIYtEkA_PRYXQJxndm243O6Mz6GwyqWSUe3f24,391 django/contrib/staticfiles/finders.py,sha256=a46SgWyQxKlZY_UdfBnOLVvIs8HHQ7Nc8xy2EquuiD4,10158 -django/contrib/staticfiles/handlers.py,sha256=WLg6lshuKMSfFPfPLeDDer3_1TrEIg-OpCEdcp4uqEg,2329 -django/contrib/staticfiles/storage.py,sha256=mIhWdkv-HCRivTWdozB7vnRP7OjnWjZFarUlfjNj-uM,19152 +django/contrib/staticfiles/handlers.py,sha256=6Cmy7KVA7ngivB40ptamR02vGfP-Re6Kxles-8ylWFQ,2299 +django/contrib/staticfiles/storage.py,sha256=wOiG3ObaLrw9Y8lqMc4cH4Sl0T2q_f-lmE6AQ-tyAtY,19099 django/contrib/staticfiles/testing.py,sha256=4X-EtOfXnwkJAyFT8qe4H4sbVTKgM65klLUtY81KHiE,463 django/contrib/staticfiles/urls.py,sha256=owDM_hdyPeRmxYxZisSMoplwnzWrptI_W8-3K2f7ITA,498 -django/contrib/staticfiles/utils.py,sha256=vrtb1g0Zt1idSZmBAAJ2qLOxGcyb7uWAxqlxZ7C7B40,1954 +django/contrib/staticfiles/utils.py,sha256=bqHWNBXeclNhmCPIGInk7SwNGyBNjlWAbb7kX5Ri664,1873 django/contrib/staticfiles/views.py,sha256=CaWZq4AHEbOGW7mg_0mbkGUP8KJTlVNnofDBNIhRUo4,1264 -django/contrib/staticfiles/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/management/commands/collectstatic.py,sha256=sFhpb9H0M6v0HElRwdURTtkyXKqZfqfwd0C0J9EXP1w,15136 +django/contrib/staticfiles/management/commands/collectstatic.py,sha256=99VCYnNtA4p5u7z8iany-s9Uzw9P_PLwxpSy-9C0O6M,15076 django/contrib/staticfiles/management/commands/findstatic.py,sha256=R5CN75jGnvsV16MQ23eWake_EBE7NG94ExKL-54NqYQ,1539 django/contrib/staticfiles/management/commands/runserver.py,sha256=uv-h6a8AOs0c92ILT_3Mu0UTBoCiQzThpUEmR-blj70,1318 django/contrib/staticfiles/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/staticfiles/templatetags/staticfiles.py,sha256=P3ixCkaCvU8wTQYePYgZh0mWzyeE0y4SDXltF8TWB6M,537 +django/contrib/staticfiles/templatetags/staticfiles.py,sha256=7rzKqqThXO9CrLOP5kq3uzS80dzksC9cRENc86G9-Qo,720 django/contrib/syndication/__init__.py,sha256=b5C6iIdbIOHf5wvcm1QJYsspErH3TyWJnCDYS9NjFY4,73 django/contrib/syndication/apps.py,sha256=hXquFH_3BL6NNR2cxLU-vHlBJZ3OCjbcl8jkzCNvE64,203 django/contrib/syndication/views.py,sha256=kXBT4kGjWBqmYVU0BFrMxMyqkdPeUjgIr-TGp5HvCS0,8617 django/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/core/exceptions.py,sha256=V61tsXhjxUnLxfNVAQBUUhvSgvdDhLL3ajIS5TCGlyI,5275 -django/core/paginator.py,sha256=tUAUQ5XA_aSw1Ws-3qJfxXKzeVoKGiThoie9mbAj_6s,5884 +django/core/paginator.py,sha256=8s5Ae9uaGEW7S8tSvFUjKpVeo4F6Avln4stbAliBvJc,5983 django/core/signals.py,sha256=uGRybHCJZ74by2HV-9JEWvfmnw_scuhcxaRP3UmZDjE,247 -django/core/signing.py,sha256=fRflzQnv2LA99q7vBCu3FXrtA_6mNefufR-6OlSQAtI,6660 -django/core/validators.py,sha256=M5V3aRs0qjsI1mM4-jKw1FHR4IPf-ntPGN3es2rVwZ0,18596 +django/core/signing.py,sha256=yiHGW156fFQpdovzP7M42t42YX-1bawLYjqhT2DYtOw,6670 +django/core/validators.py,sha256=pn_Aojp_STy1cTtWhut4m1HPEEqI5czDEFZHiuia3qQ,18759 django/core/wsgi.py,sha256=2sYMSe3IBrENeQT7rys-04CRmf8hW2Q2CjlkBUIyjHk,388 -django/core/cache/__init__.py,sha256=gfjHtXklQU4M8vluEtpJf-mG3q7UHATaGrluiYAzO_0,3711 -django/core/cache/utils.py,sha256=EakHn48OQtJP7OCLwkfACYZjVqjBtcdp86xGJbgPXVc,432 +django/core/cache/__init__.py,sha256=c6NXL3nPB1v6WVh5fum9fo-yVc0xq_uAzkmWi3kcDCA,3684 +django/core/cache/utils.py,sha256=fdSTmMvnVTM7dhwf-qbHRnhLJAV1XIJe_Ut5H-EGKBw,381 django/core/cache/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/cache/backends/base.py,sha256=hn98WTdIDebq0oy5SAVq08-pkmGAbt75rLOCqAvuji4,9799 -django/core/cache/backends/db.py,sha256=qVcCIEztElRPXAbAG0a9vz27qgv1ZFjwunyDtSo_kEo,8939 -django/core/cache/backends/dummy.py,sha256=DtugeHHs1doIp2dV3CX5dkoJ5dj6bJ7rtKmHNBogBYg,1218 -django/core/cache/backends/filebased.py,sha256=osnUkOsfqK3dxctG8p3UtT4j_8TIs2Cq8Ppj4Bq9qSU,4884 -django/core/cache/backends/locmem.py,sha256=ibbZBYB3SVcbwgvEz-R5k33F4G_ycuxBoTfz06wWbDc,4198 -django/core/cache/backends/memcached.py,sha256=KigcrxWadhCmb8A1suMMJt0xxfTbsqfi0InDHXxP5YY,7956 +django/core/cache/backends/base.py,sha256=vrMhKrAAo0vbSDOfsQVMX8OFfROJZFoebofntlFpPMg,10102 +django/core/cache/backends/db.py,sha256=1NTDkerko7uOiB1wyp0czx84GMHgyqXP_aIy2Dgw3SA,10757 +django/core/cache/backends/dummy.py,sha256=zJiIXLVJ9Tucb__RoYQFuZJeSvhpCG7NvpLJgOp8bfk,1116 +django/core/cache/backends/filebased.py,sha256=uv6c6sr9oN-o5PNqBqDSVjHj-phCWmtsameLOK2exQg,5623 +django/core/cache/backends/locmem.py,sha256=I0Rpm90WG2eSiGN8pVAAZBR2pQz5oq3844EVB9pq45s,4057 +django/core/cache/backends/memcached.py,sha256=gI1PdqxszGL_7vI6AsfoGcqidypYLf6kPiUb6_Ct-2U,7305 django/core/checks/__init__.py,sha256=_HP2dErvPYginc0R1Bwblq1R-gykN2sxcYCCyMaalHg,879 django/core/checks/caches.py,sha256=jhyfX_m6TepTYRBa-j3qh1owD1W-3jmceu8b8dIFqVk,415 django/core/checks/database.py,sha256=IpXyIS-TDTH4p037aG2l0qWnAVFtp8ozJEsXMvaoIu8,261 django/core/checks/messages.py,sha256=ZbasGH7L_MeIGIwb_nYiO9Z_MXF0-aXO1ru2xFACj6Y,2161 django/core/checks/model_checks.py,sha256=Gif4kfndBdBe4sc2NfLThe__qKcJBY5eqD-2Oh6takA,6183 -django/core/checks/registry.py,sha256=qk77K8-s8jfZR0ej7Rx-iemsXEkKF47d0VB4pmEnqa8,3108 -django/core/checks/templates.py,sha256=GnnM1ZW3CIk22KmyK094qzgGIrxmIULFGfPPuvnArFI,1185 +django/core/checks/registry.py,sha256=VNuH0iGUW9iOwMgCSZp9tzx-1HshDnA7z3C0L9C9Z2o,3067 +django/core/checks/templates.py,sha256=9_qZn_MWX94i209MVu2uS66NPRgbKWtk_XxetKczyfU,1092 django/core/checks/urls.py,sha256=lA8wbw2WDC-e4ZAr-9ooEWtGvrNyMh1G-MZbojGq9W8,3246 django/core/checks/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/core/checks/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 @@ -2949,21 +2951,21 @@ django/core/checks/security/base.py,sha256=JsF8UvJLlWXF2ysswWaT08Mqd6KDt4weOUr1- django/core/checks/security/csrf.py,sha256=CH09reOHXQEdCMqhlejyh0IsGwDQkFeHRYO25glZTYE,1259 django/core/checks/security/sessions.py,sha256=vvsxKEwb3qHgnCG0R5KUkfUpMHuZMfxjo9-X-2BTp-4,2558 django/core/files/__init__.py,sha256=OjalFLvs-vPaTE3vP0eYZWyNwMj9pLJZNgG4AcGn2_Y,60 -django/core/files/base.py,sha256=E2Tanv7zjeBZYrGgph4FShEMtv1MPN0fs1mS_L-JOiY,4984 +django/core/files/base.py,sha256=D93J87nLW6sKWbBnP7iFYz4lA6YLfu11dAu8ygTKKe0,4814 django/core/files/images.py,sha256=_lnhvkwnXJ_Dih6nNIAm9UvTwxOd7CSPi4MjPVxMybY,2377 django/core/files/locks.py,sha256=nn0KJG_yXoIT_pHqzeZhBkQsA1tghaVzN-p4DA5VER4,3512 django/core/files/move.py,sha256=1R3xTJKI9Plo0xRknz-Uv2_QQRw_vmr-rUEcrTJloMA,2956 django/core/files/storage.py,sha256=tEzJUiMS6W_dk0IceFRtqAwi1vMC7H-wFjocBe7zN94,14633 django/core/files/temp.py,sha256=jR1S5j-UtRMbQEYpHAY-yffp6QCKxngbzqi6MA1tOwI,2501 -django/core/files/uploadedfile.py,sha256=hHaPethGK2DEBIZzf7UeSRVznea4qHgsv_zHWjQe5ho,3928 -django/core/files/uploadhandler.py,sha256=n4edWZI6txsO-UTW6L3X5aX2krSr7rxu6h5LQwdR_48,6539 +django/core/files/uploadedfile.py,sha256=dzZcC1OWFMK52Wp6jzVGIo-MYbkkhSHOhRR4JZgaoQE,3890 +django/core/files/uploadhandler.py,sha256=DtlUF2T0WkDCrf6fUmmriffX_8aZLzwJvRZn7CCsvqg,6470 django/core/files/utils.py,sha256=5Ady6JuzCYb_VAtSwc9Dr-iTmpuMIVuJ3RKck1-sYzk,1752 django/core/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/handlers/base.py,sha256=nF21s4mXxClfbkT4pQ1MSLlcJVXi1RqfVshDcUSw0ow,6867 -django/core/handlers/exception.py,sha256=SoirxgN-UU96fJMJ_LtBbPE4A4WXgYUc-sKo64LsmnQ,4691 -django/core/handlers/wsgi.py,sha256=8mRSLDdUkPebrtjdcJpdl5OQufxzZemjDg_f2KDCdAc,8029 +django/core/handlers/base.py,sha256=_uxw9ftnc7DlrjnvskmBW7cyyj7neFiatnJCLhJ4O8s,6788 +django/core/handlers/exception.py,sha256=Y8DUtm_1SeJMjgSe82alsjFysC4kWEY56k9MZQvvfyI,4788 +django/core/handlers/wsgi.py,sha256=yBYYDJUd2mfUFLOKRvtpKvm9Q8ugYMjF84oRlL8rFE4,7793 django/core/mail/__init__.py,sha256=LBC94qDGLULxasR97XAb0xGssr29-EbNUTDpbtnQ6iE,4484 -django/core/mail/message.py,sha256=vyEe2o3YC0rvabe3PXh4DHXtnjR0lrQ4ySdgXsfRcy8,17159 +django/core/mail/message.py,sha256=NAQM6RUStbRXRl54k_bdBFMZpTXjW6L1wKosQbTXWzM,17321 django/core/mail/utils.py,sha256=nUQWqzPAZfqWY2J7SsYfVlihYMYz6i_A8H5D0pSkBvo,452 django/core/mail/backends/__init__.py,sha256=VJ_9dBWKA48MXBZXVUaTy9NhgfRonapA6UAjVFEPKD8,37 django/core/mail/backends/base.py,sha256=f9Oeaw1RAiPHmsTdQakeYzEabfOtULz0UvldP4Cydpk,1660 @@ -2972,93 +2974,91 @@ django/core/mail/backends/dummy.py,sha256=sI7tAa3MfG43UHARduttBvEAYYfiLasgF39jza django/core/mail/backends/filebased.py,sha256=OPRc5lDsB9Gble251fwXp0oq1qKeZM9T2JTcZwL_5js,2715 django/core/mail/backends/locmem.py,sha256=OgTK_4QGhsBdqtDKY6bwYNKw2MXudc0PSF5GNVqS7gk,884 django/core/mail/backends/smtp.py,sha256=TE2v-96rSgN7nZ_3CfrNc7-0Utk4ALB3obRw-TXfz90,5302 -django/core/management/__init__.py,sha256=WHEr3W3YgriQXmQ0osrNqh0eV6KMjZA0oW6YIl880tc,15323 -django/core/management/base.py,sha256=O9HYlEe3B5wNdIv3Hbpay-nunhnFP1Xm_wHeuIeDEuY,20363 -django/core/management/color.py,sha256=jAThS-IMFpjAFQ15P6Ncv7ze33dR1gFz_fXfzHBrcnI,1821 +django/core/management/__init__.py,sha256=T50q6l-hkLUfUwWKmbYIimRJMhrX4uFRBhQoPNCSARk,15863 +django/core/management/base.py,sha256=po1AwSPTK2rjjT2q6VfSro91mM_U_e4XjZp2JL1nCqE,20703 +django/core/management/color.py,sha256=TBDUIyLXkZUogK_FvIy3E7npcIbXpprNKCGGg6JfEQg,1780 django/core/management/sql.py,sha256=bnxEUUIJScj6A67s0txpq4RT8sh0n-RS5ZxcNqySaAU,1921 -django/core/management/templates.py,sha256=x7PeOu2FCAFOMc3v0Y95s_LJQVmCBFv-g5RqUXNoH5c,13714 -django/core/management/utils.py,sha256=kZFPEyKenZUWEaz1Ko8c5XScI7MhmHjloPfWyiaHMCA,3490 -django/core/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django/core/management/templates.py,sha256=jI9KLV8wALb_Qc4ZRk-jc3AxNr1CvEvG15FKKZTQ0uk,13468 +django/core/management/utils.py,sha256=t0Tt4Ns-ra8HLak_MUCX_Vrugwd0E9b_qcEewoI5-_U,3380 django/core/management/commands/check.py,sha256=nwmRA9rdeavDPmIpZGmUG79fftjradKtrogNIN4CakA,2312 -django/core/management/commands/compilemessages.py,sha256=F4zYpo3xuK30ri5Ja5RquPsP-esQJ3DHhkz6SNmsqNo,5073 -django/core/management/commands/createcachetable.py,sha256=zgcn_QHH_fTh181L1pcRBmRVrNCUgQPyGyKxahQ8kvI,4376 +django/core/management/commands/compilemessages.py,sha256=0LwUrhgwS_PfliuMSp62FpV837eyUvXr5YSdYonnSiQ,5043 +django/core/management/commands/createcachetable.py,sha256=CG-iK4_fYGRuXcvdhU7R3ivcvW6uNmYNIEx-CQlc-Jo,4371 django/core/management/commands/dbshell.py,sha256=OeexBQJXEUArOKWGKpBSsaA043X1UokzNWc_EDbJi5M,1240 django/core/management/commands/diffsettings.py,sha256=3as-r5_kfS8lw93SO7xUNs12p_IGVOzG43UTLdcMXx8,3369 -django/core/management/commands/dumpdata.py,sha256=uJ1znSWHk06pugtNdgly_gfWaNpQwOtqI59CgvJHI-Y,8607 +django/core/management/commands/dumpdata.py,sha256=r8CQDyg1O82Pu-p15yZ6I01a3OP-ByiyuKejs9AvY9E,8601 django/core/management/commands/flush.py,sha256=9lJy_cGMajdVmrLwdFpYqDCN89G69xYcjwBNfOpkRVc,3590 -django/core/management/commands/inspectdb.py,sha256=gqP7PCdnmdAPI1YHOeuheG-7qEl9Ch-697rFaFJ5J40,12852 -django/core/management/commands/loaddata.py,sha256=rXZ31_IItpXlzAKf2S9X1TOCFGKQcG3OVrGbJJ5p_1Y,14267 -django/core/management/commands/makemessages.py,sha256=0fzXP5GmPGfWJkoQ_reY8G0Furt5tT1rWXPfa2FBL80,27468 -django/core/management/commands/makemigrations.py,sha256=OMeTnpJfYla4xQicyJLCmUmHwH39_jSebzREdLyVyfI,14261 -django/core/management/commands/migrate.py,sha256=Pk4ZVi3YlnCm-ZN0lB0fp_XzKAHHBROA1pW9c8o3Oio,14044 -django/core/management/commands/runserver.py,sha256=gmpj6FQOUdi2NHz0QkbnoCJlCBsA7rg6OCCf99mF_rQ,6346 +django/core/management/commands/inspectdb.py,sha256=VejyU6vOWB3aeAFheMCFxZloyEvTb3hFMU9NEDELqHU,13344 +django/core/management/commands/loaddata.py,sha256=WqkRF_Ocf6W7uuOV3C4YsRykGmupC8xRtfNUQMqUwwY,14346 +django/core/management/commands/makemessages.py,sha256=G4pFvrYmQ0ulICU_TL_l8GydqZtXtwBpuNiO59GiXlM,27358 +django/core/management/commands/makemigrations.py,sha256=-TNT5mkpVY2pi7Rpg_VHOMMCqlVj_BGEz8I0Yrvsur4,14657 +django/core/management/commands/migrate.py,sha256=dgjO167vxWRxuRfncZbVekkijPMAKcRPIqtgBLSd1pI,14090 +django/core/management/commands/runserver.py,sha256=lF-OGOKDNtBZMCQbQbHBjysxBo_8Kv3fQ-zSDeEHnnE,6274 django/core/management/commands/sendtestemail.py,sha256=quvNqm0lfl3vvDfL0S0pBtW1te7LGcYNUrrac4lMAAg,1488 django/core/management/commands/shell.py,sha256=BROjrvPNCp1kC6jArrOEgzdyj0f6MNh4p760w2NdCyE,4055 django/core/management/commands/showmigrations.py,sha256=OQ2ovRjgy4A_LRUtFe6u2siUn0xqUBD-Qj3o7Ke5Rqs,5333 django/core/management/commands/sqlflush.py,sha256=mNxqSBp-fF36h3JMtEsDvYzCysxDA5R0IjhyiYyDMiI,795 django/core/management/commands/sqlmigrate.py,sha256=bKBsq3ldex8SR8GhMnrA7FS8kpXGjjy8lax_EL6Bc3E,2742 django/core/management/commands/sqlsequencereset.py,sha256=hCyc6og7K4cDbVflf85lusgoQz0fWiOylo6Jtlold8U,872 -django/core/management/commands/squashmigrations.py,sha256=m__NLsjU9-4YHJKOfcMmNdkklbLTEVLJ4epxpLjQVCM,9351 +django/core/management/commands/squashmigrations.py,sha256=ikiMcVAM4M6fOpFiCpHjs7egCNxr5yldwUp4sJFpjZM,9350 django/core/management/commands/startapp.py,sha256=rvXApmLdP3gBinKaOMJtT1g3YrgVTlHteqNqFioNu8Y,503 django/core/management/commands/startproject.py,sha256=ygP95ZEldotgEVmxDYBPUyAedNQTTwJulKLinGUxZtg,688 -django/core/management/commands/test.py,sha256=SexB7-Cdz4P3E9BcH8eGPOHuTKE5d0tCzyWfKNBQ0S8,2231 +django/core/management/commands/test.py,sha256=FTCTm0ESxozQVpd-qMgGxvIYjJu1m96uq5IwKFQtfhc,2140 django/core/management/commands/testserver.py,sha256=Veo-U69NUEyFuM_O9tG7GjRZ3aR2vWzcaVWahAIdS_M,2117 -django/core/serializers/__init__.py,sha256=74Jfha4K1Jxuciz0JCUPqXVUbGAqM0WhkzROJ1-Vfyk,8201 -django/core/serializers/base.py,sha256=AdJDQc0c2XXwsBrZs7VM8rZr6pUsP4JCJIYBXDc0EGc,7732 +django/core/serializers/__init__.py,sha256=TEJTEGHsW5vUAJWqQz7FdlD_NEGNaGlBN4zJAe21yeo,8073 +django/core/serializers/base.py,sha256=zDng9ZjOHUZ_LF8zxgIV7dtG7DgtP_3tujsbeorRL-c,9913 django/core/serializers/json.py,sha256=sKfzArRjK2zNaRUxYRBbUWmoQfDUKzyKdIKu1gBeKnc,3352 -django/core/serializers/python.py,sha256=BIJQvWkHt0AAAL3oM_TVM2foFwqNRmx4XDIHcrrazxc,7320 +django/core/serializers/python.py,sha256=wXih4euMPGbGwlANA7mBrQoV9LlZjltBAI8i4-eSoEs,5589 django/core/serializers/pyyaml.py,sha256=SXwXHjs0_29tycOtXXs-lWGS--SBBVeHlNb-rjheCak,2674 -django/core/serializers/xml_serializer.py,sha256=5TnYdZtx4uWbgCOf-xrknNtJNM7KvObtaCjpxg0CHxY,15138 +django/core/serializers/xml_serializer.py,sha256=ze5el6OpSaKndhVdWmIwBCTl7D97X4oUP-iWUH9KuNI,15127 django/core/servers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/servers/basehttp.py,sha256=e60X0mo7GHl6SAR7w-s4NT4YI9n9eeHpWLZvt4ZhqT8,6065 +django/core/servers/basehttp.py,sha256=ZwyI3gALKXl9E4BZ3H0Ltp1ZRSadB1F85-5XtBYQUaU,6054 django/db/__init__.py,sha256=1mrVglcKwooIWzGxQPgRevVkgd1iBAa7ESWPUAZNcS8,2128 django/db/transaction.py,sha256=tHQFzfrcupqrrv_Ux8wvRKYOsEi8WiwYdMHX7wTpjqY,11229 -django/db/utils.py,sha256=jDaaur7BVLCU87RRPCS9gBW_I_QOdraOk4f1vWn3cXY,9790 +django/db/utils.py,sha256=6hgaK5Gii2cgBy870Q0lFOhdyxvVLJeetdW0sV56xdQ,9793 django/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/db/backends/ddl_references.py,sha256=dBg6xSNpyH3YdHInd5afAo6oU_USpv828lnrg78tmug,5792 django/db/backends/signals.py,sha256=rAFB5bUdnk5jckIT4PwVwEuE6aj4dbtasRHcRnIyH6Y,95 -django/db/backends/utils.py,sha256=14Jf5WWbG4qQ49iXQmguidWt4WuxEDyWghoiG6oacyE,8688 +django/db/backends/utils.py,sha256=2z0cVaIwQGl1tjf2O50NoQYug2E86BJz1XWsidpqYlw,8691 django/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/base/base.py,sha256=qLA8aM_ZOJleEXDKsYssvbJOyGcGweUI71BkwiW1wBs,24431 +django/db/backends/base/base.py,sha256=78Cm8iQwbTEYnpRcPXgEttsKg750YtMrMzGEJrl3EiA,24323 django/db/backends/base/client.py,sha256=r6dcRhY5tPx9lzDZhbcDC1z9LDdXxRe_vtkgYQSmuEI,513 -django/db/backends/base/creation.py,sha256=jMCa7C65YTELVTteIbGPoLtilqnNNB-ay9TcM2iL-tY,11972 -django/db/backends/base/features.py,sha256=yDtSTHZS-IW5MVG6AzEWTa-XzfsEuv1aI8UKorAKe9k,10909 -django/db/backends/base/introspection.py,sha256=G0ejTl_mFSCse_4kbAcqssS_3x20wSyPQDgvzXNmJkQ,8035 -django/db/backends/base/operations.py,sha256=vJWV22M8sfN4czjzroZQ903rU9Py-KwP8DImqROUGgA,24665 -django/db/backends/base/schema.py,sha256=qOcZNZyashGWmZFOGwjWVUi9dzwHS6Jos8pD2MaAeZU,50103 +django/db/backends/base/creation.py,sha256=OB4McuBJ2movTK7lmCs2rn6UUfiHtUJ-1DvO9J3aMdQ,11896 +django/db/backends/base/features.py,sha256=98fDqXdj1ak_eizAZX8og_4OMZGS7ft-wR6F9Seu_x8,10655 +django/db/backends/base/introspection.py,sha256=ULXiTAPr11nTj0DreuS1-Q8UO1b8KP5iM7ILauC2ju8,7497 +django/db/backends/base/operations.py,sha256=zrKO0FwqTP_tiG2Dny-UTMCXG-DNGBcyTXE9tj3-WRM,26118 +django/db/backends/base/schema.py,sha256=dUxhnDfCSF4sQr3k5KlOLHfGGD0g_WYpyIPHx0juMXs,50227 django/db/backends/base/validation.py,sha256=4zIAVsePyETiRtK7CAw78y4ZiCPISs0Pv17mFWy2Tr4,1040 django/db/backends/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/db/backends/dummy/base.py,sha256=ZsB_hKOW9tuaNbZt64fGY6tk0_FqMiF72rp8TE3NrDA,2244 django/db/backends/dummy/features.py,sha256=m_ZHTydiox34PXZGj9AbbpjZni9UW44eKvz_VNbM7Ug,153 django/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/mysql/base.py,sha256=dOHLQftWvWYpGvMapHgNFr6cX0YcPMURAjFiQijP1EM,14068 +django/db/backends/mysql/base.py,sha256=-WmZa6v9ldnz5V7BcZupzqZIp99HTftwK-ZN2oFsZN8,13777 django/db/backends/mysql/client.py,sha256=vvt1-wevYeQR4JmklrmZ_nrUrXdMaAXQOV7j42XZx4M,1834 django/db/backends/mysql/compiler.py,sha256=J30bWgLviaWfUktegN7YnXmp6CaEZ6u8VeuiN4DUk4E,704 django/db/backends/mysql/creation.py,sha256=vFhQ2zYbGrC_TrIc7wBcbh_i7apGD-t0ZG0h3vD_IJQ,3265 -django/db/backends/mysql/features.py,sha256=t6RO73Hp-Ji397xqN4wnhdRvxVLyu9OgHyXUHuh6uIY,3538 -django/db/backends/mysql/introspection.py,sha256=J803HLgJTly4WwD8_uWGUjmUjDJwAW-FyKFWZIF1i5I,10201 -django/db/backends/mysql/operations.py,sha256=fBXLCjk1t2rCTwuNNZFJm5je4RAUKYsiJyE62Do0PJs,11358 -django/db/backends/mysql/schema.py,sha256=jXTAKbeFSFu5g1WVmHtX7B4UJFWoF0DJN66birCgOQs,4479 +django/db/backends/mysql/features.py,sha256=YrZ0NWqpYHrqjL379bM5oWrM1NUe0ZYnQmZjEb05NoU,3983 +django/db/backends/mysql/introspection.py,sha256=mVvR5JgbeCKyiBBW3jrLEznx1PVTKFu0_q7M3qx_o-0,8715 +django/db/backends/mysql/operations.py,sha256=VxeFoCFNoRABVn6WVQlTEBMc_MKwHnH5I-H8yHozqng,12214 +django/db/backends/mysql/schema.py,sha256=0-zhjYravYTBw5CxDQhKyHhbTIjBAYiefOKQDA5up4M,4514 django/db/backends/mysql/validation.py,sha256=C0MLttf0KGEU9i0N1jrXwprRgSV0uT7qL4Eu9yllpRQ,2565 django/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/oracle/base.py,sha256=Bjx8wY7N9oGDSjvKP96-9j2IbqCSrNrNl_3Sd1mSb58,22638 +django/db/backends/oracle/base.py,sha256=5MJKdXnMryOgOaDXLE7gvDt9zxVUBTBjdqRAtBjGUFI,23101 django/db/backends/oracle/client.py,sha256=efoAYVH76x_AMMqq1h8JNaCpq_UtlktyuYuXLZfze4E,331 -django/db/backends/oracle/compiler.py,sha256=I4vNNZ3qYrZ8mV4yL4YCyDOyExUaFbrYOcA-gywqWgg,2437 -django/db/backends/oracle/creation.py,sha256=-oOjmWy8kXznf3VH7TQt2Miq3B0Xvn7hy0cvuTPa6BM,18640 -django/db/backends/oracle/features.py,sha256=Zb68pUqzB79OEHDWtTkBYdxlDfoDk6hZiCyDAP2pqqc,2088 +django/db/backends/oracle/creation.py,sha256=LLaPnhv1JZhRWrdqVPKGUxQrp0XcU94W6zEu5YNHGf0,18751 +django/db/backends/oracle/features.py,sha256=miivLEEPshcQWjpGuJWNVPfhLvo5DUIsdshR-2Av6uk,2052 django/db/backends/oracle/functions.py,sha256=PHMO9cApG1EhZPD4E0Vd6dzPmE_Dzouf9GIWbF1X7kc,768 -django/db/backends/oracle/introspection.py,sha256=MKc51u-u3kD3lPJIEUkWHSfByHOu2-CQpo0Q9KD2NLs,11946 -django/db/backends/oracle/operations.py,sha256=KMN3WeC_Tt3VGuYXMevqq9pq2Yopwauo54GXOJdqnlo,23939 -django/db/backends/oracle/schema.py,sha256=GFR1jojMnqcPiZmf00iWYK2aD-ao5caTH09iUyaY0pc,7358 -django/db/backends/oracle/utils.py,sha256=nQVsE_cwQZeyvLwFhZ_UTvGs3SdoGCzeCJ82UD3Rhj0,1457 +django/db/backends/oracle/introspection.py,sha256=woRZUoGA2xwPuz2ncMyS658FECTsPmOB8nq8eb3Hdh8,10485 +django/db/backends/oracle/operations.py,sha256=b7Z3IdEbgLUBipDU3iPQ-5bdW6hMxH5sVYD1LxvtBFE,24643 +django/db/backends/oracle/schema.py,sha256=bC8qX3Ayver-edf-W8YALcJuCDtw7UfxLLqaY1Tm4EY,7501 +django/db/backends/oracle/utils.py,sha256=mYTe-6R--xoYizlJd26O-5H_lCtfFkZ4aVXaLlsqS4Y,1489 django/db/backends/oracle/validation.py,sha256=O1Vx5ljfyEVo9W-o4OVsu_OTfZ5V5P9HX3kNMtdE75o,860 django/db/backends/postgresql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/postgresql/base.py,sha256=lY3G4HLKY4gCR08T_rC4khafOcLrDtqBLfcuMXqaBAo,10558 -django/db/backends/postgresql/client.py,sha256=EbqEen1Nkp5sb4RVn1tawrbEioXQjbGI6M72FfTg79w,2382 -django/db/backends/postgresql/creation.py,sha256=rGjKMO8KH-vKrrHXrSInMvthrtkTMyDIgIQB5p6GmnQ,2928 -django/db/backends/postgresql/features.py,sha256=v_5YfdP7eSpGAXyPIlBe8aiSYuWb8eiNJD6l0NxyOp4,2429 -django/db/backends/postgresql/introspection.py,sha256=B9SNIsDMP_TX-YmrvGq2gPeTuClp41x3RrxQEY4eafs,11775 -django/db/backends/postgresql/operations.py,sha256=0eDv7U7RMBeeh8rVHBSiPNLpZb_uHtaLja0alxUbkuc,11123 +django/db/backends/postgresql/base.py,sha256=K6Vt-Ch-PCaotDljDYm2_ZJE3wZNYb2lqbwlIaOJ7OQ,10979 +django/db/backends/postgresql/client.py,sha256=0uzZPVsjsH28p0eBn6hWS3u2heVQfBJWzm0sQB49hZk,2383 +django/db/backends/postgresql/creation.py,sha256=gHE3lWMocmI_OnrL2akElqqbEg3juP3tnByFrAjnfcI,2892 +django/db/backends/postgresql/features.py,sha256=TSguighOBQZTMj0P8n7mzGL0cZJoZNCyBa_EPOHT7Fw,2240 +django/db/backends/postgresql/introspection.py,sha256=VPTdrZdYEQDBygf_BxF5B4dKYs9J5NblvDMrcVikLMY,9587 +django/db/backends/postgresql/operations.py,sha256=j-fBjUfueMmc0z5akzTH5uf5RN2N0Lwbr_ooStAYJhw,11645 django/db/backends/postgresql/schema.py,sha256=10GrHRQlQ5j1pGh6vjdxgWP7yChyBmpi7605asUA8ic,6402 django/db/backends/postgresql/utils.py,sha256=3GXuTEoyPNqfUcXOCVnC-gw7xdAV17ZvZYb4Qu6f7Mc,176 django/db/backends/postgresql_psycopg2/__init__.py,sha256=5v4iwk9d_ENPQMdjDfQxvPKTlOXxfaWsnaR-qgCPMcM,261 @@ -3071,91 +3071,92 @@ django/db/backends/postgresql_psycopg2/operations.py,sha256=xkIOUX-rLI6YjTKtEHYE django/db/backends/postgresql_psycopg2/schema.py,sha256=R-3T1eOq2-yD66L2--ICntPF2ZsLZ-Ok4TV4FGxyG5c,42 django/db/backends/postgresql_psycopg2/utils.py,sha256=eneNs5az6_Q07x0q991G7ZABYgE-YgMg9-Xk35LT7PM,41 django/db/backends/sqlite3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/sqlite3/base.py,sha256=79X7iB3L9yeqh2ASIat0g5TZZGoI3aBELsS2Vph4Obc,18674 +django/db/backends/sqlite3/base.py,sha256=Mcy5PldaRItj2AI7bmQHtIyZFY5q1jX7-O_ENDHS6UY,18733 django/db/backends/sqlite3/client.py,sha256=wiSj2r4sCG-n3SwFKJV2mVEw9GFXiyFbHgD_Ic_DjxA,311 -django/db/backends/sqlite3/creation.py,sha256=eQToSSfszeS-SyQzihO4FAcEFREKrNlJbQReTaFRUXk,4866 -django/db/backends/sqlite3/features.py,sha256=tBceqqJ_bGtQDLVHrWzFS3acvTNAVechQMIY9utgRL4,2347 -django/db/backends/sqlite3/introspection.py,sha256=YJYVQfFZOUDYKuxAAH-ZnGRZuh_yjaumboYvi8FxdQ0,13221 -django/db/backends/sqlite3/operations.py,sha256=7oRNkRsIHdZyBSFpHBfmSJO1S1GbzR9Z1QwGqzB-hPg,11862 -django/db/backends/sqlite3/schema.py,sha256=Qsw58FtoeInfasOFncAFD4T39zXkqSU8ISZO3iRiy5g,17548 +django/db/backends/sqlite3/creation.py,sha256=LaeW5l2gENepf8tiIVfk7wHtMBIgqGWcE3vWiMl1xwU,4244 +django/db/backends/sqlite3/features.py,sha256=XOagBEXNoN0b174oSxu3s44p2vd8NTnHrrMDeNbl3Qc,2054 +django/db/backends/sqlite3/introspection.py,sha256=-vYVRyCQ_4D0_WK5eR2cCT_POzl2vmWW4VnD12jCaTM,11727 +django/db/backends/sqlite3/operations.py,sha256=dZjvB23OW6QwwbYv-i81O0qjqsvM0Z0HAVINZ-EW9wY,12605 +django/db/backends/sqlite3/schema.py,sha256=fs4Sy0-mdaSv6rWKDoD5Rvi1G2pM0YqprZJc5hX8_Fw,17211 django/db/migrations/__init__.py,sha256=Oa4RvfEa6hITCqdcqwXYC66YknFKyluuy7vtNbSc-L4,97 -django/db/migrations/autodetector.py,sha256=laJi1HxlaEB4HsBbn4pdVytV-_zUClv7BgLClIm8bu0,59878 -django/db/migrations/exceptions.py,sha256=LCj-jTC1MhrKCyarNxhWWhQFIU2DGkUV4AtLwIEZ1MQ,1205 -django/db/migrations/executor.py,sha256=3goKbSuwv_VMZJd2bnYp9B9KU1Hn6Sy3wJpZ2L5CMHA,17479 -django/db/migrations/graph.py,sha256=7dVuynqL0AtIAug6wvaHT8YWB68pbnLrHFoPwFMjX-Q,15508 -django/db/migrations/loader.py,sha256=VZtwhgnKJ3jIv58o6aMGoNY_qS5PhIPY8k5EZdn6k9I,14786 -django/db/migrations/migration.py,sha256=XsGy8wvCWZBX-s3oGzovrwfYd_ffz0RYhWZ2D08AVug,8235 +django/db/migrations/autodetector.py,sha256=bYjJQ2SMvoJLT4wAXTAfTgoMSRdXEQwUX3YTM33kF48,61294 +django/db/migrations/exceptions.py,sha256=cfa6q9WVRsTmwIucNjq8W2MbvSA-CNChenY3vFie4xg,1204 +django/db/migrations/executor.py,sha256=KfFWmllNW0eKIlqCfsENupPBPHHXscYbJEi827nxRkI,17514 +django/db/migrations/graph.py,sha256=s7sXVlea6BiAgAFWxorVHTSoYkEXFljD8AyKRSxcQWg,15554 +django/db/migrations/loader.py,sha256=vA8WjrxtcC7aw_EhfSq-fFQrHf10YfwyGysiyAGXQL8,15002 +django/db/migrations/migration.py,sha256=qK9faUXqRpPrZ8vnQ8t3beBLVHzqX5QgFyobiWNRkqI,8242 django/db/migrations/optimizer.py,sha256=c2dt0t4AOVKLOCYYWZJm9C0IteVzTkD8D7r2Lh4A8iE,2803 -django/db/migrations/questioner.py,sha256=N18IZJrKLzaKFb9781l-Bnq-py0R-LEstzhGHnTLJoQ,9839 +django/db/migrations/questioner.py,sha256=7L6fcv0nKvMHGRfRLS_K8XGCsxtdPfA6wQyRmQ30-WA,9922 django/db/migrations/recorder.py,sha256=YV9VB2IWX9n4Qf3EuZyryu2OHGIy2syacpaW4LNktIc,2891 -django/db/migrations/serializer.py,sha256=UWpSdTpc8JJm5GaPrDENs11sU8q0_9IenXUkFKMllrs,13457 -django/db/migrations/state.py,sha256=jFbM1wda7EwjrliAiz1HOFKDUbIpDGqSQSHynkQhJdU,25204 -django/db/migrations/topological_sort.py,sha256=M8VCyxJq-OOn-i-d6HgFYi0A77iOO7H6-iAjlqabywE,1141 +django/db/migrations/serializer.py,sha256=yEUHUvv4vN3Tr5ScEg4RLE9nZ-ajfUgmJ8cbAskJJiQ,13084 +django/db/migrations/state.py,sha256=GIrYOnGvRiVfukAUO0CU4jMSDfQIbiKy9vL00lmmzhg,25176 +django/db/migrations/topological_sort.py,sha256=hMPdQx2vp5IWsUngA9xrGiXQgqqjM11PnQB_mK9xpI0,1135 django/db/migrations/utils.py,sha256=ApIIVhNrnnZ79yzrbPeREFsk5kxLCuOd1rwh3dDaNLI,388 -django/db/migrations/writer.py,sha256=p_oLWrhPVvNrgpxXNTcfTLSHBGXOJSo5Ax4yHinXHCQ,11085 +django/db/migrations/writer.py,sha256=bAijVRbQsp-ixM6DWQV1fNoKSDC5udwmndAWOE25WN4,11099 django/db/migrations/operations/__init__.py,sha256=AsJk4Z1G6-hLJRWkyOLpP3lApxn4OmP4h1yqPrnUlfU,700 -django/db/migrations/operations/base.py,sha256=tYSvlbstzKKr2VSHnsn7PrKr8FL748C3oc253Auds4k,4830 -django/db/migrations/operations/fields.py,sha256=0PflYROnEv-J7Mayci7VOX9HtshT-pF_P_LSSexq0i4,13496 -django/db/migrations/operations/models.py,sha256=KLsnlPqlyqoHV-nUhFgiW4_OzCUwP39_0rJXhLgGuOM,32632 +django/db/migrations/operations/base.py,sha256=k_8jnaVpVyCebOxTyWIW5QfdMCS1Tbd7t9mtszDCZAQ,5242 +django/db/migrations/operations/fields.py,sha256=OlUSJjHHGGzQw5P3m9KEZHTGOZpSMbkUOCmgf3owEog,14976 +django/db/migrations/operations/models.py,sha256=OUtL0tY7RutNtUHOmqSoJZEoRI3jIKSRBuXPk2Cp7i4,32079 django/db/migrations/operations/special.py,sha256=6vO2RRgaUPnxEjbkTX3QwAN-LaadZFHYpFHouAaMmig,7792 django/db/migrations/operations/utils.py,sha256=E1pAxwoutzNe0TDZBTaGwjtu7p2Vmt14sFidLl_q3OI,527 -django/db/models/__init__.py,sha256=WL0qmZ8SIT8XaOaMcICSheau1rQ2zSOBC-G97P6Atdw,2928 -django/db/models/aggregates.py,sha256=8UxgzXRT57RuQVsxppfD10Z37-1o5bzIyWoeBHvA04w,6821 -django/db/models/base.py,sha256=cQJEIh3Uo4FZ9WsaaC82OEbiuAiHqZHqMqkI0SKsP1Y,71296 +django/db/models/__init__.py,sha256=EBhvoOILTqPo-wgXCErBGbaEvTBAvcYoNJ1kJQBa1N0,2089 +django/db/models/aggregates.py,sha256=7HqAxxceEYh9iUnJgHVvnuqN7ldfGoHcjDbGZ-6dZHM,7122 +django/db/models/base.py,sha256=pxubkoiOGf86KL93-boxREBMYSc5310KxhX4FuHGH0w,72009 django/db/models/constants.py,sha256=BstFLrG_rKBHL-IZ7iqXY9uSKLL6IOKOjheXBetCan0,117 -django/db/models/deletion.py,sha256=wG5lFqNLzIl60u9ARCmpZqPY-F3hrpcc4Q9GI9jMFgA,13584 -django/db/models/expressions.py,sha256=4kxD_ym1nejMlv5qq17oqwQrhgF5GAebe3hwQuDDSuU,47782 -django/db/models/indexes.py,sha256=PjGjFIUEeNGqWsYVou2txCNV8pmUeb-Noc8pwEMP7d4,4759 -django/db/models/lookups.py,sha256=0wg5loWajDmX4w0gjX92WbKfQsTrIsnq8NvnAqW4iz0,20976 -django/db/models/manager.py,sha256=SPZrZ3SUTGFQd7J23mcH2sj16HMTfs1M4oZQg2GlUoQ,6828 -django/db/models/options.py,sha256=ZSXf8SObwmC2iF2bEY-9skbh42leTBOZJgzZmcptSVo,34835 -django/db/models/query.py,sha256=crU2Zc5tbvZ37Hq_FamFVqTuEitJVixUeX0dfNtPZA8,74693 -django/db/models/query_utils.py,sha256=95uWgaEszXNiS5WRG2pTV6qWI51USmXPV7G7RubPRes,12224 +django/db/models/deletion.py,sha256=rQt5kQ_fxE9SUFZQTDPyRJ6S0R9-QPvCjhZpXN1haf8,13517 +django/db/models/expressions.py,sha256=pXoWfuvHZbtPBXnw2pTJigtxauL_K6dRASB0MB93DDQ,47681 +django/db/models/indexes.py,sha256=EQerHFFNRSoaVKyG9uksFQdDD_zJ2RSdlADQVUt4GmU,4770 +django/db/models/lookups.py,sha256=16tOS72_G7amTT52f5zDIxnlblqruxLMJ50WqAU7YTc,19957 +django/db/models/manager.py,sha256=UCeTO9N4jXuY_BbyDxRdeDROW2y0gxSDSjZ3bb-q1mY,6767 +django/db/models/options.py,sha256=JhpjWS8zYuwvgd9rXh3fcm9N5RM0aI48HZBoBZMofQk,34333 +django/db/models/query.py,sha256=_dmK8u7ftL0uNYTK58T0W3SCa9g8IcDSWqbw4w-Bdb4,76436 +django/db/models/query_utils.py,sha256=moL03yUeZVtcTtvaUEK6bXNHgs2n7YqjntXu-Uxt6No,12240 django/db/models/signals.py,sha256=KWJCYuMFWrZPsLDPiM2TfkzC_Hq8gbEYWkvw-qXAA9w,2160 django/db/models/utils.py,sha256=1mQ_zPVpHleO_BFdEU714a09NMvSmR65-T3P31hhMEk,852 -django/db/models/fields/__init__.py,sha256=Fj9F7DO5aqOlNPAZZHwgx_Kq9CSibXW3WzEJW-Hr5FE,85914 -django/db/models/fields/files.py,sha256=qxz5IC6bYzW1JSto6j-sRzgHvb77MJAeFPt1aFrUXcU,17903 +django/db/models/fields/__init__.py,sha256=DLF7lk3eZF2wsDwkFpXhLEUuKEhXafURf277qGsUk18,83969 +django/db/models/fields/files.py,sha256=oRkgEqtvxQZa0GbgpaKJua83RKzHmNWSdkJ27oJlaU0,17776 django/db/models/fields/mixins.py,sha256=5Ckq4d1cZODHfViLGcUyuJwvVPyV-Kfd2aZJzY4ckxc,816 django/db/models/fields/proxy.py,sha256=fcJ2d1ZiY0sEouSq9SV7W1fm5eE3C_nMGky3Ma347dk,515 -django/db/models/fields/related.py,sha256=YSMq9uF8UETnnUfn-DHko46zY0Q870weHmYnzjfXX58,68335 -django/db/models/fields/related_descriptors.py,sha256=vONHdFpi4ARo3hruFYZYpLp6E8yuByGbQzpjWX-4S_M,49460 +django/db/models/fields/related.py,sha256=3CzWj1BoL_laArjsDvVsjsrZw4XI2uhGmk58W3smR6E,68039 +django/db/models/fields/related_descriptors.py,sha256=mUlt5ouyZvDvD6wlNpwrrL_egk3QXqiKjiMLKxZXOek,50897 django/db/models/fields/related_lookups.py,sha256=-T9rIa4aOgy3Uy8Q0QkTj8Npux0E8P4ZSVAf9jsMf6I,7023 django/db/models/fields/reverse_related.py,sha256=j-YOys46oqP7T-8xfjz3_5FcOWR_hMBBp2xg8xfFmSs,10046 -django/db/models/functions/__init__.py,sha256=QliWCZZiyOGHEaBMAwujzgV-Zrf8O9bNCgqb8CxXkrE,1174 -django/db/models/functions/base.py,sha256=9vjosVnqGU82AvEtHlrvDoTgYMbJbvf2QBxuhWzRFMc,7155 -django/db/models/functions/datetime.py,sha256=7KlQP-hcAQCGQcka3695m5JZ08Oe8aEmSvowSQgIr_c,9967 +django/db/models/functions/__init__.py,sha256=7rVkv-YDycLrrmauuwMD8ugPGtjmG9y3BP2oNm_eNaQ,1431 +django/db/models/functions/comparison.py,sha256=CwA2ofVbMAxYHs1kT4pl7BDIGIgwRCarIS8Gnshu1bA,3520 +django/db/models/functions/datetime.py,sha256=rSGg6x6ds8-auCrr8znlRC1mojEUtRjFsBKv8NwbRWQ,10522 +django/db/models/functions/text.py,sha256=ypZg-U0-REcBcyRCKoq7gmmrOQO79deCjaF9PPJ2Ay4,7768 django/db/models/functions/window.py,sha256=quryNTlbAO5vImSRbIQNxyFJ7jAq_M_1vmuyZSCgyMs,2948 django/db/models/sql/__init__.py,sha256=OcwrDD5reAtAe_L3iB6sm7uqzi1JOaoozN-p8veYZrc,252 -django/db/models/sql/compiler.py,sha256=i5h7wuT6aDBzphCqZhR7ntP0MvXWYlwyequaguJiCrs,66614 -django/db/models/sql/constants.py,sha256=p9_PSAOMk-5Gj2bR6mzrQZ5HGOFPxRCdxRk3Y8l1cXA,1039 +django/db/models/sql/compiler.py,sha256=oFgfG-rsfgJCUjHt4pgBxcCzuOBpkw0FC2uP3mu8YHE,66916 +django/db/models/sql/constants.py,sha256=gMg0n_j0fsfmqV5XFiywZXgSvuPq_WPV50ZSFlWYaCE,591 django/db/models/sql/datastructures.py,sha256=LPRTkrZ7Is1d4MMo29mWXV7s4W3u9f16UNAce3pk3a4,6721 -django/db/models/sql/query.py,sha256=tXt0czLKAc2iQvajqAGHeG7QANNLCF1mvgr0pcEFPz4,96644 -django/db/models/sql/subqueries.py,sha256=Hvu5xnsO4VLDDHKR6Q3h63VsiyASI3PCHQvU9i15G0w,7198 -django/db/models/sql/where.py,sha256=QQShEZva9Wa040FE_hfYpgUGPXBxm5JJBgTJcyWW4fo,7967 +django/db/models/sql/query.py,sha256=qXQcPhRK4KxZTadNx_pHj_cQWFpayp3L239-rKXcq2w,98944 +django/db/models/sql/subqueries.py,sha256=UuriPrgCjl1G0kH_hxgeavQVsjkOfLS-OwQQSzeKPYE,7207 +django/db/models/sql/where.py,sha256=VYEXqij3zeuDZdBP2p9FoiGb_A8dqlN-CBpzFjjv5Eo,7990 django/dispatch/__init__.py,sha256=qP203zNwjaolUFnXLNZHnuBn7HNzyw9_JkODECRKZbc,286 -django/dispatch/dispatcher.py,sha256=cZ9MkTFtcL366cFUAw8oOK9v9ofbhMWWyoL5aDG0P58,10848 +django/dispatch/dispatcher.py,sha256=77HBItSfGTPzNOnbhM4sMNEgSawl9yM1GWx48SJrr0Y,10707 django/dispatch/license.txt,sha256=VABMS2BpZOvBY68W0EYHwW5Cj4p4oCb-y1P3DAn0qU8,1743 django/forms/__init__.py,sha256=S6ckOMmvUX-vVST6AC-M8BzsfVQwuEUAdHWabMN-OGI,368 -django/forms/boundfield.py,sha256=aZmGbbiIJ_yA5iPw-sLCwWycQsCeKKaCFPVie7EzhVY,10749 -django/forms/fields.py,sha256=U76WvH2B-EeHm5edo1dRFtexkvUrNlzKbFCj_s4sjHU,44053 -django/forms/forms.py,sha256=WcLs14zO32u6QwNMOymzZXlh_hYSnrk5P1CgZIhixEM,20240 -django/forms/formsets.py,sha256=dkr74GXWf9L-dfcEe7JRmF_pqR2rIwOi7F7OxV5FmJY,18191 -django/forms/models.py,sha256=UVhQ7V6liv0TobbrjwTRs4yOZV-4zPQGzgzEJ-5xE3o,56012 -django/forms/renderers.py,sha256=mcfyrCSCSAYQTmII5g-82ZynuAv4S_P4FxLQ59ZYQck,1972 -django/forms/utils.py,sha256=3oMmxvzaruMZPMcEYCLOS8MUH4NK6SIyiAhW2kTVeME,5736 -django/forms/widgets.py,sha256=7sGuC_0BjvV36Qrk3qj2zmWyOpJTX1BNQ2Bpde_Vrvw,36765 +django/forms/boundfield.py,sha256=X7zpRwQNc6QQOPnrXA9t4eLiGJlFY209do7N4bSFzPc,9978 +django/forms/fields.py,sha256=d_AulzcHWkmEkUmAi2ohxnMj7U-ETaZUBUx6IrM-cx4,44727 +django/forms/forms.py,sha256=FFv07TkZhPV6_lvDBwQphE2fkOYMUSKL4X9p67IQI9M,20256 +django/forms/formsets.py,sha256=Aq9myIvXWdLUgLR2t9ZX61fCqoj83VCRAnTKH0qO7eE,18172 +django/forms/models.py,sha256=qcNLchGNPWtZ-Lk8nq01O-oXItVw_vFXk3279WjWUOY,56262 +django/forms/renderers.py,sha256=URxnFGbWNa5Mco2LNxQDrWWHmsXh4WY1QPLJ9rlTDpk,1975 +django/forms/utils.py,sha256=1EkxKX6-y-kj0Xzdwv-eJjL3zvbqjx0-Saw4EAOQAgg,5659 +django/forms/widgets.py,sha256=uBAYL55FJi4t7eTEABLjnFeD_Ca4mkNGyI8RTEDeKI0,36543 django/forms/jinja2/django/forms/widgets/attrs.html,sha256=_J2P-AOpHFhIwaqCNcrJFxEY4s-KPdy0Wcq0KlarIG0,172 django/forms/jinja2/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/jinja2/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 django/forms/jinja2/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/jinja2/django/forms/widgets/clearable_file_input.html,sha256=4dmO2jGov35wB0hbbEQJG_8CWcD1czjWy6ViQ9TIJcc,467 +django/forms/jinja2/django/forms/widgets/clearable_file_input.html,sha256=f3TWFr6fXxgVfpKPM2QQgQzPXm9RsPtDs6lQfhnaUVU,461 django/forms/jinja2/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/jinja2/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/jinja2/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/jinja2/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/jinja2/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/input.html,sha256=_Cr3sQVyv3alcf77UOGvxAabSINCATkVX3qqlEP_ciE,174 -django/forms/jinja2/django/forms/widgets/input_option.html,sha256=ZjX4w2EeSaPnWjhBiVpi5L-IriTjQ5s7fsS6gTMy5U0,205 +django/forms/jinja2/django/forms/widgets/input.html,sha256=u12fZde-ugkEAAkPAtAfSxwGQmYBkXkssWohOUs-xoE,172 +django/forms/jinja2/django/forms/widgets/input_option.html,sha256=PyRNn9lmE9Da0-RK37zW4yJZUSiJWgIPCU9ou5oUC28,219 django/forms/jinja2/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 django/forms/jinja2/django/forms/widgets/multiple_input.html,sha256=O9W9tLA_gdxNqN_No2Tesd8_2GhOTyKEkCOnp_rUBn4,431 django/forms/jinja2/django/forms/widgets/multiwidget.html,sha256=pr-MxRyucRxn_HvBGZvbc3JbFyrAolbroxvA4zmPz2Y,86 @@ -3176,14 +3177,14 @@ django/forms/templates/django/forms/widgets/attrs.html,sha256=9ylIPv5EZg-rx2qPLg django/forms/templates/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/templates/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 django/forms/templates/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/templates/django/forms/widgets/clearable_file_input.html,sha256=4dmO2jGov35wB0hbbEQJG_8CWcD1czjWy6ViQ9TIJcc,467 +django/forms/templates/django/forms/widgets/clearable_file_input.html,sha256=f3TWFr6fXxgVfpKPM2QQgQzPXm9RsPtDs6lQfhnaUVU,461 django/forms/templates/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/templates/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/templates/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/templates/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/templates/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/input.html,sha256=522egUaO0QWqTWwqBIEdTZI23I_fqKpWw64hMEaccm0,191 -django/forms/templates/django/forms/widgets/input_option.html,sha256=ZjX4w2EeSaPnWjhBiVpi5L-IriTjQ5s7fsS6gTMy5U0,205 +django/forms/templates/django/forms/widgets/input.html,sha256=dwzzrLocGLZQIaGe-_X8k7z87jV6AFtn28LilnUnUH0,189 +django/forms/templates/django/forms/widgets/input_option.html,sha256=PyRNn9lmE9Da0-RK37zW4yJZUSiJWgIPCU9ou5oUC28,219 django/forms/templates/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 django/forms/templates/django/forms/widgets/multiple_input.html,sha256=HwEaZLEiZYdPJ6brC9QWRGaIKzcX5UA2Tj5Rsq_NvOk,462 django/forms/templates/django/forms/widgets/multiwidget.html,sha256=slk4AgCdXnVmFvavhjVcsza0quTOP2LG50D8wna0dw0,117 @@ -3201,139 +3202,137 @@ django/forms/templates/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2Ajrh django/forms/templates/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/forms/templates/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 django/http/__init__.py,sha256=5JImoB1BZNuZBOt5qyDX7t51McYbkDLX45eKmNN_Fes,1010 -django/http/cookie.py,sha256=7pFpsa7ITOB2LNv6lbXbt3DKwdJlFgsAKKSWFUmwO2w,1128 -django/http/multipartparser.py,sha256=xbOHPiGnO4mx7MyANA22hfduNKI1uKL5TSGrcVWepyE,24832 -django/http/request.py,sha256=93--k0OOpiRW-d6SbAnzXxbCUhXpvo2S_4wNbrgEo8U,20584 -django/http/response.py,sha256=7eN5TuQS2MEZ1HVpeGJPgp7527fNh7Y5hKjdZla4eWw,17512 +django/http/cookie.py,sha256=Zpg6OEW9-dGvr5ByQhlHyGjLJzvNNrnGL1WzolnsM6U,818 +django/http/multipartparser.py,sha256=nVsO_ltddU2WwGHpmx33-a2LPBvLCvhsSKJCrXMGYRs,24849 +django/http/request.py,sha256=z9XGii8L_R2vRpZp87uePIwtEvgDKxvZ7Lb3GN4_HQg,21421 +django/http/response.py,sha256=L0MV68QUJIn3h7nzoquIdeXTIoJSd6IQLraVGFZSDKQ,19825 django/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/middleware/cache.py,sha256=6_rVV_p0NXY75nfrU0JOt56O--x8CQ6ZcbGWnzjW3Eg,7570 +django/middleware/cache.py,sha256=O2o_oy_WqqOdIT8ncgTOFv--WQDZxslVPgKeV0ZGWc8,7721 django/middleware/clickjacking.py,sha256=4rzsG5m_Z2VabN7J_5ZVeFj14X3FAbs0iU5LKoBb9js,1733 -django/middleware/common.py,sha256=-C_VQObEpT9G9Y7OFx8UVNAwJhWQfSDicV0-WhEe-KM,8584 -django/middleware/csrf.py,sha256=L5zmV7loWuWktjUEUcFdPpjg5gXAPHyaO-zJpCpCasw,13363 +django/middleware/common.py,sha256=j8uL14Du1FaiY-tK87YEQRb1MsYSREqpLjWxkQzaVVM,7337 +django/middleware/csrf.py,sha256=fSlTeTCEz7K7BAwAUk4KMDajDoUsj7EPZGrXELGwOoU,13606 django/middleware/gzip.py,sha256=oq6J0L_1NLZuvV1F1MxuFPzdUS71301py0GWHBAmk2k,2060 -django/middleware/http.py,sha256=UO8H-fZpzpwiGDSD0sPoRqCAb3klksH25LFqkV6Dq8I,1636 -django/middleware/locale.py,sha256=QcxeqrDmZdEar1yhkGusYUIG0DdTlnkkf_E9L6SWy-o,3058 -django/middleware/security.py,sha256=he5CoJN5d5v61X2qDJr2eYGOetAK6X6l3O_1c0Zd69k,2016 +django/middleware/http.py,sha256=JiRGXvtfmXxYTomy7gde5pcG45GX7R0qpXiI5Fk06dE,1624 +django/middleware/locale.py,sha256=MLUCXirb6za_o2T4mKokGvow8Z-jTrUhfGBJ82y0Mz4,3017 +django/middleware/security.py,sha256=m8Ag9-DukNY29iaHIO0Jds-hBufbVT2qr_bmm1pnxVM,1952 django/template/__init__.py,sha256=t5onT26DOSny4Qi7iz_a82M5WJydvPpkb6hFjE010CE,1871 -django/template/base.py,sha256=N7CwNztY-nAEgYn0yv9ku9cqIkJZBFHvAs1FBPkXsLo,38193 -django/template/context.py,sha256=LkyuI1J-5iZk04ByzgQn7uxksqkTwWf7cHK--ucWIPU,9076 +django/template/base.py,sha256=wX19V7s2DclWn0hZbeUhI9AfwAAlER6MqfEC9CaNibo,38160 +django/template/context.py,sha256=XAKXR6_J6Ql0pNU05er8swd2JToS5l_PpNPSM77_E-A,8978 django/template/context_processors.py,sha256=drfyVYugSe1lg9VIbsC3oRLUG64Gw94Oq77FLfk2ZNI,2407 -django/template/defaultfilters.py,sha256=DCLCHdfQkseWVBRZxvf1Iyhkbwc419gNzKW4djYmw3o,25806 -django/template/defaulttags.py,sha256=b88tlGSi5OWIPjwtoWmYmzsG8QXCagiea8fB8MWxNlU,49943 +django/template/defaultfilters.py,sha256=_ku-wtdPwxSg06M8-LKn1J5ZnZKOkgkXZT6xe5VyAYc,25929 +django/template/defaulttags.py,sha256=e25ZEk3xgy9m-rBeC2yrWgz7q7iFYhvMarySnYcMH_Q,49642 django/template/engine.py,sha256=dWgo-JaCkgA0SCI_JmG5ZihzL0lbDZf5rTJyU1un49o,6886 django/template/exceptions.py,sha256=awd7B80xhFB574Lt2IdIyHCpD6KGGyuKGkIoalr9deo,1340 django/template/library.py,sha256=g2gi5FfSug-Wak2P4Weg7qGcwHrwIy47vse35YYkLbk,12812 django/template/loader.py,sha256=-t5cTnWJrxtS2vyg9cguz4rXxlTBni4XoJUuqJNglPI,2054 -django/template/loader_tags.py,sha256=ZDcJWpCogd9NecVimLthqnSfdRV3yQInZ7_fnagWKQQ,13329 +django/template/loader_tags.py,sha256=beGFoV5luVMZj6zaUaY1lUFv5gWzQqmDybHsnTOG8Jo,12306 django/template/response.py,sha256=dBq9wQvYEvCtHqpeK6Diw-yYkcQpbVDIeL22nckII3Q,5425 django/template/smartif.py,sha256=QBvsTtD4YiyGoU4hXrW8vqR0CBAFOZGuDoRP3aGEgOs,6408 -django/template/utils.py,sha256=xQ-lHLzXrSFx4xc9E2Tja6MZHKGkKRRATxKwvCe3MPU,3665 +django/template/utils.py,sha256=e30XcUAZkeMk2kp4kYZg-7wx2PQlBMqWOxCJoj8fEco,3589 django/template/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/template/backends/base.py,sha256=qu6TlykN2JAUeQqIbiGujYG1dEsXZmAMpnzmLP0gSPg,2757 +django/template/backends/base.py,sha256=P8dvOmQppJ8YMZ5_XyOJGDzspbQMNGV82GxL5IwrMFM,2751 django/template/backends/django.py,sha256=_w350tmHAMSLOw-b2o9rR0Wn6YX3QMkpHkkpvbo_EwI,4186 django/template/backends/dummy.py,sha256=Nl313SxX1rxE1F-5AHCljgejrYpYCx-QXJpNUkQWXR4,1767 django/template/backends/jinja2.py,sha256=bx8DcA2PqqzDmcgegY11pm5EhmD_gWTTLauGo91imL4,3504 -django/template/backends/utils.py,sha256=Wler787-GWAoQb6m7qaWdCfQoSBkHFLFECAdFe8xO_E,416 +django/template/backends/utils.py,sha256=5Ixx08oifnjpIFod1t9IRJJ_S-UCGk_-CH6oTuIZqXE,414 django/template/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/template/loaders/app_directories.py,sha256=w3a84EAXWX12w7F1CyxIQ_lFiTwxFS7xf3rCEcnUqyc,313 django/template/loaders/base.py,sha256=kvjmN-UHxdd6Pwgkexw7IHL0YeJQgXXbuz_tdj5ciKc,1558 -django/template/loaders/cached.py,sha256=n1t8aaDO_gq4aQUI2bFUSDDIE-SqrVzrXsvw661NTys,3669 +django/template/loaders/cached.py,sha256=tbkSEaMOyX9Ys29opTpI8Wui59beO25FJOHHm2MP6Vo,3619 django/template/loaders/filesystem.py,sha256=OWTnIwWbVj-Td5VrOkKw1G_6pIuz1Vnh5CedZN5glyU,1507 django/template/loaders/locmem.py,sha256=8cBYI8wPOOnIx_3v7fC5jezA_6pJLqgqObeLwHXQJKo,673 django/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/templatetags/cache.py,sha256=otY3c4Ti9YLxFfOuIX5TZ7w12aGDPkyGfQNsaPVZ_M0,3401 -django/templatetags/i18n.py,sha256=Nzk-jyMfH9Z7jkNTQV_yRNVvftJDKYpIvJiRTtFLCuw,19093 -django/templatetags/l10n.py,sha256=__KS2RJf9mlS9EMzYooKoP6XquP4FDwyOr_xaD3TAAM,1689 +django/templatetags/i18n.py,sha256=7pd69SElTWdpmT8esimpVZhykai1yopsNgGVSE_cR1I,18900 +django/templatetags/l10n.py,sha256=I6jRSBLvL34H-_rwGuHfU22VBhO2IHNRue78KWb8pTc,1723 django/templatetags/static.py,sha256=om3cu4NVaH4MVUq-XPLxPVNlLUCxTbbp0qAVVSaClj4,4502 django/templatetags/tz.py,sha256=HFzJsvh-x9yjoju4kiIpKAI0U_4crtoftqiT8llM_u8,5400 django/test/__init__.py,sha256=5FrmvgBrxzZo5UVLW9HZ1iHBMMhcnXcNL5Y2xnaqVPA,682 -django/test/client.py,sha256=PY1YqhOaqguGApZHRmvRi9XePB6oP4CgjM7RMQk6OvI,26876 -django/test/html.py,sha256=su6cUczjfqucIrEhyp2Y_6JGH8uesJrpcvcbH1GTvvI,7570 -django/test/runner.py,sha256=nMc4VuyKDusaL8CyV0l3N_Pu0uGhwl-OxmXfHepDNN0,25346 +django/test/client.py,sha256=Aapju8sI4dgM2idY6HFELCfVwCLESPjhcDGpEv1GMHI,28397 +django/test/html.py,sha256=Nx8vFCvSMr-nlUf9ColMKZJBw5TmfajkLaty4djObFY,7492 +django/test/runner.py,sha256=WMpgHdZT5Z-4VsyLmEA2SoTLHrl0qLQotXmxfNrM1Ec,25230 django/test/selenium.py,sha256=DFTUveBYZfODKHU_XN-UJpvm4VXeg-_uxTEH4SsC3fY,3271 django/test/signals.py,sha256=BQlO0pXZTOdcbhgW1gJLc16WW2Q75wx_2wheG5kCh9U,6729 -django/test/testcases.py,sha256=pezhRHclmZiPt4TH5O0-hVSYNRNpibv7oY1ON795wOg,55089 -django/test/utils.py,sha256=8Wepq7h56ONrPu5t2LUWnu6OD5B6n0MfXhh7ordVO1U,28391 +django/test/testcases.py,sha256=CAplm2AndSuYozF4x2DaJJXWoNALVxS6RvG9KMfJq4E,55675 +django/test/utils.py,sha256=P0cXxRd97JdBq8sv23uYwCyrS093LfDdUfohZe8tgb4,28539 django/urls/__init__.py,sha256=FdHfNv5NwWEIt1EqEpRY7xJ-i4tD-SCLj0tq3qT6X1E,959 django/urls/base.py,sha256=FyzHdMGoWj9chy8m4pxuEQggbrtbixY1VAvsWr6Pw4Q,5652 django/urls/conf.py,sha256=8Xug9NhJXDEysRXWrY2iHf0snfJMUmQkYZAomPltWMY,2946 -django/urls/converters.py,sha256=uukXCTD66n8NX_fiArq_s4p4to0oPqzuChNi6lpSAR8,1300 +django/urls/converters.py,sha256=HfSArZWl34VEqkkZQ5taQhweH86-MpcRQoKv-7XyhLs,1230 django/urls/exceptions.py,sha256=alLNjkORtAxneC00g4qnRpG5wouOHvJvGbymdpKtG_I,115 -django/urls/resolvers.py,sha256=pnzzI2gOhPWqmMrbYgGQa0r5UCoRraQ2MaMgd61xeGU,25312 +django/urls/resolvers.py,sha256=wstVJZ9VsWjmI6b19mazCZww_dETKN9ARK3hxbI3o1g,24733 django/urls/utils.py,sha256=VHDcmggNRHSbPJAql5KJhe7wX4pSjrKb64Fu-p14D9Q,2152 django/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/utils/_os.py,sha256=CYxm1Ju2X5bl2fKKsYyCgemWdv6LPhEiDkaV3t_zf30,2435 django/utils/archive.py,sha256=vfnm15A6vgrLvgzhKRE9oJvHhd1JvKtDKc1RibEfCug,7459 -django/utils/autoreload.py,sha256=QAj1ss_lF8hyTOMAACPso-Z6lNJM31044yLZFIIO-Hc,10325 +django/utils/autoreload.py,sha256=HB2RGHicFvWCeW3c2D2r9OFYExDQU18z0565kwz0xzM,10554 django/utils/baseconv.py,sha256=xYReIqcF2FFD85BqDrl48xo4UijII9D6YyC-FHsUPbw,2989 -django/utils/cache.py,sha256=yFegtgHpRPdb0KrTVmnDA66d-VEEmTRl8DQM-8hHzUc,16413 -django/utils/crypto.py,sha256=kmctPFVOMrZv-ZZJ_AnFsNSz3HBem3_J0vPqXPDo3l4,3092 -django/utils/datastructures.py,sha256=LECZu-BbSk2ZjunU1MGhC40lnA-12YuGEZ0uZp0zeOA,8559 +django/utils/cache.py,sha256=m9aWQpy33wBsfBx6xUFbwlM_YOdBaaXY4Fl17q6-2T8,15247 +django/utils/crypto.py,sha256=IIqgXjuPnXLufCY-nX61pSnAutVrr_cQXnSq6jrctNw,3079 +django/utils/datastructures.py,sha256=ziC6cuPqcvsE7dfadJhKj7GX2iVwl5OyQ-ENIt3tgKA,8467 django/utils/dateformat.py,sha256=YyUXezYqG_R-hMqSh4Q50qyTfvReD_4TTHVD2c1zH4U,11508 -django/utils/dateparse.py,sha256=bg5SFVRFkUG4E06ZmU9HMvlVVz8OWTLW0OM9MAQXdF4,4731 -django/utils/dates.py,sha256=LczKNLLK2B6tg9FlrZUXgH9E9w14IqpuJHFUHLq2nCg,2295 -django/utils/datetime_safe.py,sha256=OnmCe-x1GMGDSiamEWqXEqAeTYyYrCAXUjKmgla1SmA,2837 +django/utils/dateparse.py,sha256=1KNeTgoBPnZYFMrj60P0TqlXFKURG5Tk9ypvEZokLVg,4708 +django/utils/dates.py,sha256=hl7plurNHC7tj_9Olb7H7-LCtOhOV71oWg-xx5PBFh4,2021 +django/utils/datetime_safe.py,sha256=geoC3fteiPAeA3tpC4LQ1g9-vfYLq54-kXTCRmArFdg,2837 django/utils/deconstruct.py,sha256=hcO_7qassSI5dTfQ5CPttA8s3f9yaF8UnqKKma3bI6M,1975 -django/utils/decorators.py,sha256=6AftjSerJAtOAMjFGRbo3yTWvcaeRs0Li6jBslwPCAU,6796 -django/utils/deprecation.py,sha256=GvTCItgsfYJFhCvQ0pcmuyDDkaT5SCghhddns3YCzA0,3352 -django/utils/duration.py,sha256=e9u-nFSTt94c2xY91ZPILFei93yJbudefWlyCfYDd5s,1112 +django/utils/decorators.py,sha256=UJ92hn1jSEBroB5VzRpFjZ5VApDF8ugbYc8QPpIOJfk,6838 +django/utils/deprecation.py,sha256=-SsPYxHdjRhtkjrs1jmjgqTmLC05slUC6k3vd0vBiNE,3281 +django/utils/duration.py,sha256=VtDUAQKIPFuv6XkwG6gIjLQYtcs8vgGMcS4OQpSFx-E,1234 django/utils/encoding.py,sha256=5CQjnr34WWGN2aoevn3CoQy8OZmaIBtWITi4_eybjU0,8994 -django/utils/feedgenerator.py,sha256=GLhiXNYDBZGJUa0FQU6nL-q1wvLaro01cdljGJn7AGI,16280 -django/utils/formats.py,sha256=cbcND7BRRcA3FW9OXKR0ZUVcPip4bHzDMDXjAq1broo,8945 -django/utils/functional.py,sha256=agR0TMLGS89cRAH0q1_5C7oq_jWG8UGWCR8AQzK_c1U,13347 -django/utils/html.py,sha256=utvH0-Up6i4N7UD6JWyzsfy2qiJyMNLulVchD-qPnhY,13554 -django/utils/html_parser.py,sha256=r4_58apC-2nTlsb8U_IhAV6CkXyyomECwNUceXd1FjE,522 -django/utils/http.py,sha256=4cUoYHT_j2qV4WRbhOAmbl0OTNxBswsd8pdIYdWrI_k,15138 +django/utils/feedgenerator.py,sha256=2X45dxyq9h5DHX8Q1TADn8pSNiuplKTS2__WUquwlEE,15154 +django/utils/formats.py,sha256=vuB-IV1PlQH3qWQRtwFG6HqTeZinOc-iOXiZbioMpFs,8973 +django/utils/functional.py,sha256=xSQ2-kw1aKedl6bUQv94JsKCIE8DVWM8U2jjO8XHHpw,13308 +django/utils/html.py,sha256=8stBxmDdFRFYqj_kojEOHeS4QjsloDkU0Y64BhnyOfs,13964 +django/utils/http.py,sha256=OAYqba2-NWFuZHZXM--PIW5KbC_qtyzdiXSQXksT-hg,15297 django/utils/inspect.py,sha256=QWQvmtteqKw5m-EMj4ZK2ZwSx-DslUVk91z0Nkilylw,1688 django/utils/ipv6.py,sha256=WBkmZXdtbIHgcaWDKm4ElRvzyu_wKLCW2aA18g1RCJo,1350 django/utils/itercompat.py,sha256=lacIDjczhxbwG4ON_KfG1H6VNPOGOpbRhnVhbedo2CY,184 django/utils/jslex.py,sha256=jOes0kfZoIIPxPMNWkXMJ6D3x3f95B5cZWKXo38Rhcc,7707 -django/utils/log.py,sha256=NlJM6lVKcNIPORfcmIEbPWihftyrs0UVn9SPFsBXv0A,6379 +django/utils/log.py,sha256=EgHENXlsZvbOrGeCwhFM89cZmJe6FMsgG3DE5Zf3m1U,7617 django/utils/lorem_ipsum.py,sha256=P_BSLsITDP2ZW9EJPy6ciFneib0iz9ezBz2LD7CViRE,4775 django/utils/lru_cache.py,sha256=4g-svLUmsvn2wlS-rPEJbFr_ODqoar5qxwIjGxrLlxA,256 django/utils/module_loading.py,sha256=zmTlFLAdv20BhBHoPCDBBT2N7PAUrkYctAUDHF1kUPs,3649 -django/utils/numberformat.py,sha256=fuSLvYVK4lo_Wd71yWP5fxBKeOpMQ3fipIDkvw5TlHU,2476 -django/utils/regex_helper.py,sha256=ZNQL2n_QLFhDSSbOJUrV6LazOZ-L1BU8wROjlOP2MCY,12621 +django/utils/numberformat.py,sha256=1KTtU6R8MHjkrlzUYbInKbiSAtZv-q432hg7vcmjHd0,2520 +django/utils/regex_helper.py,sha256=4aWtTpg-WxCBF3VdjE0z1Q9m-0vEjUs4hBf0wQ2seNk,12225 django/utils/safestring.py,sha256=zI0FSoQ-pRtGzOP8vpxn9BePHXyTxMNh9hfrRNKV6EM,2473 django/utils/six.py,sha256=ecocr7GKytCmp9FbyOLDUR4_0vngcOjMJItxTGnTRV8,30502 -django/utils/synch.py,sha256=xPLelilO5ExgCHStSIszcYCAADOsghfDERY4ehkMGtM,2550 django/utils/termcolors.py,sha256=JrysYBjC72oq0WBL6EJ44A8ZEij_S7QsivoRQugxPEk,7362 -django/utils/text.py,sha256=YHtGXaflneMPZsJk-bOU6_CpxC-kIwqPObuH8S0YOks,14091 -django/utils/timesince.py,sha256=WVWenJ0639Kazt7-EhytpC5gnE99cAhP0azQasBcIaQ,2788 -django/utils/timezone.py,sha256=52BTXPDyAIDIjsbpM6AJ76VqMok7DtXN04aYHZjnR00,8234 -django/utils/tree.py,sha256=ZxMnEXezuaZPH1zrz5YggQZiSUuU9pxAfloM18JAc1g,4851 -django/utils/version.py,sha256=_XvHClAZhpqbwXr4wO5iUqT_BeuK2F8q6l21hL0Iy5U,2818 +django/utils/text.py,sha256=vDdp7fGsteeLdWhSYaidreYslL2fEPLpmb-Ts9cEhII,14085 +django/utils/timesince.py,sha256=omxCyBNSGn3wq-K1Px15ZzEAH2N45rfEqDcGpzcXLC0,3176 +django/utils/timezone.py,sha256=aiXyyWVz1fJg3e9Its_qwC_utMqHaGjD4Rx_kdV6H8E,8107 +django/utils/tree.py,sha256=eCRPj1GlFvZIP5i-OBq9i7bjIfdbndGewnhpmEPLis8,4829 +django/utils/version.py,sha256=6iP04QtIAc3QyEEWsvLArFi74NmqtIGX0vYtHbTJyDk,3214 django/utils/xmlutils.py,sha256=B3FOKaFNynp0fC1wliItPSKzNABSyc-0x897F7kEVj4,1184 -django/utils/translation/__init__.py,sha256=7-Prpm1Z_r4U9k5bC0QXtq1SZBx9H9txsz90k7spzuU,7499 -django/utils/translation/template.py,sha256=62Ipn0LYDaZwAPM9OQWgH8aKkuZ-xaIkj41bTio-1q0,9979 -django/utils/translation/trans_null.py,sha256=20q6ayK6V2aylDQzcFmtz-X3faye3SKedb9nDMl4opQ,1258 -django/utils/translation/trans_real.py,sha256=zgGTEZVPucPAnKOSrYKvs4dmPVs7R8ka68nVDdSkASg,18540 +django/utils/translation/__init__.py,sha256=EaG-dPrb0bQkDJz-5DX52LyY-weT2VxylaitW6bUhtk,7913 +django/utils/translation/template.py,sha256=YB4F--bYjTZgo7MFYhEFxXQIxLlZHEtGd16xWwDVit0,9958 +django/utils/translation/trans_null.py,sha256=yp82bHt5oqqL95Z5PFoYCZeENOulxzp-IqMmkWz0l9Y,1257 +django/utils/translation/trans_real.py,sha256=w26JJHilccATDJren03EwOUoNvPQtGQ4qHNPauUqHKk,17967 django/views/__init__.py,sha256=DGdAuGC0t1bMju9i-B9p_gqPgRIFHtLXTdIxNKWFGsw,63 django/views/csrf.py,sha256=TOnXES5w0BmUvyq7whGB6Z6Ds4-RotIVammFGN88UKY,6252 -django/views/debug.py,sha256=sDUdXdsVRLcJqccq7HqY6LDi0BaaUYNY3mHqpKLB0f0,20367 +django/views/debug.py,sha256=kZd_BbpZ8JVSsFIutl4txbPTEQaRqUmeuIdIoWYu59Y,20318 django/views/defaults.py,sha256=Q7qxucjUHPoQmjjT_p93erxGXNaNK2THO4OZrhTMw-k,4260 -django/views/i18n.py,sha256=I73xYV604j0tek35-o1r0-LO__5aEXiT4v8K1gDDAUE,11735 -django/views/static.py,sha256=FS-Z_Vvd1By9dOQdg2NeqgSI_7NU4KRmAuqubAfndxo,4623 +django/views/i18n.py,sha256=Qo720ZrN3dy7RZXk3n_djq_7ThEE-7jBPmD39VO1qnA,11717 +django/views/static.py,sha256=R1tS45T8r5P6Xa8umzH6RcO4dnhIzHnlSKFEpIobpHw,4548 django/views/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 django/views/decorators/cache.py,sha256=uSLzb61mCuFKIm8tR3Gs_NP1H7U-BOEU_QOc3IhBC_4,1705 django/views/decorators/clickjacking.py,sha256=EW-DRe2dR8yg4Rf8HRHl8c4-C8mL3HKGa6PxZRKmFtU,1565 django/views/decorators/csrf.py,sha256=xPWVVNw_DBidvX_ZVYvN7CePt1HpxpUxsb6wMr0Oe4Y,2073 django/views/decorators/debug.py,sha256=Q_ul_n8M89WoPL87mDYomZ74mv_djuudZZ-b-uB1I6s,2569 django/views/decorators/gzip.py,sha256=PtpSGd8BePa1utGqvKMFzpLtZJxpV2_Jej8llw5bCJY,253 -django/views/decorators/http.py,sha256=iMl98tvpUXs4mSg-d0S4soAV-E_ynr3MlRpwyff6CRY,4715 +django/views/decorators/http.py,sha256=NgZFNkaX0DwDJWUNNgj-FRbBOQEyW4KwbrWDZOa_9Go,4713 django/views/decorators/vary.py,sha256=6wEXI5yBFZYDVednNPc0bYbXGG-QzkIUQ-50ErDrA_k,1084 django/views/generic/__init__.py,sha256=WTnzEXnKyJqzHlLu_VsXInYg-GokDNBCUYNV_U6U-ok,822 -django/views/generic/base.py,sha256=QnQhKsAP8E83lwZo5Py8iOgjIoXfi_a6nrmmQoGfK08,7429 -django/views/generic/dates.py,sha256=V9AXAGCcMsiO5YxSFSQTCx19bACQaY_wBM5GH-5dbaI,25251 -django/views/generic/detail.py,sha256=X8fJS4Dg7qMSkstsDnGBpYw6Lmyr18tNYhRsoSBZNqk,6521 -django/views/generic/edit.py,sha256=bJAQ5HAK_upREBxmgUDWAbUMd56gw3Qk1Emiglmx7c8,8342 -django/views/generic/list.py,sha256=Z1ti5yZADM1rT-s_QqUyoRGDBeEX6rkoZxoE_CE0iMY,7388 +django/views/generic/base.py,sha256=t_awqO3zITdeJbiZVaAwZ-qcne2tGBryE0s4N_ZMSTo,7402 +django/views/generic/dates.py,sha256=E7iIlD-FIa3Zbxz0gQck0wJ420J1flA-USesv5rxdUI,25212 +django/views/generic/detail.py,sha256=m8otoffJXPW9ml-vAtXeM4asTT5I4pvuoR4BhjpWB6A,6507 +django/views/generic/edit.py,sha256=zPO3D8rFrSDjJG1OnRYn0frGqVq8VMKAEUihZU2NrIk,8332 +django/views/generic/list.py,sha256=GS6wVgiFz4MHsZXi7jfKjlSiHrrmZw8agJl26fVZwjM,7674 django/views/templates/default_urlconf.html,sha256=uTxHyCtjPV09MlXNBOjSq5meAfkhmJ72hCvlDOEtMwU,16595 django/views/templates/technical_404.html,sha256=nZT2gkPAYc7G8VNJXst-dEyim0t83xjX-TtCGtxJZwc,2453 django/views/templates/technical_500.html,sha256=ez3ErTVw3TUUhQOTipX6rHFpN9eiysKVRTz-maEwS2g,17218 django/views/templates/technical_500.txt,sha256=7VWOipQg2poVyusbM8dQHRyRR-iUB_dOehAoF0HBHNM,3367 ../../../bin/django-admin,sha256=g0bn4EH5ELirIW7VELdK9FOiJguzMlg_XsJkANX3uaA,295 -Django-2.0.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Django-2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 django/templatetags/__pycache__/tz.cpython-36.pyc,, django/templatetags/__pycache__/l10n.cpython-36.pyc,, django/templatetags/__pycache__/i18n.cpython-36.pyc,, @@ -3418,7 +3417,6 @@ django/core/management/commands/__pycache__/diffsettings.cpython-36.pyc,, django/core/management/commands/__pycache__/flush.cpython-36.pyc,, django/core/management/commands/__pycache__/runserver.cpython-36.pyc,, django/core/management/commands/__pycache__/shell.cpython-36.pyc,, -django/core/management/commands/__pycache__/__init__.cpython-36.pyc,, django/core/management/commands/__pycache__/test.cpython-36.pyc,, django/core/management/commands/__pycache__/createcachetable.cpython-36.pyc,, django/core/__pycache__/exceptions.cpython-36.pyc,, @@ -3494,7 +3492,6 @@ django/utils/translation/__pycache__/trans_null.cpython-36.pyc,, django/utils/__pycache__/tree.cpython-36.pyc,, django/utils/__pycache__/inspect.cpython-36.pyc,, django/utils/__pycache__/feedgenerator.cpython-36.pyc,, -django/utils/__pycache__/synch.cpython-36.pyc,, django/utils/__pycache__/duration.cpython-36.pyc,, django/utils/__pycache__/dateformat.cpython-36.pyc,, django/utils/__pycache__/timesince.cpython-36.pyc,, @@ -3526,7 +3523,6 @@ django/utils/__pycache__/lorem_ipsum.cpython-36.pyc,, django/utils/__pycache__/dates.cpython-36.pyc,, django/utils/__pycache__/http.cpython-36.pyc,, django/utils/__pycache__/jslex.cpython-36.pyc,, -django/utils/__pycache__/html_parser.cpython-36.pyc,, django/utils/__pycache__/__init__.cpython-36.pyc,, django/utils/__pycache__/decorators.cpython-36.pyc,, django/utils/__pycache__/dateparse.cpython-36.pyc,, @@ -3566,7 +3562,6 @@ django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length. django/contrib/auth/management/__pycache__/__init__.cpython-36.pyc,, django/contrib/auth/management/commands/__pycache__/createsuperuser.cpython-36.pyc,, django/contrib/auth/management/commands/__pycache__/changepassword.cpython-36.pyc,, -django/contrib/auth/management/commands/__pycache__/__init__.cpython-36.pyc,, django/contrib/auth/__pycache__/context_processors.cpython-36.pyc,, django/contrib/auth/__pycache__/checks.cpython-36.pyc,, django/contrib/auth/__pycache__/admin.cpython-36.pyc,, @@ -3590,12 +3585,14 @@ django/contrib/auth/handlers/__pycache__/modwsgi.cpython-36.pyc,, django/contrib/auth/handlers/__pycache__/__init__.cpython-36.pyc,, django/contrib/admin/templatetags/__pycache__/admin_list.cpython-36.pyc,, django/contrib/admin/templatetags/__pycache__/admin_static.cpython-36.pyc,, +django/contrib/admin/templatetags/__pycache__/base.cpython-36.pyc,, django/contrib/admin/templatetags/__pycache__/log.cpython-36.pyc,, django/contrib/admin/templatetags/__pycache__/admin_modify.cpython-36.pyc,, django/contrib/admin/templatetags/__pycache__/__init__.cpython-36.pyc,, django/contrib/admin/templatetags/__pycache__/admin_urls.cpython-36.pyc,, django/contrib/admin/migrations/__pycache__/0001_initial.cpython-36.pyc,, django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-36.pyc,, +django/contrib/admin/migrations/__pycache__/0003_logentry_add_action_flag_choices.cpython-36.pyc,, django/contrib/admin/migrations/__pycache__/__init__.cpython-36.pyc,, django/contrib/admin/__pycache__/exceptions.cpython-36.pyc,, django/contrib/admin/__pycache__/checks.cpython-36.pyc,, @@ -3618,11 +3615,9 @@ django/contrib/admin/views/__pycache__/__init__.cpython-36.pyc,, django/contrib/admin/views/__pycache__/decorators.cpython-36.pyc,, django/contrib/staticfiles/templatetags/__pycache__/staticfiles.cpython-36.pyc,, django/contrib/staticfiles/templatetags/__pycache__/__init__.cpython-36.pyc,, -django/contrib/staticfiles/management/__pycache__/__init__.cpython-36.pyc,, django/contrib/staticfiles/management/commands/__pycache__/findstatic.cpython-36.pyc,, django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-36.pyc,, django/contrib/staticfiles/management/commands/__pycache__/runserver.cpython-36.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/__init__.cpython-36.pyc,, django/contrib/staticfiles/__pycache__/handlers.cpython-36.pyc,, django/contrib/staticfiles/__pycache__/checks.cpython-36.pyc,, django/contrib/staticfiles/__pycache__/storage.cpython-36.pyc,, @@ -3678,6 +3673,7 @@ django/contrib/postgres/__pycache__/search.cpython-36.pyc,, django/contrib/postgres/__pycache__/utils.cpython-36.pyc,, django/contrib/postgres/__pycache__/__init__.cpython-36.pyc,, django/contrib/postgres/fields/__pycache__/jsonb.cpython-36.pyc,, +django/contrib/postgres/fields/__pycache__/mixins.cpython-36.pyc,, django/contrib/postgres/fields/__pycache__/array.cpython-36.pyc,, django/contrib/postgres/fields/__pycache__/ranges.cpython-36.pyc,, django/contrib/postgres/fields/__pycache__/citext.cpython-36.pyc,, @@ -3700,9 +3696,7 @@ django/contrib/sessions/backends/__pycache__/file.cpython-36.pyc,, django/contrib/sessions/backends/__pycache__/base.cpython-36.pyc,, django/contrib/sessions/backends/__pycache__/cache.cpython-36.pyc,, django/contrib/sessions/backends/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sessions/management/__pycache__/__init__.cpython-36.pyc,, django/contrib/sessions/management/commands/__pycache__/clearsessions.cpython-36.pyc,, -django/contrib/sessions/management/commands/__pycache__/__init__.cpython-36.pyc,, django/contrib/sessions/__pycache__/serializers.cpython-36.pyc,, django/contrib/sessions/__pycache__/base_session.cpython-36.pyc,, django/contrib/sessions/__pycache__/exceptions.cpython-36.pyc,, @@ -3710,9 +3704,7 @@ django/contrib/sessions/__pycache__/models.cpython-36.pyc,, django/contrib/sessions/__pycache__/middleware.cpython-36.pyc,, django/contrib/sessions/__pycache__/apps.cpython-36.pyc,, django/contrib/sessions/__pycache__/__init__.cpython-36.pyc,, -django/contrib/sitemaps/management/__pycache__/__init__.cpython-36.pyc,, django/contrib/sitemaps/management/commands/__pycache__/ping_google.cpython-36.pyc,, -django/contrib/sitemaps/management/commands/__pycache__/__init__.cpython-36.pyc,, django/contrib/sitemaps/__pycache__/views.cpython-36.pyc,, django/contrib/sitemaps/__pycache__/apps.cpython-36.pyc,, django/contrib/sitemaps/__pycache__/__init__.cpython-36.pyc,, @@ -3725,7 +3717,6 @@ django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name django/contrib/contenttypes/migrations/__pycache__/__init__.cpython-36.pyc,, django/contrib/contenttypes/management/__pycache__/__init__.cpython-36.pyc,, django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-36.pyc,, -django/contrib/contenttypes/management/commands/__pycache__/__init__.cpython-36.pyc,, django/contrib/contenttypes/__pycache__/checks.cpython-36.pyc,, django/contrib/contenttypes/__pycache__/admin.cpython-36.pyc,, django/contrib/contenttypes/__pycache__/forms.cpython-36.pyc,, @@ -3789,10 +3780,8 @@ django/contrib/gis/gdal/raster/__pycache__/__init__.cpython-36.pyc,, django/contrib/gis/admin/__pycache__/widgets.cpython-36.pyc,, django/contrib/gis/admin/__pycache__/options.cpython-36.pyc,, django/contrib/gis/admin/__pycache__/__init__.cpython-36.pyc,, -django/contrib/gis/management/__pycache__/__init__.cpython-36.pyc,, django/contrib/gis/management/commands/__pycache__/inspectdb.cpython-36.pyc,, django/contrib/gis/management/commands/__pycache__/ogrinspect.cpython-36.pyc,, -django/contrib/gis/management/commands/__pycache__/__init__.cpython-36.pyc,, django/contrib/gis/utils/__pycache__/ogrinfo.cpython-36.pyc,, django/contrib/gis/utils/__pycache__/srs.cpython-36.pyc,, django/contrib/gis/utils/__pycache__/ogrinspect.cpython-36.pyc,, @@ -3919,7 +3908,6 @@ django/db/backends/oracle/__pycache__/client.cpython-36.pyc,, django/db/backends/oracle/__pycache__/operations.cpython-36.pyc,, django/db/backends/oracle/__pycache__/creation.cpython-36.pyc,, django/db/backends/oracle/__pycache__/functions.cpython-36.pyc,, -django/db/backends/oracle/__pycache__/compiler.cpython-36.pyc,, django/db/backends/oracle/__pycache__/base.cpython-36.pyc,, django/db/backends/oracle/__pycache__/features.cpython-36.pyc,, django/db/backends/oracle/__pycache__/schema.cpython-36.pyc,, @@ -3981,8 +3969,9 @@ django/db/models/__pycache__/manager.cpython-36.pyc,, django/db/models/__pycache__/options.cpython-36.pyc,, django/db/models/__pycache__/__init__.cpython-36.pyc,, django/db/models/functions/__pycache__/datetime.cpython-36.pyc,, +django/db/models/functions/__pycache__/comparison.cpython-36.pyc,, +django/db/models/functions/__pycache__/text.cpython-36.pyc,, django/db/models/functions/__pycache__/window.cpython-36.pyc,, -django/db/models/functions/__pycache__/base.cpython-36.pyc,, django/db/models/functions/__pycache__/__init__.cpython-36.pyc,, django/db/models/fields/__pycache__/related.cpython-36.pyc,, django/db/models/fields/__pycache__/proxy.cpython-36.pyc,, diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/WHEEL b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/WHEEL similarity index 65% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/WHEEL rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/WHEEL index 6261a26..bff023e 100644 --- a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/WHEEL +++ b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/WHEEL @@ -1,5 +1,5 @@ Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0) +Generator: bdist_wheel (0.31.1) Root-Is-Purelib: true Tag: py3-none-any diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/entry_points.txt b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/entry_points.txt similarity index 100% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/entry_points.txt rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/entry_points.txt diff --git a/thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/top_level.txt b/thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/top_level.txt similarity index 100% rename from thesisenv/lib/python3.6/site-packages/Django-2.0.6.dist-info/top_level.txt rename to thesisenv/lib/python3.6/site-packages/Django-2.1.dist-info/top_level.txt diff --git a/thesisenv/lib/python3.6/site-packages/classytags/__init__.py b/thesisenv/lib/python3.6/site-packages/classytags/__init__.py new file mode 100644 index 0000000..32a90a3 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/__init__.py @@ -0,0 +1 @@ +__version__ = '0.8.0' diff --git a/thesisenv/lib/python3.6/site-packages/classytags/arguments.py b/thesisenv/lib/python3.6/site-packages/classytags/arguments.py new file mode 100644 index 0000000..1d5617a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/arguments.py @@ -0,0 +1,239 @@ +from django import template +from django.core.exceptions import ImproperlyConfigured + +from classytags.exceptions import InvalidFlag +from classytags.utils import NULL +from classytags.utils import TemplateConstant +from classytags.utils import mixin +from classytags.values import ChoiceValue +from classytags.values import DictValue +from classytags.values import IntegerValue +from classytags.values import ListValue +from classytags.values import StrictStringValue +from classytags.values import StringValue + + +class Argument(object): + """ + A basic single value argument. + """ + value_class = StringValue + + def __init__(self, name, default=None, required=True, resolve=True): + self.name = name + self.default = default + self.required = required + self.resolve = resolve + + def __repr__(self): # pragma: no cover + return '<%s: %s>' % (self.__class__.__name__, self.name) + + def get_default(self): + """ + Get the default value + """ + return TemplateConstant(self.default) + + def parse_token(self, parser, token): + if self.resolve: + return parser.compile_filter(token) + else: + return TemplateConstant(token) + + def parse(self, parser, token, tagname, kwargs): + """ + Parse a token. + """ + if self.name in kwargs: + return False + else: + value = self.parse_token(parser, token) + kwargs[self.name] = self.value_class(value) + return True + + +class StringArgument(Argument): + value_class = StrictStringValue + + +class KeywordArgument(Argument): + """ + A single 'key=value' argument + """ + wrapper_class = DictValue + + def __init__(self, name, default=None, required=True, resolve=True, + defaultkey=None, splitter='='): + super(KeywordArgument, self).__init__(name, default, required, resolve) + self.defaultkey = defaultkey + self.splitter = splitter + + def get_default(self): + if self.defaultkey: + return self.wrapper_class({ + self.defaultkey: TemplateConstant(self.default) + }) + else: + return self.wrapper_class({}) + + def parse_token(self, parser, token): + if self.splitter in token: + key, raw_value = token.split(self.splitter, 1) + value = super(KeywordArgument, self).parse_token(parser, raw_value) + else: + key = self.defaultkey + value = super(KeywordArgument, self).parse_token(parser, token) + return key, self.value_class(value) + + def parse(self, parser, token, tagname, kwargs): + if self.name in kwargs: # pragma: no cover + return False + else: + key, value = self.parse_token(parser, token) + kwargs[self.name] = self.wrapper_class({ + key: value + }) + return True + + +class IntegerArgument(Argument): + """ + Same as Argument but converts the value to integers. + """ + value_class = IntegerValue + + +class ChoiceArgument(Argument): + """ + An Argument which checks if it's value is in a predefined list of choices. + """ + + def __init__(self, name, choices, default=None, required=True, + resolve=True): + super(ChoiceArgument, self).__init__(name, default, required, resolve) + if default or not required: + value_on_error = default + else: + value_on_error = choices[0] + self.value_class = mixin( + self.value_class, + ChoiceValue, + attrs={ + 'choices': choices, + 'value_on_error': value_on_error, + } + ) + + +class MultiValueArgument(Argument): + """ + An argument which allows multiple values. + """ + sequence_class = ListValue + value_class = StringValue + + def __init__(self, name, default=NULL, required=True, max_values=None, + resolve=True): + self.max_values = max_values + if default is NULL: + default = [] + else: + required = False + super(MultiValueArgument, self).__init__(name, default, required, + resolve) + + def parse(self, parser, token, tagname, kwargs): + """ + Parse a token. + """ + value = self.value_class(self.parse_token(parser, token)) + if self.name in kwargs: + if self.max_values and len(kwargs[self.name]) == self.max_values: + return False + kwargs[self.name].append(value) + else: + kwargs[self.name] = self.sequence_class(value) + return True + + +class MultiKeywordArgument(KeywordArgument): + def __init__(self, name, default=None, required=True, resolve=True, + max_values=None, splitter='='): + if not default: + default = {} + else: + default = dict(default) + super(MultiKeywordArgument, self).__init__(name, default, required, + resolve, NULL, splitter) + self.max_values = max_values + + def get_default(self): + items = self.default.items() + return self.wrapper_class( + dict([(key, TemplateConstant(value)) for key, value in items]) + ) + + def parse(self, parser, token, tagname, kwargs): + key, value = self.parse_token(parser, token) + if key is NULL: + raise template.TemplateSyntaxError( + "MultiKeywordArgument arguments require key=value pairs" + ) + if self.name in kwargs: + if self.max_values and len(kwargs[self.name]) == self.max_values: + return False + kwargs[self.name][key] = value + else: + kwargs[self.name] = self.wrapper_class({ + key: value + }) + return True + + +class Flag(Argument): + """ + A boolean flag + """ + def __init__(self, name, default=NULL, true_values=None, false_values=None, + case_sensitive=False): + if default is not NULL: + required = False + else: + required = True + super(Flag, self).__init__(name, default, required) + if true_values is None: + true_values = [] + if false_values is None: + false_values = [] + if case_sensitive: + self.mod = lambda x: x + else: + self.mod = lambda x: str(x).lower() + self.true_values = [self.mod(tv) for tv in true_values] + self.false_values = [self.mod(fv) for fv in false_values] + if not any([self.true_values, self.false_values]): + raise ImproperlyConfigured( + "Flag must specify either true_values and/or false_values" + ) + + def parse(self, parser, token, tagname, kwargs): + """ + Parse a token. + """ + ltoken = self.mod(token) + if self.name in kwargs: + return False + if self.true_values and ltoken in self.true_values: + kwargs[self.name] = TemplateConstant(True) + elif self.false_values and ltoken in self.false_values: + kwargs[self.name] = TemplateConstant(False) + elif self.default is NULL: + allowed_values = [] + if self.true_values: + allowed_values += self.true_values + if self.false_values: + allowed_values += self.false_values + raise InvalidFlag(self.name, token, allowed_values, tagname) + else: + kwargs[self.name] = self.get_default() + return True diff --git a/thesisenv/lib/python3.6/site-packages/classytags/blocks.py b/thesisenv/lib/python3.6/site-packages/classytags/blocks.py new file mode 100644 index 0000000..ceca462 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/blocks.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +from django.core.exceptions import ImproperlyConfigured + + +def _collect(name, parser): + collector = getattr(name, 'collect', None) + if callable(collector): + return collector(parser) + return name + + +class BlockDefinition(object): + """ + Definition of 'parse-until-blocks' used by the parser. + """ + def __init__(self, alias, *names): + self.alias = alias + self.names = names + + def validate(self, options): + for name in self.names: + validator = getattr(name, 'validate', None) + if callable(validator): + validator(options) + + def collect(self, parser): + return [_collect(name, parser) for name in self.names] + + +class VariableBlockName(object): + def __init__(self, template, argname): + self.template = template + self.argname = argname + + def validate(self, options): + if self.argname not in options.all_argument_names: + raise ImproperlyConfigured( + "Invalid block definition, %r not a valid argument name, " + "available argument names: %r" % (self.argname, + options.all_argument_names) + ) + + def collect(self, parser): + value = parser.kwargs[self.argname] + return self.template % {'value': value.literal} diff --git a/thesisenv/lib/python3.6/site-packages/classytags/compat.py b/thesisenv/lib/python3.6/site-packages/classytags/compat.py new file mode 100644 index 0000000..074ce35 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/compat.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# flake8: noqa + +try: # pragma: no cover + compat_basestring = basestring +except NameError: + compat_basestring = str + +try: + compat_next = next +except NameError: # pragma: no cover + def compat_next(it): + return it.next() diff --git a/thesisenv/lib/python3.6/site-packages/classytags/core.py b/thesisenv/lib/python3.6/site-packages/classytags/core.py new file mode 100644 index 0000000..916930d --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/core.py @@ -0,0 +1,162 @@ +from operator import attrgetter + +from django.template import Node + +from classytags.blocks import BlockDefinition +from classytags.compat import compat_basestring +from classytags.parser import Parser +from classytags.utils import StructuredOptions +from classytags.utils import get_default_name + + +class Options(object): + """ + Option class holding the arguments of a tag. + """ + def __init__(self, *options, **kwargs): + self._options = options + self._kwargs = kwargs + self.options = {} + self.raw_options = options + self.breakpoints = [] + self.combined_breakpoints = {} + current_breakpoint = None + last = None + self.options[current_breakpoint] = [] + self.all_argument_names = [] + for value in options: + if isinstance(value, compat_basestring): + if isinstance(last, compat_basestring): + self.combined_breakpoints[last] = value + self.breakpoints.append(value) + current_breakpoint = value + self.options[current_breakpoint] = [] + else: + self.options[current_breakpoint].append(value) + self.all_argument_names.append(value.name) + last = value + self.blocks = [] + for block in kwargs.get('blocks', []): + if isinstance(block, BlockDefinition): + block_definition = block + elif isinstance(block, compat_basestring): + block_definition = BlockDefinition(block, block) + else: + block_definition = BlockDefinition(block[1], block[0]) + block_definition.validate(self) + self.blocks.append(block_definition) + if 'parser_class' in kwargs: + self.parser_class = kwargs['parser_class'] + else: + self.parser_class = Parser + + def __repr__(self): + bits = list(map(repr, self.options[None])) + for breakpoint in self.breakpoints: + bits.append(breakpoint) + for option in self.options[breakpoint]: + bits.append(repr(option)) + options = ','.join(bits) + if self.blocks: + blocks = ';%s' % ','.join(map(attrgetter('alias'), self.blocks)) + else: # pragma: no cover + blocks = '' + return '' % (options, blocks) + + def __add__(self, other): + if not isinstance(other, Options): + raise TypeError("Cannot add Options to non-Options object") + if self.blocks and other.blocks: + raise ValueError( + "Cannot add two Options objects if both objects define blocks" + ) + if self.parser_class is not other.parser_class: + raise ValueError( + "Cannot add two Options objects with different parser classes" + ) + full_options = self._options + other._options + full_kwargs = { + 'parser_class': self.parser_class + } + if self._kwargs.get('blocks', False): + full_kwargs['blocks'] = self._kwargs['blocks'] + elif other._kwargs.get('blocks', False): + full_kwargs['blocks'] = other._kwargs['blocks'] + return Options(*full_options, **full_kwargs) + + def get_parser_class(self): + return self.parser_class + + def bootstrap(self): + """ + Bootstrap this options + """ + return StructuredOptions( + self.options, + self.breakpoints, + self.blocks, + self.combined_breakpoints + ) + + def parse(self, parser, tokens): + """ + Parse template tokens into a dictionary + """ + argument_parser_class = self.get_parser_class() + argument_parser = argument_parser_class(self) + return argument_parser.parse(parser, tokens) + + +class TagMeta(type): + """ + Metaclass for the Tag class that set's the name attribute onto the class + and a _decorated_function pseudo-function which is used by Django's + template system to get the tag name. + """ + def __new__(cls, name, bases, attrs): + parents = [base for base in bases if isinstance(base, TagMeta)] + if not parents: + return super(TagMeta, cls).__new__(cls, name, bases, attrs) + tag_name = str(attrs.get('name', get_default_name(name))) + + def fake_func(): + pass # pragma: no cover + + fake_func.__name__ = tag_name + attrs['_decorated_function'] = fake_func + attrs['name'] = str(tag_name) + return super(TagMeta, cls).__new__(cls, name, bases, attrs) + + +class Tag(TagMeta('TagMeta', (Node,), {})): + """ + Main Tag class. + """ + options = Options() + name = None + + def __init__(self, parser, tokens): + self.kwargs, self.blocks = self.options.parse(parser, tokens) + self.child_nodelists = [] + for key, value in self.blocks.items(): + setattr(self, key, value) + self.child_nodelists.append(key) + + def render(self, context): + """ + INTERNAL method to prepare rendering + Usually you should not override this method, but rather use render_tag. + """ + items = self.kwargs.items() + kwargs = dict([(key, value.resolve(context)) for key, value in items]) + kwargs.update(self.blocks) + return self.render_tag(context, **kwargs) + + def render_tag(self, context, **kwargs): + """ + The method you should override in your custom tags + """ + raise NotImplementedError + + def __repr__(self): + return '' % self.name diff --git a/thesisenv/lib/python3.6/site-packages/classytags/exceptions.py b/thesisenv/lib/python3.6/site-packages/classytags/exceptions.py new file mode 100644 index 0000000..6c632b3 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/exceptions.py @@ -0,0 +1,66 @@ +from django.template import TemplateSyntaxError + +__all__ = ['ArgumentRequiredError', 'InvalidFlag', 'BreakpointExpected', + 'TooManyArguments'] + + +class BaseError(TemplateSyntaxError): + template = '' + + def __str__(self): # pragma: no cover + return self.template % self.__dict__ + + +class ArgumentRequiredError(BaseError): + template = "The tag '%(tagname)s' requires the '%(argname)s' argument." + + def __init__(self, argument, tagname): + self.argument = argument + self.tagname = tagname + self.argname = self.argument.name + + +class InvalidFlag(BaseError): + template = ("The flag '%(argname)s' for the tag '%(tagname)s' must be one " + "of %(allowed_values)s, but got '%(actual_value)s'") + + def __init__(self, argname, actual_value, allowed_values, tagname): + self.argname = argname + self.tagname = tagname + self.actual_value = actual_value + self.allowed_values = allowed_values + + +class BreakpointExpected(BaseError): + template = ("Expected one of the following breakpoints: %(breakpoints)s " + "in %(tagname)s, got '%(got)s' instead.") + + def __init__(self, tagname, breakpoints, got): + self.breakpoints = ', '.join(["'%s'" % bp for bp in breakpoints]) + self.tagname = tagname + self.got = got + + +class TrailingBreakpoint(BaseError): + template = ( + "Tag %(tagname)s ends in trailing breakpoint '%(breakpoint)s' without " + "an argument following." + ) + + def __init__(self, tagname, breakpoint): + self.tagname = tagname + self.breakpoint = breakpoint + + +class TooManyArguments(BaseError): + template = "The tag '%(tagname)s' got too many arguments: %(extra)s" + + def __init__(self, tagname, extra): + self.tagname = tagname + self.extra = ', '.join(["'%s'" % e for e in extra]) + + +class TemplateSyntaxWarning(Warning): + """ + Used for variable cleaning TemplateSyntaxErrors when in non-debug-mode. + """ diff --git a/thesisenv/lib/python3.6/site-packages/classytags/helpers.py b/thesisenv/lib/python3.6/site-packages/classytags/helpers.py new file mode 100644 index 0000000..59e2a00 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/helpers.py @@ -0,0 +1,104 @@ +from django.core.exceptions import ImproperlyConfigured +from django.template.loader import render_to_string + +from classytags.core import Tag +from classytags.utils import flatten_context + + +class AsTag(Tag): + """ + Same as tag but allows for an optional 'as varname'. The 'as varname' + options must be added 'manually' to the options class. + """ + def __init__(self, parser, tokens): + super(AsTag, self).__init__(parser, tokens) + if len(self.options.breakpoints) < 1: + raise ImproperlyConfigured( + "AsTag subclasses require at least one breakpoint." + ) + last_breakpoint = self.options.options[self.options.breakpoints[-1]] + optscount = len(last_breakpoint) + if optscount != 1: + raise ImproperlyConfigured( + "The last breakpoint of AsTag subclasses require exactly one " + "argument, got %s instead." % optscount + ) + self.varname_name = last_breakpoint[-1].name + + def render_tag(self, context, **kwargs): + """ + INTERNAL! + + Get's the value for the current context and arguments and puts it into + the context if needed or returns it. + """ + varname = kwargs.pop(self.varname_name) + if varname: + value = self.get_value_for_context(context, **kwargs) + context[varname] = value + return '' + else: + value = self.get_value(context, **kwargs) + return value + + def get_value_for_context(self, context, **kwargs): + """ + Called when a value for a varname (in the "as varname" case) should is + requested. This can be used to for example suppress exceptions in this + case. + + Returns the value to be set. + """ + return self.get_value(context, **kwargs) + + def get_value(self, context, **kwargs): + """ + Returns the value for the current context and arguments. + """ + raise NotImplementedError + + +class InclusionTag(Tag): + """ + A helper Tag class which allows easy inclusion tags. + + The template attribute must be set. + + Instead of render_tag, override get_context in your subclasses. + + Optionally override get_template in your subclasses. + """ + template = None + push_context = False + + def render_tag(self, context, **kwargs): + """ + INTERNAL! + + Gets the context and data to render. + """ + template = self.get_template(context, **kwargs) + if self.push_context: + safe_context = flatten_context(context) + data = self.get_context(safe_context, **kwargs) + safe_context.update(**data) + output = render_to_string(template, safe_context) + else: + new_context = context.new( + flatten_context(self.get_context(context, **kwargs)) + ) + data = flatten_context(new_context) + output = render_to_string(template, data) + return output + + def get_template(self, context, **kwargs): + """ + Returns the template to be used for the current context and arguments. + """ + return self.template + + def get_context(self, context, **kwargs): + """ + Returns the context to render the template with. + """ + return {} diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/auth/management/commands/__init__.py b/thesisenv/lib/python3.6/site-packages/classytags/models.py similarity index 100% rename from thesisenv/lib/python3.6/site-packages/django/contrib/auth/management/commands/__init__.py rename to thesisenv/lib/python3.6/site-packages/classytags/models.py diff --git a/thesisenv/lib/python3.6/site-packages/classytags/parser.py b/thesisenv/lib/python3.6/site-packages/classytags/parser.py new file mode 100644 index 0000000..fa59393 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/parser.py @@ -0,0 +1,207 @@ +from copy import deepcopy + +from django import template + +from classytags.exceptions import ArgumentRequiredError +from classytags.exceptions import BreakpointExpected +from classytags.exceptions import TooManyArguments +from classytags.exceptions import TrailingBreakpoint + + +class Parser(object): + """ + Argument parsing class. A new instance of this gets created each time a tag + get's parsed. + """ + def __init__(self, options): + self.options = options.bootstrap() + + def parse(self, parser, tokens): + """ + Parse a token stream + """ + self.parser = parser + self.bits = tokens.split_contents() + self.tagname = self.bits.pop(0) + self.kwargs = {} + self.blocks = {} + self.forced_next = None + # Get the first chunk of arguments until the next breakpoint + self.arguments = self.options.get_arguments() + self.current_argument = None + # get a copy of the bits (tokens) + self.todo = list(self.bits) + # parse the bits (tokens) + breakpoint = False + for bit in self.bits: + breakpoint = self.handle_bit(bit) + if breakpoint: + raise TrailingBreakpoint(self.tagname, breakpoint) + # finish the bits (tokens) + self.finish() + # parse block tags + self.parse_blocks() + return self.kwargs, self.blocks + + def handle_bit(self, bit): + """ + Handle the current bit + """ + breakpoint = False + if self.forced_next is not None: + if bit != self.forced_next: + raise BreakpointExpected(self.tagname, [self.forced_next], bit) + elif bit in self.options.reversed_combined_breakpoints: + expected = self.options.reversed_combined_breakpoints[bit] + raise BreakpointExpected(self.tagname, [expected], bit) + # Check if the current bit is the next breakpoint + if bit == self.options.next_breakpoint: + self.handle_next_breakpoint(bit) + breakpoint = bit + # Check if the current bit is a future breakpoint + elif bit in self.options.breakpoints: + self.handle_breakpoints(bit) + breakpoint = bit + # Otherwise it's a 'normal' argument + else: + self.handle_argument(bit) + if bit in self.options.combined_breakpoints: + self.forced_next = self.options.combined_breakpoints[bit] + else: + self.forced_next = None + # remove from todos + del self.todo[0] + return breakpoint + + def handle_next_breakpoint(self, bit): + """ + Handle a bit which is the next breakpoint by checking the current + breakpoint scope is finished or can be finished and then shift to the + next scope. + """ + # Check if any unhandled argument in the current breakpoint is required + self.check_required() + # Shift the breakpoint to the next one + self.options.shift_breakpoint() + # Get the next chunk of arguments + self.arguments = self.options.get_arguments() + if self.arguments: + self.current_argument = self.arguments.pop(0) + else: + self.current_argument = None + + def handle_breakpoints(self, bit): + """ + Handle a bit which is a future breakpoint by trying to finish all + intermediate breakpoint codes as well as the current scope and then + shift. + """ + # While we're not at our target breakpoint + while bit != self.options.current_breakpoint: + # Check required arguments + self.check_required() + # Shift to the next breakpoint + self.options.shift_breakpoint() + self.arguments = self.options.get_arguments() + self.current_argument = self.arguments.pop(0) + + def handle_argument(self, bit): + """ + Handle the current argument. + """ + # If we don't have an argument yet + if self.current_argument is None: + try: + # try to get the next one + self.current_argument = self.arguments.pop(0) + except IndexError: + # If we don't have any arguments, left, raise a + # TooManyArguments error + raise TooManyArguments(self.tagname, self.todo) + # parse the current argument and check if this bit was handled by this + # argument + handled = self.current_argument.parse(self.parser, bit, self.tagname, + self.kwargs) + # While this bit is not handled by an argument + while not handled: + try: + # Try to get the next argument + self.current_argument = self.arguments.pop(0) + except IndexError: + # If there is no next argument but there are still breakpoints + # Raise an exception that we expected a breakpoint + if self.options.breakpoints: + raise BreakpointExpected(self.tagname, + self.options.breakpoints, bit) + elif self.options.next_breakpoint: + raise BreakpointExpected(self.tagname, + [self.options.next_breakpoint], + bit) + else: + # Otherwise raise a TooManyArguments excption + raise TooManyArguments(self.tagname, self.todo) + # Try next argument + handled = self.current_argument.parse(self.parser, bit, + self.tagname, self.kwargs) + + def finish(self): + """ + Finish up parsing by checking all remaining breakpoint scopes + """ + # Check if there are any required arguments left in the current + # breakpoint + self.check_required() + # While there are still breakpoints left + while self.options.next_breakpoint: + # Shift to the next breakpoint + self.options.shift_breakpoint() + self.arguments = self.options.get_arguments() + # And check this breakpoints arguments for required arguments. + self.check_required() + + def parse_blocks(self): + """ + Parse template blocks for block tags. + + Example: + {% a %} b {% c %} d {% e %} f {% g %} + => pre_c: b + pre_e: d + pre_g: f + {% a %} b {% f %} + => pre_c: b + pre_e: None + pre_g: None + """ + # if no blocks are defined, bail out + if not self.options.blocks: + return + # copy the blocks + blocks = deepcopy(self.options.blocks) + identifiers = {} + for block in blocks: + identifiers[block] = block.collect(self) + while blocks: + current_block = blocks.pop(0) + current_identifiers = identifiers[current_block] + block_identifiers = list(current_identifiers) + for block in blocks: + block_identifiers += identifiers[block] + nodelist = self.parser.parse(block_identifiers) + token = self.parser.next_token() + while token.contents not in current_identifiers: + empty_block = blocks.pop(0) + current_identifiers = identifiers[empty_block] + self.blocks[empty_block.alias] = template.NodeList() + self.blocks[current_block.alias] = nodelist + + def check_required(self): + """ + Iterate over arguments, checking if they're required, otherwise + populating the kwargs dictionary with their defaults. + """ + for argument in self.arguments: + if argument.required: + raise ArgumentRequiredError(argument, self.tagname) + else: + self.kwargs[argument.name] = argument.get_default() diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/contenttypes/management/commands/__init__.py b/thesisenv/lib/python3.6/site-packages/classytags/test/__init__.py similarity index 100% rename from thesisenv/lib/python3.6/site-packages/django/contrib/contenttypes/management/commands/__init__.py rename to thesisenv/lib/python3.6/site-packages/classytags/test/__init__.py diff --git a/thesisenv/lib/python3.6/site-packages/classytags/test/context_managers.py b/thesisenv/lib/python3.6/site-packages/classytags/test/context_managers.py new file mode 100644 index 0000000..71f5c44 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/test/context_managers.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +from django import template +from django.conf import settings + + +try: + Engine = None + builtins = template.base.builtins +except AttributeError: + from django.template.engine import Engine + builtins = Engine.get_default().template_builtins + + +class NULL: + pass + + +class SettingsOverride(object): # pragma: no cover + """ + Overrides Django settings within a context and resets them to their inital + values on exit. + + Example: + + with SettingsOverride(DEBUG=True): + # do something + """ + def __init__(self, **overrides): + self.overrides = overrides + + def __enter__(self): + self.old = {} + for key, value in self.overrides.items(): + self.old[key] = getattr(settings, key, NULL) + setattr(settings, key, value) + + def __exit__(self, type, value, traceback): + for key, value in self.old.items(): + if value is not NULL: + setattr(settings, key, value) + else: + delattr(settings, key) # do not pollute the context! + + +class TemplateTags(object): # pragma: no cover + def __init__(self, *tags): + self.lib = template.Library() + for tag in tags: + self.lib.tag(tag) + + def __enter__(self): + self.old = list(builtins) + builtins.insert(0, self.lib) + + def __exit__(self, type, value, traceback): + builtins[:] = self.old diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/gis/management/__init__.py b/thesisenv/lib/python3.6/site-packages/classytags/test/project/__init__.py similarity index 100% rename from thesisenv/lib/python3.6/site-packages/django/contrib/gis/management/__init__.py rename to thesisenv/lib/python3.6/site-packages/classytags/test/project/__init__.py diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/gis/management/commands/__init__.py b/thesisenv/lib/python3.6/site-packages/classytags/test/project/models.py similarity index 100% rename from thesisenv/lib/python3.6/site-packages/django/contrib/gis/management/commands/__init__.py rename to thesisenv/lib/python3.6/site-packages/classytags/test/project/models.py diff --git a/thesisenv/lib/python3.6/site-packages/classytags/tests.py b/thesisenv/lib/python3.6/site-packages/classytags/tests.py new file mode 100644 index 0000000..a496610 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/tests.py @@ -0,0 +1,1547 @@ +from __future__ import with_statement + +import os +import sys +import warnings +from distutils.version import LooseVersion +import operator +from unittest import TestCase + +import django +from django import template +from django.core.exceptions import ImproperlyConfigured +from django.template import Context, RequestContext +from django.test import RequestFactory + +from classytags import arguments +from classytags import core +from classytags import exceptions +from classytags import helpers +from classytags import parser +from classytags import utils +from classytags import values +from classytags.blocks import BlockDefinition +from classytags.blocks import VariableBlockName +from classytags.compat import compat_next +from classytags.test.context_managers import SettingsOverride +from classytags.test.context_managers import TemplateTags + +DJANGO_1_4_OR_HIGHER = ( + LooseVersion(django.get_version()) >= LooseVersion('1.4') +) +DJANGO_1_5_OR_HIGHER = ( + LooseVersion(django.get_version()) >= LooseVersion('1.5') +) + +CLASSY_TAGS_DIR = os.path.abspath(os.path.dirname(__file__)) + + +class DummyTokens(list): + def __init__(self, *tokens): + super(DummyTokens, self).__init__(['dummy_tag'] + list(tokens)) + + def split_contents(self): + return self + + +class DummyParser(object): + @staticmethod + def compile_filter(token): + return utils.TemplateConstant(token) +dummy_parser = DummyParser() + + +class _Warning(object): + def __init__(self, message, category, filename, lineno): + self.message = message + self.category = category + self.filename = filename + self.lineno = lineno + + +def _collect_warnings(observe_warning, f, *args, **kwargs): + def show_warning(message, category, filename, lineno, file=None, + line=None): + assert isinstance(message, Warning) + observe_warning( + _Warning(message.args[0], category, filename, lineno) + ) + + # Disable the per-module cache for every module otherwise if the warning + # which the caller is expecting us to collect was already emitted it won't + # be re-emitted by the call to f which happens below. + for v in sys.modules.values(): # pragma: no cover + if v is not None: + try: + v.__warningregistry__ = None + except: + # Don't specify a particular exception type to handle in case + # some wacky object raises some wacky exception in response to + # the setattr attempt. + pass + + orig_filters = warnings.filters[:] + orig_show = warnings.showwarning + warnings.simplefilter('always') + try: + warnings.showwarning = show_warning + result = f(*args, **kwargs) + finally: + warnings.filters[:] = orig_filters + warnings.showwarning = orig_show + return result + + +class ClassytagsTests(TestCase): + def failUnlessWarns(self, category, message, f, *args, **kwargs): + warnings_shown = [] + result = _collect_warnings(warnings_shown.append, f, *args, **kwargs) + + if not warnings_shown: # pragma: no cover + self.fail("No warnings emitted") + first = warnings_shown[0] + for other in warnings_shown[1:]: # pragma: no cover + if ((other.message, other.category) != + (first.message, first.category)): + self.fail("Can't handle different warnings") + self.assertEqual(first.message, message) + self.assertTrue(first.category is category) + + return result + assertWarns = failUnlessWarns + + def _tag_tester(self, klass, templates): + """ + Helper method to test a template tag by rendering it and checkout + output. + + *klass* is a template tag class (subclass of core.Tag) + *templates* is a sequence of a triple (template-string, output-string, + context) + """ + + tag_message = ("Rendering of template %(in)r resulted in " + "%(realout)r, expected %(out)r using %(ctx)r.") + + with TemplateTags(klass): + for tpl, out, ctx in templates: + t = template.Template(tpl) + c = template.Context(ctx) + s = t.render(c) + self.assertEqual(s, out, tag_message % { + 'in': tpl, + 'out': out, + 'ctx': ctx, + 'realout': s, + }) + for key, value in ctx.items(): + self.assertEqual(c.get(key), value) + + def test_simple_parsing(self): + """ + Test very basic single argument parsing + """ + options = core.Options( + arguments.Argument('myarg'), + ) + dummy_tokens = DummyTokens('myval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 1) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), 'myval') + + def test_simple_parsing_too_many_arguments(self): + options = core.Options( + arguments.Argument('myarg'), + ) + dummy_tokens = DummyTokens('myval', 'myval2') + self.assertRaises(exceptions.TooManyArguments, + options.parse, dummy_parser, dummy_tokens) + + def test_optional_default(self): + """ + Test basic optional argument parsing + """ + options = core.Options( + arguments.Argument('myarg'), + arguments.Argument('optarg', required=False, default=None), + ) + dummy_tokens = DummyTokens('myval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 2) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), 'myval') + self.assertEqual(kwargs['optarg'].resolve(dummy_context), None) + + def test_optional_given(self): + options = core.Options( + arguments.Argument('myarg'), + arguments.Argument('optarg', required=False, default=None), + ) + dummy_tokens = DummyTokens('myval', 'optval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 2) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), 'myval') + self.assertEqual(kwargs['optarg'].resolve(dummy_context), 'optval') + + def test_breakpoints_not_enough_arguments(self): + """ + Test parsing with breakpoints + """ + options = core.Options( + arguments.Argument('myarg'), + 'as', + arguments.Argument('varname'), + 'using', + arguments.Argument('using'), + ) + dummy_tokens = DummyTokens('myval') + self.assertRaises(exceptions.ArgumentRequiredError, + options.parse, dummy_parser, dummy_tokens) + + def test_breakpoint_breakpoint_expected(self): + options = core.Options( + arguments.Argument('myarg'), + 'as', + arguments.Argument('varname'), + 'using', + arguments.Argument('using'), + ) + dummy_tokens = DummyTokens('myval', 'myname') + self.assertRaises(exceptions.BreakpointExpected, + options.parse, dummy_parser, dummy_tokens) + + def test_breakpoint_breakpoint_expected_second(self): + options = core.Options( + arguments.Argument('myarg'), + 'as', + arguments.Argument('varname'), + 'using', + arguments.Argument('using'), + ) + dummy_tokens = DummyTokens('myval', 'as', 'myname', 'something') + self.assertRaises(exceptions.BreakpointExpected, + options.parse, dummy_parser, dummy_tokens) + + def test_breakpoint_trailing(self): + options = core.Options( + arguments.Argument('myarg'), + 'as', + arguments.Argument('varname', required=False), + ) + dummy_tokens = DummyTokens('myval', 'as') + self.assertRaises(exceptions.TrailingBreakpoint, + options.parse, dummy_parser, dummy_tokens) + + def test_breakpoint_okay(self): + options = core.Options( + arguments.Argument('myarg'), + 'as', + arguments.Argument('varname'), + 'using', + arguments.Argument('using'), + ) + dummy_tokens = DummyTokens('myval', 'as', 'myname', 'using', + 'something') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 3) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), 'myval') + self.assertEqual(kwargs['varname'].resolve(dummy_context), 'myname') + self.assertEqual(kwargs['using'].resolve(dummy_context), 'something') + + def test_flag_true_value(self): + """ + Test flag arguments + """ + options = core.Options( + arguments.Flag('myflag', true_values=['on'], false_values=['off']) + ) + dummy_tokens = DummyTokens('on') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(kwargs['myflag'].resolve(dummy_context), True) + + def test_flag_false_value(self): + options = core.Options( + arguments.Flag('myflag', true_values=['on'], false_values=['off']) + ) + dummy_tokens = DummyTokens('off') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(kwargs['myflag'].resolve(dummy_context), False) + + def test_flag_wrong_value(self): + options = core.Options( + arguments.Flag('myflag', true_values=['on'], false_values=['off']) + ) + # test exceptions + dummy_tokens = DummyTokens('myval') + self.assertRaises(exceptions.InvalidFlag, + options.parse, dummy_parser, dummy_tokens) + + def test_flag_wrong_value_no_false(self): + options = core.Options( + arguments.Flag('myflag', true_values=['on']) + ) + dummy_tokens = DummyTokens('myval') + self.assertRaises(exceptions.InvalidFlag, + options.parse, dummy_parser, dummy_tokens) + + def test_flag_wrong_value_no_true(self): + options = core.Options( + arguments.Flag('myflag', false_values=['off']) + ) + dummy_tokens = DummyTokens('myval') + self.assertRaises(exceptions.InvalidFlag, + options.parse, dummy_parser, dummy_tokens) + self.assertRaises(ImproperlyConfigured, arguments.Flag, 'myflag') + + def test_case_sensitive_flag_typo(self): + # test case sensitive flag + options = core.Options( + arguments.Flag('myflag', true_values=['on'], default=False, + case_sensitive=True) + ) + dummy_tokens = DummyTokens('On') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(kwargs['myflag'].resolve(dummy_context), False) + + def test_case_sensitive_flag_okay(self): + options = core.Options( + arguments.Flag( + 'myflag', + true_values=['on'], + default=False, + case_sensitive=True + ) + ) + dummy_tokens = DummyTokens('on') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(kwargs['myflag'].resolve(dummy_context), True) + + def test_multiflag(self): + # test multi-flag + options = core.Options( + arguments.Flag('flagone', true_values=['on'], default=False), + arguments.Flag('flagtwo', false_values=['off'], default=True), + ) + dummy_tokens = DummyTokens('On', 'On') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(kwargs['flagone'].resolve(dummy_context), True) + self.assertEqual(kwargs['flagtwo'].resolve(dummy_context), True) + + def test_multi_value_single_value(self): + """ + Test simple multi value arguments + """ + options = core.Options( + arguments.MultiValueArgument('myarg') + ) + # test single token MVA + dummy_tokens = DummyTokens('myval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 1) + dummy_context = {} + # test resolving to list + self.assertEqual(kwargs['myarg'].resolve(dummy_context), ['myval']) + + def test_multi_value_two_values(self): + options = core.Options( + arguments.MultiValueArgument('myarg') + ) + # test double token MVA + dummy_tokens = DummyTokens('myval', 'myval2') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 1) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), + ['myval', 'myval2']) + + def test_multi_value_three_values(self): + options = core.Options( + arguments.MultiValueArgument('myarg') + ) + # test triple token MVA + dummy_tokens = DummyTokens('myval', 'myval2', 'myval3') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 1) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), + ['myval', 'myval2', 'myval3']) + + def test_multi_value_max_values_single(self): + # test max_values option + options = core.Options( + arguments.MultiValueArgument('myarg', max_values=2) + ) + dummy_tokens = DummyTokens('myval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 1) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), ['myval']) + + def test_multi_value_max_values_double(self): + options = core.Options( + arguments.MultiValueArgument('myarg', max_values=2) + ) + dummy_tokens = DummyTokens('myval', 'myval2') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 1) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), + ['myval', 'myval2']) + + def test_multi_value_max_values_too_many(self): + options = core.Options( + arguments.MultiValueArgument('myarg', max_values=2) + ) + dummy_tokens = DummyTokens('myval', 'myval2', 'myval3') + self.assertRaises(exceptions.TooManyArguments, + options.parse, dummy_parser, dummy_tokens) + + def test_multi_value_no_resolve(self): + # test no resolve + options = core.Options( + arguments.MultiValueArgument('myarg', resolve=False) + ) + argparser = parser.Parser(options) + dummy_tokens = DummyTokens('myval', "'myval2'") + kwargs, blocks = argparser.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), + ['myval', 'myval2']) + + def test_multi_value_defaults(self): + # test default + options = core.Options( + arguments.MultiValueArgument('myarg', default=['hello', 'world']), + ) + argparser = parser.Parser(options) + dummy_tokens = DummyTokens() + kwargs, blocks = argparser.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + dummy_context = {} + self.assertEqual(kwargs['myarg'].resolve(dummy_context), + ['hello', 'world']) + + def test_complex_all_arguments(self): + """ + test a complex tag option parser + """ + options = core.Options( + arguments.Argument('singlearg'), + arguments.MultiValueArgument('multiarg', required=False), + 'as', + arguments.Argument('varname', required=False), + 'safe', + arguments.Flag('safe', true_values=['on', 'true'], default=False) + ) + # test simple 'all arguments given' + dummy_tokens = DummyTokens(1, 2, 3, 'as', 4, 'safe', 'true') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 4) + expected = [ + ('singlearg', 1), + ('multiarg', [2, 3]), + ('varname', 4), + ('safe', True) + ] + for key, value in expected: + self.assertEqual(kwargs[key].resolve(dummy_context), value) + + def test_complex_only_first_argument(self): + options = core.Options( + arguments.Argument('singlearg'), + arguments.MultiValueArgument('multiarg', required=False), + 'as', + arguments.Argument('varname', required=False), + 'safe', + arguments.Flag('safe', true_values=['on', 'true'], default=False) + ) + # test 'only first argument given' + dummy_tokens = DummyTokens(1) + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 4) + expected = [ + ('singlearg', 1), + ('multiarg', []), + ('varname', None), + ('safe', False) + ] + for key, value in expected: + self.assertEqual(kwargs[key].resolve(dummy_context), value) + + def test_complext_first_and_last_argument(self): + options = core.Options( + arguments.Argument('singlearg'), + arguments.MultiValueArgument('multiarg', required=False), + 'as', + arguments.Argument('varname', required=False), + 'safe', + arguments.Flag('safe', true_values=['on', 'true'], default=False) + ) + # test first argument and last argument given + dummy_tokens = DummyTokens(2, 'safe', 'false') + dummy_context = {} + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 4) + expected = [ + ('singlearg', 2), + ('multiarg', []), + ('varname', None), + ('safe', False) + ] + for key, value in expected: + self.assertEqual(kwargs[key].resolve(dummy_context), value) + + def test_cycle(self): + """ + This test re-implements django's cycle tag (because it's quite crazy) + and checks if it works. + """ + from itertools import cycle as itertools_cycle + + class Cycle(core.Tag): + name = 'classy_cycle' + + options = core.Options( + arguments.MultiValueArgument('values'), + 'as', + arguments.Argument('varname', required=False, resolve=False), + ) + + def render_tag(self, context, values, varname): + if self not in context.render_context: + context.render_context[self] = itertools_cycle(values) + cycle_iter = context.render_context[self] + value = compat_next(cycle_iter) + if varname: + context[varname] = value + return value + + origtpl = template.Template( + '{% for thing in sequence %}' + '{% cycle "1" "2" "3" "4" %}' + '{% endfor %}' + ) + sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + context = template.Context({'sequence': sequence}) + original = origtpl.render(context) + with TemplateTags(Cycle): + classytpl = template.Template( + '{% for thing in sequence %}' + '{% classy_cycle "1" "2" "3" "4" %}' + '{% endfor %}' + ) + classy = classytpl.render(context) + self.assertEqual(original, classy) + origtpl = template.Template( + '{% for thing in sequence %}' + '{% cycle "1" "2" "3" "4" as myvarname %}' + '{% endfor %}' + ) + sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + context = template.Context({'sequence': sequence}) + original = origtpl.render(context) + with TemplateTags(Cycle): + classytpl = template.Template( + '{% for thing in sequence %}' + '{% classy_cycle "1" "2" "3" "4" as myvarname %}' + '{% endfor %}' + ) + classy = classytpl.render(context) + self.assertEqual(original, classy) + + def test_naming(self): + # test implicit naming + class MyTag(core.Tag): + pass + lib = template.Library() + lib.tag(MyTag) + msg = "'my_tag' not in %s" % lib.tags.keys() + self.assertTrue('my_tag' in lib.tags, msg) + # test explicit naming + + class MyTag2(core.Tag): + name = 'my_tag_2' + + lib = template.Library() + lib.tag(MyTag2) + msg = "'my_tag_2' not in %s" % lib.tags.keys() + self.assertTrue('my_tag_2' in lib.tags, msg) + # test named registering + lib = template.Library() + lib.tag('my_tag_3', MyTag) + msg = "'my_tag_3' not in %s" % lib.tags.keys() + self.assertTrue('my_tag_3' in lib.tags, msg) + msg = "'my_tag' in %s" % lib.tags.keys() + self.assertTrue('my_tag' not in lib.tags, msg) + lib = template.Library() + lib.tag('my_tag_4', MyTag2) + msg = "'my_tag_4' not in %s" % lib.tags.keys() + self.assertTrue('my_tag_4' in lib.tags, msg) + msg = "'my_tag2' in %s" % lib.tags.keys() + self.assertTrue('my_tag2' not in lib.tags, msg) + + def test_hello_world(self): + class Hello(core.Tag): + options = core.Options( + arguments.Argument('name', required=False, default='world'), + 'as', + arguments.Argument('varname', required=False, resolve=False) + ) + + def render_tag(self, context, name, varname): + output = 'hello %s' % name + if varname: + context[varname] = output + return '' + return output + tpls = [ + ('{% hello %}', 'hello world', {}), + ('{% hello "classytags" %}', 'hello classytags', {}), + ('{% hello as myvar %}', '', {'myvar': 'hello world'}), + ('{% hello "my friend" as othervar %}', '', + {'othervar': 'hello my friend'}) + ] + self._tag_tester(Hello, tpls) + + def test_filters_in_arguments(self): + class Filtered(core.Tag): + options = core.Options( + arguments.Argument('value'), + ) + + def render_tag(self, context, value): + return value + tpls = [ + ('{% filtered "hello" %}', 'hello', {}), + ('{% filtered var %}', 'world', {'var': 'world'}), + ('{% filtered var|default:"foo" %}', 'foo', {}), + ] + self._tag_tester(Filtered, tpls) + + def test_filtered_multi_keyword(self): + class Filtered(core.Tag): + options = core.Options( + arguments.MultiKeywordArgument('kwargs'), + ) + + def render_tag(self, context, kwargs): + return '|'.join('%s:%s' % (k, v) for k, v in kwargs.items()) + tpls = [ + ('{% filtered hello="world" %}', 'hello:world', {}), + ('{% filtered hello=var %}', 'hello:world', {'var': 'world'}), + ('{% filtered hello=var|default:"foo" %}', 'hello:foo', {}), + ] + self._tag_tester(Filtered, tpls) + + def test_blocks(self): + class Blocky(core.Tag): + options = core.Options( + blocks=['a', 'b', 'c', 'd', 'e'], + ) + + def render_tag(self, context, **nodelists): + tpl = "%(a)s;%(b)s;%(c)s;%(d)s;%(e)s" + data = {} + for key, value in nodelists.items(): + data[key] = value.render(context) + return tpl % data + templates = [ + ('{% blocky %}1{% a %}2{% b %}3{% c %}4{% d %}5{% e %}', + '1;2;3;4;5', {},), + ('{% blocky %}12{% b %}3{% c %}4{% d %}5{% e %}', '12;;3;4;5', + {},), + ('{% blocky %}123{% c %}4{% d %}5{% e %}', '123;;;4;5', {},), + ('{% blocky %}1234{% d %}5{% e %}', '1234;;;;5', {},), + ('{% blocky %}12345{% e %}', '12345;;;;', {},), + ('{% blocky %}1{% a %}23{% c %}4{% d %}5{% e %}', '1;23;;4;5', + {},), + ('{% blocky %}1{% a %}23{% c %}45{% e %}', '1;23;;45;', {},), + ] + self._tag_tester(Blocky, templates) + + def test_astag(self): + class Dummy(helpers.AsTag): + options = core.Options( + 'as', + arguments.Argument('varname', resolve=False, required=False), + ) + + def get_value(self, context): + return "dummy" + templates = [ + ('{% dummy %}:{{ varname }}', 'dummy:', {},), + ('{% dummy as varname %}:{{ varname }}', ':dummy', {},), + ] + self._tag_tester(Dummy, templates) + + def test_inclusion_tag(self): + class Inc(helpers.InclusionTag): + template = 'test.html' + + options = core.Options( + arguments.Argument('var'), + ) + + def get_context(self, context, var): + return {'var': var} + templates = [ + ('{% inc var %}', 'inc', {'var': 'inc'},), + ] + self._tag_tester(Inc, templates) + + class Inc2(helpers.InclusionTag): + template = 'test.html' + + templates = [ + ('{% inc2 %}', '', {},), + ] + self._tag_tester(Inc2, templates) + + def test_inclusion_tag_push_pop_context(self): + class IncPollute(helpers.InclusionTag): + template = 'test.html' + + options = core.Options( + arguments.Argument('var') + ) + + def get_context(self, context, var): + context.update({'var': 'polluted'}) + return context + + with TemplateTags(IncPollute): + tpl = template.Template('{% inc_pollute var %}') + ctx = template.Context({'var': 'test'}) + out = tpl.render(ctx) + self.assertEqual(out, 'polluted') + self.assertEqual(ctx['var'], 'polluted') + + # now enable pollution control + IncPollute.push_context = True + + with TemplateTags(IncPollute): + tpl = template.Template('{% inc_pollute var %}') + ctx = template.Context({'var': 'test'}) + out = tpl.render(ctx) + self.assertEqual(out, 'polluted') + self.assertEqual(ctx['var'], 'test') + + def test_integer_variable(self): + options = core.Options( + arguments.IntegerArgument('integer', resolve=False), + ) + # test okay + with SettingsOverride(DEBUG=False): + dummy_tokens = DummyTokens('1') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertEqual(kwargs['integer'].resolve(dummy_context), 1) + # test warning + dummy_tokens = DummyTokens('one') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + one = repr('one') + message = arguments.IntegerValue.errors['clean'] % {'value': one} + self.assertWarns(exceptions.TemplateSyntaxWarning, + message, kwargs['integer'].resolve, dummy_context) + self.assertEqual(kwargs['integer'].resolve(dummy_context), + values.IntegerValue.value_on_error) + # test exception + with SettingsOverride(DEBUG=True): + dummy_tokens = DummyTokens('one') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + message = values.IntegerValue.errors['clean'] % { + 'value': repr('one') + } + self.assertRaises(template.TemplateSyntaxError, + kwargs['integer'].resolve, dummy_context) + # test the same as above but with resolving + + class IntegerTag(core.Tag): + options = core.Options( + arguments.IntegerArgument('integer') + ) + + def render_tag(self, context, integer): + return integer + + with TemplateTags(IntegerTag): + tpl = template.Template("{% integer_tag i %}") + with SettingsOverride(DEBUG=False): + # test okay + context = template.Context({'i': '1'}) + self.assertEqual(tpl.render(context), '1') + # test warning + context = template.Context({'i': 'one'}) + message = values.IntegerValue.errors['clean'] % { + 'value': repr('one') + } + self.assertWarns(exceptions.TemplateSyntaxWarning, + message, tpl.render, context) + self.assertEqual(int(tpl.render(context)), + values.IntegerValue.value_on_error) + # test exception + with SettingsOverride(DEBUG=True): + context = template.Context({'i': 'one'}) + message = arguments.IntegerValue.errors['clean'] % {'value': one} + self.assertRaises(template.TemplateSyntaxError, tpl.render, + context) + # reset settings + + def test_not_implemented_errors(self): + class Fail(core.Tag): + pass + + class Fail2(helpers.AsTag): + pass + + class Fail3(helpers.AsTag): + options = core.Options( + 'as', + ) + + class Fail4(helpers.AsTag): + options = core.Options( + 'as', + arguments.Argument('varname', resolve=False), + ) + + if DJANGO_1_4_OR_HIGHER: + exc_class = NotImplementedError + else: # pragma: no cover + exc_class = template.TemplateSyntaxError + + with TemplateTags(Fail, Fail2, Fail3, Fail4): + context = template.Context({}) + tpl = template.Template("{% fail %}") + self.assertRaises(exc_class, tpl.render, context) + self.assertRaises(ImproperlyConfigured, + template.Template, "{% fail2 %}") + self.assertRaises(ImproperlyConfigured, + template.Template, "{% fail3 %}") + tpl = template.Template("{% fail4 as something %}") + self.assertRaises(exc_class, tpl.render, context) + + def test_too_many_arguments(self): + class NoArg(core.Tag): + pass + with TemplateTags(NoArg): + self.assertRaises(exceptions.TooManyArguments, + template.Template, "{% no_arg a arg %}") + + def test_choice_argument(self): + options = core.Options( + arguments.ChoiceArgument('choice', + choices=['one', 'two', 'three']), + ) + # this is settings dependant! + with SettingsOverride(DEBUG=True): + for good in ('one', 'two', 'three'): + dummy_tokens = DummyTokens(good) + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertEqual(kwargs['choice'].resolve(dummy_context), good) + bad = 'four' + dummy_tokens = DummyTokens(bad) + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertRaises(template.TemplateSyntaxError, + kwargs['choice'].resolve, dummy_context) + with SettingsOverride(DEBUG=False): + self.assertEqual(kwargs['choice'].resolve(dummy_context), 'one') + # test other value class + + class IntegerChoiceArgument(arguments.ChoiceArgument): + value_class = values.IntegerValue + + default = 2 + options = core.Options( + IntegerChoiceArgument('choice', choices=[1, 2, 3], + default=default), + ) + with SettingsOverride(DEBUG=True): + for good in ('1', '2', '3'): + dummy_tokens = DummyTokens(good) + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertEqual(kwargs['choice'].resolve(dummy_context), + int(good)) + bad = '4' + dummy_tokens = DummyTokens(bad) + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertRaises(template.TemplateSyntaxError, + kwargs['choice'].resolve, dummy_context) + with SettingsOverride(DEBUG=False): + self.assertEqual(kwargs['choice'].resolve(dummy_context), default) + # reset settings + + def test_keyword_argument(self): + class KeywordArgumentTag(core.Tag): + name = 'kwarg_tag' + options = core.Options( + arguments.KeywordArgument('named', defaultkey='defaultkey'), + ) + + def render_tag(self, context, named): + return '%s:%s' % ( + list(named.keys())[0], list(named.values())[0] + ) + + ctx = {'key': 'thekey', 'value': 'thevalue'} + templates = [ + ("{% kwarg_tag key='value' %}", 'key:value', ctx), + ("{% kwarg_tag 'value' %}", 'defaultkey:value', ctx), + ("{% kwarg_tag key=value %}", 'key:thevalue', ctx), + ("{% kwarg_tag value %}", 'defaultkey:thevalue', ctx), + ] + self._tag_tester(KeywordArgumentTag, templates) + + class KeywordArgumentTag2(KeywordArgumentTag): + name = 'kwarg_tag' + options = core.Options( + arguments.KeywordArgument( + 'named', + defaultkey='defaultkey', + resolve=False, + required=False, + default='defaultvalue' + ), + ) + + templates = [ + ("{% kwarg_tag %}", 'defaultkey:defaultvalue', ctx), + ("{% kwarg_tag key='value' %}", 'key:value', ctx), + ("{% kwarg_tag 'value' %}", 'defaultkey:value', ctx), + ("{% kwarg_tag key=value %}", 'key:value', ctx), + ("{% kwarg_tag value %}", 'defaultkey:value', ctx), + ] + self._tag_tester(KeywordArgumentTag2, templates) + + def test_multi_keyword_argument(self): + opts = core.Options( + arguments.MultiKeywordArgument('multi', max_values=2), + ) + + class MultiKeywordArgumentTag(core.Tag): + name = 'multi_kwarg_tag' + options = opts + + def render_tag(self, context, multi): + items = sorted(multi.items()) + return ','.join(['%s:%s' % item for item in items]) + + ctx = {'key': 'thekey', 'value': 'thevalue'} + templates = [ + ("{% multi_kwarg_tag key='value' key2='value2' %}", + 'key:value,key2:value2', ctx), + ("{% multi_kwarg_tag key=value %}", 'key:thevalue', ctx), + ] + self._tag_tester(MultiKeywordArgumentTag, templates) + dummy_tokens = DummyTokens('key="value"', 'key2="value2"', + 'key3="value3"') + self.assertRaises(exceptions.TooManyArguments, + opts.parse, dummy_parser, dummy_tokens) + + def test_custom_parser(self): + class CustomParser(parser.Parser): + def parse_blocks(self): + return + + options = core.Options( + blocks=[ + ('end_my_tag', 'nodelist'), + ], + parser_class=CustomParser + ) + dummy_tokens = DummyTokens() + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + + def test_repr(self): + class MyTag(core.Tag): + name = 'mytag' + tag = MyTag(dummy_parser, DummyTokens()) + self.assertEqual('', repr(tag)) + + def test_non_required_multikwarg(self): + options = core.Options( + arguments.MultiKeywordArgument('multi', required=False), + ) + dummy_tokens = DummyTokens() + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertTrue('multi' in kwargs) + self.assertEqual(kwargs['multi'], {}) + options = core.Options( + arguments.MultiKeywordArgument('multi', required=False, + default={'hello': 'world'}), + ) + dummy_tokens = DummyTokens() + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertTrue('multi' in kwargs) + self.assertEqual(kwargs['multi'].resolve({}), {'hello': 'world'}) + + def test_resolve_kwarg(self): + class ResolveKwarg(core.Tag): + name = 'kwarg' + options = core.Options( + arguments.KeywordArgument('named'), + ) + + def render_tag(self, context, named): + return '%s:%s' % ( + list(named.keys())[0], list(named.values())[0] + ) + + class NoResolveKwarg(core.Tag): + name = 'kwarg' + options = core.Options( + arguments.KeywordArgument('named', resolve=False), + ) + + def render_tag(self, context, named): + return '%s:%s' % ( + list(named.keys())[0], list(named.values())[0] + ) + + resolve_templates = [ + ("{% kwarg key=value %}", "key:test", {'value': 'test'}), + ("{% kwarg key='value' %}", "key:value", {'value': 'test'}), + ] + + noresolve_templates = [ + ("{% kwarg key=value %}", "key:value", {'value': 'test'}), + ] + + self._tag_tester(ResolveKwarg, resolve_templates) + self._tag_tester(NoResolveKwarg, noresolve_templates) + + def test_kwarg_default(self): + options = core.Options( + arguments.KeywordArgument('kwarg', required=False, + defaultkey='mykey'), + ) + dummy_tokens = DummyTokens() + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertTrue('kwarg' in kwargs) + self.assertEqual(kwargs['kwarg'].resolve({}), {'mykey': None}) + options = core.Options( + arguments.KeywordArgument('kwarg', required=False, + default='hello'), + ) + dummy_tokens = DummyTokens() + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertTrue('kwarg' in kwargs) + self.assertEqual(kwargs['kwarg'].resolve({}), {}) + options = core.Options( + arguments.KeywordArgument('kwarg', required=False, + default='hello', defaultkey='key'), + ) + dummy_tokens = DummyTokens() + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertTrue('kwarg' in kwargs) + self.assertEqual(kwargs['kwarg'].resolve({}), {'key': 'hello'}) + + def test_multikwarg_no_key(self): + options = core.Options( + arguments.MultiKeywordArgument('multi'), + ) + with SettingsOverride(DEBUG=True): + dummy_tokens = DummyTokens('value') + self.assertRaises(template.TemplateSyntaxError, + options.parse, dummy_parser, dummy_tokens) + with SettingsOverride(DEBUG=False): + dummy_tokens = DummyTokens('value') + self.assertRaises(template.TemplateSyntaxError, + options.parse, dummy_parser, dummy_tokens) + + def test_inclusion_tag_context_pollution(self): + """ + Check the `keep_render_context` and `push_pop_context` attributes on + InclusionTag work as advertised and prevent 'context pollution' + """ + class NoPushPop(helpers.InclusionTag): + template = 'inclusion.html' + + def get_context(self, context): + return context.update({'pollution': True}) + + class Standard(helpers.InclusionTag): + template = 'inclusion.html' + + def get_context(self, context): + return {'pollution': True} + + with TemplateTags(NoPushPop, Standard): + # push pop pollution + ctx1 = template.Context({'pollution': False}) + tpl1 = template.Template("{% no_push_pop %}") + tpl1.render(ctx1) + self.assertEqual(ctx1['pollution'], True) + ctx2 = template.Context({'pollution': False}) + tpl2 = template.Template("{% standard %}") + tpl2.render(ctx2) + self.assertEqual(ctx2['pollution'], False) + + def test_named_block(self): + class StartBlock(core.Tag): + options = core.Options( + arguments.Argument("myarg"), + blocks=[ + BlockDefinition("nodelist", + VariableBlockName("end_block %(value)s", + 'myarg'), + "end_block") + ] + ) + + def render_tag(self, context, myarg, nodelist): + return "nodelist:%s;myarg:%s" % (nodelist.render(context), + myarg) + + with TemplateTags(StartBlock): + ctx = template.Context() + tpl = template.Template( + "{% start_block 'hello' %}nodelist-content" + "{% end_block 'hello' %}" + ) + output = tpl.render(ctx) + expected_output = 'nodelist:nodelist-content;myarg:hello' + self.assertEqual(output, expected_output) + + ctx = template.Context({'hello': 'world'}) + tpl = template.Template( + "{% start_block hello %}nodelist-content{% end_block hello %}" + ) + output = tpl.render(ctx) + expected_output = 'nodelist:nodelist-content;myarg:world' + self.assertEqual(output, expected_output) + + def test_fail_named_block(self): + vbn = VariableBlockName('endblock %(value)s', 'myarg') + self.assertRaises(ImproperlyConfigured, core.Options, + blocks=[BlockDefinition('nodelist', vbn)]) + + def test_named_block_noresolve(self): + class StartBlock(core.Tag): + options = core.Options( + arguments.Argument("myarg", resolve=False), + blocks=[ + BlockDefinition("nodelist", + VariableBlockName("end_block %(value)s", + 'myarg'), + "end_block") + ] + ) + + def render_tag(self, context, myarg, nodelist): + return "nodelist:%s;myarg:%s" % (nodelist.render(context), + myarg) + + with TemplateTags(StartBlock): + ctx = template.Context() + tpl = template.Template( + "{% start_block 'hello' %}nodelist-content" + "{% end_block 'hello' %}" + ) + output = tpl.render(ctx) + expected_output = 'nodelist:nodelist-content;myarg:hello' + self.assertEqual(output, expected_output) + + def test_strict_string(self): + options = core.Options( + arguments.StringArgument('string', resolve=False), + ) + with SettingsOverride(DEBUG=False): + # test ok + dummy_tokens = DummyTokens('string') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertEqual( + kwargs['string'].resolve(dummy_context), 'string' + ) + # test warning + dummy_tokens = DummyTokens(1) + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + message = values.StrictStringValue.errors['clean'] % { + 'value': repr(1) + } + self.assertWarns( + exceptions.TemplateSyntaxWarning, + message, + kwargs['string'].resolve, + dummy_context + ) + with SettingsOverride(DEBUG=True): + # test exception + dummy_tokens = DummyTokens(1) + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + dummy_context = {} + self.assertRaises( + template.TemplateSyntaxError, + kwargs['string'].resolve, + dummy_context + ) + + def test_get_value_for_context(self): + message = 'exception handled' + + class MyException(Exception): + pass + + class SuppressException(helpers.AsTag): + options = core.Options( + arguments.Argument('name'), + 'as', + arguments.Argument('var', resolve=False, required=False), + ) + + def get_value(self, context, name): + raise MyException(name) + + def get_value_for_context(self, context, name): + try: + return self.get_value(context, name) + except MyException: + return message + + dummy_tokens_with_as = DummyTokens('name', 'as', 'var') + tag = SuppressException(DummyParser(), dummy_tokens_with_as) + context = {} + self.assertEqual(tag.render(context), '') + self.assertEqual(context['var'], message) + + dummy_tokens_no_as = DummyTokens('name') + tag = SuppressException(DummyParser(), dummy_tokens_no_as) + self.assertRaises(MyException, tag.render, {}) + + +class MultiBreakpointTests(TestCase): + def test_optional_firstonly(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + # check only using the first argument + dummy_tokens = DummyTokens('firstval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 2) + dummy_context = {} + self.assertEqual(kwargs['first'].resolve(dummy_context), 'firstval') + self.assertEqual(kwargs['second'].resolve(dummy_context), None) + + def test_optional_both(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + # check using both arguments and both breakpoints + dummy_tokens = DummyTokens('firstval', 'also', 'using', 'secondval') + kwargs, blocks = options.parse(dummy_parser, dummy_tokens) + self.assertEqual(blocks, {}) + self.assertEqual(len(kwargs), 2) + dummy_context = {} + self.assertEqual(kwargs['first'].resolve(dummy_context), 'firstval') + self.assertEqual(kwargs['second'].resolve(dummy_context), 'secondval') + + def test_partial_breakpoints(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + # check only using the first breakpoint + dummy_tokens = DummyTokens('firstval', 'also') + self.assertRaises( + exceptions.TrailingBreakpoint, + options.parse, dummy_parser, dummy_tokens + ) + + def test_partial_breakpoints_second(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + # check only using the second breakpoint + dummy_tokens = DummyTokens('firstval', 'using') + self.assertRaises( + exceptions.BreakpointExpected, + options.parse, dummy_parser, dummy_tokens + ) + + def test_partial_breakpoints_both(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + # check only using the first breakpoint + dummy_tokens = DummyTokens('firstval', 'also', 'secondval') + # should raise an exception + self.assertRaises( + exceptions.BreakpointExpected, + options.parse, dummy_parser, dummy_tokens + ) + + def test_partial_breakpoints_second_both(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + # check only using the second breakpoint + dummy_tokens = DummyTokens('firstval', 'using', 'secondval') + self.assertRaises( + exceptions.BreakpointExpected, + options.parse, dummy_parser, dummy_tokens + ) + + def test_partial_breakpoints_both_trailing(self): + options = core.Options( + arguments.Argument('first'), + 'also', + 'using', + arguments.Argument('second', required=False), + ) + dummy_tokens = DummyTokens('firstval', 'also', 'using') + self.assertRaises( + exceptions.TrailingBreakpoint, + options.parse, dummy_parser, dummy_tokens + ) + + def test_add_options(self): + options1 = core.Options( + arguments.Argument('first') + ) + options2 = core.Options( + arguments.Argument('second') + ) + combined = options1 + options2 + self.assertEqual(len(combined.options), 1, combined.options) + self.assertIn(None, combined.options) + self.assertEqual(len(combined.options[None]), 2, combined.options[None]) + self.assertEqual(combined.all_argument_names, ['first', 'second']) + self.assertEqual(len(combined.blocks), 0, combined.blocks) + + def test_add_options_blocks_first(self): + options1 = core.Options( + arguments.Argument('first'), + blocks=['a'] + ) + options2 = core.Options( + arguments.Argument('second'), + ) + combined = options1 + options2 + self.assertEqual(len(combined.blocks), 1, combined.blocks) + self.assertEqual(combined.blocks[0].alias, 'a') + self.assertEqual(combined.blocks[0].names, ('a', )) + + def test_add_options_blocks_second(self): + options1 = core.Options( + arguments.Argument('first'), + ) + options2 = core.Options( + arguments.Argument('second'), + blocks=['a'] + ) + combined = options1 + options2 + self.assertEqual(len(combined.blocks), 1, combined.blocks) + self.assertEqual(combined.blocks[0].alias, 'a') + self.assertEqual(combined.blocks[0].names, ('a', )) + + def test_add_options_blocks_both(self): + options1 = core.Options( + arguments.Argument('first'), + blocks=['a'], + ) + options2 = core.Options( + arguments.Argument('second'), + blocks=['a'] + ) + self.assertRaises( + ValueError, + operator.add, + options1, + options2, + ) + + def test_add_options_not_options(self): + options = core.Options( + arguments.Argument('first'), + ) + self.assertRaises( + TypeError, + operator.add, + options, + 1 + ) + + def test_add_options_custom_parser_same(self): + class CustomParser(parser.Parser): + def parse_blocks(self): + return + + options1 = core.Options( + parser_class=CustomParser, + ) + options2 = core.Options( + parser_class=CustomParser, + ) + combined = options1 + options2 + self.assertIs(combined.parser_class, CustomParser) + + def test_add_options_custom_parser_different(self): + class CustomParser(parser.Parser): + def parse_blocks(self): + return + + options1 = core.Options( + parser_class=CustomParser, + ) + options2 = core.Options( + parser_class=parser.Parser, + ) + self.assertRaises( + ValueError, + operator.add, + options1, + options2, + ) + + def test_repr(self): + options = core.Options( + arguments.Argument('first'), + 'breakpoint', + arguments.Flag('flag', true_values=['yes']), + blocks=['block'] + ) + self.assertEqual( + repr(options), + ',breakpoint,;block>' + ) + + def test_flatten_context(self): + context = Context({'foo': 'bar'}) + context.push() + context.update({'bar': 'baz'}) + context.push() + context.update({'foo': 'test'}) + flat = utils.flatten_context(context) + expected = { + 'foo': 'test', + 'bar': 'baz', + } + if DJANGO_1_5_OR_HIGHER: + expected.update({ + 'None': None, + 'True': True, + 'False': False, + }) + self.assertEqual(flat, expected) + context.flatten = None + flat = utils.flatten_context(context) + self.assertEqual(flat, expected) + flat = utils.flatten_context({'foo': 'test', 'bar': 'baz'}) + self.assertEqual(flat, {'foo': 'test', 'bar': 'baz'}) + + def test_flatten_requestcontext(self): + factory = RequestFactory() + request = factory.get('/') + expected = { + 'foo': 'test', + 'request': 'bar', + 'bar': 'baz', + } + if DJANGO_1_5_OR_HIGHER: + expected.update({ + 'None': None, + 'True': True, + 'False': False, + }) + + checked_keys = expected.keys() + + # Adding a requestcontext to a plain context + context = Context({'foo': 'bar'}) + context.push() + context.update({'bar': 'baz'}) + context.push() + rcontext = RequestContext(request, {}) + rcontext.update({'request': 'bar'}) + context.update(rcontext) + context.push() + context.update({'foo': 'test'}) + flat = utils.flatten_context(context) + self.assertEqual( + expected, dict(filter(lambda item: item[0] in checked_keys, flat.items())) + ) + + # Adding a plain context to a requestcontext + context = RequestContext(request, {}) + context.update({'request': 'bar'}) + normal_context = Context({'foo': 'bar'}) + context.push() + context.update({'bar': 'baz'}) + context.push() + context.update(normal_context) + context.push() + context.update({'foo': 'test'}) + flat = utils.flatten_context(context) + self.assertEqual( + expected, dict(filter(lambda item: item[0] in checked_keys, flat.items())) + ) + + # Adding a requestcontext to a requestcontext + context = RequestContext(request, {}) + context.update({'request': 'bar'}) + rcontext = RequestContext(request, {'foo': 'bar'}) + context.push() + context.update({'bar': 'baz'}) + context.push() + context.update(rcontext) + context.push() + context.update({'foo': 'test'}) + flat = utils.flatten_context(context) + self.assertEqual( + expected, dict(filter(lambda item: item[0] in checked_keys, flat.items())) + ) diff --git a/thesisenv/lib/python3.6/site-packages/classytags/utils.py b/thesisenv/lib/python3.6/site-packages/classytags/utils.py new file mode 100644 index 0000000..6b2a444 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/utils.py @@ -0,0 +1,109 @@ +import re +from copy import copy +from distutils.version import LooseVersion + +from classytags.compat import compat_basestring +from django import get_version +from django.template import Context, RequestContext +from django.template.context import BaseContext + +DJANGO_1_9_OR_HIGHER = ( + LooseVersion(get_version()) >= LooseVersion('1.9') +) + + +class NULL: + """ + Internal type to differentiate between None and No-Input + """ + + +class TemplateConstant(object): + """ + A 'constant' internal template variable which basically allows 'resolving' + returning it's initial value + """ + def __init__(self, value): + self.literal = value + if isinstance(value, compat_basestring): + self.value = value.strip('"\'') + else: + self.value = value + + def __repr__(self): # pragma: no cover + return '' % repr(self.value) + + def resolve(self, context): + return self.value + + +class StructuredOptions(object): + """ + Bootstrapped options + """ + def __init__(self, options, breakpoints, blocks, combind_breakpoints): + self.options = options + self.breakpoints = copy(breakpoints) + self.blocks = copy(blocks) + self.combined_breakpoints = dict(combind_breakpoints.items()) + self.reversed_combined_breakpoints = dict( + (v, k) for k, v in combind_breakpoints.items() + ) + self.current_breakpoint = None + if self.breakpoints: + self.next_breakpoint = self.breakpoints.pop(0) + else: + self.next_breakpoint = None + + def shift_breakpoint(self): + """ + Shift to the next breakpoint + """ + self.current_breakpoint = self.next_breakpoint + if self.breakpoints: + self.next_breakpoint = self.breakpoints.pop(0) + else: + self.next_breakpoint = None + + def get_arguments(self): + """ + Get the current arguments + """ + return copy(self.options[self.current_breakpoint]) + + +_re1 = re.compile('(.)([A-Z][a-z]+)') +_re2 = re.compile('([a-z0-9])([A-Z])') + + +def get_default_name(name): + """ + Turns "CamelCase" into "camel_case" + """ + return _re2.sub(r'\1_\2', _re1.sub(r'\1_\2', name)).lower() + + +def mixin(parent, child, attrs=None): + attrs = attrs or {} + return type( + '%sx%s' % (parent.__name__, child.__name__), + (child, parent), + attrs + ) + + +def flatten_context(context): + def do_flatten(context): + flat = {} + for d in context.dicts: + if isinstance(d, (Context, RequestContext)): + flat.update(do_flatten(d)) + else: + flat.update(d) + return flat + + if callable(getattr(context, 'flatten', None)) and DJANGO_1_9_OR_HIGHER: + return context.flatten() + elif isinstance(context, BaseContext): + return do_flatten(context) + return context diff --git a/thesisenv/lib/python3.6/site-packages/classytags/values.py b/thesisenv/lib/python3.6/site-packages/classytags/values.py new file mode 100644 index 0000000..df55d76 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/classytags/values.py @@ -0,0 +1,110 @@ +import warnings + +from django import template +from django.conf import settings + +from classytags.compat import compat_basestring +from classytags.exceptions import TemplateSyntaxWarning + + +class StringValue(object): + errors = {} + value_on_error = "" + + def __init__(self, var): + self.var = var + try: + # django.template.base.Variable + self.literal = self.var.literal + except AttributeError: + # django.template.base.FilterExpression + self.literal = self.var.token + + def resolve(self, context): + resolved = self.var.resolve(context) + return self.clean(resolved) + + def clean(self, value): + return value + + def error(self, value, category): + data = self.get_extra_error_data() + data['value'] = repr(value) + message = self.errors.get(category, "") % data + if settings.DEBUG: + raise template.TemplateSyntaxError(message) + else: + warnings.warn(message, TemplateSyntaxWarning) + return self.value_on_error + + def get_extra_error_data(self): + return {} + + +class StrictStringValue(StringValue): + errors = { + "clean": "%(value)s is not a string", + } + value_on_error = "" + + def clean(self, value): + if not isinstance(value, compat_basestring): + return self.error(value, "clean") + return value + + +class IntegerValue(StringValue): + errors = { + "clean": "%(value)s could not be converted to Integer", + } + value_on_error = 0 + + def clean(self, value): + try: + return int(value) + except ValueError: + return self.error(value, "clean") + + +class ListValue(list, StringValue): + """ + A list of template variables for easy resolving + """ + def __init__(self, value): + list.__init__(self) + self.append(value) + + def resolve(self, context): + resolved = [item.resolve(context) for item in self] + return self.clean(resolved) + + +class DictValue(dict, StringValue): + def __init__(self, value): + dict.__init__(self, value) + + def resolve(self, context): + resolved = dict( + [(key, value.resolve(context)) for key, value in self.items()] + ) + return self.clean(resolved) + + +class ChoiceValue(StringValue): + errors = { + "choice": "%(value)s is not a valid choice. Valid choices: " + "%(choices)s.", + } + choices = [] + + def clean(self, value): + cleaned = super(ChoiceValue, self).clean(value) + if cleaned in self.choices: + return cleaned + else: + return self.error(cleaned, "choice") + + def get_extra_error_data(self): + data = super(ChoiceValue, self).get_extra_error_data() + data['choices'] = self.choices + return data diff --git a/thesisenv/lib/python3.6/site-packages/django/__init__.py b/thesisenv/lib/python3.6/site-packages/django/__init__.py index 89a2893..55aef9d 100644 --- a/thesisenv/lib/python3.6/site-packages/django/__init__.py +++ b/thesisenv/lib/python3.6/site-packages/django/__init__.py @@ -1,6 +1,6 @@ from django.utils.version import get_version -VERSION = (2, 0, 6, 'final', 0) +VERSION = (2, 1, 0, 'final', 0) __version__ = get_version(VERSION) diff --git a/thesisenv/lib/python3.6/site-packages/django/apps/registry.py b/thesisenv/lib/python3.6/site-packages/django/apps/registry.py index f522550..e01352b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/apps/registry.py +++ b/thesisenv/lib/python3.6/site-packages/django/apps/registry.py @@ -124,6 +124,11 @@ class Apps: def check_apps_ready(self): """Raise an exception if all apps haven't been imported yet.""" if not self.apps_ready: + from django.conf import settings + # If "not ready" is due to unconfigured settings, accessing + # INSTALLED_APPS raises a more helpful ImproperlyConfigured + # exception. + settings.INSTALLED_APPS raise AppRegistryNotReady("Apps aren't loaded yet.") def check_models_ready(self): diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/__init__.py b/thesisenv/lib/python3.6/site-packages/django/conf/__init__.py index 9e4b0a4..05c6037 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/__init__.py +++ b/thesisenv/lib/python3.6/site-packages/django/conf/__init__.py @@ -10,6 +10,7 @@ import importlib import os import time import warnings +from pathlib import Path from django.conf import global_settings from django.core.exceptions import ImproperlyConfigured @@ -130,9 +131,9 @@ class Settings: if hasattr(time, 'tzset') and self.TIME_ZONE: # When we can, attempt to validate the timezone. If we can't find # this file, no check happens and it's harmless. - zoneinfo_root = '/usr/share/zoneinfo' - if (os.path.exists(zoneinfo_root) and not - os.path.exists(os.path.join(zoneinfo_root, *(self.TIME_ZONE.split('/'))))): + zoneinfo_root = Path('/usr/share/zoneinfo') + zone_info_file = zoneinfo_root.joinpath(*self.TIME_ZONE.split('/')) + if zoneinfo_root.exists() and not zone_info_file.exists(): raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE) # Move the time zone info into os.environ. See ticket #2315 for why # we don't do this unconditionally (breaks Windows). diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/global_settings.py b/thesisenv/lib/python3.6/site-packages/django/conf/global_settings.py index 9f1bc8d..befade1 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/global_settings.py +++ b/thesisenv/lib/python3.6/site-packages/django/conf/global_settings.py @@ -21,11 +21,6 @@ DEBUG = False # on a live site. DEBUG_PROPAGATE_EXCEPTIONS = False -# Whether to use the "ETag" header. This saves bandwidth but slows down performance. -# Deprecated (RemovedInDjango21Warning) in favor of ConditionalGetMiddleware -# which sets the ETag regardless of this setting. -USE_ETAGS = False - # People who get code error notifications. # In the format [('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com')] ADMINS = [] @@ -466,6 +461,9 @@ SESSION_COOKIE_SECURE = False SESSION_COOKIE_PATH = '/' # Whether to use the non-RFC standard httpOnly flag (IE, FF3+, others) SESSION_COOKIE_HTTPONLY = True +# Whether to set the flag restricting cookie leaks on cross-site requests. +# This can be 'Lax', 'Strict', or None to disable the flag. +SESSION_COOKIE_SAMESITE = 'Lax' # Whether to save the session data on every request. SESSION_SAVE_EVERY_REQUEST = False # Whether a user's session cookie expires when the Web browser is closed. @@ -517,7 +515,6 @@ PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.Argon2PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', - 'django.contrib.auth.hashers.BCryptPasswordHasher', ] AUTH_PASSWORD_VALIDATORS = [] @@ -543,6 +540,7 @@ CSRF_COOKIE_DOMAIN = None CSRF_COOKIE_PATH = '/' CSRF_COOKIE_SECURE = False CSRF_COOKIE_HTTPONLY = False +CSRF_COOKIE_SAMESITE = 'Lax' CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN' CSRF_TRUSTED_ORIGINS = [] CSRF_USE_SESSIONS = False diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo index 9f7fd2b..5d42c5a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.po index 313c304..0b5f974 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/az/LC_MESSAGES/django.po @@ -1,14 +1,15 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Emin Mastizada , 2018 # Emin Mastizada , 2015-2016 # Metin Amiroff , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 00:21+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Azerbaijani (http://www.transifex.com/django/django/language/" "az/)\n" @@ -159,6 +160,9 @@ msgstr "Yaponca" msgid "Georgian" msgstr "Gürcücə" +msgid "Kabyle" +msgstr "Kabile" + msgid "Kazakh" msgstr "Qazax" @@ -295,13 +299,13 @@ msgid "Syndication" msgstr "Sindikasiya" msgid "That page number is not an integer" -msgstr "" +msgstr "Səhifə nömrəsi rəqəm deyil" msgid "That page number is less than 1" -msgstr "" +msgstr "Səhifə nömrəsi 1-dən balacadır" msgid "That page contains no results" -msgstr "" +msgstr "Səhifədə nəticə yoxdur" msgid "Enter a valid value." msgstr "Düzgün qiymət daxil edin." @@ -383,6 +387,9 @@ msgstr[1] "" "Bu dəyərin ən çox %(limit_value)d simvol olduğuna əmin olun (%(show_value)d " "var)" +msgid "Enter a number." +msgstr "Ədəd daxil edin." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -408,9 +415,11 @@ msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" +"'%(extension)s' fayl uzantısına icazə verilmir. İcazə verilən fayl " +"uzantıları: '%(allowed_extensions)s'" msgid "Null characters are not allowed." -msgstr "" +msgstr "Null simvollara icazə verilmir." msgid "and" msgstr "və" @@ -460,6 +469,10 @@ msgstr "Böyük (8 bayt) tam ədəd" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' dəyəri True və ya False olmalıdır." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Bul (ya Doğru, ya Yalan)" @@ -475,15 +488,14 @@ msgid "" "'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD " "format." msgstr "" -"'%(value)s' dəyəri səhv tarix formatındadır. Bu İİİİ-AA-GG formatında " -"olmalıdır." +"'%(value)s' dəyəri səhv tarix formatındadır. Formatı YYYY-MM-DD olmalıdır." #, python-format msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid " "date." msgstr "" -"'%(value)s dəyəri düzgün formatdadır (İİİİ-AA-GG) amma bu xətalı tarixdir." +"'%(value)s dəyəri düzgün formatdadır (YYYY-MM-DD) amma bu xətalı tarixdir." msgid "Date (without time)" msgstr "Tarix (saatsız)" @@ -493,19 +505,23 @@ msgid "" "'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." "uuuuuu]][TZ] format." msgstr "" +"'%(value)s' dəyərinin formatı səhvdir. Formatı YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ] olmalıdır." #, python-format msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" "[TZ]) but it is an invalid date/time." msgstr "" +"'%(value)s' dəyərinin formatı düzgündür (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) " +"ancaq tarix səhvdir." msgid "Date (with time)" msgstr "Tarix (vaxt ilə)" #, python-format msgid "'%(value)s' value must be a decimal number." -msgstr "" +msgstr "'%(value)s' dəyəri decimal rəqəm olmalıdır." msgid "Decimal number" msgstr "Rasional ədəd" @@ -515,6 +531,8 @@ msgid "" "'%(value)s' value has an invalid format. It must be in [DD] [HH:[MM:]]ss[." "uuuuuu] format." msgstr "" +"'%(value)s' dəyərinin formatı səhvdir. Formatı [DD] [HH:[MM:]]ss[.uuuuuu] " +"olmalıdır." msgid "Duration" msgstr "Müddət" @@ -527,7 +545,7 @@ msgstr "Faylın ünvanı" #, python-format msgid "'%(value)s' value must be a float." -msgstr "" +msgstr "'%(value)s' dəyəri float olmalıdır." msgid "Floating point number" msgstr "Sürüşən vergüllü ədəd" @@ -540,7 +558,7 @@ msgstr "IP ünvan" #, python-format msgid "'%(value)s' value must be either None, True or False." -msgstr "" +msgstr "'%(value)s' dəyəri None, True və ya False olmalıdır." msgid "Boolean (Either True, False or None)" msgstr "Bul (Ya Doğru, ya Yalan, ya da Heç nə)" @@ -566,12 +584,15 @@ msgid "" "'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " "format." msgstr "" +"'%(value)s' dəyərinin formatı səhvdir. Formatı HH:MM[:ss[.uuuuuu]] olmalıdır." #, python-format msgid "" "'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " "invalid time." msgstr "" +"'%(value)s' dəyəri düzgün formatdadır (HH:MM[:ss[.uuuuuu]]), ancaq vaxtı " +"səhvdir." msgid "Time" msgstr "Vaxt" @@ -580,7 +601,7 @@ msgid "URL" msgstr "URL" msgid "Raw binary data" -msgstr "" +msgstr "Düz ikili (binary) məlumat" #, python-format msgid "'%(value)s' is not a valid UUID." @@ -594,7 +615,7 @@ msgstr "Şəkil" #, python-format msgid "%(model)s instance with %(field)s %(value)r does not exist." -msgstr "" +msgstr "%(field)s dəyəri %(value)r olan %(model)s mövcud deyil." msgid "Foreign Key (type determined by related field)" msgstr "Xarici açar (bağlı olduğu sahəyə uyğun tipi alır)" @@ -604,11 +625,11 @@ msgstr "Birin-birə münasibət" #, python-format msgid "%(from)s-%(to)s relationship" -msgstr "" +msgstr "%(from)s-%(to)s əlaqəsi" #, python-format msgid "%(from)s-%(to)s relationships" -msgstr "" +msgstr "%(from)s-%(to)s əlaqələri" msgid "Many-to-many relationship" msgstr "Çoxun-çoxa münasibət" @@ -625,9 +646,6 @@ msgstr "Bu sahə vacibdir." msgid "Enter a whole number." msgstr "Tam ədəd daxil edin." -msgid "Enter a number." -msgstr "Ədəd daxil edin." - msgid "Enter a valid date." msgstr "Düzgün tarix daxil edin." @@ -640,6 +658,10 @@ msgstr "Düzgün tarix/vaxt daxil edin." msgid "Enter a valid duration." msgstr "Keçərli müddət daxil edin." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "Fayl göndərilməyib. Vərəqənin (\"form\") şifrələmə tipini yoxlayın." @@ -654,7 +676,9 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" +"Bu fayl adının ən çox %(max)d simvol olduğuna əmin olun (%(length)d var)." msgstr[1] "" +"Bu fayl adının ən çox %(max)d simvol olduğuna əmin olun (%(length)d var)." msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" @@ -689,7 +713,7 @@ msgid "(Hidden field %(name)s) %(error)s" msgstr "(Gizli %(name)s sahəsi) %(error)s" msgid "ManagementForm data is missing or has been tampered with" -msgstr "" +msgstr "ManagementForm məlumatları əksikdir və ya korlanıb" #, python-format msgid "Please submit %d or fewer forms." @@ -731,14 +755,14 @@ msgid "Please correct the duplicate values below." msgstr "Aşağıda təkrarlanan qiymətlərə düzəliş edin." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "Sətiriçi dəyər ana nüsxəyə uyğun deyil." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Düzgün seçim edin. Bu seçim mümkün deyil." #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "\"%(pk)s\" düzgün dəyər deyil." #, python-format msgid "" @@ -1089,12 +1113,18 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" +"Bu HTTPS sayt səyyahınız tərəfindən 'Referer header' göndərilməsini tələb " +"edir, amma göndərilmir. Bu başlıq səyyahınızın üçüncü biri tərəfindən hack-" +"lənmədiyinə əmin olmaq üçün istifadə edilir." msgid "" "If you have configured your browser to disable 'Referer' headers, please re-" "enable them, at least for this site, or for HTTPS connections, or for 'same-" "origin' requests." msgstr "" +"Əgər səyyahınızın 'Referer' başlığını göndərməsini söndürmüsünüzsə, lütfən " +"bu sayt üçün, HTTPS əlaqələr üçün və ya 'same-origin' sorğular üçün aktiv " +"edin." msgid "" "If you are using the tag or " @@ -1103,17 +1133,27 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Əgər etiketini və ya " +"'Referrer-Policy: no-referrer' başlığını işlədirsinizsə, lütfən silin. CSRF " +"qoruma dəqiq yönləndirən yoxlaması üçün 'Referer' başlığını tələb edir. Əgər " +"məxfilik üçün düşünürsünüzsə, üçüncü tərəf sayt keçidləri üçün kimi bir alternativ işlədin." msgid "" "You are seeing this message because this site requires a CSRF cookie when " "submitting forms. This cookie is required for security reasons, to ensure " "that your browser is not being hijacked by third parties." msgstr "" +"Bu sayt formaları göndərmək üçün CSRF çərəzini işlədir. Bu çərəz " +"səyyahınızın üçüncü biri tərəfindən hack-lənmədiyinə əmin olmaq üçün " +"istifadə edilir. " msgid "" "If you have configured your browser to disable cookies, please re-enable " "them, at least for this site, or for 'same-origin' requests." msgstr "" +"Əgər səyyahınızda çərəzlər söndürülübsə, lütfən bu sayt və ya 'same-origin' " +"sorğular üçün aktiv edin." msgid "More information is available with DEBUG=True." msgstr "Daha ətraflı məlumat DEBUG=True ilə mövcuddur." @@ -1122,7 +1162,7 @@ msgid "No year specified" msgstr "İl göstərilməyib" msgid "Date out of range" -msgstr "" +msgstr "Tarix aralığın xaricindədir" msgid "No month specified" msgstr "Ay göstərilməyib" @@ -1176,16 +1216,19 @@ msgid "Index of %(directory)s" msgstr "%(directory)s-nin indeksi" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Django: tələsən mükəmməlləkçilər üçün Web framework." #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"Django %(version)s üçün buraxılış " +"qeydlərinə baxın" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "Quruluş uğurla tamamlandı! Təbriklər!" #, python-format msgid "" @@ -1194,21 +1237,24 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Tənzimləmə faylınızda DEBUG=True və heç bir URL qurmadığınız üçün bu səhifəni görürsünüz." msgid "Django Documentation" -msgstr "" +msgstr "Django Sənədləri" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Mövzular, istinadlar və nümunələr" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "Məşğələ: Səsvermə Tətbiqi" msgid "Get started with Django" -msgstr "" +msgstr "Django-ya başla" msgid "Django Community" -msgstr "" +msgstr "Django İcması" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "Qoşul, kömək al və dəstək ol" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo index 1949ece..784bf33 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po index a2348f5..8bf8bc6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po @@ -11,15 +11,16 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-06 20:09+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-15 18:02+0000\n" "Last-Translator: Vláďa Macek \n" "Language-Team: Czech (http://www.transifex.com/django/django/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " +"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" msgid "Afrikaans" msgstr "afrikánsky" @@ -28,7 +29,7 @@ msgid "Arabic" msgstr "arabsky" msgid "Asturian" -msgstr "Asturian" +msgstr "asturštinou" msgid "Azerbaijani" msgstr "ázerbájdžánštinou" @@ -160,7 +161,7 @@ msgid "Japanese" msgstr "japonsky" msgid "Georgian" -msgstr "gruzínsky" +msgstr "gruzínštinou" msgid "Kabyle" msgstr "kabylštinou" @@ -372,6 +373,8 @@ msgstr[1] "" "Tato hodnota má mít nejméně %(limit_value)d znaky (nyní má %(show_value)d)." msgstr[2] "" "Tato hodnota má mít nejméně %(limit_value)d znaků (nyní má %(show_value)d)." +msgstr[3] "" +"Tato hodnota má mít nejméně %(limit_value)d znaků (nyní má %(show_value)d)." #, python-format msgid "" @@ -386,6 +389,11 @@ msgstr[1] "" "Tato hodnota má mít nejvýše %(limit_value)d znaky (nyní má %(show_value)d)." msgstr[2] "" "Tato hodnota má mít nejvýše %(limit_value)d znaků (nyní má %(show_value)d)." +msgstr[3] "" +"Tato hodnota má mít nejvýše %(limit_value)d znaků (nyní má %(show_value)d)." + +msgid "Enter a number." +msgstr "Zadejte číslo." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." @@ -393,6 +401,7 @@ msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslici." msgstr[1] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslice." msgstr[2] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslic." +msgstr[3] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslic." #, python-format msgid "Ensure that there are no more than %(max)s decimal place." @@ -400,6 +409,7 @@ msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "Ujistěte se, že pole neobsahuje více než %(max)s desetinné místo." msgstr[1] "Ujistěte se, že pole neobsahuje více než %(max)s desetinná místa." msgstr[2] "Ujistěte se, že pole neobsahuje více než %(max)s desetinných míst." +msgstr[3] "Ujistěte se, že pole neobsahuje více než %(max)s desetinných míst." #, python-format msgid "" @@ -415,6 +425,9 @@ msgstr[1] "" msgstr[2] "" "Ujistěte se, že hodnota neobsahuje více než %(max)s míst před desetinnou " "čárkou (tečkou)." +msgstr[3] "" +"Ujistěte se, že hodnota neobsahuje více než %(max)s míst před desetinnou " +"čárkou (tečkou)." #, python-format msgid "" @@ -478,6 +491,10 @@ msgstr "Velké číslo (8 bajtů)" msgid "'%(value)s' value must be either True or False." msgstr "Hodnota '%(value)s' musí být buď True nebo False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Hodnota '%(value)s' musí být buď True, False nebo None." + msgid "Boolean (Either True or False)" msgstr "Pravdivost (buď Ano (True), nebo Ne (False))" @@ -652,9 +669,6 @@ msgstr "Toto pole je třeba vyplnit." msgid "Enter a whole number." msgstr "Zadejte celé číslo." -msgid "Enter a number." -msgstr "Zadejte číslo." - msgid "Enter a valid date." msgstr "Zadejte platné datum." @@ -667,6 +681,10 @@ msgstr "Zadejte platné datum a čas." msgid "Enter a valid duration." msgstr "Zadejte platnou délku trvání." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Počet dní musí být mezi {min_days} a {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Soubor nebyl odeslán. Zkontrolujte parametr \"encoding type\" formuláře." @@ -687,6 +705,8 @@ msgstr[1] "" "Tento název souboru má mít nejvýše %(max)d znaky (nyní má %(length)d)." msgstr[2] "" "Tento název souboru má mít nejvýše %(max)d znaků (nyní má %(length)d)." +msgstr[3] "" +"Tento název souboru má mít nejvýše %(max)d znaků (nyní má %(length)d)." msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Musíte vybrat cestu k souboru nebo vymazat výběr, ne obojí." @@ -727,6 +747,7 @@ msgid_plural "Please submit %d or fewer forms." msgstr[0] "Odešlete %d nebo méně formulářů." msgstr[1] "Odešlete %d nebo méně formulářů." msgstr[2] "Odešlete %d nebo méně formulářů." +msgstr[3] "Odešlete %d nebo méně formulářů." #, python-format msgid "Please submit %d or more forms." @@ -734,6 +755,7 @@ msgid_plural "Please submit %d or more forms." msgstr[0] "Odešlete %d nebo více formulářů." msgstr[1] "Odešlete %d nebo více formulářů." msgstr[2] "Odešlete %d nebo více formulářů." +msgstr[3] "Odešlete %d nebo více formulářů." msgid "Order" msgstr "Pořadí" @@ -805,6 +827,7 @@ msgid_plural "%(size)d bytes" msgstr[0] "%(size)d bajt" msgstr[1] "%(size)d bajty" msgstr[2] "%(size)d bajtů" +msgstr[3] "%(size)d bajtů" #, python-format msgid "%s KB" @@ -1075,6 +1098,7 @@ msgid_plural "%d years" msgstr[0] "%d rok" msgstr[1] "%d roky" msgstr[2] "%d let" +msgstr[3] "%d let" #, python-format msgid "%d month" @@ -1082,6 +1106,7 @@ msgid_plural "%d months" msgstr[0] "%d měsíc" msgstr[1] "%d měsíce" msgstr[2] "%d měsíců" +msgstr[3] "%d měsíců" #, python-format msgid "%d week" @@ -1089,6 +1114,7 @@ msgid_plural "%d weeks" msgstr[0] "%d týden" msgstr[1] "%d týdny" msgstr[2] "%d týdnů" +msgstr[3] "%d týdnů" #, python-format msgid "%d day" @@ -1096,6 +1122,7 @@ msgid_plural "%d days" msgstr[0] "%d den" msgstr[1] "%d dny" msgstr[2] "%d dní" +msgstr[3] "%d dní" #, python-format msgid "%d hour" @@ -1103,6 +1130,7 @@ msgid_plural "%d hours" msgstr[0] "%d hodina" msgstr[1] "%d hodiny" msgstr[2] "%d hodin" +msgstr[3] "%d hodin" #, python-format msgid "%d minute" @@ -1110,6 +1138,7 @@ msgid_plural "%d minutes" msgstr[0] "%d minuta" msgstr[1] "%d minuty" msgstr[2] "%d minut" +msgstr[3] "%d minut" msgid "0 minutes" msgstr "0 minut" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo index 68467b6..0f4189e 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.po index c4107c2..51d970d 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/da/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Christian Joergensen , 2012 # Danni Randeris , 2014 -# Erik Wognsen , 2013-2017 +# Erik Wognsen , 2013-2018 # Finn Gruwier Larsen, 2011 # Jannis Leidel , 2011 # jonaskoelker , 2012 @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-02 11:14+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 20:46+0000\n" "Last-Translator: Erik Wognsen \n" "Language-Team: Danish (http://www.transifex.com/django/django/language/da/)\n" "MIME-Version: 1.0\n" @@ -385,6 +385,9 @@ msgstr[0] "" msgstr[1] "" "Denne værdi må højst have %(limit_value)d tegn (den har %(show_value)d)." +msgid "Enter a number." +msgstr "Indtast et tal." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -463,6 +466,10 @@ msgstr "Stort heltal (8 byte)" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s'-værdien skal være enten True eller False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' værdien skal være enten True, False eller None." + msgid "Boolean (Either True or False)" msgstr "Boolsk (enten True eller False)" @@ -639,9 +646,6 @@ msgstr "Dette felt er påkrævet." msgid "Enter a whole number." msgstr "Indtast et heltal." -msgid "Enter a number." -msgstr "Indtast et tal." - msgid "Enter a valid date." msgstr "Indtast en gyldig dato." @@ -654,6 +658,10 @@ msgstr "Indtast gyldig dato/tid." msgid "Enter a valid duration." msgstr "Indtast en gyldig varighed." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Antallet af dage skal være mellem {min_days} og {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Ingen fil blev indsendt. Kontroller kodningstypen i formularen." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo index a51de63..e90c930 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.po index 38f5921..2739327 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/de/LC_MESSAGES/django.po @@ -4,16 +4,17 @@ # André Hagenbruch, 2011-2012 # Florian Apolloner , 2011 # Daniel Roschka , 2016 -# Jannis, 2011,2013 -# Jannis Leidel , 2013-2017 -# Jannis, 2016 +# Florian Apolloner , 2018 +# Jannis Vajen, 2011,2013 +# Jannis Leidel , 2013-2018 +# Jannis Vajen, 2016 # Markus Holtermann , 2013,2015 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-27 16:21+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 00:21+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: German (http://www.transifex.com/django/django/language/de/)\n" "MIME-Version: 1.0\n" @@ -163,6 +164,9 @@ msgstr "Japanisch" msgid "Georgian" msgstr "Georgisch" +msgid "Kabyle" +msgstr "Kabylisch" + msgid "Kazakh" msgstr "Kasachisch" @@ -349,7 +353,7 @@ msgstr "Bitte nur durch Komma getrennte Ziffern eingeben." msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." msgstr "" "Bitte sicherstellen, dass der Wert %(limit_value)s ist. (Er ist " -"%(show_value)s)" +"%(show_value)s.)" #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." @@ -368,10 +372,10 @@ msgid_plural "" "%(show_value)d)." msgstr[0] "" "Bitte sicherstellen, dass der Wert aus mindestens %(limit_value)d Zeichen " -"besteht. (Er besteht aus %(show_value)d Zeichen)." +"besteht. (Er besteht aus %(show_value)d Zeichen.)" msgstr[1] "" "Bitte sicherstellen, dass der Wert aus mindestens %(limit_value)d Zeichen " -"besteht. (Er besteht aus %(show_value)d Zeichen)." +"besteht. (Er besteht aus %(show_value)d Zeichen.)" #, python-format msgid "" @@ -382,10 +386,13 @@ msgid_plural "" "%(show_value)d)." msgstr[0] "" "Bitte sicherstellen, dass der Wert aus höchstens %(limit_value)d Zeichen " -"besteht. (Er besteht aus %(show_value)d Zeichen)." +"besteht. (Er besteht aus %(show_value)d Zeichen.)" msgstr[1] "" "Bitte sicherstellen, dass der Wert aus höchstens %(limit_value)d Zeichen " -"besteht. (Er besteht aus %(show_value)d Zeichen)." +"besteht. (Er besteht aus %(show_value)d Zeichen.)" + +msgid "Enter a number." +msgstr "Bitte eine Zahl eingeben." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." @@ -420,7 +427,7 @@ msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" -"Dateiendung „%(extension)s“ ist nicht erlaubt. Erlaubte Dateiendungen: sind: " +"Dateiendung „%(extension)s“ ist nicht erlaubt. Erlaubte Dateiendungen sind: " "„%(allowed_extensions)s“." msgid "Null characters are not allowed." @@ -473,6 +480,10 @@ msgstr "Große Ganzzahl (8 Byte)" msgid "'%(value)s' value must be either True or False." msgstr "„%(value)s“ Wert muss entweder True oder False sein." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Boolescher Wert (True oder False)" @@ -648,9 +659,6 @@ msgstr "Dieses Feld ist zwingend erforderlich." msgid "Enter a whole number." msgstr "Bitte eine ganze Zahl eingeben." -msgid "Enter a number." -msgstr "Bitte eine Zahl eingeben." - msgid "Enter a valid date." msgstr "Bitte ein gültiges Datum eingeben." @@ -663,6 +671,10 @@ msgstr "Bitte ein gültiges Datum und Uhrzeit eingeben." msgid "Enter a valid duration." msgstr "Bitte eine gültige Zeitspanne eingeben." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Es wurde keine Datei übertragen. Überprüfen Sie das Encoding des Formulars." @@ -679,10 +691,10 @@ msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" "Bitte sicherstellen, dass der Dateiname aus höchstens %(max)d Zeichen " -"besteht. (Er besteht aus %(length)d Zeichen)." +"besteht. (Er besteht aus %(length)d Zeichen.)" msgstr[1] "" "Bitte sicherstellen, dass der Dateiname aus höchstens %(max)d Zeichen " -"besteht. (Er besteht aus %(length)d Zeichen)." +"besteht. (Er besteht aus %(length)d Zeichen.)" msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.mo index 8d0abbc..34cf9c5 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.po index 4516b8f..e3e3438 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/dsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2017 +# Michael Wolf , 2016-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-09 18:46+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-26 10:19+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Lower Sorbian (http://www.transifex.com/django/django/" "language/dsb/)\n" @@ -398,6 +398,9 @@ msgstr[3] "" "Zawěććo, až toś ta gódnota ma maksimalnje %(limit_value)d znamuškow (ma " "%(show_value)d)." +msgid "Enter a number." +msgstr "Zapódajśo licbu." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -482,6 +485,10 @@ msgstr "Big (8 bajtow) integer" msgid "'%(value)s' value must be either True or False." msgstr "Gódnota '%(value)s musy pak True pak False byś." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Gódnota '%(value)s' musy pak True, False pak None byś." + msgid "Boolean (Either True or False)" msgstr "Boolean (pak True pak False)" @@ -657,9 +664,6 @@ msgstr "Toś to pólo jo trěbne." msgid "Enter a whole number." msgstr "Zapódajśo cełu licbu." -msgid "Enter a number." -msgstr "Zapódajśo licbu." - msgid "Enter a valid date." msgstr "Zapódajśo płaśiwy datum." @@ -672,6 +676,10 @@ msgstr "Zapódajśo płaśiwy datum/cas." msgid "Enter a valid duration." msgstr "Zapódaśe płaśiwe traśe." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Licba dnjow musy mjazy {min_days} a {max_days} byś." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Dataja njejo se wótpósłała. Pśeglědujśo koděrowański typ na formularje. " diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/en/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/en/LC_MESSAGES/django.po index 5fa7e05..73acc78 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/en/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/en/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" "PO-Revision-Date: 2010-05-13 15:35+0200\n" "Last-Translator: Django team\n" "Language-Team: English \n" @@ -14,359 +14,359 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: conf/global_settings.py:57 +#: conf/global_settings.py:52 msgid "Afrikaans" msgstr "" -#: conf/global_settings.py:58 +#: conf/global_settings.py:53 msgid "Arabic" msgstr "" -#: conf/global_settings.py:59 +#: conf/global_settings.py:54 msgid "Asturian" msgstr "" -#: conf/global_settings.py:60 +#: conf/global_settings.py:55 msgid "Azerbaijani" msgstr "" -#: conf/global_settings.py:61 +#: conf/global_settings.py:56 msgid "Bulgarian" msgstr "" -#: conf/global_settings.py:62 +#: conf/global_settings.py:57 msgid "Belarusian" msgstr "" -#: conf/global_settings.py:63 +#: conf/global_settings.py:58 msgid "Bengali" msgstr "" -#: conf/global_settings.py:64 +#: conf/global_settings.py:59 msgid "Breton" msgstr "" -#: conf/global_settings.py:65 +#: conf/global_settings.py:60 msgid "Bosnian" msgstr "" -#: conf/global_settings.py:66 +#: conf/global_settings.py:61 msgid "Catalan" msgstr "" -#: conf/global_settings.py:67 +#: conf/global_settings.py:62 msgid "Czech" msgstr "" -#: conf/global_settings.py:68 +#: conf/global_settings.py:63 msgid "Welsh" msgstr "" -#: conf/global_settings.py:69 +#: conf/global_settings.py:64 msgid "Danish" msgstr "" -#: conf/global_settings.py:70 +#: conf/global_settings.py:65 msgid "German" msgstr "" -#: conf/global_settings.py:71 +#: conf/global_settings.py:66 msgid "Lower Sorbian" msgstr "" -#: conf/global_settings.py:72 +#: conf/global_settings.py:67 msgid "Greek" msgstr "" -#: conf/global_settings.py:73 +#: conf/global_settings.py:68 msgid "English" msgstr "" -#: conf/global_settings.py:74 +#: conf/global_settings.py:69 msgid "Australian English" msgstr "" -#: conf/global_settings.py:75 +#: conf/global_settings.py:70 msgid "British English" msgstr "" -#: conf/global_settings.py:76 +#: conf/global_settings.py:71 msgid "Esperanto" msgstr "" -#: conf/global_settings.py:77 +#: conf/global_settings.py:72 msgid "Spanish" msgstr "" -#: conf/global_settings.py:78 +#: conf/global_settings.py:73 msgid "Argentinian Spanish" msgstr "" -#: conf/global_settings.py:79 +#: conf/global_settings.py:74 msgid "Colombian Spanish" msgstr "" -#: conf/global_settings.py:80 +#: conf/global_settings.py:75 msgid "Mexican Spanish" msgstr "" -#: conf/global_settings.py:81 +#: conf/global_settings.py:76 msgid "Nicaraguan Spanish" msgstr "" -#: conf/global_settings.py:82 +#: conf/global_settings.py:77 msgid "Venezuelan Spanish" msgstr "" -#: conf/global_settings.py:83 +#: conf/global_settings.py:78 msgid "Estonian" msgstr "" -#: conf/global_settings.py:84 +#: conf/global_settings.py:79 msgid "Basque" msgstr "" -#: conf/global_settings.py:85 +#: conf/global_settings.py:80 msgid "Persian" msgstr "" -#: conf/global_settings.py:86 +#: conf/global_settings.py:81 msgid "Finnish" msgstr "" -#: conf/global_settings.py:87 +#: conf/global_settings.py:82 msgid "French" msgstr "" -#: conf/global_settings.py:88 +#: conf/global_settings.py:83 msgid "Frisian" msgstr "" -#: conf/global_settings.py:89 +#: conf/global_settings.py:84 msgid "Irish" msgstr "" -#: conf/global_settings.py:90 +#: conf/global_settings.py:85 msgid "Scottish Gaelic" msgstr "" -#: conf/global_settings.py:91 +#: conf/global_settings.py:86 msgid "Galician" msgstr "" -#: conf/global_settings.py:92 +#: conf/global_settings.py:87 msgid "Hebrew" msgstr "" -#: conf/global_settings.py:93 +#: conf/global_settings.py:88 msgid "Hindi" msgstr "" -#: conf/global_settings.py:94 +#: conf/global_settings.py:89 msgid "Croatian" msgstr "" -#: conf/global_settings.py:95 +#: conf/global_settings.py:90 msgid "Upper Sorbian" msgstr "" -#: conf/global_settings.py:96 +#: conf/global_settings.py:91 msgid "Hungarian" msgstr "" -#: conf/global_settings.py:97 +#: conf/global_settings.py:92 msgid "Interlingua" msgstr "" -#: conf/global_settings.py:98 +#: conf/global_settings.py:93 msgid "Indonesian" msgstr "" -#: conf/global_settings.py:99 +#: conf/global_settings.py:94 msgid "Ido" msgstr "" -#: conf/global_settings.py:100 +#: conf/global_settings.py:95 msgid "Icelandic" msgstr "" -#: conf/global_settings.py:101 +#: conf/global_settings.py:96 msgid "Italian" msgstr "" -#: conf/global_settings.py:102 +#: conf/global_settings.py:97 msgid "Japanese" msgstr "" -#: conf/global_settings.py:103 +#: conf/global_settings.py:98 msgid "Georgian" msgstr "" -#: conf/global_settings.py:104 +#: conf/global_settings.py:99 msgid "Kabyle" msgstr "" -#: conf/global_settings.py:104 +#: conf/global_settings.py:100 msgid "Kazakh" msgstr "" -#: conf/global_settings.py:105 +#: conf/global_settings.py:101 msgid "Khmer" msgstr "" -#: conf/global_settings.py:106 +#: conf/global_settings.py:102 msgid "Kannada" msgstr "" -#: conf/global_settings.py:107 +#: conf/global_settings.py:103 msgid "Korean" msgstr "" -#: conf/global_settings.py:108 +#: conf/global_settings.py:104 msgid "Luxembourgish" msgstr "" -#: conf/global_settings.py:109 +#: conf/global_settings.py:105 msgid "Lithuanian" msgstr "" -#: conf/global_settings.py:110 +#: conf/global_settings.py:106 msgid "Latvian" msgstr "" -#: conf/global_settings.py:111 +#: conf/global_settings.py:107 msgid "Macedonian" msgstr "" -#: conf/global_settings.py:112 +#: conf/global_settings.py:108 msgid "Malayalam" msgstr "" -#: conf/global_settings.py:113 +#: conf/global_settings.py:109 msgid "Mongolian" msgstr "" -#: conf/global_settings.py:114 +#: conf/global_settings.py:110 msgid "Marathi" msgstr "" -#: conf/global_settings.py:115 +#: conf/global_settings.py:111 msgid "Burmese" msgstr "" -#: conf/global_settings.py:116 +#: conf/global_settings.py:112 msgid "Norwegian Bokmål" msgstr "" -#: conf/global_settings.py:117 +#: conf/global_settings.py:113 msgid "Nepali" msgstr "" -#: conf/global_settings.py:118 +#: conf/global_settings.py:114 msgid "Dutch" msgstr "" -#: conf/global_settings.py:119 +#: conf/global_settings.py:115 msgid "Norwegian Nynorsk" msgstr "" -#: conf/global_settings.py:120 +#: conf/global_settings.py:116 msgid "Ossetic" msgstr "" -#: conf/global_settings.py:121 +#: conf/global_settings.py:117 msgid "Punjabi" msgstr "" -#: conf/global_settings.py:122 +#: conf/global_settings.py:118 msgid "Polish" msgstr "" -#: conf/global_settings.py:123 +#: conf/global_settings.py:119 msgid "Portuguese" msgstr "" -#: conf/global_settings.py:124 +#: conf/global_settings.py:120 msgid "Brazilian Portuguese" msgstr "" -#: conf/global_settings.py:125 +#: conf/global_settings.py:121 msgid "Romanian" msgstr "" -#: conf/global_settings.py:126 +#: conf/global_settings.py:122 msgid "Russian" msgstr "" -#: conf/global_settings.py:127 +#: conf/global_settings.py:123 msgid "Slovak" msgstr "" -#: conf/global_settings.py:128 +#: conf/global_settings.py:124 msgid "Slovenian" msgstr "" -#: conf/global_settings.py:129 +#: conf/global_settings.py:125 msgid "Albanian" msgstr "" -#: conf/global_settings.py:130 +#: conf/global_settings.py:126 msgid "Serbian" msgstr "" -#: conf/global_settings.py:131 +#: conf/global_settings.py:127 msgid "Serbian Latin" msgstr "" -#: conf/global_settings.py:132 +#: conf/global_settings.py:128 msgid "Swedish" msgstr "" -#: conf/global_settings.py:133 +#: conf/global_settings.py:129 msgid "Swahili" msgstr "" -#: conf/global_settings.py:134 +#: conf/global_settings.py:130 msgid "Tamil" msgstr "" -#: conf/global_settings.py:135 +#: conf/global_settings.py:131 msgid "Telugu" msgstr "" -#: conf/global_settings.py:136 +#: conf/global_settings.py:132 msgid "Thai" msgstr "" -#: conf/global_settings.py:137 +#: conf/global_settings.py:133 msgid "Turkish" msgstr "" -#: conf/global_settings.py:138 +#: conf/global_settings.py:134 msgid "Tatar" msgstr "" -#: conf/global_settings.py:139 +#: conf/global_settings.py:135 msgid "Udmurt" msgstr "" -#: conf/global_settings.py:140 +#: conf/global_settings.py:136 msgid "Ukrainian" msgstr "" -#: conf/global_settings.py:141 +#: conf/global_settings.py:137 msgid "Urdu" msgstr "" -#: conf/global_settings.py:142 +#: conf/global_settings.py:138 msgid "Vietnamese" msgstr "" -#: conf/global_settings.py:143 +#: conf/global_settings.py:139 msgid "Simplified Chinese" msgstr "" -#: conf/global_settings.py:144 +#: conf/global_settings.py:140 msgid "Traditional Chinese" msgstr "" @@ -386,15 +386,15 @@ msgstr "" msgid "Syndication" msgstr "" -#: core/paginator.py:40 +#: core/paginator.py:42 msgid "That page number is not an integer" msgstr "" -#: core/paginator.py:42 +#: core/paginator.py:44 msgid "That page number is less than 1" msgstr "" -#: core/paginator.py:47 +#: core/paginator.py:49 msgid "That page contains no results" msgstr "" @@ -402,7 +402,7 @@ msgstr "" msgid "Enter a valid value." msgstr "" -#: core/validators.py:102 forms/fields.py:649 +#: core/validators.py:102 forms/fields.py:659 msgid "Enter a valid URL." msgstr "" @@ -479,21 +479,25 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:395 +#: core/validators.py:394 forms/fields.py:289 forms/fields.py:324 +msgid "Enter a number." +msgstr "" + +#: core/validators.py:396 #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "" msgstr[1] "" -#: core/validators.py:400 +#: core/validators.py:401 #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "" msgstr[1] "" -#: core/validators.py:405 +#: core/validators.py:406 #, python-format msgid "" "Ensure that there are no more than %(max)s digit before the decimal point." @@ -502,22 +506,22 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:459 +#: core/validators.py:468 #, python-format msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" -#: core/validators.py:512 +#: core/validators.py:520 msgid "Null characters are not allowed." msgstr "" -#: db/models/base.py:1119 forms/models.py:753 +#: db/models/base.py:1110 forms/models.py:752 msgid "and" msgstr "" -#: db/models/base.py:1121 +#: db/models/base.py:1112 #, python-format msgid "%(model_name)s with this %(field_labels)s already exists." msgstr "" @@ -553,175 +557,180 @@ msgstr "" msgid "Field of type: %(field_type)s" msgstr "" -#: db/models/fields/__init__.py:882 db/models/fields/__init__.py:1782 +#: db/models/fields/__init__.py:898 db/models/fields/__init__.py:1766 msgid "Integer" msgstr "" -#: db/models/fields/__init__.py:886 db/models/fields/__init__.py:1780 +#: db/models/fields/__init__.py:902 db/models/fields/__init__.py:1764 #, python-format msgid "'%(value)s' value must be an integer." msgstr "" -#: db/models/fields/__init__.py:959 db/models/fields/__init__.py:1851 +#: db/models/fields/__init__.py:977 db/models/fields/__init__.py:1833 msgid "Big (8 byte) integer" msgstr "" -#: db/models/fields/__init__.py:971 +#: db/models/fields/__init__.py:989 #, python-format msgid "'%(value)s' value must be either True or False." msgstr "" -#: db/models/fields/__init__.py:973 +#: db/models/fields/__init__.py:990 +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + +#: db/models/fields/__init__.py:992 msgid "Boolean (Either True or False)" msgstr "" -#: db/models/fields/__init__.py:1039 +#: db/models/fields/__init__.py:1034 #, python-format msgid "String (up to %(max_length)s)" msgstr "" -#: db/models/fields/__init__.py:1102 +#: db/models/fields/__init__.py:1098 msgid "Comma-separated integers" msgstr "" -#: db/models/fields/__init__.py:1150 +#: db/models/fields/__init__.py:1147 #, python-format msgid "" "'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD " "format." msgstr "" -#: db/models/fields/__init__.py:1152 db/models/fields/__init__.py:1294 +#: db/models/fields/__init__.py:1149 db/models/fields/__init__.py:1292 #, python-format msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid " "date." msgstr "" -#: db/models/fields/__init__.py:1155 +#: db/models/fields/__init__.py:1152 msgid "Date (without time)" msgstr "" -#: db/models/fields/__init__.py:1292 +#: db/models/fields/__init__.py:1290 #, python-format msgid "" "'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." "uuuuuu]][TZ] format." msgstr "" -#: db/models/fields/__init__.py:1296 +#: db/models/fields/__init__.py:1294 #, python-format msgid "" "'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" "[TZ]) but it is an invalid date/time." msgstr "" -#: db/models/fields/__init__.py:1300 +#: db/models/fields/__init__.py:1298 msgid "Date (with time)" msgstr "" -#: db/models/fields/__init__.py:1447 +#: db/models/fields/__init__.py:1446 #, python-format msgid "'%(value)s' value must be a decimal number." msgstr "" -#: db/models/fields/__init__.py:1449 +#: db/models/fields/__init__.py:1448 msgid "Decimal number" msgstr "" -#: db/models/fields/__init__.py:1601 +#: db/models/fields/__init__.py:1587 #, python-format msgid "" "'%(value)s' value has an invalid format. It must be in [DD] [HH:[MM:]]ss[." "uuuuuu] format." msgstr "" -#: db/models/fields/__init__.py:1604 +#: db/models/fields/__init__.py:1590 msgid "Duration" msgstr "" -#: db/models/fields/__init__.py:1656 +#: db/models/fields/__init__.py:1640 msgid "Email address" msgstr "" -#: db/models/fields/__init__.py:1680 +#: db/models/fields/__init__.py:1663 msgid "File path" msgstr "" -#: db/models/fields/__init__.py:1746 +#: db/models/fields/__init__.py:1729 #, python-format msgid "'%(value)s' value must be a float." msgstr "" -#: db/models/fields/__init__.py:1748 +#: db/models/fields/__init__.py:1731 msgid "Floating point number" msgstr "" -#: db/models/fields/__init__.py:1866 +#: db/models/fields/__init__.py:1849 msgid "IPv4 address" msgstr "" -#: db/models/fields/__init__.py:1897 +#: db/models/fields/__init__.py:1880 msgid "IP address" msgstr "" -#: db/models/fields/__init__.py:1978 +#: db/models/fields/__init__.py:1960 db/models/fields/__init__.py:1961 #, python-format msgid "'%(value)s' value must be either None, True or False." msgstr "" -#: db/models/fields/__init__.py:1980 +#: db/models/fields/__init__.py:1963 msgid "Boolean (Either True, False or None)" msgstr "" -#: db/models/fields/__init__.py:2043 +#: db/models/fields/__init__.py:1998 msgid "Positive integer" msgstr "" -#: db/models/fields/__init__.py:2055 +#: db/models/fields/__init__.py:2011 msgid "Positive small integer" msgstr "" -#: db/models/fields/__init__.py:2068 +#: db/models/fields/__init__.py:2025 #, python-format msgid "Slug (up to %(max_length)s)" msgstr "" -#: db/models/fields/__init__.py:2098 +#: db/models/fields/__init__.py:2057 msgid "Small integer" msgstr "" -#: db/models/fields/__init__.py:2105 +#: db/models/fields/__init__.py:2064 msgid "Text" msgstr "" -#: db/models/fields/__init__.py:2133 +#: db/models/fields/__init__.py:2092 #, python-format msgid "" "'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " "format." msgstr "" -#: db/models/fields/__init__.py:2135 +#: db/models/fields/__init__.py:2094 #, python-format msgid "" "'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " "invalid time." msgstr "" -#: db/models/fields/__init__.py:2138 +#: db/models/fields/__init__.py:2097 msgid "Time" msgstr "" -#: db/models/fields/__init__.py:2263 +#: db/models/fields/__init__.py:2223 msgid "URL" msgstr "" -#: db/models/fields/__init__.py:2286 +#: db/models/fields/__init__.py:2245 msgid "Raw binary data" msgstr "" -#: db/models/fields/__init__.py:2333 +#: db/models/fields/__init__.py:2295 #, python-format msgid "'%(value)s' is not a valid UUID." msgstr "" @@ -730,16 +739,16 @@ msgstr "" msgid "File" msgstr "" -#: db/models/fields/files.py:359 +#: db/models/fields/files.py:360 msgid "Image" msgstr "" -#: db/models/fields/related.py:780 +#: db/models/fields/related.py:778 #, python-format msgid "%(model)s instance with %(field)s %(value)r does not exist." msgstr "" -#: db/models/fields/related.py:782 +#: db/models/fields/related.py:780 msgid "Foreign Key (type determined by related field)" msgstr "" @@ -763,51 +772,52 @@ msgstr "" #. Translators: If found as last label character, these punctuation #. characters will prevent the default label_suffix to be appended to the label -#: forms/boundfield.py:171 +#: forms/boundfield.py:146 msgid ":?.!" msgstr "" -#: forms/fields.py:53 +#: forms/fields.py:52 msgid "This field is required." msgstr "" -#: forms/fields.py:245 +#: forms/fields.py:244 msgid "Enter a whole number." msgstr "" -#: forms/fields.py:290 forms/fields.py:325 -msgid "Enter a number." -msgstr "" - -#: forms/fields.py:396 forms/fields.py:1114 +#: forms/fields.py:395 forms/fields.py:1128 msgid "Enter a valid date." msgstr "" -#: forms/fields.py:420 forms/fields.py:1115 +#: forms/fields.py:419 forms/fields.py:1129 msgid "Enter a valid time." msgstr "" -#: forms/fields.py:442 +#: forms/fields.py:441 msgid "Enter a valid date/time." msgstr "" -#: forms/fields.py:471 +#: forms/fields.py:470 msgid "Enter a valid duration." msgstr "" -#: forms/fields.py:525 +#: forms/fields.py:472 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + +#: forms/fields.py:533 msgid "No file was submitted. Check the encoding type on the form." msgstr "" -#: forms/fields.py:526 +#: forms/fields.py:534 msgid "No file was submitted." msgstr "" -#: forms/fields.py:527 +#: forms/fields.py:535 msgid "The submitted file is empty." msgstr "" -#: forms/fields.py:529 +#: forms/fields.py:537 #, python-format msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" @@ -815,30 +825,30 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: forms/fields.py:532 +#: forms/fields.py:540 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" -#: forms/fields.py:597 +#: forms/fields.py:601 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: forms/fields.py:753 forms/fields.py:843 forms/models.py:1267 +#: forms/fields.py:763 forms/fields.py:853 forms/models.py:1272 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" -#: forms/fields.py:844 forms/fields.py:959 forms/models.py:1266 +#: forms/fields.py:854 forms/fields.py:969 forms/models.py:1271 msgid "Enter a list of values." msgstr "" -#: forms/fields.py:960 +#: forms/fields.py:970 msgid "Enter a complete value." msgstr "" -#: forms/fields.py:1173 +#: forms/fields.py:1187 msgid "Enter a valid UUID." msgstr "" @@ -847,7 +857,7 @@ msgstr "" msgid ":" msgstr "" -#: forms/forms.py:207 +#: forms/forms.py:212 #, python-format msgid "(Hidden field %(name)s) %(error)s" msgstr "" @@ -878,36 +888,36 @@ msgstr "" msgid "Delete" msgstr "" -#: forms/models.py:748 +#: forms/models.py:747 #, python-format msgid "Please correct the duplicate data for %(field)s." msgstr "" -#: forms/models.py:752 +#: forms/models.py:751 #, python-format msgid "Please correct the duplicate data for %(field)s, which must be unique." msgstr "" -#: forms/models.py:758 +#: forms/models.py:757 #, python-format msgid "" "Please correct the duplicate data for %(field_name)s which must be unique " "for the %(lookup)s in %(date_field)s." msgstr "" -#: forms/models.py:767 +#: forms/models.py:766 msgid "Please correct the duplicate values below." msgstr "" -#: forms/models.py:1094 +#: forms/models.py:1093 msgid "The inline value did not match the parent instance." msgstr "" -#: forms/models.py:1155 +#: forms/models.py:1160 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" -#: forms/models.py:1269 +#: forms/models.py:1274 #, python-format msgid "\"%(pk)s\" is not a valid value." msgstr "" @@ -919,62 +929,62 @@ msgid "" "may be ambiguous or it may not exist." msgstr "" -#: forms/widgets.py:391 +#: forms/widgets.py:383 msgid "Clear" msgstr "" -#: forms/widgets.py:392 +#: forms/widgets.py:384 msgid "Currently" msgstr "" -#: forms/widgets.py:393 +#: forms/widgets.py:385 msgid "Change" msgstr "" -#: forms/widgets.py:706 +#: forms/widgets.py:699 msgid "Unknown" msgstr "" -#: forms/widgets.py:707 +#: forms/widgets.py:700 msgid "Yes" msgstr "" -#: forms/widgets.py:708 +#: forms/widgets.py:701 msgid "No" msgstr "" -#: template/defaultfilters.py:782 +#: template/defaultfilters.py:788 msgid "yes,no,maybe" msgstr "" -#: template/defaultfilters.py:811 template/defaultfilters.py:828 +#: template/defaultfilters.py:817 template/defaultfilters.py:834 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "" msgstr[1] "" -#: template/defaultfilters.py:830 +#: template/defaultfilters.py:836 #, python-format msgid "%s KB" msgstr "" -#: template/defaultfilters.py:832 +#: template/defaultfilters.py:838 #, python-format msgid "%s MB" msgstr "" -#: template/defaultfilters.py:834 +#: template/defaultfilters.py:840 #, python-format msgid "%s GB" msgstr "" -#: template/defaultfilters.py:836 +#: template/defaultfilters.py:842 #, python-format msgid "%s TB" msgstr "" -#: template/defaultfilters.py:838 +#: template/defaultfilters.py:844 #, python-format msgid "%s PB" msgstr "" @@ -1059,218 +1069,218 @@ msgstr "" msgid "Sun" msgstr "" -#: utils/dates.py:18 +#: utils/dates.py:14 msgid "January" msgstr "" -#: utils/dates.py:18 +#: utils/dates.py:14 msgid "February" msgstr "" -#: utils/dates.py:18 +#: utils/dates.py:14 msgid "March" msgstr "" -#: utils/dates.py:18 +#: utils/dates.py:14 msgid "April" msgstr "" -#: utils/dates.py:18 +#: utils/dates.py:14 msgid "May" msgstr "" -#: utils/dates.py:18 +#: utils/dates.py:14 msgid "June" msgstr "" -#: utils/dates.py:19 +#: utils/dates.py:15 msgid "July" msgstr "" -#: utils/dates.py:19 +#: utils/dates.py:15 msgid "August" msgstr "" -#: utils/dates.py:19 +#: utils/dates.py:15 msgid "September" msgstr "" -#: utils/dates.py:19 +#: utils/dates.py:15 msgid "October" msgstr "" -#: utils/dates.py:19 +#: utils/dates.py:15 msgid "November" msgstr "" -#: utils/dates.py:20 +#: utils/dates.py:16 msgid "December" msgstr "" -#: utils/dates.py:23 +#: utils/dates.py:19 msgid "jan" msgstr "" -#: utils/dates.py:23 +#: utils/dates.py:19 msgid "feb" msgstr "" -#: utils/dates.py:23 +#: utils/dates.py:19 msgid "mar" msgstr "" -#: utils/dates.py:23 +#: utils/dates.py:19 msgid "apr" msgstr "" -#: utils/dates.py:23 +#: utils/dates.py:19 msgid "may" msgstr "" -#: utils/dates.py:23 +#: utils/dates.py:19 msgid "jun" msgstr "" -#: utils/dates.py:24 +#: utils/dates.py:20 msgid "jul" msgstr "" -#: utils/dates.py:24 +#: utils/dates.py:20 msgid "aug" msgstr "" -#: utils/dates.py:24 +#: utils/dates.py:20 msgid "sep" msgstr "" -#: utils/dates.py:24 +#: utils/dates.py:20 msgid "oct" msgstr "" -#: utils/dates.py:24 +#: utils/dates.py:20 msgid "nov" msgstr "" -#: utils/dates.py:24 +#: utils/dates.py:20 msgid "dec" msgstr "" -#: utils/dates.py:31 +#: utils/dates.py:23 msgctxt "abbrev. month" msgid "Jan." msgstr "" -#: utils/dates.py:32 +#: utils/dates.py:24 msgctxt "abbrev. month" msgid "Feb." msgstr "" -#: utils/dates.py:33 +#: utils/dates.py:25 msgctxt "abbrev. month" msgid "March" msgstr "" -#: utils/dates.py:34 +#: utils/dates.py:26 msgctxt "abbrev. month" msgid "April" msgstr "" -#: utils/dates.py:35 +#: utils/dates.py:27 msgctxt "abbrev. month" msgid "May" msgstr "" -#: utils/dates.py:36 +#: utils/dates.py:28 msgctxt "abbrev. month" msgid "June" msgstr "" -#: utils/dates.py:37 +#: utils/dates.py:29 msgctxt "abbrev. month" msgid "July" msgstr "" -#: utils/dates.py:38 +#: utils/dates.py:30 msgctxt "abbrev. month" msgid "Aug." msgstr "" -#: utils/dates.py:39 +#: utils/dates.py:31 msgctxt "abbrev. month" msgid "Sept." msgstr "" -#: utils/dates.py:40 +#: utils/dates.py:32 msgctxt "abbrev. month" msgid "Oct." msgstr "" -#: utils/dates.py:41 +#: utils/dates.py:33 msgctxt "abbrev. month" msgid "Nov." msgstr "" -#: utils/dates.py:42 +#: utils/dates.py:34 msgctxt "abbrev. month" msgid "Dec." msgstr "" -#: utils/dates.py:45 +#: utils/dates.py:37 msgctxt "alt. month" msgid "January" msgstr "" -#: utils/dates.py:46 +#: utils/dates.py:38 msgctxt "alt. month" msgid "February" msgstr "" -#: utils/dates.py:47 +#: utils/dates.py:39 msgctxt "alt. month" msgid "March" msgstr "" -#: utils/dates.py:48 +#: utils/dates.py:40 msgctxt "alt. month" msgid "April" msgstr "" -#: utils/dates.py:49 +#: utils/dates.py:41 msgctxt "alt. month" msgid "May" msgstr "" -#: utils/dates.py:50 +#: utils/dates.py:42 msgctxt "alt. month" msgid "June" msgstr "" -#: utils/dates.py:51 +#: utils/dates.py:43 msgctxt "alt. month" msgid "July" msgstr "" -#: utils/dates.py:52 +#: utils/dates.py:44 msgctxt "alt. month" msgid "August" msgstr "" -#: utils/dates.py:53 +#: utils/dates.py:45 msgctxt "alt. month" msgid "September" msgstr "" -#: utils/dates.py:54 +#: utils/dates.py:46 msgctxt "alt. month" msgid "October" msgstr "" -#: utils/dates.py:55 +#: utils/dates.py:47 msgctxt "alt. month" msgid "November" msgstr "" -#: utils/dates.py:56 +#: utils/dates.py:48 msgctxt "alt. month" msgid "December" msgstr "" @@ -1290,7 +1300,7 @@ msgid "or" msgstr "" #. Translators: This string is used as a separator between list elements -#: utils/text.py:256 utils/timesince.py:69 +#: utils/text.py:256 utils/timesince.py:83 msgid ", " msgstr "" @@ -1336,7 +1346,7 @@ msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" -#: utils/timesince.py:58 +#: utils/timesince.py:72 msgid "0 minutes" msgstr "" @@ -1427,7 +1437,7 @@ msgstr "" msgid "Invalid date string '%(datestr)s' given format '%(format)s'" msgstr "" -#: views/generic/detail.py:53 +#: views/generic/detail.py:54 #, python-format msgid "No %(verbose_name)s found matching the query" msgstr "" @@ -1446,16 +1456,16 @@ msgstr "" msgid "Empty list and '%(class_name)s.allow_empty' is False." msgstr "" -#: views/static.py:41 +#: views/static.py:40 msgid "Directory indexes are not allowed here." msgstr "" -#: views/static.py:43 +#: views/static.py:42 #, python-format msgid "\"%(path)s\" does not exist" msgstr "" -#: views/static.py:83 +#: views/static.py:80 #, python-format msgid "Index of %(directory)s" msgstr "" @@ -1464,18 +1474,18 @@ msgstr "" msgid "Django: the Web framework for perfectionists with deadlines." msgstr "" -#: views/templates/default_urlconf.html:370 +#: views/templates/default_urlconf.html:345 #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" -#: views/templates/default_urlconf.html:392 +#: views/templates/default_urlconf.html:367 msgid "The install worked successfully! Congratulations!" msgstr "" -#: views/templates/default_urlconf.html:393 +#: views/templates/default_urlconf.html:368 #, python-format msgid "" "You are seeing this page because \n" "Language-Team: Esperanto (http://www.transifex.com/django/django/language/" "eo/)\n" @@ -389,6 +389,9 @@ msgstr[1] "" "Certigu, ke tio valuto maksimume havas %(limit_value)d karakterojn (ĝi havas " "%(show_value)d)." +msgid "Enter a number." +msgstr "Enigu nombron." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -467,6 +470,10 @@ msgstr "Granda (8 bitoka) entjero" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' valoro devas esti Vera aŭ Malvera" +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "“%(value)s” valoro devas esti Vera, Malvera aŭ Neniu." + msgid "Boolean (Either True or False)" msgstr "Bulea (Vera aŭ Malvera)" @@ -643,9 +650,6 @@ msgstr "Ĉi tiu kampo estas deviga." msgid "Enter a whole number." msgstr "Enigu plenan nombron." -msgid "Enter a number." -msgstr "Enigu nombron." - msgid "Enter a valid date." msgstr "Enigu validan daton." @@ -658,6 +662,10 @@ msgstr "Enigu validan daton/tempon." msgid "Enter a valid duration." msgstr "Enigu validan daŭron." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "La nombro da tagoj devas esti inter {min_days} kaj {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Neniu dosiero estis alŝutita. Kontrolu la kodoprezentan tipon en la " @@ -754,7 +762,7 @@ msgid "Please correct the duplicate values below." msgstr "Bonvolu ĝustigi la duoblan valoron sube." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "La enteksta valoro ne egalas la patran aperon." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Elektu validan elekton. Ĉi tiu elekto ne estas el la eblaj elektoj." @@ -1133,6 +1141,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Se vi uzas la markon aŭ " +"inkluzivante la 'Referrer-Policy: no-referrer' titolo, bonvolu forigi ilin. " +"La CSRFa protekto postulas ke la 'Referer' titolo faru striktan " +"referencantan kontroladon. Se vi estas koncernita pri privateco, uzu " +"alternativojn kiel por ligoj al aliaj retejoj." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1157,7 +1170,7 @@ msgid "No year specified" msgstr "Neniu jaro specifita" msgid "Date out of range" -msgstr "" +msgstr "Dato ne en la intervalo" msgid "No month specified" msgstr "Neniu monato specifita" @@ -1213,16 +1226,18 @@ msgid "Index of %(directory)s" msgstr "Indekso de %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Dĵango: la retframo por perfektemuloj kun limdatoj" #, python-format msgid "" "View release notes for Django %(version)s" msgstr "" +"Vidu eldonajn notojn por Dĵango %(version)s" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "La instalado sukcesis! Gratulojn!" #, python-format msgid "" @@ -1231,21 +1246,24 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Vi vidas ĉi tiun paĝon ĉar DEBUG = " +"True estas en via agorda dosiero kaj vi ne agordis ajnan URL." msgid "Django Documentation" msgstr "Djanga dokumentaro" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Temoj, referencoj & manlibroj" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "Instruilo: apo pri enketoj" msgid "Get started with Django" -msgstr "" +msgstr "Komencu kun Dĵango" msgid "Django Community" msgstr "Djanga komunumo" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "Konektiĝu, ricevu helpon aŭ kontribuu" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo index d312b9d..d4f0f2a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po index fb610a5..bd53fe8 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-22 14:52+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-06-18 20:22+0000\n" "Last-Translator: Ramiro Morales\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/django/django/" "language/es_AR/)\n" @@ -388,6 +388,9 @@ msgstr[1] "" "Asegúrese de que este valor tenga como máximo %(limit_value)d caracteres " "(tiene %(show_value)d)." +msgid "Enter a number." +msgstr "Introduzca un número." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -469,6 +472,10 @@ msgstr "Entero grande (8 bytes)" msgid "'%(value)s' value must be either True or False." msgstr "El valor de '%(value)s' debe ser Verdadero o Falso." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "El valor de '%(value)s' debe ser Verdadero, Falso o None." + msgid "Boolean (Either True or False)" msgstr "Booleano (Verdadero o Falso)" @@ -645,9 +652,6 @@ msgstr "Este campo es obligatorio." msgid "Enter a whole number." msgstr "Introduzca un número entero." -msgid "Enter a number." -msgstr "Introduzca un número." - msgid "Enter a valid date." msgstr "Introduzca una fecha válida." @@ -660,6 +664,10 @@ msgstr "Introduzca un valor de fecha/hora válido." msgid "Enter a valid duration." msgstr "Introduzca una duración válida." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "La cantidad de días debe tener valores entre {min_days} y {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se envió un archivo. Verifique el tipo de codificación en el formulario." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_MX/formats.py b/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_MX/formats.py index 228a821..760edcf 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_MX/formats.py +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/es_MX/formats.py @@ -21,5 +21,5 @@ DATETIME_INPUT_FORMATS = [ '%d/%m/%y %H:%M', ] DECIMAL_SEPARATOR = '.' # ',' is also official (less common): NOM-008-SCFI-2002 -THOUSAND_SEPARATOR = '\xa0' # non-breaking space +THOUSAND_SEPARATOR = ',' NUMBER_GROUPING = 3 diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo index 0105ba3..fa9d7e4 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po index 2d67ad0..1143b2e 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Arash Fazeli , 2012 # Jannis Leidel , 2011 # Mazdak Badakhshan , 2014 +# MJafar Mashhadi , 2018 # Mohammad Hossein Mojtahedi , 2013 # Pouya Abbassi, 2016 # Reza Mohammadi , 2013-2016 @@ -14,16 +15,16 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" -"Last-Translator: Jannis Leidel \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-06-23 23:00+0000\n" +"Last-Translator: MJafar Mashhadi \n" "Language-Team: Persian (http://www.transifex.com/django/django/language/" "fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "Afrikaans" msgstr "آفریکانس" @@ -166,6 +167,9 @@ msgstr "ژاپنی" msgid "Georgian" msgstr "گرجی" +msgid "Kabyle" +msgstr "" + msgid "Kazakh" msgstr "قزاقستان" @@ -302,13 +306,13 @@ msgid "Syndication" msgstr "پیوند" msgid "That page number is not an integer" -msgstr "" +msgstr "شمارهٔ صفحه باید یک عدد باشد" msgid "That page number is less than 1" -msgstr "" +msgstr "شمارهٔ صفحه باید بزرگتر از ۱ باشد" msgid "That page contains no results" -msgstr "" +msgstr "این صفحه خالی از اطلاعات است" msgid "Enter a valid value." msgstr "یک مقدار معتبر وارد کنید." @@ -366,6 +370,9 @@ msgid_plural "" msgstr[0] "" "طول این مقدار باید حداقل %(limit_value)d کاراکتر باشد (طولش %(show_value)d " "است)." +msgstr[1] "" +"طول این مقدار باید حداقل %(limit_value)d کاراکتر باشد (طولش %(show_value)d " +"است)." #, python-format msgid "" @@ -377,16 +384,24 @@ msgid_plural "" msgstr[0] "" "طول این مقدار باید حداکثر %(limit_value)d کاراکتر باشد (طولش %(show_value)d " "است)." +msgstr[1] "" +"طول این مقدار باید حداکثر %(limit_value)d کاراکتر باشد (طولش %(show_value)d " +"است)." + +msgid "Enter a number." +msgstr "یک عدد وارد کنید." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "نباید در مجموع بیش از %(max)s رقم داشته باشد." +msgstr[1] "نباید در مجموع بیش از %(max)s رقم داشته باشد." #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "نباید بیش از %(max)s رقم اعشار داشته باشد." +msgstr[1] "نباید بیش از %(max)s رقم اعشار داشته باشد." #, python-format msgid "" @@ -394,12 +409,15 @@ msgid "" msgid_plural "" "Ensure that there are no more than %(max)s digits before the decimal point." msgstr[0] "نباید بیش از %(max)s رقم قبل ممیز داشته باشد." +msgstr[1] "نباید بیش از %(max)s رقم قبل ممیز داشته باشد." #, python-format msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" +"استفاده از پرونده با پسوند '%(extension)s' مجاز نیست. پسوند‌های مجاز عبارتند " +"از: '%(allowed_extensions)s'" msgid "Null characters are not allowed." msgstr "" @@ -451,6 +469,10 @@ msgstr "بزرگ (8 بایت) عدد صحیح" msgid "'%(value)s' value must be either True or False." msgstr "مقدار «%(value)s» باید یا True باشد و یا False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "مقدار «%(value)s» باید یا None باشد یا True و یا False." + msgid "Boolean (Either True or False)" msgstr "بولی (درست یا غلط)" @@ -627,9 +649,6 @@ msgstr "این فیلد لازم است." msgid "Enter a whole number." msgstr "به طور کامل یک عدد وارد کنید." -msgid "Enter a number." -msgstr "یک عدد وارد کنید." - msgid "Enter a valid date." msgstr "یک تاریخ معتبر وارد کنید." @@ -642,6 +661,10 @@ msgstr "یک تاریخ/زمان معتبر وارد کنید." msgid "Enter a valid duration." msgstr "یک بازهٔ زمانی معتبر وارد کنید." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "پرونده‌ای ارسال نشده است. نوع کدگذاری فرم را بررسی کنید." @@ -657,6 +680,8 @@ msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" "طول عنوان پرونده باید حداقل %(max)d کاراکتر باشد (طولش %(length)d است)." +msgstr[1] "" +"طول عنوان پرونده باید حداقل %(max)d کاراکتر باشد (طولش %(length)d است)." msgid "Please either submit a file or check the clear checkbox, not both." msgstr "لطفا یا فایل ارسال کنید یا دکمه پاک کردن را علامت بزنید، نه هردو." @@ -696,11 +721,13 @@ msgstr "اطلاعات ManagementForm ناقص است و یا دستکاری ش msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." msgstr[0] "لطفاً %d یا کمتر فرم بفرستید." +msgstr[1] "لطفاً %d یا کمتر فرم بفرستید." #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." msgstr[0] "لطفاً %d یا بیشتر فرم بفرستید." +msgstr[1] "لطفاً %d یا بیشتر فرم بفرستید." msgid "Order" msgstr "ترتیب:" @@ -770,6 +797,7 @@ msgstr "بله،خیر،شاید" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d بایت" +msgstr[1] "%(size)d بایت" #, python-format msgid "%s KB" @@ -1038,31 +1066,37 @@ msgstr "،" msgid "%d year" msgid_plural "%d years" msgstr[0] "%d سال" +msgstr[1] "%d سال" #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ماه" +msgstr[1] "%d ماه" #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d هفته" +msgstr[1] "%d هفته" #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d روز" +msgstr[1] "%d روز" #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ساعت" +msgstr[1] "%d ساعت" #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d دقیقه" +msgstr[1] "%d دقیقه" msgid "0 minutes" msgstr "0 دقیقه" @@ -1079,18 +1113,19 @@ msgid "" "required for security reasons, to ensure that your browser is not being " "hijacked by third parties." msgstr "" -"شما این پیغام را میبینید چون این سایتِ HTTPS نیازمند یک «تیتر ارجاع» برای " -"ارسال به بروزر شماست، ولی هیچ چیزی ارسال نشده است. این تیتر به دلایل امنیتی " -"مورد نیاز است، برای اینکه از هایجک نشدن بروزر اطمینان حاصل شود." +"شما این پیام را می‌بینید چون این سایتِ HTTPS نیازمند یک «تیتر ارجاع (Referer " +"header)» برای ارسال به مرورگر شماست اما هیچ چیزی ارسال نشده است. این تیتر " +"برای امنیت شما با حصول اطمینان از اینکه کنترل مرورگرتان به دست شخص ثالثی " +"نیفتاده باشد ضروری است." msgid "" "If you have configured your browser to disable 'Referer' headers, please re-" "enable them, at least for this site, or for HTTPS connections, or for 'same-" "origin' requests." msgstr "" -"اگر بزوزر خود را برای غیر فعال کردن تیترهای «ارجاع» تنظیم کرده‌اید، لطفا " -"مجددا این ویژگی را فعال کنید، حداقل برای این وبسایت، یا برای اتصالات HTTPS، " -"یا برای درخواستهایی با «مبدا یکسان»." +"اگر تیترهای «ارجاع (Referer)» را در مرورگرتان غیرفعال کرده‌اید، لطفاً مجدداً " +"این ویژگی را فعال کنید، حداقل برای این وبسایت، یا برای اتصالات HTTPS، یا " +"برای درخواستهایی با «مبدا یکسان (same-origin)»." msgid "" "If you are using the tag or " @@ -1105,9 +1140,9 @@ msgid "" "submitting forms. This cookie is required for security reasons, to ensure " "that your browser is not being hijacked by third parties." msgstr "" -"شما این پیغام را میبینید چون این سایت نیازمند کوکی «جعل درخواست میان وبگاهی» " -"در زمان ارائه ی فورم میباشد. این کوکی‌ها برای مسائل امنیتی ضروری هستند، برای " -"اطمینان از اینکه بروزر شما توسط شخص ثالثی هایجک نشده باشد." +"شما این پیام را میبینید چون این سایت نیازمند کوکی «جعل درخواست میان وبگاهی " +"(CSRF)» است. این کوکی برای امنیت شما ضروری است. با این کوکی می‌توانیم از " +"اینکه شخص ثالثی کنترل مرورگرتان را به دست نگرفته است اطمینان پیدا کنیم." msgid "" "If you have configured your browser to disable cookies, please re-enable " @@ -1123,7 +1158,7 @@ msgid "No year specified" msgstr "هیچ سالی مشخص نشده است" msgid "Date out of range" -msgstr "" +msgstr "تاریخ غیرمجاز است" msgid "No month specified" msgstr "هیچ ماهی مشخص نشده است" @@ -1197,19 +1232,19 @@ msgid "" msgstr "" msgid "Django Documentation" -msgstr "" +msgstr "مستندات جنگو" msgid "Topics, references, & how-to's" msgstr "" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "آموزش گام به گام: برنامکی برای رأی‌گیری" msgid "Get started with Django" -msgstr "" +msgstr "شروع به کار با جنگو" msgid "Django Community" -msgstr "" +msgstr "جامعهٔ جنگو" msgid "Connect, get help, or contribute" msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo index d7f35ce..1d02796 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po index 0247661..fbab3be 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Aarni Koskela, 2015,2017 +# Aarni Koskela, 2015,2017-2018 # Antti Kaihola , 2011 # Jannis Leidel , 2011 # Lasse Liehu , 2015 @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 00:21+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Finnish (http://www.transifex.com/django/django/language/" "fi/)\n" @@ -162,6 +162,9 @@ msgstr "japani" msgid "Georgian" msgstr "georgia" +msgid "Kabyle" +msgstr "Kabyle" + msgid "Kazakh" msgstr "kazakin kieli" @@ -384,6 +387,9 @@ msgstr[1] "" "Varmista, että tämä arvo on enintään %(limit_value)d merkkiä pitkä (tällä " "hetkellä %(show_value)d)." +msgid "Enter a number." +msgstr "Syötä luku." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -415,7 +421,7 @@ msgstr "" "\"%(allowed_extensions)s\"." msgid "Null characters are not allowed." -msgstr "" +msgstr "Tyhjiä merkkejä (null) ei sallita." msgid "and" msgstr "ja" @@ -465,6 +471,10 @@ msgstr "Suuri (8-tavuinen) kokonaisluku" msgid "'%(value)s' value must be either True or False." msgstr "%(value)s-arvo pitää olla joko tosi tai epätosi." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)" @@ -637,9 +647,6 @@ msgstr "Tämä kenttä vaaditaan." msgid "Enter a whole number." msgstr "Syötä kokonaisluku." -msgid "Enter a number." -msgstr "Syötä luku." - msgid "Enter a valid date." msgstr "Syötä oikea päivämäärä." @@ -652,6 +659,10 @@ msgstr "Syötä oikea pvm/kellonaika." msgid "Enter a valid duration." msgstr "Syötä oikea kesto." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)." @@ -750,7 +761,7 @@ msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta." #, python-format msgid "\"%(pk)s\" is not a valid value." -msgstr "" +msgstr "\"%(pk)s\" ei ole kelvollinen arvo." #, python-format msgid "" @@ -1122,6 +1133,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Jos käytät -tagia tai " +"\"Referrer-Policy: no-referrer\" -otsaketta, ole hyvä ja poista ne. CSRF-" +"suojaus vaatii Referer-otsakkeen tehdäkseen tarkan referer-tarkistuksen. Jos " +"vaadit yksityisyyttä, käytä vaihtoehtoja kuten linkittääksesi kolmannen osapuolen sivuille." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1147,7 +1163,7 @@ msgid "No year specified" msgstr "Vuosi puuttuu" msgid "Date out of range" -msgstr "" +msgstr "Päivämäärä ei alueella" msgid "No month specified" msgstr "Kuukausi puuttuu" @@ -1210,7 +1226,7 @@ msgid "" msgstr "" msgid "The install worked successfully! Congratulations!" -msgstr "" +msgstr "Asennus toimi! Onneksi olkoon!" #, python-format msgid "" @@ -1219,21 +1235,24 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Näet tämän viestin, koska asetuksissasi on DEBUG = True etkä ole konfiguroinut yhtään URL-osoitetta." msgid "Django Documentation" -msgstr "" +msgstr "Django-dokumentaatio" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Aiheet, viittaukset & how-tot" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "Tutoriaali: kyselyapplikaatio" msgid "Get started with Django" -msgstr "" +msgstr "Miten päästä alkuun Djangolla" msgid "Django Community" -msgstr "" +msgstr "Django-yhteisö" msgid "Connect, get help, or contribute" msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo index 42780bb..cd2bbfd 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po index e88a70f..91c9d9e 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # charettes , 2012 -# Claude Paroz , 2013-2017 +# Claude Paroz , 2013-2018 # Claude Paroz , 2011 # Jannis Leidel , 2011 # Jean-Baptiste Mora, 2014 @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 08:05+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 12:50+0000\n" "Last-Translator: Claude Paroz \n" "Language-Team: French (http://www.transifex.com/django/django/language/fr/)\n" "MIME-Version: 1.0\n" @@ -163,6 +163,9 @@ msgstr "Japonais" msgid "Georgian" msgstr "Géorgien" +msgid "Kabyle" +msgstr "Kabyle" + msgid "Kazakh" msgstr "Kazakh" @@ -389,6 +392,9 @@ msgstr[1] "" "Assurez-vous que cette valeur comporte au plus %(limit_value)d caractères " "(actuellement %(show_value)d)." +msgid "Enter a number." +msgstr "Saisissez un nombre." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -472,6 +478,11 @@ msgstr "Grand entier (8 octets)" msgid "'%(value)s' value must be either True or False." msgstr "La valeur « %(value)s » doit être soit True (vrai), soit False (faux)." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" +"La valeur « %(value)s » doit être True (vrai), False (faux) ou None (aucun)." + msgid "Boolean (Either True or False)" msgstr "Booléen (soit vrai ou faux)" @@ -650,9 +661,6 @@ msgstr "Ce champ est obligatoire." msgid "Enter a whole number." msgstr "Saisissez un nombre entier." -msgid "Enter a number." -msgstr "Saisissez un nombre." - msgid "Enter a valid date." msgstr "Saisissez une date valide." @@ -665,6 +673,10 @@ msgstr "Saisissez une date et une heure valides." msgid "Enter a valid duration." msgstr "Saisissez une durée valide." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Le nombre de jours doit être entre {min_days} et {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.mo index 63f8547..9537634 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.po index 315ab61..103853e 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/gd/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 06:41+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-29 09:31+0000\n" "Last-Translator: GunChleoc\n" "Language-Team: Gaelic, Scottish (http://www.transifex.com/django/django/" "language/gd/)\n" @@ -163,6 +163,9 @@ msgstr "Seapanais" msgid "Georgian" msgstr "Cairtbheilis" +msgid "Kabyle" +msgstr "Kabyle" + msgid "Kazakh" msgstr "Casachais" @@ -403,6 +406,9 @@ msgstr[3] "" "Dèan cinnteach gu bheil %(limit_value)d caractar aig an luach seo air a’ " "char as motha (tha %(show_value)d aige an-dràsta)." +msgid "Enter a number." +msgstr "Cuir a-steach àireamh." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -500,6 +506,10 @@ msgstr "Mòr-àireamh shlàn (8 baidht)" msgid "'%(value)s' value must be either True or False." msgstr "Feumaidh “%(value)s” a bhith True no False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Feumaidh “%(value)s” a bhith True, False no None." + msgid "Boolean (Either True or False)" msgstr "Booleach (True no False)" @@ -678,9 +688,6 @@ msgstr "Tha an raon seo riatanach." msgid "Enter a whole number." msgstr "Cuir a-steach àireamh shlàn." -msgid "Enter a number." -msgstr "Cuir a-steach àireamh." - msgid "Enter a valid date." msgstr "Cuir a-steach ceann-là dligheach." @@ -693,6 +700,11 @@ msgstr "Cuir a-steach ceann-là ’s àm dligheach." msgid "Enter a valid duration." msgstr "Cuir a-steach faid dhligheach." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" +"Feumaidh an àireamh de làithean a bhith eadar {min_days} is {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Cha deach faidhle a chur a-null. Dearbhaich seòrsa a’ chòdachaidh air an " diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.mo index d290384..909649f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.po index f5bba58..37cc5ba 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2017 +# Michael Wolf , 2016-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-09 18:46+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-26 11:17+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Upper Sorbian (http://www.transifex.com/django/django/" "language/hsb/)\n" @@ -396,6 +396,9 @@ msgstr[3] "" "Zawěsćće, zo tuta hódnota ma maksimalnje %(limit_value)d znamješkow (ima " "%(show_value)d)." +msgid "Enter a number." +msgstr "Zapodajće ličbu." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -480,6 +483,10 @@ msgstr "Big (8 byte) integer" msgid "'%(value)s' value must be either True or False." msgstr "Hódnota '%(value)s' dyrbi pak True pak False być." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Hódnota '%(value)s' dyrbi pak True, False pak None być." + msgid "Boolean (Either True or False)" msgstr "Boolean (pak True pak False)" @@ -655,9 +662,6 @@ msgstr "Tute polo je trěbne." msgid "Enter a whole number." msgstr "Zapodajće cyłu ličbu." -msgid "Enter a number." -msgstr "Zapodajće ličbu." - msgid "Enter a valid date." msgstr "Zapodajće płaćiwy datum." @@ -670,6 +674,10 @@ msgstr "Zapodajće płaćiwy datum/čas." msgid "Enter a valid duration." msgstr "Zapodajće płaćiwe traće." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Ličba dnjow dyrbi mjez {min_days} a {max_days} być." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Žana dataja je so pósłała. Přepruwujće kodowanski typ we formularje." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo index 46a6b39..a7ac689 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po index 97d4078..64456a6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po @@ -1,7 +1,8 @@ # This file is distributed under the same license as the Django package. # # Translators: -# András Veres-Szentkirályi, 2016-2017 +# Akos Zsolt Hochrein , 2018 +# András Veres-Szentkirályi, 2016-2018 # Attila Nagy <>, 2012 # Dóra Szendrei , 2017 # Jannis Leidel , 2011 @@ -12,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-24 13:36+0000\n" -"Last-Translator: András Veres-Szentkirályi\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-26 09:24+0000\n" +"Last-Translator: Akos Zsolt Hochrein \n" "Language-Team: Hungarian (http://www.transifex.com/django/django/language/" "hu/)\n" "MIME-Version: 1.0\n" @@ -164,6 +165,9 @@ msgstr "Japán" msgid "Georgian" msgstr "Grúz" +msgid "Kabyle" +msgstr "Kabil" + msgid "Kazakh" msgstr "Kazak" @@ -388,6 +392,9 @@ msgstr[1] "" "Bizonyosodjon meg arról, hogy ez az érték legfeljebb %(limit_value)d " "karaktert tartalmaz (jelenlegi hossza: %(show_value)d)." +msgid "Enter a number." +msgstr "Adj meg egy számot." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -473,6 +480,10 @@ msgstr "Nagy egész szám (8 bájtos)" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' érték csak igaz (True) vagy hamis (False) lehet." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' értéknek True, False vagy None-nak kell lennie." + msgid "Boolean (Either True or False)" msgstr "Logikai (True vagy False)" @@ -650,9 +661,6 @@ msgstr "Ennek a mezőnek a megadása kötelező." msgid "Enter a whole number." msgstr "Adjon meg egy egész számot." -msgid "Enter a number." -msgstr "Adj meg egy számot." - msgid "Enter a valid date." msgstr "Adjon meg egy érvényes dátumot." @@ -665,6 +673,10 @@ msgstr "Adjon meg egy érvényes dátumot/időt." msgid "Enter a valid duration." msgstr "Adjon meg egy érvényes időtartamot." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "A napok számának {min_days} és {max_days} közé kell esnie." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Nem küldött el fájlt. Ellenőrizze a kódolás típusát az űrlapon." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/formats.py b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/formats.py index 33b9b6e..4c52d7d 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/formats.py +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/hu/formats.py @@ -3,12 +3,12 @@ # The *_FORMAT strings use the Django date format syntax, # see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date DATE_FORMAT = 'Y. F j.' -TIME_FORMAT = 'G.i' -DATETIME_FORMAT = 'Y. F j. G.i' +TIME_FORMAT = 'H:i' +DATETIME_FORMAT = 'Y. F j. H:i' YEAR_MONTH_FORMAT = 'Y. F' MONTH_DAY_FORMAT = 'F j.' SHORT_DATE_FORMAT = 'Y.m.d.' -SHORT_DATETIME_FORMAT = 'Y.m.d. G.i' +SHORT_DATETIME_FORMAT = 'Y.m.d. H:i' FIRST_DAY_OF_WEEK = 1 # Monday # The *_INPUT_FORMATS strings use the Python strftime format syntax, @@ -17,13 +17,13 @@ DATE_INPUT_FORMATS = [ '%Y.%m.%d.', # '2006.10.25.' ] TIME_INPUT_FORMATS = [ - '%H.%M.%S', # '14.30.59' - '%H.%M', # '14.30' + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' ] DATETIME_INPUT_FORMATS = [ - '%Y.%m.%d. %H.%M.%S', # '2006.10.25. 14.30.59' - '%Y.%m.%d. %H.%M.%S.%f', # '2006.10.25. 14.30.59.000200' - '%Y.%m.%d. %H.%M', # '2006.10.25. 14.30' + '%Y.%m.%d. %H:%M:%S', # '2006.10.25. 14:30:59' + '%Y.%m.%d. %H:%M:%S.%f', # '2006.10.25. 14:30:59.000200' + '%Y.%m.%d. %H:%M', # '2006.10.25. 14:30' '%Y.%m.%d.', # '2006.10.25.' ] DECIMAL_SEPARATOR = ',' diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo index 28e6c69..df13536 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.po index d01f063..99fc195 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/id/LC_MESSAGES/django.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-11 07:10+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-06-18 23:24+0000\n" "Last-Translator: Fery Setiawan \n" "Language-Team: Indonesian (http://www.transifex.com/django/django/language/" "id/)\n" @@ -384,6 +384,9 @@ msgstr[0] "" "Pastikan nilai ini mengandung paling banyak %(limit_value)d karakter " "(sekarang %(show_value)d karakter)." +msgid "Enter a number." +msgstr "Masukkan sebuah bilangan." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -461,6 +464,10 @@ msgstr "Bilangan asli raksasa (8 byte)" msgid "'%(value)s' value must be either True or False." msgstr "Nilai '%(value)s' haruslah bernilai Benar atau Salah." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Nilai '%(value)s' harus True, False, atau None." + msgid "Boolean (Either True or False)" msgstr "Nilai Boolean (Salah satu dari True atau False)" @@ -637,9 +644,6 @@ msgstr "Bidang ini tidak boleh kosong." msgid "Enter a whole number." msgstr "Masukkan keseluruhan angka bilangan." -msgid "Enter a number." -msgstr "Masukkan sebuah bilangan." - msgid "Enter a valid date." msgstr "Masukkan tanggal yang valid." @@ -652,6 +656,10 @@ msgstr "Masukkan tanggal/waktu yang valid." msgid "Enter a valid duration." msgstr "Masukan durasi waktu yang benar." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Jumlah hari harus diantara {min_days} dan {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Tidak ada berkas yang dikirimkan. Periksa tipe pengaksaraan formulir." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo index f124c7a..463814a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.po index 5ef6aa1..09aaab8 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/is/LC_MESSAGES/django.po @@ -4,15 +4,16 @@ # gudmundur , 2011 # Hafsteinn Einarsson , 2011-2012 # Jannis Leidel , 2011 +# Matt R, 2018 # saevarom , 2011 # saevarom , 2013,2015 -# Thordur Sigurdsson , 2016-2017 +# Thordur Sigurdsson , 2016-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-27 07:32+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-06-22 20:45+0000\n" "Last-Translator: Thordur Sigurdsson \n" "Language-Team: Icelandic (http://www.transifex.com/django/django/language/" "is/)\n" @@ -163,6 +164,9 @@ msgstr "Japanska" msgid "Georgian" msgstr "Georgíska" +msgid "Kabyle" +msgstr "" + msgid "Kazakh" msgstr "Kasakska" @@ -388,6 +392,9 @@ msgstr[1] "" "Gildið má mest vera %(limit_value)d stafir að lengd (það er %(show_value)d " "nú)" +msgid "Enter a number." +msgstr "Sláðu inn tölu." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -468,6 +475,10 @@ msgstr "Stór (8 bæta) heiltala" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' verður að vera annaðhvort satt eða ósatt." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' verður að vera eitt eftirtalinna: True, False eða None." + msgid "Boolean (Either True or False)" msgstr "Boole-gildi (True eða False)" @@ -642,9 +653,6 @@ msgstr "Þennan reit þarf að fylla út." msgid "Enter a whole number." msgstr "Sláðu inn heiltölu." -msgid "Enter a number." -msgstr "Sláðu inn tölu." - msgid "Enter a valid date." msgstr "Sláðu inn gilda dagsetningu." @@ -657,6 +665,10 @@ msgstr "Sláðu inn gilda dagsetningu ásamt tíma." msgid "Enter a valid duration." msgstr "Sláðu inn gilt tímabil." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Fjöldi daga verður að vera á milli {min_days} og {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Engin skrá var send. Athugaðu kótunartegund á forminu (encoding type)." @@ -855,25 +867,25 @@ msgid "Sunday" msgstr "sunnudagur" msgid "Mon" -msgstr "Mán" +msgstr "mán" msgid "Tue" -msgstr "Þri" +msgstr "þri" msgid "Wed" -msgstr "Mið" +msgstr "mið" msgid "Thu" -msgstr "Fim" +msgstr "fim" msgid "Fri" -msgstr "Fös" +msgstr "fös" msgid "Sat" -msgstr "Lau" +msgstr "lau" msgid "Sun" -msgstr "Sun" +msgstr "sun" msgid "January" msgstr "janúar" @@ -949,99 +961,99 @@ msgstr "des" msgctxt "abbrev. month" msgid "Jan." -msgstr "Jan." +msgstr "jan." msgctxt "abbrev. month" msgid "Feb." -msgstr "Feb." +msgstr "feb." msgctxt "abbrev. month" msgid "March" -msgstr "Mars" +msgstr "mars" msgctxt "abbrev. month" msgid "April" -msgstr "Apríl" +msgstr "apríl" msgctxt "abbrev. month" msgid "May" -msgstr "Maí" +msgstr "maí" msgctxt "abbrev. month" msgid "June" -msgstr "Júní" +msgstr "júní" msgctxt "abbrev. month" msgid "July" -msgstr "Júlí" +msgstr "júlí" msgctxt "abbrev. month" msgid "Aug." -msgstr "Ág." +msgstr "ág." msgctxt "abbrev. month" msgid "Sept." -msgstr "Sept." +msgstr "sept." msgctxt "abbrev. month" msgid "Oct." -msgstr "Okt." +msgstr "okt." msgctxt "abbrev. month" msgid "Nov." -msgstr "Nóv." +msgstr "nóv." msgctxt "abbrev. month" msgid "Dec." -msgstr "Des." +msgstr "des." msgctxt "alt. month" msgid "January" -msgstr "Janúar" +msgstr "janúar" msgctxt "alt. month" msgid "February" -msgstr "Febrúar" +msgstr "febrúar" msgctxt "alt. month" msgid "March" -msgstr "Mars" +msgstr "mars" msgctxt "alt. month" msgid "April" -msgstr "Apríl" +msgstr "apríl" msgctxt "alt. month" msgid "May" -msgstr "Maí" +msgstr "maí" msgctxt "alt. month" msgid "June" -msgstr "Júní" +msgstr "júní" msgctxt "alt. month" msgid "July" -msgstr "Júlí" +msgstr "júlí" msgctxt "alt. month" msgid "August" -msgstr "Ágúst" +msgstr "ágúst" msgctxt "alt. month" msgid "September" -msgstr "September" +msgstr "september" msgctxt "alt. month" msgid "October" -msgstr "Október" +msgstr "október" msgctxt "alt. month" msgid "November" -msgstr "Nóvember" +msgstr "nóvember" msgctxt "alt. month" msgid "December" -msgstr "Desember" +msgstr "desember" msgid "This is not a valid IPv6 address." msgstr "Þetta er ekki gilt IPv6 vistfang." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo index f8ae8fa..ece4baa 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.po index a5f8ffe..35ad800 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/it/LC_MESSAGES/django.po @@ -1,15 +1,17 @@ # This file is distributed under the same license as the Django package. # # Translators: -# bbstuntman , 2017 +# Topolino_Hackerino , 2017 # Carlo Miron , 2011 # Carlo Miron , 2014 +# Carlo Miron , 2018 # Denis Darii , 2011 # Flavio Curella , 2013,2016 # Jannis Leidel , 2011 # Themis Savvidis , 2013 # Luciano De Falco Alfano, 2016 # Marco Bonetti, 2014 +# Mirco Grillo , 2018 # Nicola Larosa , 2013 # palmux , 2014-2015,2017 # Mattia Procopio , 2015 @@ -19,9 +21,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 13:51+0000\n" -"Last-Translator: palmux \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-30 21:04+0000\n" +"Last-Translator: Carlo Miron \n" "Language-Team: Italian (http://www.transifex.com/django/django/language/" "it/)\n" "MIME-Version: 1.0\n" @@ -171,6 +173,9 @@ msgstr "Giapponese" msgid "Georgian" msgstr "Georgiano" +msgid "Kabyle" +msgstr "Cabilo" + msgid "Kazakh" msgstr "Kazako" @@ -394,6 +399,9 @@ msgstr[1] "" "Assicurati che questo valore non contenga più di %(limit_value)d caratteri " "(ne ha %(show_value)d)." +msgid "Enter a number." +msgstr "Inserisci un numero." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -473,6 +481,10 @@ msgstr "Intero grande (8 byte)" msgid "'%(value)s' value must be either True or False." msgstr "Il valore '%(value)s' deve essere True oppure False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Il valore di %(value)s deve essere True, False o None" + msgid "Boolean (Either True or False)" msgstr "Booleano (Vero o Falso)" @@ -649,9 +661,6 @@ msgstr "Questo campo è obbligatorio." msgid "Enter a whole number." msgstr "Inserisci un numero intero." -msgid "Enter a number." -msgstr "Inserisci un numero." - msgid "Enter a valid date." msgstr "Inserisci una data valida." @@ -664,6 +673,10 @@ msgstr "Inserisci una data/ora valida." msgid "Enter a valid duration." msgstr "Inserisci una durata valida." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Il numero di giorni deve essere compreso tra {min_days} e {max_days}" + msgid "No file was submitted. Check the encoding type on the form." msgstr "Non è stato inviato alcun file. Verifica il tipo di codifica sul form." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo index 9c7fa34..cf1abc4 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po index d078258..04b771b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po @@ -5,14 +5,14 @@ # Jannis Leidel , 2011 # Kentaro Matsuzaki , 2015 # Masashi SHIBATA , 2017 -# Shinya Okano , 2012-2017 +# Shinya Okano , 2012-2018 # Tetsuya Morimoto , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-04 02:33+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-23 03:26+0000\n" "Last-Translator: Shinya Okano \n" "Language-Team: Japanese (http://www.transifex.com/django/django/language/" "ja/)\n" @@ -382,6 +382,9 @@ msgstr[0] "" "この値は %(limit_value)d 文字以下でなければなりません( %(show_value)d 文字に" "なっています)。" +msgid "Enter a number." +msgstr "整数を入力してください。" + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -458,6 +461,10 @@ msgstr "大きな(8バイト)整数" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' は真偽値にしなければなりません。" +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' はTrue、FalseまたはNoneの値でなければなりません。" + msgid "Boolean (Either True or False)" msgstr "ブール値 (真: True または偽: False)" @@ -629,9 +636,6 @@ msgstr "このフィールドは必須です。" msgid "Enter a whole number." msgstr "整数を入力してください。" -msgid "Enter a number." -msgstr "整数を入力してください。" - msgid "Enter a valid date." msgstr "日付を正しく入力してください。" @@ -644,6 +648,10 @@ msgstr "日付/時間を正しく入力してください。" msgid "Enter a valid duration." msgstr "時間差分を正しく入力してください。" +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "日数は{min_days}から{max_days}の間でなければなりません。" + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "ファイルが取得できませんでした。formのencoding typeを確認してください。" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo index 23b87cc..319303c 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po index 0c2e0e2..03c1f66 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # BJ Jang , 2014 -# 준구 강 , 2017 +# JunGu Kang , 2017 # Jiyoon, Ha , 2016 # lqez , 2017 # hoseung2 , 2017 @@ -11,17 +11,18 @@ # Jannis Leidel , 2011 # Le Tartuffe , 2014,2016 # JuneHyeon Bae , 2014 -# 준구 강 , 2015 +# JunGu Kang , 2015 # Kagami Sascha Rosylight , 2017 +# Noh Seho , 2018 # Subin Choi , 2016 # Taesik Yoon , 2015 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-11 14:17+0000\n" -"Last-Translator: 준구 강 \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-18 08:57+0000\n" +"Last-Translator: Noh Seho \n" "Language-Team: Korean (http://www.transifex.com/django/django/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -389,6 +390,9 @@ msgstr[0] "" "이 값이 최대 %(limit_value)d 개의 글자인지 확인하세요(입력값 %(show_value)d " "자)." +msgid "Enter a number." +msgstr "숫자를 입력하세요." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -465,6 +469,10 @@ msgstr "큰 정수 (8 byte)" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' 값은 값이 없거나, 참 또는 거짓 중 하나 여야 합니다." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s'값은 반드시 True, False, None 중 하나여야만 합니다." + msgid "Boolean (Either True or False)" msgstr "boolean(참 또는 거짓)" @@ -638,9 +646,6 @@ msgstr "필수 항목입니다." msgid "Enter a whole number." msgstr "정수를 입력하세요." -msgid "Enter a number." -msgstr "숫자를 입력하세요." - msgid "Enter a valid date." msgstr "올바른 날짜를 입력하세요." @@ -653,6 +658,10 @@ msgstr "올바른 날짜/시각을 입력하세요." msgid "Enter a valid duration." msgstr "올바른 기간을 입력하세요." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "날짜는 {min_days}와 {max_days} 사이여야 합니다." + msgid "No file was submitted. Check the encoding type on the form." msgstr "등록된 파일이 없습니다. 인코딩 형식을 확인하세요." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo index c474f7a..96ff3bd 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po index d398d13..5480854 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # Jannis Leidel , 2011 # Kostas , 2011 # lauris , 2011 -# Matas Dailyda , 2015-2017 +# Matas Dailyda , 2015-2018 # naktinis , 2012 # Nikolajus Krauklis , 2013 # Povilas Balzaravičius , 2011-2012 @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-04 11:04+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 08:24+0000\n" "Last-Translator: Matas Dailyda \n" "Language-Team: Lithuanian (http://www.transifex.com/django/django/language/" "lt/)\n" @@ -23,8 +23,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < " +"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? " +"1 : n % 1 != 0 ? 2: 3);\n" msgid "Afrikaans" msgstr "Afrikiečių" @@ -382,6 +383,9 @@ msgstr[1] "" msgstr[2] "" "Įsitikinkite, kad reikšmė sudaryta iš nemažiau kaip %(limit_value)d ženklų " "(dabartinis ilgis %(show_value)d)." +msgstr[3] "" +"Įsitikinkite, kad reikšmė sudaryta iš nemažiau kaip %(limit_value)d ženklų " +"(dabartinis ilgis %(show_value)d)." #, python-format msgid "" @@ -399,6 +403,12 @@ msgstr[1] "" msgstr[2] "" "Įsitikinkite, kad reikšmė sudaryta iš nedaugiau kaip %(limit_value)d ženklų " "(dabartinis ilgis %(show_value)d)." +msgstr[3] "" +"Įsitikinkite, kad reikšmė sudaryta iš nedaugiau kaip %(limit_value)d ženklų " +"(dabartinis ilgis %(show_value)d)." + +msgid "Enter a number." +msgstr "Įveskite skaičių." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." @@ -406,6 +416,7 @@ msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmuo." msgstr[1] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenys." msgstr[2] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų." +msgstr[3] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų." #, python-format msgid "Ensure that there are no more than %(max)s decimal place." @@ -413,6 +424,7 @@ msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmuo po kablelio." msgstr[1] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenys po kablelio." msgstr[2] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų po kablelio." +msgstr[3] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų po kablelio." #, python-format msgid "" @@ -424,6 +436,8 @@ msgstr[1] "" "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenys prieš kablelį." msgstr[2] "" "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų prieš kablelį." +msgstr[3] "" +"Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų prieš kablelį." #, python-format msgid "" @@ -483,6 +497,10 @@ msgstr "Didelis (8 baitų) sveikas skaičius" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' reikšmė turi būti arba True, arba False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' reikšmė turi būti True, False, arba None." + msgid "Boolean (Either True or False)" msgstr "Loginė reikšmė (Tiesa arba Netiesa)" @@ -659,9 +677,6 @@ msgstr "Šis laukas yra privalomas." msgid "Enter a whole number." msgstr "Įveskite pilną skaičių." -msgid "Enter a number." -msgstr "Įveskite skaičių." - msgid "Enter a valid date." msgstr "Įveskite tinkamą datą." @@ -674,6 +689,10 @@ msgstr "Įveskite tinkamą datą/laiką." msgid "Enter a valid duration." msgstr "Įveskite tinkamą trukmę." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Dienų skaičius turi būti tarp {min_days} ir {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Nebuvo nurodytas failas. Patikrinkite formos koduotę." @@ -696,6 +715,9 @@ msgstr[1] "" msgstr[2] "" "Įsitikinkite, kad failo pavadinimas sudarytas iš nedaugiau kaip %(max)d " "ženklų (dabartinis ilgis %(length)d)." +msgstr[3] "" +"Įsitikinkite, kad failo pavadinimas sudarytas iš nedaugiau kaip %(max)d " +"ženklų (dabartinis ilgis %(length)d)." msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Nurodykite failą arba pažymėkite išvalyti. Abu pasirinkimai negalimi." @@ -737,6 +759,7 @@ msgid_plural "Please submit %d or fewer forms." msgstr[0] "Prašome pateikti %d arba mažiau formų." msgstr[1] "Prašome pateikti %d arba mažiau formų." msgstr[2] "Prašome pateikti %d arba mažiau formų." +msgstr[3] "Prašome pateikti %d arba mažiau formų." #, python-format msgid "Please submit %d or more forms." @@ -744,6 +767,7 @@ msgid_plural "Please submit %d or more forms." msgstr[0] "Prašome pateikti %d arba daugiau formų." msgstr[1] "Prašome pateikti %d arba daugiau formų." msgstr[2] "Prašome pateikti %d arba daugiau formų." +msgstr[3] "Prašome pateikti %d arba daugiau formų." msgid "Order" msgstr "Nurodyti" @@ -817,6 +841,7 @@ msgid_plural "%(size)d bytes" msgstr[0] "%(size)d baitas" msgstr[1] "%(size)d baitai" msgstr[2] "%(size)d baitai" +msgstr[3] "%(size)d baitai" #, python-format msgid "%s KB" @@ -1087,6 +1112,7 @@ msgid_plural "%d years" msgstr[0] "%d metas" msgstr[1] "%d metai" msgstr[2] "%d metų" +msgstr[3] "%d metų" #, python-format msgid "%d month" @@ -1094,6 +1120,7 @@ msgid_plural "%d months" msgstr[0] "%d mėnuo" msgstr[1] "%d mėnesiai" msgstr[2] "%d mėnesių" +msgstr[3] "%d mėnesių" #, python-format msgid "%d week" @@ -1101,6 +1128,7 @@ msgid_plural "%d weeks" msgstr[0] "%d savaitė" msgstr[1] "%d savaitės" msgstr[2] "%d savaičių" +msgstr[3] "%d savaičių" #, python-format msgid "%d day" @@ -1108,6 +1136,7 @@ msgid_plural "%d days" msgstr[0] "%d diena" msgstr[1] "%d dienos" msgstr[2] "%d dienų" +msgstr[3] "%d dienų" #, python-format msgid "%d hour" @@ -1115,6 +1144,7 @@ msgid_plural "%d hours" msgstr[0] "%d valanda" msgstr[1] "%d valandos" msgstr[2] "%d valandų" +msgstr[3] "%d valandų" #, python-format msgid "%d minute" @@ -1122,6 +1152,7 @@ msgid_plural "%d minutes" msgstr[0] "%d minutė" msgstr[1] "%d minutės" msgstr[2] "%d minučių" +msgstr[3] "%d minučių" msgid "0 minutes" msgstr "0 minučių" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo index 786de09..a0771eb 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po index 1a57669..5367e97 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po @@ -3,18 +3,19 @@ # Translators: # edgars , 2011 # NullIsNot0 , 2017 -# NullIsNot0 , 2017 +# NullIsNot0 , 2017-2018 # Jannis Leidel , 2011 # krikulis , 2014 # Māris Nartišs , 2016 +# Mārtiņš Šulcs , 2018 # NullIsNot0 , 2018 # peterisb , 2016-2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-17 17:32+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-06-03 12:12+0000\n" "Last-Translator: NullIsNot0 \n" "Language-Team: Latvian (http://www.transifex.com/django/django/language/" "lv/)\n" @@ -391,6 +392,9 @@ msgstr[1] "" msgstr[2] "" "Vērtībai jābūt ne vairāk kā %(limit_value)d zīmēm (tai ir %(show_value)d)." +msgid "Enter a number." +msgstr "Ievadiet skaitli." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -436,7 +440,7 @@ msgstr "un" #, python-format msgid "%(model_name)s with this %(field_labels)s already exists." -msgstr "%(model_name)s ar šiem %(field_labels)s jau eksistē." +msgstr "%(model_name)s ar šādu lauka %(field_labels)s vērtību jau eksistē." #, python-format msgid "Value %(value)r is not a valid choice." @@ -450,7 +454,7 @@ msgstr "Šis lauks nevar būt tukšs" #, python-format msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "%(model_name)s ar nosaukumu %(field_label)s jau eksistē." +msgstr "%(model_name)s ar šādu lauka %(field_label)s vērtību jau eksistē." #. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'. #. Eg: "Title must be unique for pub_date year" @@ -477,6 +481,10 @@ msgstr "Liels (8 baitu) vesels skaitlis" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' vērtībai ir jābūt vai nu True vai False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' vērtībai jābūt True, False, vai None." + msgid "Boolean (Either True or False)" msgstr "Boolean (True vai False)" @@ -652,9 +660,6 @@ msgstr "Šis lauks ir obligāts." msgid "Enter a whole number." msgstr "Ievadiet veselu skaitli." -msgid "Enter a number." -msgstr "Ievadiet skaitli." - msgid "Enter a valid date." msgstr "Ievadiet korektu datumu." @@ -667,6 +672,10 @@ msgstr "Ievadiet korektu datumu/laiku." msgid "Enter a valid duration." msgstr "Ievadiet korektu ilgumu." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Dienu skaitam jābūt no {min_days} līdz {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Nav nosūtīts fails. Pārbaudiet formas kodējuma tipu." @@ -856,7 +865,7 @@ msgid "Wednesday" msgstr "trešdiena" msgid "Thursday" -msgstr "ceturdiena" +msgstr "ceturtdiena" msgid "Friday" msgstr "piektdiena" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo index f7433bf..c195a2a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po index 7626a47..e29166d 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po @@ -7,17 +7,17 @@ # Jannis Leidel , 2011 # jargalan , 2011 # Tsolmon , 2011 -# Zorig , 2013-2014,2016,2018 -# Анхбаяр Анхаа , 2013-2016 +# Zorig, 2013-2014,2016,2018 +# Анхбаяр Анхаа , 2013-2016,2018 # Баясгалан Цэвлээ , 2011,2015,2017 # Ганзориг БП , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-02-21 00:40+0000\n" -"Last-Translator: Zorig \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-09 06:54+0000\n" +"Last-Translator: Анхбаяр Анхаа \n" "Language-Team: Mongolian (http://www.transifex.com/django/django/language/" "mn/)\n" "MIME-Version: 1.0\n" @@ -168,7 +168,7 @@ msgid "Georgian" msgstr "Гүрж" msgid "Kabyle" -msgstr "" +msgstr "Кабилэ" msgid "Kazakh" msgstr "Казак" @@ -392,6 +392,9 @@ msgstr[1] "" "Ensure this value has at most %(limit_value)d characters (it has " "%(show_value)d)." +msgid "Enter a number." +msgstr "Тоон утга оруулна уу." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -471,6 +474,10 @@ msgstr "Том (8 байт) бүхэл тоо" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' заавал True эсвэл False утга авах." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "Boolean (Үнэн худлын аль нэг нь)" @@ -643,9 +650,6 @@ msgstr "Энэ талбарыг бөглөх шаардлагатай." msgid "Enter a whole number." msgstr "Бүхэл тоон утга оруулна уу." -msgid "Enter a number." -msgstr "Тоон утга оруулна уу." - msgid "Enter a valid date." msgstr "Зөв огноо оруулна уу." @@ -658,6 +662,10 @@ msgstr "Огноо/цаг-ыг зөв оруулна уу." msgid "Enter a valid duration." msgstr "Үргэлжилэх хугацааг зөв оруулна уу." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "Файл оруулаагүй байна. Маягтаас кодлох төрлийг чагтал. " @@ -1227,6 +1235,10 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Таний тохиргооны файл дээр DEBUG=TRUE гэж тохируулсан мөн URLs дээр тохиргоо хийгээгүй учраас " +"энэ хуудасыг харж байна." msgid "Django Documentation" msgstr "Джанго баримтжуулалт" @@ -1235,13 +1247,13 @@ msgid "Topics, references, & how-to's" msgstr "" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "Хичээл: Санал асуулга App" msgid "Get started with Django" msgstr "Джанготой ажиллаж эхлэх" msgid "Django Community" -msgstr "" +msgstr "Django Бүлгэм" msgid "Connect, get help, or contribute" msgstr "Холбогдох, тусламж авах эсвэл хувь нэмрээ оруулах" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo index 92a87f4..376044a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po index 0fa0463..23c7e15 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ # jensadne , 2014-2015 # Jon , 2015-2016 # Jon , 2014 -# Jon , 2017 +# Jon , 2017-2018 # Jon , 2013 # Jon , 2011 # Sigurd Gartmann , 2012 @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-27 12:38+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-30 11:29+0000\n" "Last-Translator: Jon \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/" "language/nb/)\n" @@ -168,6 +168,9 @@ msgstr "Japansk" msgid "Georgian" msgstr "Georgisk" +msgid "Kabyle" +msgstr "Kabylsk" + msgid "Kazakh" msgstr "Kasakhisk" @@ -389,6 +392,9 @@ msgstr[1] "" "Sørg for at denne verdien har %(limit_value)d eller færre tegn (den har nå " "%(show_value)d)." +msgid "Enter a number." +msgstr "Oppgi et tall." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -466,6 +472,10 @@ msgstr "Stort (8 byte) heltall" msgid "'%(value)s' value must be either True or False." msgstr "Verdien '%(value)s' må være enten True eller False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s'-verdien må være enten True, False, eller None." + msgid "Boolean (Either True or False)" msgstr "Boolsk (True eller False)" @@ -641,9 +651,6 @@ msgstr "Feltet er påkrevet." msgid "Enter a whole number." msgstr "Oppgi et heltall." -msgid "Enter a number." -msgstr "Oppgi et tall." - msgid "Enter a valid date." msgstr "Oppgi en gyldig dato." @@ -656,6 +663,10 @@ msgstr "Oppgi gyldig dato og tidspunkt." msgid "Enter a valid duration." msgstr "Oppgi en gyldig varighet." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Antall dager må være mellom {min_days} og {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Ingen fil ble sendt. Sjekk «encoding»-typen på skjemaet." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo index 6f820e1..fc25d6d 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po index c990aee..f8cd93b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-02-10 13:00+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-21 02:37+0000\n" "Last-Translator: Sagar Chalise \n" "Language-Team: Nepali (http://www.transifex.com/django/django/language/ne/)\n" "MIME-Version: 1.0\n" @@ -381,6 +381,9 @@ msgstr[1] "" "यो मान बढिमा पनि %(limit_value)d अक्षरहरु छ भन्ने निश्चित गर्नुहोस । (यसमा " "%(show_value)d छ ।)" +msgid "Enter a number." +msgstr "संख्या राख्नुहोस ।" + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -406,6 +409,7 @@ msgid "" "File extension '%(extension)s' is not allowed. Allowed extensions are: " "'%(allowed_extensions)s'." msgstr "" +"'%(extension)s' फाइलको अनुमति छैन। अनुमति भएका फाइलहरू: '%(allowed_extensions)s'" msgid "Null characters are not allowed." msgstr "शून्य मान अनुमति छैन।" @@ -457,6 +461,10 @@ msgstr "ठूलो (८ बाइटको) अंक" msgid "'%(value)s' value must be either True or False." msgstr "%(value)s' को मान True अथवा False हुनुपर्दछ ।." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "" + msgid "Boolean (Either True or False)" msgstr "बुलियन (True अथवा False)" @@ -619,9 +627,6 @@ msgstr "यो फाँट अनिवार्य छ ।" msgid "Enter a whole number." msgstr "संख्या राख्नुहोस ।" -msgid "Enter a number." -msgstr "संख्या राख्नुहोस ।" - msgid "Enter a valid date." msgstr "उपयुक्त मिति राख्नुहोस ।" @@ -634,6 +639,10 @@ msgstr "उपयुक्त मिति/समय राख्नुहोस msgid "Enter a valid duration." msgstr "उपयुक्त अवधि राख्नुहोस ।" +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "दिन गन्ती {min_days} र {max_days} बीचमा हुनु पर्छ । " + msgid "No file was submitted. Check the encoding type on the form." msgstr "कुनै फाईल पेश गरिएको छैन । फारममा ईनकोडिङको प्रकार जाँच गर्नुहोस । " @@ -1192,10 +1201,10 @@ msgid "Django Documentation" msgstr "ज्याङ्गो दस्तावेज ।" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "शीर्षक, सन्दर्भ तथा तरिकाहरू" msgid "Tutorial: A Polling App" -msgstr "" +msgstr "मतदान एप उदाहरण " msgid "Get started with Django" msgstr "ज्याङ्गो सुरु गर्नु होस ।" @@ -1204,4 +1213,4 @@ msgid "Django Community" msgstr "ज्याङ्गो समुदाय" msgid "Connect, get help, or contribute" -msgstr "" +msgstr "सहयोग अथवा योगदान गरी जोडिनु होस" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo index cfcc4a3..29b40b5 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po index bc674e4..e78cca6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ # konryd , 2011 # konryd , 2011 # Łukasz Rekucki (lqc) , 2011 -# m_aciek , 2016-2017 +# m_aciek , 2016-2018 # m_aciek , 2015 # Michał Pasternak , 2013 # p , 2012 @@ -30,8 +30,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-02 15:59+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 23:43+0000\n" "Last-Translator: m_aciek \n" "Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n" "MIME-Version: 1.0\n" @@ -420,6 +420,9 @@ msgstr[3] "" "Upewnij się, że ta wartość ma co najwyżej %(limit_value)d znaków (obecnie ma " "%(show_value)d)." +msgid "Enter a number." +msgstr "Wpisz liczbę." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -511,6 +514,10 @@ msgstr "Duża liczba całkowita (8 bajtów)" msgid "'%(value)s' value must be either True or False." msgstr "wartość '%(value)s' musi być True lub False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Wartość „%(value)s” musi wynosić True, False lub None." + msgid "Boolean (Either True or False)" msgstr "Wartość logiczna (True lub False – prawda lub fałsz)" @@ -687,9 +694,6 @@ msgstr "To pole jest wymagane." msgid "Enter a whole number." msgstr "Wpisz liczbę całkowitą." -msgid "Enter a number." -msgstr "Wpisz liczbę." - msgid "Enter a valid date." msgstr "Wpisz poprawną datę." @@ -702,6 +706,10 @@ msgstr "Wpisz poprawną datę/godzinę." msgid "Enter a valid duration." msgstr "Wpisz poprawny czas trwania." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Liczba dni musi wynosić między {min_days} a {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo index 4a4a42f..851c672 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po index 34b546a..01569ec 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po @@ -18,17 +18,19 @@ # Jannis Leidel , 2011 # Lucas Infante , 2015 # Luiz Boaretto , 2017 +# Marcelo Moro Brondani , 2018 # Sandro , 2011 # Sergio Garcia , 2015 # Tânia Andrea , 2017 # Wiliam Souza , 2015 +# Xico Petry , 2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-22 16:27+0000\n" -"Last-Translator: Camilo B. Moreira \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-19 17:55+0000\n" +"Last-Translator: Xico Petry \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/" "language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -178,6 +180,9 @@ msgstr "Japonês" msgid "Georgian" msgstr "Georgiano" +msgid "Kabyle" +msgstr "Cabila" + msgid "Kazakh" msgstr "Cazaque" @@ -400,6 +405,9 @@ msgstr[1] "" "Certifique-se de que o valor tenha no máximo %(limit_value)d caracteres (ele " "possui %(show_value)d)." +msgid "Enter a number." +msgstr "Informe um número." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -481,6 +489,10 @@ msgstr "Inteiro grande (8 byte)" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' valor deve ser True ou False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "O valor '%(value)s' deve ser True, False ou Nenhum." + msgid "Boolean (Either True or False)" msgstr "Booleano (Verdadeiro ou Falso)" @@ -657,9 +669,6 @@ msgstr "Este campo é obrigatório." msgid "Enter a whole number." msgstr "Informe um número inteiro." -msgid "Enter a number." -msgstr "Informe um número." - msgid "Enter a valid date." msgstr "Informe uma data válida." @@ -672,6 +681,10 @@ msgstr "Informe uma data/hora válida." msgid "Enter a valid duration." msgstr "Insira uma duração válida." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "O número de dias deve ser entre {min_days} e {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Nenhum arquivo enviado. Verifique o tipo de codificação do formulário." @@ -1144,6 +1157,11 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Se você estiver usando a tag ou incluindo o cabeçalho \"Referrer-Policy: no-referrer\", remova-os. A " +"proteção contra CSRF requer que o cabeçalho 'Referer' faça uma verificação " +"rigorosa do referenciador. Se você estiver preocupado com a privacidade, use " +"alternativas para links para sites de terceiros." msgid "" "You are seeing this message because this site requires a CSRF cookie when " diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo index 9c06471..0b0242a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po index f43332c..dbc03a6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-17 09:13+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 05:42+0000\n" "Last-Translator: Bogdan Mateescu\n" "Language-Team: Romanian (http://www.transifex.com/django/django/language/" "ro/)\n" @@ -168,7 +168,7 @@ msgid "Georgian" msgstr "Georgiană" msgid "Kabyle" -msgstr "" +msgstr "Kabyle" msgid "Kazakh" msgstr "Kazahă" @@ -381,8 +381,8 @@ msgstr[1] "" "Asigurați-vă că această valoare are cel puțin %(limit_value)d caractere (are " "%(show_value)d)." msgstr[2] "" -"Asigurați-vă că această valoare are cel puțin %(limit_value)d caractere (are " -"%(show_value)d)." +"Asigurați-vă că această valoare are cel puțin %(limit_value)d de caractere " +"(are %(show_value)d)." #, python-format msgid "" @@ -398,22 +398,25 @@ msgstr[1] "" "Asigurați-vă că această valoare are cel mult %(limit_value)d caractere (are " "%(show_value)d)." msgstr[2] "" -"Asigurați-vă că această valoare are cel mult %(limit_value)d caractere (are " -"%(show_value)d)." +"Asigurați-vă că această valoare are cel mult %(limit_value)d de caractere " +"(are %(show_value)d)." + +msgid "Enter a number." +msgstr "Introduceţi un număr." #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." msgstr[0] "Asigurați-vă că nu este mai mult de %(max)s cifră în total." msgstr[1] "Asigurați-vă că nu sunt mai mult de %(max)s cifre în total." -msgstr[2] "Asigurați-vă că nu sunt mai mult de %(max)s cifre în total." +msgstr[2] "Asigurați-vă că nu sunt mai mult de %(max)s de cifre în total." #, python-format msgid "Ensure that there are no more than %(max)s decimal place." msgid_plural "Ensure that there are no more than %(max)s decimal places." msgstr[0] "Asigurați-vă că nu este mai mult de %(max)s zecimală în total." msgstr[1] "Asigurați-vă că nu sunt mai mult de %(max)s zecimale în total." -msgstr[2] "Asigurați-vă că nu sunt mai mult de %(max)s zecimale în total." +msgstr[2] "Asigurați-vă că nu sunt mai mult de %(max)s de zecimale în total." #, python-format msgid "" @@ -425,7 +428,8 @@ msgstr[0] "" msgstr[1] "" "Asigurați-vă că nu sunt mai mult de %(max)s cifre înainte de punctul zecimal." msgstr[2] "" -"Asigurați-vă că nu sunt mai mult de %(max)s cifre înainte de punctul zecimal." +"Asigurați-vă că nu sunt mai mult de %(max)s de cifre înainte de punctul " +"zecimal." #, python-format msgid "" @@ -436,7 +440,7 @@ msgstr "" "'%(allowed_extensions)s'." msgid "Null characters are not allowed." -msgstr "" +msgstr "Caracterele Null nu sunt permise." msgid "and" msgstr "și" @@ -486,6 +490,10 @@ msgstr "Întreg mare (8 octeți)" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' trebuie să fie True sau False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' valoarea trebuie să fie True, False, sau None." + msgid "Boolean (Either True or False)" msgstr "Boolean (adevărat sau fals)" @@ -660,9 +668,6 @@ msgstr "Acest câmp este obligatoriu." msgid "Enter a whole number." msgstr "Introduceţi un număr întreg." -msgid "Enter a number." -msgstr "Introduceţi un număr." - msgid "Enter a valid date." msgstr "Introduceți o dată validă." @@ -675,6 +680,10 @@ msgstr "Introduceți o dată/oră validă." msgid "Enter a valid duration." msgstr "Introduceți o durată validă." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Numărul de zile trebuie să fie cuprins între {min_days} și {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Nici un fișier nu a fost trimis. Verificați tipul fișierului." @@ -689,13 +698,13 @@ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." msgid_plural "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr[0] "" -"Verificați că numele fișierului are cel mult %(max)d caractere (are " +"Asigurați-vă că numele fișierului are cel mult %(max)d caracter (are " "%(length)d)." msgstr[1] "" -"Verificați că numele fișierului are cel mult %(max)d caractere (are " +"Asigurați-vă că numele fișierului are cel mult %(max)d caractere (are " "%(length)d)." msgstr[2] "" -"Verificați că numele fișierului are cel mult %(max)d caractere (are " +"Asigurați-vă că numele fișierului are cel mult %(max)d de caractere (are " "%(length)d)." msgid "Please either submit a file or check the clear checkbox, not both." @@ -739,14 +748,14 @@ msgid "Please submit %d or fewer forms." msgid_plural "Please submit %d or fewer forms." msgstr[0] "Trimiteți maxim %d formular." msgstr[1] "Trimiteți maxim %d formulare." -msgstr[2] "Trimiteți maxim %d formulare." +msgstr[2] "Trimiteți maxim %d de formulare." #, python-format msgid "Please submit %d or more forms." msgid_plural "Please submit %d or more forms." msgstr[0] "Trimiteți minim %d formular." msgstr[1] "Trimiteți minim %d formulare." -msgstr[2] "Trimiteți minim %d formulare." +msgstr[2] "Trimiteți minim %d de formulare." msgid "Order" msgstr "Ordine" @@ -774,7 +783,7 @@ msgid "Please correct the duplicate values below." msgstr "Corectaţi valorile duplicate de mai jos." msgid "The inline value did not match the parent instance." -msgstr "" +msgstr "Valoarea în linie nu s-a potrivit cu instanța părinte." msgid "Select a valid choice. That choice is not one of the available choices." msgstr "" @@ -817,9 +826,9 @@ msgstr "da,nu,poate" #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" -msgstr[0] "%(size)d byte" -msgstr[1] "%(size)d bytes" -msgstr[2] "%(size)d bytes" +msgstr[0] "%(size)d octet" +msgstr[1] "%(size)d octeţi" +msgstr[2] "%(size)d de octeţi" #, python-format msgid "%s KB" @@ -1089,42 +1098,42 @@ msgid "%d year" msgid_plural "%d years" msgstr[0] "%d an" msgstr[1] "%d ani" -msgstr[2] "%d ani" +msgstr[2] "%d de ani" #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d lună" msgstr[1] "%d luni" -msgstr[2] "%d luni" +msgstr[2] "%d de luni" #, python-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d săptămână" msgstr[1] "%d săptămâni" -msgstr[2] "%d săptămâni" +msgstr[2] "%d de săptămâni" #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d zi" msgstr[1] "%d zile" -msgstr[2] "%d zile" +msgstr[2] "%d de zile" #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d oră" msgstr[1] "%d ore" -msgstr[2] "%d ore" +msgstr[2] "%d de ore" #, python-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "%d minută" +msgstr[0] "%d minut" msgstr[1] "%d minute" -msgstr[2] "%d minute" +msgstr[2] "%d de minute" msgid "0 minutes" msgstr "0 minute" @@ -1162,6 +1171,12 @@ msgid "" "If you're concerned about privacy, use alternatives like for links to third-party sites." msgstr "" +"Dacă utilizați eticheta sau " +"includeți antetul 'Referrer-Policy: no-referrer', te rugăm sa îl elimini. " +"Protecția CSRF necesită antetul 'Referer' pentru a face verificarea strictă " +"a 'referer'. Dacă sunteți îngrijorat de confidențialitate, utilizați " +"alternative ca pentru linkuri către site-uri " +"terțe." msgid "" "You are seeing this message because this site requires a CSRF cookie when " @@ -1187,7 +1202,7 @@ msgid "No year specified" msgstr "Niciun an specificat" msgid "Date out of range" -msgstr "" +msgstr "Dată în afara intervalului" msgid "No month specified" msgstr "Nicio lună specificată" @@ -1242,7 +1257,7 @@ msgid "Index of %(directory)s" msgstr "Index pentru %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Django: Framework-ul web pentru perfecționiști cu termene limită." #, python-format msgid "" @@ -1263,18 +1278,21 @@ msgid "" "\">DEBUG=True is in your settings file and you have not configured any " "URLs." msgstr "" +"Vedeți această pagină deoarece DEBUG=True este în fișierul de setări și nu ați configurat niciun URL." msgid "Django Documentation" msgstr "Documentația Django" msgid "Topics, references, & how-to's" -msgstr "" +msgstr "Subiecte, referinţe, & cum să" msgid "Tutorial: A Polling App" msgstr "Tutorial: O aplicație de votare" msgid "Get started with Django" -msgstr "" +msgstr "Începeți cu Django" msgid "Django Community" msgstr "Comunitatea Django" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/formats.py b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/formats.py index ba3fd73..11f4e2e 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/formats.py +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ro/formats.py @@ -9,13 +9,27 @@ YEAR_MONTH_FORMAT = 'F Y' MONTH_DAY_FORMAT = 'j F' SHORT_DATE_FORMAT = 'd.m.Y' SHORT_DATETIME_FORMAT = 'd.m.Y, H:i' -# FIRST_DAY_OF_WEEK = +FIRST_DAY_OF_WEEK = 1 # The *_INPUT_FORMATS strings use the Python strftime format syntax, # see http://docs.python.org/library/datetime.html#strftime-strptime-behavior -# DATE_INPUT_FORMATS = -# TIME_INPUT_FORMATS = -# DATETIME_INPUT_FORMATS = +DATE_INPUT_FORMATS = [ + '%d.%m.%Y', + '%d.%b.%Y', + '%d %B %Y', + '%A, %d %B %Y', +] +TIME_INPUT_FORMATS = [ + '%H:%M', + '%H:%M:%S', + '%H:%M:%S.%f', +] +DATETIME_INPUT_FORMATS = [ + '%d.%m.%Y, %H:%M', + '%d.%m.%Y, %H:%M:%S', + '%d.%B.%Y, %H:%M', + '%d.%B.%Y, %H:%M:%S', +] DECIMAL_SEPARATOR = ',' THOUSAND_SEPARATOR = '.' -# NUMBER_GROUPING = +NUMBER_GROUPING = 3 diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo index 604202d..a681d9e 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po index 7a2563a..ba5c81b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ # Denis Darii , 2011 # Dimmus , 2011 # eigrad , 2012 -# Eugene MechanisM , 2013 +# Eugene , 2013 # eXtractor , 2015 # Igor Melnyk, 2014 # Ivan Khomutov , 2017 @@ -14,16 +14,16 @@ # lilo.panic, 2016 # Mikhail Zholobov , 2013 # Nikolay Korotkiy , 2018 -# Vasiliy Anikin , 2017 +# Вася Аникин , 2017 # Алексей Борискин , 2013-2017 -# Дмитрий Шатера , 2016 +# Дмитрий Шатера , 2016,2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-13 10:40+0000\n" -"Last-Translator: Nikolay Korotkiy \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-07-23 14:39+0000\n" +"Last-Translator: SeryiMysh \n" "Language-Team: Russian (http://www.transifex.com/django/django/language/" "ru/)\n" "MIME-Version: 1.0\n" @@ -413,6 +413,9 @@ msgstr[3] "" "Убедитесь, что это значение содержит не более %(limit_value)d символов " "(сейчас %(show_value)d)." +msgid "Enter a number." +msgstr "Введите число." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -499,6 +502,10 @@ msgstr "Длинное целое (8 байт)" msgid "'%(value)s' value must be either True or False." msgstr "Значение '%(value)s' должно быть True или False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Значение '%(value)s' должно быть True, False или None." + msgid "Boolean (Either True or False)" msgstr "Логическое (True или False)" @@ -677,9 +684,6 @@ msgstr "Обязательное поле." msgid "Enter a whole number." msgstr "Введите целое число." -msgid "Enter a number." -msgstr "Введите число." - msgid "Enter a valid date." msgstr "Введите правильную дату." @@ -692,6 +696,10 @@ msgstr "Введите правильную дату и время." msgid "Enter a valid duration." msgstr "Введите правильную продолжительность." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Количество дней должно быть в диапазоне от {min_days} до {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Ни одного файла не было отправлено. Проверьте тип кодировки формы." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo index ec51034..75cf054 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po index a93ad3d..c73db58 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po @@ -2,14 +2,14 @@ # # Translators: # Besnik , 2011-2014 -# Besnik , 2015-2017 +# Besnik , 2015-2018 # Jannis Leidel , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-29 22:51+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 09:14+0000\n" "Last-Translator: Besnik \n" "Language-Team: Albanian (http://www.transifex.com/django/django/language/" "sq/)\n" @@ -160,6 +160,9 @@ msgstr "Japoneze" msgid "Georgian" msgstr "Gjeorgjiane" +msgid "Kabyle" +msgstr "Kabilase" + msgid "Kazakh" msgstr "Kazake" @@ -382,6 +385,9 @@ msgstr[1] "" "Sigurohuni që kjo vlerë ka të shumtën %(limit_value)d shenja (ka " "%(show_value)d)." +msgid "Enter a number." +msgstr "Jepni një numër." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -462,6 +468,10 @@ msgstr "Numër i plotë i madh (8 bajte)" msgid "'%(value)s' value must be either True or False." msgstr "Vlera '%(value)s' duhet të jetë True ose False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "Vlera për '%(value)s' duhet të jetë ose True, ose False, ose None." + msgid "Boolean (Either True or False)" msgstr "Buleane (Ose True, ose False)" @@ -638,9 +648,6 @@ msgstr "Kjo fushë është e domosdoshme." msgid "Enter a whole number." msgstr "Jepni një numër të tërë." -msgid "Enter a number." -msgstr "Jepni një numër." - msgid "Enter a valid date." msgstr "Jepni një datë të vlefshme." @@ -653,6 +660,10 @@ msgstr "Jepni një datë/kohë të vlefshme." msgid "Enter a valid duration." msgstr "Jepni një kohëzgjatje të vlefshme." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Numri i ditëve duhet të jetë mes {min_days} dhe {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "" "S’u parashtrua ndonjë kartelë. Kontrolloni llojin e kodimit te formulari." @@ -1217,7 +1228,7 @@ msgid "Index of %(directory)s" msgstr "Tregues i %(directory)s" msgid "Django: the Web framework for perfectionists with deadlines." -msgstr "" +msgstr "Django: platforma Web për perfeksionistë me afate." #, python-format msgid "" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo index 1b736db..467823b 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po index d596075..5f426af 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-30 10:00+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 20:03+0000\n" "Last-Translator: Branko Kokanovic \n" "Language-Team: Serbian (http://www.transifex.com/django/django/language/" "sr/)\n" @@ -392,6 +392,9 @@ msgstr[2] "" "Ово поље не сме да има више од %(limit_value)d карактера (тренутно има " "%(show_value)d)." +msgid "Enter a number." +msgstr "Унесите број." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -474,6 +477,10 @@ msgstr "Велики (8 бајтова) цео број" msgid "'%(value)s' value must be either True or False." msgstr "Вредност '%(value)s' мора бити или True или False." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' вредност мора бити или True, False, или None." + msgid "Boolean (Either True or False)" msgstr "Булова вредност (True или False)" @@ -650,9 +657,6 @@ msgstr "Ово поље се мора попунити." msgid "Enter a whole number." msgstr "Унесите цео број." -msgid "Enter a number." -msgstr "Унесите број." - msgid "Enter a valid date." msgstr "Унесите исправан датум." @@ -665,6 +669,10 @@ msgstr "Унесите исправан датум/време." msgid "Enter a valid duration." msgstr "Унесите исправан временски интервал." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Број дана мора бити између {min_days} и {max_days}." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Фајл није пребачен. Проверите тип енкодирања на форми." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo index 9de95da..49dc53a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.po index 8d9ab3d..1747595 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/th/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Abhabongse Janthong, 2015 # Jannis Leidel , 2011 -# Kowit Charoenratchatabhan , 2014 +# Kowit Charoenratchatabhan , 2014,2018 # Naowal Siripatana , 2017 # sipp11 , 2014 # Suteepat Damrongyingsupab , 2011-2012 @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-15 16:15+0100\n" -"PO-Revision-Date: 2017-11-16 01:13+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 00:21+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Thai (http://www.transifex.com/django/django/language/th/)\n" "MIME-Version: 1.0\n" @@ -164,6 +164,9 @@ msgstr "ญี่ปุ่น" msgid "Georgian" msgstr "จอร์เจีย" +msgid "Kabyle" +msgstr "" + msgid "Kazakh" msgstr "คาซัค" @@ -288,7 +291,7 @@ msgid "Traditional Chinese" msgstr "จีนตัวเต็ม" msgid "Messages" -msgstr "" +msgstr "ข้อความ" msgid "Site Maps" msgstr "" @@ -300,10 +303,10 @@ msgid "Syndication" msgstr "" msgid "That page number is not an integer" -msgstr "" +msgstr "หมายเลขหน้าดังกล่าวไม่ใช่จำนวนเต็ม" msgid "That page number is less than 1" -msgstr "" +msgstr "หมายเลขหน้าดังกล่าวมีค่าน้อยกว่า 1" msgid "That page contains no results" msgstr "" @@ -372,6 +375,9 @@ msgid_plural "" "%(show_value)d)." msgstr[0] "" +msgid "Enter a number." +msgstr "กรอกหมายเลข" + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -435,13 +441,17 @@ msgstr "จำนวนเต็ม" #, python-format msgid "'%(value)s' value must be an integer." -msgstr "" +msgstr "ค่าของ %(value)s ต้องเป็น integer" msgid "Big (8 byte) integer" msgstr "จำนวนเต็ม (8 byte)" #, python-format msgid "'%(value)s' value must be either True or False." +msgstr "ค่าของ %(value)s ต้องเป็น True หรือ False อย่างใดอย่างหนึ่ง" + +#, python-format +msgid "'%(value)s' value must be either True, False, or None." msgstr "" msgid "Boolean (Either True or False)" @@ -498,7 +508,7 @@ msgid "" msgstr "" msgid "Duration" -msgstr "" +msgstr "ช่วงเวลา" msgid "Email address" msgstr "อีเมล" @@ -607,9 +617,6 @@ msgstr "ฟิลด์นี้จำเป็น" msgid "Enter a whole number." msgstr "กรอกหมายเลข" -msgid "Enter a number." -msgstr "กรอกหมายเลข" - msgid "Enter a valid date." msgstr "กรุณาใส่วัน" @@ -620,6 +627,10 @@ msgid "Enter a valid date/time." msgstr "กรุณาใส่วันเวลา" msgid "Enter a valid duration." +msgstr "ใส่ระยะเวลาที่ถูกต้อง" + +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." msgstr "" msgid "No file was submitted. Check the encoding type on the form." @@ -656,7 +667,7 @@ msgid "Enter a complete value." msgstr "" msgid "Enter a valid UUID." -msgstr "" +msgstr "ใส่ UUID ที่ถูกต้อง" #. Translators: This is the default suffix added to form field labels msgid ":" @@ -1045,7 +1056,7 @@ msgid "0 minutes" msgstr "0 นาที" msgid "Forbidden" -msgstr "" +msgstr "หวงห้าม" msgid "CSRF verification failed. Request aborted." msgstr "" @@ -1172,10 +1183,10 @@ msgid "Tutorial: A Polling App" msgstr "" msgid "Get started with Django" -msgstr "" +msgstr "เริ่มต้นกับ Django" msgid "Django Community" -msgstr "" +msgstr "ชุมชน Django" msgid "Connect, get help, or contribute" msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo index 83f6d1c..b45e506 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po index 266d21c..f11c6bb 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Ahmet Emre Aladağ , 2013 -# BouRock, 2015-2017 +# BouRock, 2015-2018 # BouRock, 2014-2015 # Caner Başaran , 2013 # Cihad GÜNDOĞDU , 2012 @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2017-12-04 11:48+0000\n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-05-18 09:51+0000\n" "Last-Translator: BouRock\n" "Language-Team: Turkish (http://www.transifex.com/django/django/language/" "tr/)\n" @@ -394,6 +394,9 @@ msgstr[1] "" "Bu değerin en fazla %(limit_value)d karaktere sahip olduğuna emin olun (şu " "an %(show_value)d)." +msgid "Enter a number." +msgstr "Bir sayı girin." + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -475,6 +478,10 @@ msgstr "Büyük (8 bayt) tamsayı" msgid "'%(value)s' value must be either True or False." msgstr "'%(value)s' değeri ya True ya da False olmak zorundadır." +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' değeri ya True, False ya da None olmak zorundadır." + msgid "Boolean (Either True or False)" msgstr "Boolean (Ya True ya da False)" @@ -651,9 +658,6 @@ msgstr "Bu alan zorunludur." msgid "Enter a whole number." msgstr "Tam bir sayı girin." -msgid "Enter a number." -msgstr "Bir sayı girin." - msgid "Enter a valid date." msgstr "Geçerli bir tarih girin." @@ -666,6 +670,10 @@ msgstr "Geçerli bir tarih/saat girin." msgid "Enter a valid duration." msgstr "Geçerli bir süre girin." +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "Gün sayıları {min_days} ve {max_days} arasında olmak zorundadır." + msgid "No file was submitted. Check the encoding type on the form." msgstr "Hiç dosya gönderilmedi. Formdaki kodlama türünü kontrol edin." diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo index b3a8379..6614198 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.po index 3c376ce..f239ee5 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/conf/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,11 +1,12 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Bestony , 2017-2018 +# Bai HuanCheng (Bestony) , 2017-2018 # Daniel Duan , 2013 # Jannis Leidel , 2011 # Kevin Sze , 2012 # Lele Long , 2011,2015,2017 +# Le Yang , 2018 # Liping Wang , 2016-2017 # mozillazg , 2016 # Ronald White , 2014 @@ -24,9 +25,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-01 21:10+0100\n" -"PO-Revision-Date: 2018-01-17 01:14+0000\n" -"Last-Translator: Ziya Tang \n" +"POT-Creation-Date: 2018-05-17 11:49+0200\n" +"PO-Revision-Date: 2018-06-25 13:50+0000\n" +"Last-Translator: Le Yang \n" "Language-Team: Chinese (China) (http://www.transifex.com/django/django/" "language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -389,6 +390,9 @@ msgid_plural "" msgstr[0] "" "确保该变量包含不超过 %(limit_value)d 字符 (目前字符数 %(show_value)d)。" +msgid "Enter a number." +msgstr "输入一个数字。" + #, python-format msgid "Ensure that there are no more than %(max)s digit in total." msgid_plural "Ensure that there are no more than %(max)s digits in total." @@ -465,6 +469,10 @@ msgstr "大整数(8字节)" msgid "'%(value)s' value must be either True or False." msgstr "’%(value)s‘ 必须为 True 或者 False。" +#, python-format +msgid "'%(value)s' value must be either True, False, or None." +msgstr "'%(value)s' 值必须是 None, True 或 False 之一。" + msgid "Boolean (Either True or False)" msgstr "布尔值(True或False)" @@ -631,9 +639,6 @@ msgstr "这个字段是必填项。" msgid "Enter a whole number." msgstr "输入整数。" -msgid "Enter a number." -msgstr "输入一个数字。" - msgid "Enter a valid date." msgstr "输入一个有效的日期。" @@ -646,6 +651,10 @@ msgstr "输入一个有效的日期/时间。" msgid "Enter a valid duration." msgstr "请输入有效的时长。" +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + msgid "No file was submitted. Check the encoding type on the form." msgstr "未提交文件。请检查表单的编码类型。" diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/project_template/manage.py-tpl b/thesisenv/lib/python3.6/site-packages/django/conf/project_template/manage.py-tpl index 9f83e65..48c9190 100755 --- a/thesisenv/lib/python3.6/site-packages/django/conf/project_template/manage.py-tpl +++ b/thesisenv/lib/python3.6/site-packages/django/conf/project_template/manage.py-tpl @@ -2,8 +2,8 @@ import os import sys -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings") +if __name__ == '__main__': + os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/thesisenv/lib/python3.6/site-packages/django/conf/project_template/project_name/wsgi.py-tpl b/thesisenv/lib/python3.6/site-packages/django/conf/project_template/project_name/wsgi.py-tpl index 0d68b95..1ee28d0 100644 --- a/thesisenv/lib/python3.6/site-packages/django/conf/project_template/project_name/wsgi.py-tpl +++ b/thesisenv/lib/python3.6/site-packages/django/conf/project_template/project_name/wsgi.py-tpl @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings") +os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings') application = get_wsgi_application() diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/actions.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/actions.py index 1bad813..1e1c3bd 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/actions.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/actions.py @@ -4,9 +4,8 @@ Built-in, globally-available admin actions. from django.contrib import messages from django.contrib.admin import helpers -from django.contrib.admin.utils import get_deleted_objects, model_ngettext +from django.contrib.admin.utils import model_ngettext from django.core.exceptions import PermissionDenied -from django.db import router from django.template.response import TemplateResponse from django.utils.translation import gettext as _, gettext_lazy @@ -24,16 +23,9 @@ def delete_selected(modeladmin, request, queryset): opts = modeladmin.model._meta app_label = opts.app_label - # Check that the user has delete permission for the actual model - if not modeladmin.has_delete_permission(request): - raise PermissionDenied - - using = router.db_for_write(modeladmin.model) - # Populate deletable_objects, a data structure of all related objects that # will also be deleted. - deletable_objects, model_count, perms_needed, protected = get_deleted_objects( - queryset, opts, request.user, modeladmin.admin_site, using) + deletable_objects, model_count, perms_needed, protected = modeladmin.get_deleted_objects(queryset, request) # The user has already confirmed the deletion. # Do the deletion and return None to display the change list view again. @@ -45,7 +37,7 @@ def delete_selected(modeladmin, request, queryset): for obj in queryset: obj_display = str(obj) modeladmin.log_deletion(request, obj, obj_display) - queryset.delete() + modeladmin.delete_queryset(request, queryset) modeladmin.message_user(request, _("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(modeladmin.opts, n) }, messages.SUCCESS) @@ -59,19 +51,19 @@ def delete_selected(modeladmin, request, queryset): else: title = _("Are you sure?") - context = dict( - modeladmin.admin_site.each_context(request), - title=title, - objects_name=str(objects_name), - deletable_objects=[deletable_objects], - model_count=dict(model_count).items(), - queryset=queryset, - perms_lacking=perms_needed, - protected=protected, - opts=opts, - action_checkbox_name=helpers.ACTION_CHECKBOX_NAME, - media=modeladmin.media, - ) + context = { + **modeladmin.admin_site.each_context(request), + 'title': title, + 'objects_name': str(objects_name), + 'deletable_objects': [deletable_objects], + 'model_count': dict(model_count).items(), + 'queryset': queryset, + 'perms_lacking': perms_needed, + 'protected': protected, + 'opts': opts, + 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, + 'media': modeladmin.media, + } request.current_app = modeladmin.admin_site.name @@ -83,4 +75,5 @@ def delete_selected(modeladmin, request, queryset): ], context) +delete_selected.allowed_permissions = ('delete',) delete_selected.short_description = gettext_lazy("Delete selected %(verbose_name_plural)s") diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/apps.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/apps.py index df7d669..36c1576 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/apps.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/apps.py @@ -7,6 +7,7 @@ from django.utils.translation import gettext_lazy as _ class SimpleAdminConfig(AppConfig): """Simple AppConfig which does not do automatic discovery.""" + default_site = 'django.contrib.admin.sites.AdminSite' name = 'django.contrib.admin' verbose_name = _("Administration") diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/checks.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/checks.py index 97d1a41..8dd5a72 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/checks.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/checks.py @@ -1,3 +1,4 @@ +import warnings from itertools import chain from django.apps import apps @@ -9,10 +10,13 @@ from django.core import checks from django.core.exceptions import FieldDoesNotExist from django.db import models from django.db.models.constants import LOOKUP_SEP +from django.db.models.expressions import Combinable, F, OrderBy from django.forms.models import ( BaseModelForm, BaseModelFormSet, _get_foreign_key, ) from django.template.engine import Engine +from django.utils.deprecation import RemovedInDjango30Warning +from django.utils.inspect import get_func_args def check_admin_app(app_configs, **kwargs): @@ -65,21 +69,21 @@ def check_dependencies(**kwargs): class BaseModelAdminChecks: def check(self, admin_obj, **kwargs): - errors = [] - errors.extend(self._check_autocomplete_fields(admin_obj)) - errors.extend(self._check_raw_id_fields(admin_obj)) - errors.extend(self._check_fields(admin_obj)) - errors.extend(self._check_fieldsets(admin_obj)) - errors.extend(self._check_exclude(admin_obj)) - errors.extend(self._check_form(admin_obj)) - errors.extend(self._check_filter_vertical(admin_obj)) - errors.extend(self._check_filter_horizontal(admin_obj)) - errors.extend(self._check_radio_fields(admin_obj)) - errors.extend(self._check_prepopulated_fields(admin_obj)) - errors.extend(self._check_view_on_site_url(admin_obj)) - errors.extend(self._check_ordering(admin_obj)) - errors.extend(self._check_readonly_fields(admin_obj)) - return errors + return [ + *self._check_autocomplete_fields(admin_obj), + *self._check_raw_id_fields(admin_obj), + *self._check_fields(admin_obj), + *self._check_fieldsets(admin_obj), + *self._check_exclude(admin_obj), + *self._check_form(admin_obj), + *self._check_filter_vertical(admin_obj), + *self._check_filter_horizontal(admin_obj), + *self._check_radio_fields(admin_obj), + *self._check_prepopulated_fields(admin_obj), + *self._check_view_on_site_url(admin_obj), + *self._check_ordering(admin_obj), + *self._check_readonly_fields(admin_obj), + ] def _check_autocomplete_fields(self, obj): """ @@ -206,12 +210,13 @@ class BaseModelAdminChecks: elif not isinstance(obj.fieldsets, (list, tuple)): return must_be('a list or tuple', option='fieldsets', obj=obj, id='admin.E007') else: + seen_fields = [] return list(chain.from_iterable( - self._check_fieldsets_item(obj, obj.model, fieldset, 'fieldsets[%d]' % index) + self._check_fieldsets_item(obj, obj.model, fieldset, 'fieldsets[%d]' % index, seen_fields) for index, fieldset in enumerate(obj.fieldsets) )) - def _check_fieldsets_item(self, obj, model, fieldset, label): + def _check_fieldsets_item(self, obj, model, fieldset, label, seen_fields): """ Check an item of `fieldsets`, i.e. check that this is a pair of a set name and a dictionary containing "fields" key. """ @@ -232,8 +237,8 @@ class BaseModelAdminChecks: elif not isinstance(fieldset[1]['fields'], (list, tuple)): return must_be('a list or tuple', option="%s[1]['fields']" % label, obj=obj, id='admin.E008') - fields = flatten(fieldset[1]['fields']) - if len(fields) != len(set(fields)): + seen_fields.extend(flatten(fieldset[1]['fields'])) + if len(seen_fields) != len(set(seen_fields)): return [ checks.Error( "There are duplicate field(s) in '%s[1]'." % label, @@ -485,7 +490,13 @@ class BaseModelAdminChecks: def _check_ordering_item(self, obj, model, field_name, label): """ Check that `ordering` refers to existing fields. """ - + if isinstance(field_name, (Combinable, OrderBy)): + if not isinstance(field_name, OrderBy): + field_name = field_name.asc() + if isinstance(field_name.expression, F): + field_name = field_name.expression.name + else: + return [] if field_name == '?' and len(obj.ordering) != 1: return [ checks.Error( @@ -554,20 +565,22 @@ class BaseModelAdminChecks: class ModelAdminChecks(BaseModelAdminChecks): def check(self, admin_obj, **kwargs): - errors = super().check(admin_obj) - errors.extend(self._check_save_as(admin_obj)) - errors.extend(self._check_save_on_top(admin_obj)) - errors.extend(self._check_inlines(admin_obj)) - errors.extend(self._check_list_display(admin_obj)) - errors.extend(self._check_list_display_links(admin_obj)) - errors.extend(self._check_list_filter(admin_obj)) - errors.extend(self._check_list_select_related(admin_obj)) - errors.extend(self._check_list_per_page(admin_obj)) - errors.extend(self._check_list_max_show_all(admin_obj)) - errors.extend(self._check_list_editable(admin_obj)) - errors.extend(self._check_search_fields(admin_obj)) - errors.extend(self._check_date_hierarchy(admin_obj)) - return errors + return [ + *super().check(admin_obj), + *self._check_save_as(admin_obj), + *self._check_save_on_top(admin_obj), + *self._check_inlines(admin_obj), + *self._check_list_display(admin_obj), + *self._check_list_display_links(admin_obj), + *self._check_list_filter(admin_obj), + *self._check_list_select_related(admin_obj), + *self._check_list_per_page(admin_obj), + *self._check_list_max_show_all(admin_obj), + *self._check_list_editable(admin_obj), + *self._check_search_fields(admin_obj), + *self._check_date_hierarchy(admin_obj), + *self._check_action_permission_methods(admin_obj), + ] def _check_save_as(self, obj): """ Check save_as is a boolean. """ @@ -643,54 +656,32 @@ class ModelAdminChecks(BaseModelAdminChecks): elif hasattr(obj, item): return [] elif hasattr(model, item): - # getattr(model, item) could be an X_RelatedObjectsDescriptor try: field = model._meta.get_field(item) except FieldDoesNotExist: - try: - field = getattr(model, item) - except AttributeError: - field = None - - if field is None: - return [ - checks.Error( - "The value of '%s' refers to '%s', which is not a " - "callable, an attribute of '%s', or an attribute or method on '%s.%s'." % ( - label, item, obj.__class__.__name__, model._meta.app_label, model._meta.object_name - ), - obj=obj.__class__, - id='admin.E108', - ) - ] - elif isinstance(field, models.ManyToManyField): - return [ - checks.Error( - "The value of '%s' must not be a ManyToManyField." % label, - obj=obj.__class__, - id='admin.E109', - ) - ] + return [] else: + if isinstance(field, models.ManyToManyField): + return [ + checks.Error( + "The value of '%s' must not be a ManyToManyField." % label, + obj=obj.__class__, + id='admin.E109', + ) + ] return [] else: - try: - model._meta.get_field(item) - except FieldDoesNotExist: - return [ - # This is a deliberate repeat of E108; there's more than one path - # required to test this condition. - checks.Error( - "The value of '%s' refers to '%s', which is not a callable, " - "an attribute of '%s', or an attribute or method on '%s.%s'." % ( - label, item, obj.__class__.__name__, model._meta.app_label, model._meta.object_name - ), - obj=obj.__class__, - id='admin.E108', - ) - ] - else: - return [] + return [ + checks.Error( + "The value of '%s' refers to '%s', which is not a callable, " + "an attribute of '%s', or an attribute or method on '%s.%s'." % ( + label, item, obj.__class__.__name__, + model._meta.app_label, model._meta.object_name, + ), + obj=obj.__class__, + id='admin.E108', + ) + ] def _check_list_display_links(self, obj): """ Check that list_display_links is a unique subset of list_display. @@ -901,19 +892,47 @@ class ModelAdminChecks(BaseModelAdminChecks): else: return [] + def _check_action_permission_methods(self, obj): + """ + Actions with an allowed_permission attribute require the ModelAdmin to + implement a has__permission() method for each permission. + """ + actions = obj._get_base_actions() + errors = [] + for func, name, _ in actions: + if not hasattr(func, 'allowed_permissions'): + continue + for permission in func.allowed_permissions: + method_name = 'has_%s_permission' % permission + if not hasattr(obj, method_name): + errors.append( + checks.Error( + '%s must define a %s() method for the %s action.' % ( + obj.__class__.__name__, + method_name, + func.__name__, + ), + obj=obj.__class__, + id='admin.E129', + ) + ) + return errors + class InlineModelAdminChecks(BaseModelAdminChecks): def check(self, inline_obj, **kwargs): - errors = super().check(inline_obj) + self._check_has_add_permission(inline_obj) parent_model = inline_obj.parent_model - errors.extend(self._check_relation(inline_obj, parent_model)) - errors.extend(self._check_exclude_of_parent_model(inline_obj, parent_model)) - errors.extend(self._check_extra(inline_obj)) - errors.extend(self._check_max_num(inline_obj)) - errors.extend(self._check_min_num(inline_obj)) - errors.extend(self._check_formset(inline_obj)) - return errors + return [ + *super().check(inline_obj), + *self._check_relation(inline_obj, parent_model), + *self._check_exclude_of_parent_model(inline_obj, parent_model), + *self._check_extra(inline_obj), + *self._check_max_num(inline_obj), + *self._check_min_num(inline_obj), + *self._check_formset(inline_obj), + ] def _check_exclude_of_parent_model(self, obj, parent_model): # Do not perform more specific checks if the base checks result in an @@ -988,6 +1007,20 @@ class InlineModelAdminChecks(BaseModelAdminChecks): else: return [] + def _check_has_add_permission(self, obj): + cls = obj.__class__ + try: + func = cls.has_add_permission + except AttributeError: + pass + else: + args = get_func_args(func) + if 'obj' not in args: + warnings.warn( + "Update %s.has_add_permission() to accept a positional " + "`obj` argument." % cls.__name__, RemovedInDjango30Warning + ) + def must_be(type, option, obj, id): return [ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/filters.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/filters.py index b35460c..7cf75bc 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/filters.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/filters.py @@ -27,8 +27,9 @@ class ListFilter: self.used_parameters = {} if self.title is None: raise ImproperlyConfigured( - "The list filter '%s' does not specify " - "a 'title'." % self.__class__.__name__) + "The list filter '%s' does not specify a 'title'." + % self.__class__.__name__ + ) def has_output(self): """ @@ -66,8 +67,9 @@ class SimpleListFilter(ListFilter): super().__init__(request, params, model, model_admin) if self.parameter_name is None: raise ImproperlyConfigured( - "The list filter '%s' does not specify " - "a 'parameter_name'." % self.__class__.__name__) + "The list filter '%s' does not specify a 'parameter_name'." + % self.__class__.__name__ + ) if self.parameter_name in params: value = params.pop(self.parameter_name) self.used_parameters[self.parameter_name] = value @@ -93,7 +95,8 @@ class SimpleListFilter(ListFilter): """ raise NotImplementedError( 'The SimpleListFilter.lookups() method must be overridden to ' - 'return a list of tuples (value, verbose value)') + 'return a list of tuples (value, verbose value).' + ) def expected_parameters(self): return [self.parameter_name] @@ -101,13 +104,13 @@ class SimpleListFilter(ListFilter): def choices(self, changelist): yield { 'selected': self.value() is None, - 'query_string': changelist.get_query_string({}, [self.parameter_name]), + 'query_string': changelist.get_query_string(remove=[self.parameter_name]), 'display': _('All'), } for lookup, title in self.lookup_choices: yield { 'selected': self.value() == str(lookup), - 'query_string': changelist.get_query_string({self.parameter_name: lookup}, []), + 'query_string': changelist.get_query_string({self.parameter_name: lookup}), 'display': title, } @@ -152,9 +155,8 @@ class FieldListFilter(ListFilter): @classmethod def create(cls, field, request, params, model, model_admin, field_path): for test, list_filter_class in cls._field_list_filters: - if not test(field): - continue - return list_filter_class(field, request, params, model, model_admin, field_path=field_path) + if test(field): + return list_filter_class(field, request, params, model, model_admin, field_path=field_path) class RelatedFieldListFilter(FieldListFilter): @@ -162,8 +164,8 @@ class RelatedFieldListFilter(FieldListFilter): other_model = get_model_from_relation(field) self.lookup_kwarg = '%s__%s__exact' % (field_path, field.target_field.name) self.lookup_kwarg_isnull = '%s__isnull' % field_path - self.lookup_val = request.GET.get(self.lookup_kwarg) - self.lookup_val_isnull = request.GET.get(self.lookup_kwarg_isnull) + self.lookup_val = params.get(self.lookup_kwarg) + self.lookup_val_isnull = params.get(self.lookup_kwarg_isnull) super().__init__(field, request, params, model, model_admin, field_path) self.lookup_choices = self.field_choices(field, request, model_admin) if hasattr(field, 'verbose_name'): @@ -197,26 +199,19 @@ class RelatedFieldListFilter(FieldListFilter): def choices(self, changelist): yield { 'selected': self.lookup_val is None and not self.lookup_val_isnull, - 'query_string': changelist.get_query_string( - {}, - [self.lookup_kwarg, self.lookup_kwarg_isnull] - ), + 'query_string': changelist.get_query_string(remove=[self.lookup_kwarg, self.lookup_kwarg_isnull]), 'display': _('All'), } for pk_val, val in self.lookup_choices: yield { 'selected': self.lookup_val == str(pk_val), - 'query_string': changelist.get_query_string({ - self.lookup_kwarg: pk_val, - }, [self.lookup_kwarg_isnull]), + 'query_string': changelist.get_query_string({self.lookup_kwarg: pk_val}, [self.lookup_kwarg_isnull]), 'display': val, } if self.include_empty_choice: yield { 'selected': bool(self.lookup_val_isnull), - 'query_string': changelist.get_query_string({ - self.lookup_kwarg_isnull: 'True', - }, [self.lookup_kwarg]), + 'query_string': changelist.get_query_string({self.lookup_kwarg_isnull: 'True'}, [self.lookup_kwarg]), 'display': self.empty_value_display, } @@ -228,8 +223,8 @@ class BooleanFieldListFilter(FieldListFilter): def __init__(self, field, request, params, model, model_admin, field_path): self.lookup_kwarg = '%s__exact' % field_path self.lookup_kwarg2 = '%s__isnull' % field_path - self.lookup_val = request.GET.get(self.lookup_kwarg) - self.lookup_val2 = request.GET.get(self.lookup_kwarg2) + self.lookup_val = params.get(self.lookup_kwarg) + self.lookup_val2 = params.get(self.lookup_kwarg2) super().__init__(field, request, params, model, model_admin, field_path) if (self.used_parameters and self.lookup_kwarg in self.used_parameters and self.used_parameters[self.lookup_kwarg] in ('1', '0')): @@ -245,33 +240,26 @@ class BooleanFieldListFilter(FieldListFilter): ('0', _('No'))): yield { 'selected': self.lookup_val == lookup and not self.lookup_val2, - 'query_string': changelist.get_query_string({ - self.lookup_kwarg: lookup, - }, [self.lookup_kwarg2]), + 'query_string': changelist.get_query_string({self.lookup_kwarg: lookup}, [self.lookup_kwarg2]), 'display': title, } - if isinstance(self.field, models.NullBooleanField): + if self.field.null: yield { 'selected': self.lookup_val2 == 'True', - 'query_string': changelist.get_query_string({ - self.lookup_kwarg2: 'True', - }, [self.lookup_kwarg]), + 'query_string': changelist.get_query_string({self.lookup_kwarg2: 'True'}, [self.lookup_kwarg]), 'display': _('Unknown'), } -FieldListFilter.register( - lambda f: isinstance(f, (models.BooleanField, models.NullBooleanField)), - BooleanFieldListFilter -) +FieldListFilter.register(lambda f: isinstance(f, models.BooleanField), BooleanFieldListFilter) class ChoicesFieldListFilter(FieldListFilter): def __init__(self, field, request, params, model, model_admin, field_path): self.lookup_kwarg = '%s__exact' % field_path self.lookup_kwarg_isnull = '%s__isnull' % field_path - self.lookup_val = request.GET.get(self.lookup_kwarg) - self.lookup_val_isnull = request.GET.get(self.lookup_kwarg_isnull) + self.lookup_val = params.get(self.lookup_kwarg) + self.lookup_val_isnull = params.get(self.lookup_kwarg_isnull) super().__init__(field, request, params, model, model_admin, field_path) def expected_parameters(self): @@ -280,9 +268,7 @@ class ChoicesFieldListFilter(FieldListFilter): def choices(self, changelist): yield { 'selected': self.lookup_val is None, - 'query_string': changelist.get_query_string( - {}, [self.lookup_kwarg, self.lookup_kwarg_isnull] - ), + 'query_string': changelist.get_query_string(remove=[self.lookup_kwarg, self.lookup_kwarg_isnull]), 'display': _('All') } none_title = '' @@ -292,17 +278,13 @@ class ChoicesFieldListFilter(FieldListFilter): continue yield { 'selected': str(lookup) == self.lookup_val, - 'query_string': changelist.get_query_string( - {self.lookup_kwarg: lookup}, [self.lookup_kwarg_isnull] - ), + 'query_string': changelist.get_query_string({self.lookup_kwarg: lookup}, [self.lookup_kwarg_isnull]), 'display': title, } if none_title: yield { 'selected': bool(self.lookup_val_isnull), - 'query_string': changelist.get_query_string({ - self.lookup_kwarg_isnull: 'True', - }, [self.lookup_kwarg]), + 'query_string': changelist.get_query_string({self.lookup_kwarg_isnull: 'True'}, [self.lookup_kwarg]), 'display': none_title, } @@ -387,8 +369,8 @@ class AllValuesFieldListFilter(FieldListFilter): def __init__(self, field, request, params, model, model_admin, field_path): self.lookup_kwarg = field_path self.lookup_kwarg_isnull = '%s__isnull' % field_path - self.lookup_val = request.GET.get(self.lookup_kwarg) - self.lookup_val_isnull = request.GET.get(self.lookup_kwarg_isnull) + self.lookup_val = params.get(self.lookup_kwarg) + self.lookup_val_isnull = params.get(self.lookup_kwarg_isnull) self.empty_value_display = model_admin.get_empty_value_display() parent_model, reverse_path = reverse_field_path(model, field_path) # Obey parent ModelAdmin queryset when deciding which options to show @@ -396,10 +378,7 @@ class AllValuesFieldListFilter(FieldListFilter): queryset = model_admin.get_queryset(request) else: queryset = parent_model._default_manager.all() - self.lookup_choices = (queryset - .distinct() - .order_by(field.name) - .values_list(field.name, flat=True)) + self.lookup_choices = queryset.distinct().order_by(field.name).values_list(field.name, flat=True) super().__init__(field, request, params, model, model_admin, field_path) def expected_parameters(self): @@ -408,7 +387,7 @@ class AllValuesFieldListFilter(FieldListFilter): def choices(self, changelist): yield { 'selected': self.lookup_val is None and self.lookup_val_isnull is None, - 'query_string': changelist.get_query_string({}, [self.lookup_kwarg, self.lookup_kwarg_isnull]), + 'query_string': changelist.get_query_string(remove=[self.lookup_kwarg, self.lookup_kwarg_isnull]), 'display': _('All'), } include_none = False @@ -419,17 +398,13 @@ class AllValuesFieldListFilter(FieldListFilter): val = str(val) yield { 'selected': self.lookup_val == val, - 'query_string': changelist.get_query_string({ - self.lookup_kwarg: val, - }, [self.lookup_kwarg_isnull]), + 'query_string': changelist.get_query_string({self.lookup_kwarg: val}, [self.lookup_kwarg_isnull]), 'display': val, } if include_none: yield { 'selected': bool(self.lookup_val_isnull), - 'query_string': changelist.get_query_string({ - self.lookup_kwarg_isnull: 'True', - }, [self.lookup_kwarg]), + 'query_string': changelist.get_query_string({self.lookup_kwarg_isnull: 'True'}, [self.lookup_kwarg]), 'display': self.empty_value_display, } diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/forms.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/forms.py index b1f3bbe..e973c61 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/forms.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/forms.py @@ -8,6 +8,7 @@ class AdminAuthenticationForm(AuthenticationForm): A custom authentication form used in the admin app. """ error_messages = { + **AuthenticationForm.error_messages, 'invalid_login': _( "Please enter the correct %(username)s and password for a staff " "account. Note that both fields may be case-sensitive." @@ -16,7 +17,8 @@ class AdminAuthenticationForm(AuthenticationForm): required_css_class = 'required' def confirm_login_allowed(self, user): - if not user.is_active or not user.is_staff: + super().confirm_login_allowed(user) + if not user.is_staff: raise forms.ValidationError( self.error_messages['invalid_login'], code='invalid_login', diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/helpers.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/helpers.py index 58e92c9..5e8e0ca 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/helpers.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/helpers.py @@ -203,8 +203,7 @@ class AdminReadonlyField: result_repr = self.empty_value_display else: if f is None: - boolean = getattr(attr, "boolean", False) - if boolean: + if getattr(attr, 'boolean', False): result_repr = _boolean_icon(value) else: if hasattr(value, "__html__"): @@ -225,7 +224,9 @@ class InlineAdminFormSet: A wrapper around an inline formset for use in the admin system. """ def __init__(self, inline, formset, fieldsets, prepopulated_fields=None, - readonly_fields=None, model_admin=None): + readonly_fields=None, model_admin=None, has_add_permission=True, + has_change_permission=True, has_delete_permission=True, + has_view_permission=True): self.opts = inline self.formset = formset self.fieldsets = fieldsets @@ -237,13 +238,22 @@ class InlineAdminFormSet: prepopulated_fields = {} self.prepopulated_fields = prepopulated_fields self.classes = ' '.join(inline.classes) if inline.classes else '' + self.has_add_permission = has_add_permission + self.has_change_permission = has_change_permission + self.has_delete_permission = has_delete_permission + self.has_view_permission = has_view_permission def __iter__(self): + if self.has_change_permission: + readonly_fields_for_editing = self.readonly_fields + else: + readonly_fields_for_editing = self.readonly_fields + flatten_fieldsets(self.fieldsets) + for form, original in zip(self.formset.initial_forms, self.formset.get_queryset()): view_on_site_url = self.opts.get_view_on_site_url(original) yield InlineAdminForm( self.formset, form, self.fieldsets, self.prepopulated_fields, - original, self.readonly_fields, model_admin=self.opts, + original, readonly_fields_for_editing, model_admin=self.opts, view_on_site_url=view_on_site_url, ) for form in self.formset.extra_forms: @@ -251,26 +261,30 @@ class InlineAdminFormSet: self.formset, form, self.fieldsets, self.prepopulated_fields, None, self.readonly_fields, model_admin=self.opts, ) - yield InlineAdminForm( - self.formset, self.formset.empty_form, - self.fieldsets, self.prepopulated_fields, None, - self.readonly_fields, model_admin=self.opts, - ) + if self.has_add_permission: + yield InlineAdminForm( + self.formset, self.formset.empty_form, + self.fieldsets, self.prepopulated_fields, None, + self.readonly_fields, model_admin=self.opts, + ) def fields(self): fk = getattr(self.formset, "fk", None) + empty_form = self.formset.empty_form + meta_labels = empty_form._meta.labels or {} + meta_help_texts = empty_form._meta.help_texts or {} for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)): if fk and fk.name == field_name: continue - if field_name in self.readonly_fields: + if not self.has_change_permission or field_name in self.readonly_fields: yield { - 'label': label_for_field(field_name, self.opts.model, self.opts), + 'label': meta_labels.get(field_name) or label_for_field(field_name, self.opts.model, self.opts), 'widget': {'is_hidden': False}, 'required': False, - 'help_text': help_text_for_field(field_name, self.opts.model), + 'help_text': meta_help_texts.get(field_name) or help_text_for_field(field_name, self.opts.model), } else: - form_field = self.formset.empty_form.fields[field_name] + form_field = empty_form.fields[field_name] label = form_field.label if label is None: label = label_for_field(field_name, self.opts.model, self.opts) @@ -331,15 +345,15 @@ class InlineAdminForm(AdminForm): ) def needs_explicit_pk_field(self): - # Auto fields are editable (oddly), so need to check for auto or non-editable pk - if self.form._meta.model._meta.auto_field or not self.form._meta.model._meta.pk.editable: - return True - # Also search any parents for an auto field. (The pk info is propagated to child - # models so that does not need to be checked in parents.) - for parent in self.form._meta.model._meta.get_parent_list(): - if parent._meta.auto_field or not parent._meta.model._meta.pk.editable: - return True - return False + return ( + # Auto fields are editable, so check for auto or non-editable pk. + self.form._meta.model._meta.auto_field or not self.form._meta.model._meta.pk.editable or + # Also search any parents for an auto field. (The pk info is + # propagated to child models so that does not need to be checked + # in parents.) + any(parent._meta.auto_field or not parent._meta.model._meta.pk.editable + for parent in self.form._meta.model._meta.get_parent_list()) + ) def pk_field(self): return AdminField(self.form, self.formset._pk_field.name, False) @@ -368,9 +382,8 @@ class InlineFieldset(Fieldset): def __iter__(self): fk = getattr(self.formset, "fk", None) for field in self.fields: - if fk and fk.name == field: - continue - yield Fieldline(self.form, field, self.readonly_fields, model_admin=self.model_admin) + if not fk or fk.name != field: + yield Fieldline(self.form, field, self.readonly_fields, model_admin=self.model_admin) class AdminErrorList(forms.utils.ErrorList): diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo index 0938303..662e863 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po index 5e77f60..260fe77 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po @@ -5,21 +5,22 @@ # Jirka Vejrazka , 2011 # Tomáš Ehrlich , 2015 # Vláďa Macek , 2013-2014 -# Vláďa Macek , 2015-2017 +# Vláďa Macek , 2015-2018 # yedpodtrzitko , 2016 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-15 18:01+0000\n" "Last-Translator: Vláďa Macek \n" "Language-Team: Czech (http://www.transifex.com/django/django/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " +"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -90,6 +91,15 @@ msgstr "Přidat %(verbose_name)s" msgid "Remove" msgstr "Odebrat" +msgid "Addition" +msgstr "Přidání" + +msgid "Change" +msgstr "Změnit" + +msgid "Deletion" +msgstr "Odstranění" + msgid "action time" msgstr "čas operace" @@ -169,11 +179,11 @@ msgstr "" "\"Command\" na Macu)." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"Položka typu {name} \"{obj}\" byla úspěšně přidána. Níže ji můžete dále " -"upravovat." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Položka typu {name} \"{obj}\" byla úspěšně přidána." + +msgid "You may edit it again below." +msgstr "Níže můžete údaje znovu upravovat." #, python-brace-format msgid "" @@ -183,10 +193,6 @@ msgstr "" "Položka typu {name} \"{obj}\" byla úspěšně přidána. Níže můžete přidat další " "položku {name}." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "Položka typu {name} \"{obj}\" byla úspěšně přidána." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -194,6 +200,13 @@ msgstr "" "Položka typu {name} \"{obj}\" byla úspěšně změněna. Níže ji můžete dále " "upravovat." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"Položka typu {name} \"{obj}\" byla úspěšně přidána. Níže ji můžete dále " +"upravovat." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -232,6 +245,10 @@ msgstr "%s: přidat" msgid "Change %s" msgstr "%s: změnit" +#, python-format +msgid "View %s" +msgstr "Zobrazit %s" + msgid "Database error" msgstr "Chyba databáze" @@ -241,6 +258,7 @@ msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "Položka %(name)s byla úspěšně změněna." msgstr[1] "%(count)s položky %(name)s byly úspěšně změněny." msgstr[2] "%(count)s položek %(name)s bylo úspěšně změněno." +msgstr[3] "%(count)s položek %(name)s bylo úspěšně změněno." #, python-format msgid "%(total_count)s selected" @@ -248,6 +266,7 @@ msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s položka vybrána." msgstr[1] "Všechny %(total_count)s položky vybrány." msgstr[2] "Vybráno všech %(total_count)s položek." +msgstr[3] "Vybráno všech %(total_count)s položek." #, python-format msgid "0 of %(cnt)s selected" @@ -342,7 +361,7 @@ msgid "Change password" msgstr "Změnit heslo" msgid "Please correct the error below." -msgstr "Opravte níže uvedené chyby." +msgstr "Opravte níže uvedenou chybu." msgid "Please correct the errors below." msgstr "Opravte níže uvedené chyby." @@ -453,8 +472,8 @@ msgstr "" "Opravdu má být odstraněny vybrané položky typu %(objects_name)s? Všechny " "vybrané a s nimi související položky budou odstraněny:" -msgid "Change" -msgstr "Změnit" +msgid "View" +msgstr "Zobrazit" msgid "Delete?" msgstr "Odstranit?" @@ -473,8 +492,8 @@ msgstr "Modely v aplikaci %(name)s" msgid "Add" msgstr "Přidat" -msgid "You don't have permission to edit anything." -msgstr "Nemáte oprávnění nic měnit." +msgid "You don't have permission to view or edit anything." +msgstr "Nemáte oprávnění k zobrazení ani úpravám." msgid "Recent actions" msgstr "Nedávné akce" @@ -537,6 +556,10 @@ msgstr "Vyskakovací okno se zavírá..." msgid "Change selected %(model)s" msgstr "Změnit vybrané položky typu %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Zobrazit vybranou položku typu %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Přidat další %(model)s" @@ -554,6 +577,7 @@ msgid_plural "%(counter)s results" msgstr[0] "%(counter)s výsledek" msgstr[1] "%(counter)s výsledky" msgstr[2] "%(counter)s výsledků" +msgstr[3] "%(counter)s výsledků" #, python-format msgid "%(full_result_count)s total" @@ -568,6 +592,12 @@ msgstr "Uložit a přidat další položku" msgid "Save and continue editing" msgstr "Uložit a pokračovat v úpravách" +msgid "Save and view" +msgstr "Uložit a zobrazit" + +msgid "Close" +msgstr "Zavřít" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Děkujeme za čas strávený s tímto webem." @@ -677,6 +707,10 @@ msgstr "%s: vybrat" msgid "Select %s to change" msgstr "Vyberte položku %s ke změně" +#, python-format +msgid "Select %s to view" +msgstr "Vyberte položku %s k zobrazení" + msgid "Date:" msgstr "Datum:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo index d1f1838..d959516 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po index a880e62..7785061 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Vláďa Macek \n" "Language-Team: Czech (http://www.transifex.com/django/django/language/cs/)\n" @@ -17,7 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " +"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #, javascript-format msgid "Available %s" @@ -77,6 +78,7 @@ msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "Vybrána je %(sel)s položka z celkem %(cnt)s." msgstr[1] "Vybrány jsou %(sel)s položky z celkem %(cnt)s." msgstr[2] "Vybraných je %(sel)s položek z celkem %(cnt)s." +msgstr[3] "Vybraných je %(sel)s položek z celkem %(cnt)s." msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -101,29 +103,9 @@ msgstr "" "Byla vybrána operace a jednotlivá pole nejsou změněná. Patrně hledáte " "tlačítko Provést spíše než Uložit." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Poznámka: Váš čas o %s hodinu předstihuje čas na serveru." -msgstr[1] "Poznámka: Váš čas o %s hodiny předstihuje čas na serveru." -msgstr[2] "Poznámka: Váš čas o %s hodin předstihuje čas na serveru." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Poznámka: Váš čas se o %s hodinu zpožďuje za časem na serveru." -msgstr[1] "Poznámka: Váš čas se o %s hodiny zpožďuje za časem na serveru." -msgstr[2] "Poznámka: Váš čas se o %s hodin zpožďuje za časem na serveru." - msgid "Now" msgstr "Nyní" -msgid "Choose a Time" -msgstr "Vyberte čas" - -msgid "Choose a time" -msgstr "Vyberte čas" - msgid "Midnight" msgstr "Půlnoc" @@ -136,6 +118,28 @@ msgstr "Poledne" msgid "6 p.m." msgstr "6h večer" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Poznámka: Váš čas o %s hodinu předstihuje čas na serveru." +msgstr[1] "Poznámka: Váš čas o %s hodiny předstihuje čas na serveru." +msgstr[2] "Poznámka: Váš čas o %s hodin předstihuje čas na serveru." +msgstr[3] "Poznámka: Váš čas o %s hodin předstihuje čas na serveru." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Poznámka: Váš čas se o %s hodinu zpožďuje za časem na serveru." +msgstr[1] "Poznámka: Váš čas se o %s hodiny zpožďuje za časem na serveru." +msgstr[2] "Poznámka: Váš čas se o %s hodin zpožďuje za časem na serveru." +msgstr[3] "Poznámka: Váš čas se o %s hodin zpožďuje za časem na serveru." + +msgid "Choose a Time" +msgstr "Vyberte čas" + +msgid "Choose a time" +msgstr "Vyberte čas" + msgid "Cancel" msgstr "Storno" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo index 5b2d0df..76fe1a6 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po index 5d8d225..a4cbcdf 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Christian Joergensen , 2012 # Dimitris Glezos , 2012 -# Erik Wognsen , 2013,2015-2017 +# Erik Wognsen , 2013,2015-2018 # Finn Gruwier Larsen, 2011 # Jannis Leidel , 2011 # valberg , 2014-2015 @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:40+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 21:25+0000\n" "Last-Translator: Erik Wognsen \n" "Language-Team: Danish (http://www.transifex.com/django/django/language/da/)\n" "MIME-Version: 1.0\n" @@ -90,6 +90,15 @@ msgstr "Tilføj endnu en %(verbose_name)s" msgid "Remove" msgstr "Fjern" +msgid "Addition" +msgstr "Tilføjelse" + +msgid "Change" +msgstr "Ret" + +msgid "Deletion" +msgstr "Sletning" + msgid "action time" msgstr "handlingstid" @@ -168,25 +177,29 @@ msgstr "" "Hold \"Ctrl\" (eller \"Æbletasten\" på Mac) nede for at vælge mere end en." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" blev tilføjet. Du kan redigere den/det igen herunder." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" blev tilføjet." + +msgid "You may edit it again below." +msgstr "Du kan redigere den/det igen herunder." #, python-brace-format msgid "" "The {name} \"{obj}\" was added successfully. You may add another {name} " "below." -msgstr "{name} \"{obj}\" blev tilføjet. Du kan endnu en/et {name} herunder." - -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" blev tilføjet." +msgstr "" +"{name} \"{obj}\" blev tilføjet. Du kan tilføje endnu en/et {name} herunder." #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" blev ændret. Du kan redigere den/det igen herunder." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" blev tilføjet. Du kan redigere den/det igen herunder." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -225,8 +238,12 @@ msgstr "Tilføj %s" msgid "Change %s" msgstr "Ret %s" +#, python-format +msgid "View %s" +msgstr "Vis %s" + msgid "Database error" -msgstr "databasefejl" +msgstr "Databasefejl" #, python-format msgid "%(count)s %(name)s was changed successfully." @@ -444,8 +461,8 @@ msgstr "" "Er du sikker på du vil slette de valgte %(objects_name)s? Alle de følgende " "objekter og deres relaterede emner vil blive slettet:" -msgid "Change" -msgstr "Ret" +msgid "View" +msgstr "Vis" msgid "Delete?" msgstr "Slet?" @@ -464,8 +481,8 @@ msgstr "Modeller i applikationen %(name)s" msgid "Add" msgstr "Tilføj" -msgid "You don't have permission to edit anything." -msgstr "Du har ikke rettigheder til at foretage ændringer." +msgid "You don't have permission to view or edit anything." +msgstr "Du har ikke rettigheder til at se eller redigere noget." msgid "Recent actions" msgstr "Seneste handlinger" @@ -528,6 +545,10 @@ msgstr "Popup lukker..." msgid "Change selected %(model)s" msgstr "Redigér valgte %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Vis valgte %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Tilføj endnu en %(model)s" @@ -558,6 +579,12 @@ msgstr "Gem og tilføj endnu en" msgid "Save and continue editing" msgstr "Gem og fortsæt med at redigere" +msgid "Save and view" +msgstr "Gem og vis" + +msgid "Close" +msgstr "Luk" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Tak for den kvalitetstid du brugte på websitet i dag." @@ -669,6 +696,10 @@ msgstr "Vælg %s" msgid "Select %s to change" msgstr "Vælg %s, der skal ændres" +#, python-format +msgid "Select %s to view" +msgstr "Vælg %s, der skal vises" + msgid "Date:" msgstr "Dato:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo index 640300a..9270ea4 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po index ca72e9e..17e0d5a 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Mathias Rav \n" "Language-Team: Danish (http://www.transifex.com/django/django/language/da/)\n" @@ -102,27 +102,9 @@ msgstr "" "Du har valgt en handling, og du har ikke udført nogen ændringer på felter. " "Det, du søger er formentlig Udfør-knappen i stedet for Gem-knappen." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Obs: Du er %s time forud i forhold til servertiden." -msgstr[1] "Obs: Du er %s timer forud i forhold til servertiden." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Obs: Du er %s time bagud i forhold til servertiden." -msgstr[1] "Obs: Du er %s timer bagud i forhold til servertiden." - msgid "Now" msgstr "Nu" -msgid "Choose a Time" -msgstr "Vælg et Tidspunkt" - -msgid "Choose a time" -msgstr "Vælg et tidspunkt" - msgid "Midnight" msgstr "Midnat" @@ -135,6 +117,24 @@ msgstr "Middag" msgid "6 p.m." msgstr "Klokken 18" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Obs: Du er %s time forud i forhold til servertiden." +msgstr[1] "Obs: Du er %s timer forud i forhold til servertiden." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Obs: Du er %s time bagud i forhold til servertiden." +msgstr[1] "Obs: Du er %s timer bagud i forhold til servertiden." + +msgid "Choose a Time" +msgstr "Vælg et Tidspunkt" + +msgid "Choose a time" +msgstr "Vælg et tidspunkt" + msgid "Cancel" msgstr "Annuller" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo index 4d60e59..5ff5a35 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po index e1a1310..2f93051 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2017 +# Michael Wolf , 2016-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 00:02+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-24 18:57+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Lower Sorbian (http://www.transifex.com/django/django/" "language/dsb/)\n" @@ -87,6 +87,15 @@ msgstr "Dalšne %(verbose_name)s pśidaś" msgid "Remove" msgstr "Wótpóraś" +msgid "Addition" +msgstr "Pśidanje" + +msgid "Change" +msgstr "Změniś" + +msgid "Deletion" +msgstr "Wulašowanje" + msgid "action time" msgstr "akciski cas" @@ -164,11 +173,11 @@ msgid "" msgstr "´Źaržćo „ctrl“ abo „cmd“ na Mac tłocony, aby wusej jadnogo wubrał." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" jo se wuspěšnje pśidał. Móžośo jen dołojce znowego " -"wobźěłowaś." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" jo se wuspěšnje pśidał." + +msgid "You may edit it again below." +msgstr "Móźośo dołojce znowego wobźěłaś." #, python-brace-format msgid "" @@ -177,10 +186,6 @@ msgid "" msgstr "" "{name} \"{obj}\" jo se wuspěšnje pśidał. Móžośo dołojce dalšne {name} pśidaś." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" jo se wuspěšnje pśidał." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -188,6 +193,13 @@ msgstr "" "{name} \"{obj}\" jo se wuspěšnje změnił. Móžośo jen dołojce znowego " "wobźěłowaś." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" jo se wuspěšnje pśidał. Móžośo jen dołojce znowego " +"wobźěłowaś." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -225,6 +237,10 @@ msgstr "%s pśidaś" msgid "Change %s" msgstr "%s změniś" +#, python-format +msgid "View %s" +msgstr "%s pokazaś" + msgid "Database error" msgstr "Zmólka datoweje banki" @@ -337,7 +353,7 @@ msgid "Change password" msgstr "Gronidło změniś" msgid "Please correct the error below." -msgstr "Pšosym skorigěrujśo slědujucu zmólku." +msgstr "Pšosym korigěrujśo slědujucu zmólku." msgid "Please correct the errors below." msgstr "Pšosym skorigěrujśo slědujuce zmólki." @@ -446,8 +462,8 @@ msgstr "" "Cośo napšawdu wubrany %(objects_name)s lašowaś? Wšykne slědujuce objekty a " "jich pśisłušne zapiski se wulašuju:" -msgid "Change" -msgstr "Změniś" +msgid "View" +msgstr "Pokazaś" msgid "Delete?" msgstr "Lašowaś?" @@ -466,8 +482,8 @@ msgstr "Modele w nałoženju %(name)s" msgid "Add" msgstr "Pśidaś" -msgid "You don't have permission to edit anything." -msgstr "Njejsćo pšawo něco wobźěłowaś." +msgid "You don't have permission to view or edit anything." +msgstr "Njamaśo pšawo něco pokazaś abo wobźěłaś" msgid "Recent actions" msgstr "Nejnowše akcije" @@ -530,6 +546,10 @@ msgstr "Wuskokujuce wokno se zacynja..." msgid "Change selected %(model)s" msgstr "Wubrane %(model)s změniś" +#, python-format +msgid "View selected %(model)s" +msgstr "Wubrany %(model)s pokazaś" + #, python-format msgid "Add another %(model)s" msgstr "Dalšny %(model)s pśidaś" @@ -562,6 +582,12 @@ msgstr "Składowaś a dalšny pśidaś" msgid "Save and continue editing" msgstr "Składowaś a dalej wobźěłowaś" +msgid "Save and view" +msgstr "Składowaś a pokazaś" + +msgid "Close" +msgstr "Zacyniś" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Źěkujomy se, až sćo źinsa wěsty cas na websedle pśebywał." @@ -673,6 +699,10 @@ msgstr "%s wubraś" msgid "Select %s to change" msgstr "%s wubraś, aby se změniło" +#, python-format +msgid "Select %s to view" +msgstr "%s wubraś, kótaryž ma se pokazaś" + msgid "Date:" msgstr "Datum:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo index e819a5f..185749c 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po index 084d13b..3dbda72 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 00:02+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Lower Sorbian (http://www.transifex.com/django/django/" @@ -102,6 +102,21 @@ msgstr "" "Sćo akciju wubrał, ale njejsćo jadnotliwe póla změnił. Nejskerjej pytaśo " "skerjej za tłocaškom Start ako za tłocaškom Składowaś." +msgid "Now" +msgstr "Něnto" + +msgid "Midnight" +msgstr "Połnoc" + +msgid "6 a.m." +msgstr "6:00 góź. dopołdnja" + +msgid "Noon" +msgstr "Połdnjo" + +msgid "6 p.m." +msgstr "6:00 wótpołdnja" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -118,27 +133,12 @@ msgstr[1] "Glědajśo: Waš cas jo wó %s góźinje za serwerowym casom." msgstr[2] "Glědajśo: Waš cas jo wó %s góźiny za serwerowym casom." msgstr[3] "Glědajśo: Waš cas jo wó %s góźin za serwerowym casom." -msgid "Now" -msgstr "Něnto" - msgid "Choose a Time" msgstr "Wubjeŕśo cas" msgid "Choose a time" msgstr "Wubjeŕśo cas" -msgid "Midnight" -msgstr "Połnoc" - -msgid "6 a.m." -msgstr "6:00 góź. dopołdnja" - -msgid "Noon" -msgstr "Połdnjo" - -msgid "6 p.m." -msgstr "6:00 wótpołdnja" - msgid "Cancel" msgstr "Pśetergnuś" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po index 7c50d9a..79f4c26 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" "PO-Revision-Date: 2010-05-13 15:35+0200\n" "Last-Translator: Django team\n" "Language-Team: English \n" @@ -14,319 +14,345 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: contrib/admin/actions.py:50 +#: contrib/admin/actions.py:45 #, python-format msgid "Successfully deleted %(count)d %(items)s." msgstr "" -#: contrib/admin/actions.py:62 contrib/admin/options.py:1707 +#: contrib/admin/actions.py:54 contrib/admin/options.py:1841 #, python-format msgid "Cannot delete %(name)s" msgstr "" -#: contrib/admin/actions.py:64 contrib/admin/options.py:1709 +#: contrib/admin/actions.py:56 contrib/admin/options.py:1843 msgid "Are you sure?" msgstr "" -#: contrib/admin/actions.py:89 +#: contrib/admin/actions.py:82 #, python-format msgid "Delete selected %(verbose_name_plural)s" msgstr "" -#: contrib/admin/apps.py:11 +#: contrib/admin/apps.py:12 msgid "Administration" msgstr "" -#: contrib/admin/filters.py:107 contrib/admin/filters.py:205 -#: contrib/admin/filters.py:241 contrib/admin/filters.py:278 -#: contrib/admin/filters.py:384 +#: contrib/admin/filters.py:108 contrib/admin/filters.py:203 +#: contrib/admin/filters.py:238 contrib/admin/filters.py:272 +#: contrib/admin/filters.py:391 msgid "All" msgstr "" -#: contrib/admin/filters.py:242 +#: contrib/admin/filters.py:239 msgid "Yes" msgstr "" -#: contrib/admin/filters.py:243 +#: contrib/admin/filters.py:240 msgid "No" msgstr "" -#: contrib/admin/filters.py:257 +#: contrib/admin/filters.py:250 msgid "Unknown" msgstr "" -#: contrib/admin/filters.py:316 +#: contrib/admin/filters.py:320 msgid "Any date" msgstr "" -#: contrib/admin/filters.py:317 +#: contrib/admin/filters.py:321 msgid "Today" msgstr "" -#: contrib/admin/filters.py:321 +#: contrib/admin/filters.py:325 msgid "Past 7 days" msgstr "" -#: contrib/admin/filters.py:325 +#: contrib/admin/filters.py:329 msgid "This month" msgstr "" -#: contrib/admin/filters.py:329 +#: contrib/admin/filters.py:333 msgid "This year" msgstr "" -#: contrib/admin/filters.py:359 +#: contrib/admin/filters.py:341 msgid "No date" msgstr "" -#: contrib/admin/filters.py:360 +#: contrib/admin/filters.py:342 msgid "Has date" msgstr "" -#: contrib/admin/forms.py:14 +#: contrib/admin/forms.py:13 #, python-format msgid "" "Please enter the correct %(username)s and password for a staff account. Note " "that both fields may be case-sensitive." msgstr "" -#: contrib/admin/helpers.py:27 +#: contrib/admin/helpers.py:21 msgid "Action:" msgstr "" -#: contrib/admin/helpers.py:286 +#: contrib/admin/helpers.py:303 #, python-format msgid "Add another %(verbose_name)s" msgstr "" -#: contrib/admin/helpers.py:289 +#: contrib/admin/helpers.py:306 msgid "Remove" msgstr "" -#: contrib/admin/models.py:39 +#: contrib/admin/models.py:17 +msgid "Addition" +msgstr "" + +#: contrib/admin/models.py:18 +#: contrib/admin/templates/admin/edit_inline/stacked.html:12 +#: contrib/admin/templates/admin/edit_inline/tabular.html:34 +#: contrib/admin/templates/admin/index.html:40 +#: contrib/admin/templates/admin/related_widget_wrapper.html:12 +#: contrib/admin/templates/admin/widgets/related_widget_wrapper.html:10 +msgid "Change" +msgstr "" + +#: contrib/admin/models.py:19 +msgid "Deletion" +msgstr "" + +#: contrib/admin/models.py:41 msgid "action time" msgstr "" -#: contrib/admin/models.py:46 +#: contrib/admin/models.py:48 msgid "user" msgstr "" -#: contrib/admin/models.py:51 +#: contrib/admin/models.py:53 msgid "content type" msgstr "" -#: contrib/admin/models.py:54 +#: contrib/admin/models.py:56 msgid "object id" msgstr "" #. Translators: 'repr' means representation (https://docs.python.org/3/library/functions.html#repr) -#: contrib/admin/models.py:56 +#: contrib/admin/models.py:58 msgid "object repr" msgstr "" -#: contrib/admin/models.py:57 +#: contrib/admin/models.py:59 msgid "action flag" msgstr "" -#: contrib/admin/models.py:59 +#: contrib/admin/models.py:61 msgid "change message" msgstr "" -#: contrib/admin/models.py:64 +#: contrib/admin/models.py:66 msgid "log entry" msgstr "" -#: contrib/admin/models.py:65 +#: contrib/admin/models.py:67 msgid "log entries" msgstr "" -#: contrib/admin/models.py:74 -#, python-format -msgid "Added \"%(object)s\"." -msgstr "" - #: contrib/admin/models.py:76 #, python-format +msgid "Added \"%(object)s\"." +msgstr "" + +#: contrib/admin/models.py:78 +#, python-format msgid "Changed \"%(object)s\" - %(changes)s" msgstr "" -#: contrib/admin/models.py:81 +#: contrib/admin/models.py:83 #, python-format msgid "Deleted \"%(object)s.\"" msgstr "" -#: contrib/admin/models.py:83 +#: contrib/admin/models.py:85 msgid "LogEntry Object" msgstr "" -#: contrib/admin/models.py:109 +#: contrib/admin/models.py:111 #, python-brace-format msgid "Added {name} \"{object}\"." msgstr "" -#: contrib/admin/models.py:111 +#: contrib/admin/models.py:113 msgid "Added." msgstr "" -#: contrib/admin/models.py:115 contrib/admin/options.py:1917 +#: contrib/admin/models.py:117 contrib/admin/options.py:2055 msgid "and" msgstr "" -#: contrib/admin/models.py:119 +#: contrib/admin/models.py:121 #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." msgstr "" -#: contrib/admin/models.py:123 +#: contrib/admin/models.py:125 #, python-brace-format msgid "Changed {fields}." msgstr "" -#: contrib/admin/models.py:127 +#: contrib/admin/models.py:129 #, python-brace-format msgid "Deleted {name} \"{object}\"." msgstr "" -#: contrib/admin/models.py:130 +#: contrib/admin/models.py:132 msgid "No fields changed." msgstr "" -#: contrib/admin/options.py:196 contrib/admin/options.py:225 +#: contrib/admin/options.py:202 contrib/admin/options.py:233 msgid "None" msgstr "" -#: contrib/admin/options.py:261 +#: contrib/admin/options.py:271 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" -#: contrib/admin/options.py:1115 contrib/admin/options.py:1186 +#: contrib/admin/options.py:1202 contrib/admin/options.py:1226 #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgid "The {name} \"{obj}\" was added successfully." msgstr "" -#: contrib/admin/options.py:1129 +#: contrib/admin/options.py:1204 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:1216 #, python-brace-format msgid "" "The {name} \"{obj}\" was added successfully. You may add another {name} " "below." msgstr "" -#: contrib/admin/options.py:1139 -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "" - -#: contrib/admin/options.py:1176 +#: contrib/admin/options.py:1266 #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" -#: contrib/admin/options.py:1199 +#: contrib/admin/options.py:1276 +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:1289 #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " "below." msgstr "" -#: contrib/admin/options.py:1211 +#: contrib/admin/options.py:1301 #, python-brace-format msgid "The {name} \"{obj}\" was changed successfully." msgstr "" -#: contrib/admin/options.py:1296 contrib/admin/options.py:1564 +#: contrib/admin/options.py:1386 contrib/admin/options.py:1682 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" -#: contrib/admin/options.py:1315 +#: contrib/admin/options.py:1405 msgid "No action selected." msgstr "" -#: contrib/admin/options.py:1336 +#: contrib/admin/options.py:1430 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "" -#: contrib/admin/options.py:1397 +#: contrib/admin/options.py:1509 #, python-format msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?" msgstr "" -#: contrib/admin/options.py:1475 +#: contrib/admin/options.py:1596 #, python-format msgid "Add %s" msgstr "" -#: contrib/admin/options.py:1475 +#: contrib/admin/options.py:1598 #, python-format msgid "Change %s" msgstr "" -#: contrib/admin/options.py:1543 +#: contrib/admin/options.py:1600 +#, python-format +msgid "View %s" +msgstr "" + +#: contrib/admin/options.py:1658 msgid "Database error" msgstr "" -#: contrib/admin/options.py:1606 +#: contrib/admin/options.py:1730 #, python-format msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "" msgstr[1] "" -#: contrib/admin/options.py:1633 +#: contrib/admin/options.py:1761 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "" msgstr[1] "" -#: contrib/admin/options.py:1639 +#: contrib/admin/options.py:1769 #, python-format msgid "0 of %(cnt)s selected" msgstr "" -#: contrib/admin/options.py:1755 +#: contrib/admin/options.py:1886 #, python-format msgid "Change history: %s" msgstr "" #. Translators: Model verbose name and instance representation, #. suitable to be an item in a list. -#: contrib/admin/options.py:1911 +#: contrib/admin/options.py:2049 #, python-format msgid "%(class_name)s %(instance)s" msgstr "" -#: contrib/admin/options.py:1918 +#: contrib/admin/options.py:2056 #, python-format msgid "" "Deleting %(class_name)s %(instance)s would require deleting the following " "protected related objects: %(related_objects)s" msgstr "" -#: contrib/admin/sites.py:40 contrib/admin/templates/admin/base_site.html:3 +#: contrib/admin/sites.py:41 contrib/admin/templates/admin/base_site.html:3 msgid "Django site admin" msgstr "" -#: contrib/admin/sites.py:43 contrib/admin/templates/admin/base_site.html:6 +#: contrib/admin/sites.py:44 contrib/admin/templates/admin/base_site.html:6 msgid "Django administration" msgstr "" -#: contrib/admin/sites.py:46 +#: contrib/admin/sites.py:47 msgid "Site administration" msgstr "" -#: contrib/admin/sites.py:398 contrib/admin/templates/admin/login.html.py:61 +#: contrib/admin/sites.py:383 contrib/admin/templates/admin/login.html:61 #: contrib/admin/templates/registration/password_reset_complete.html:18 -#: contrib/admin/tests.py:131 +#: contrib/admin/tests.py:123 msgid "Log in" msgstr "" -#: contrib/admin/sites.py:525 +#: contrib/admin/sites.py:510 #, python-format msgid "%(app)s administration" msgstr "" @@ -343,20 +369,20 @@ msgstr "" #: contrib/admin/templates/admin/500.html:6 #: contrib/admin/templates/admin/app_index.html:9 #: contrib/admin/templates/admin/auth/user/change_password.html:13 -#: contrib/admin/templates/admin/base.html:56 +#: contrib/admin/templates/admin/base.html:61 #: contrib/admin/templates/admin/change_form.html:18 #: contrib/admin/templates/admin/change_list.html:31 -#: contrib/admin/templates/admin/delete_confirmation.html:13 -#: contrib/admin/templates/admin/delete_selected_confirmation.html:13 +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:14 #: contrib/admin/templates/admin/invalid_setup.html:6 #: contrib/admin/templates/admin/object_history.html:6 #: contrib/admin/templates/registration/logged_out.html:4 #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_form.html:7 #: contrib/admin/templates/registration/password_reset_complete.html:6 -#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: contrib/admin/templates/registration/password_reset_confirm.html:7 #: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:7 msgid "Home" msgstr "" @@ -378,24 +404,24 @@ msgid "" "email and should be fixed shortly. Thanks for your patience." msgstr "" -#: contrib/admin/templates/admin/actions.html:4 +#: contrib/admin/templates/admin/actions.html:8 msgid "Run the selected action" msgstr "" -#: contrib/admin/templates/admin/actions.html:4 +#: contrib/admin/templates/admin/actions.html:8 msgid "Go" msgstr "" -#: contrib/admin/templates/admin/actions.html:10 +#: contrib/admin/templates/admin/actions.html:16 msgid "Click here to select the objects across all pages" msgstr "" -#: contrib/admin/templates/admin/actions.html:10 +#: contrib/admin/templates/admin/actions.html:16 #, python-format msgid "Select all %(total_count)s %(module_name)s" msgstr "" -#: contrib/admin/templates/admin/actions.html:12 +#: contrib/admin/templates/admin/actions.html:18 msgid "Clear selection" msgstr "" @@ -410,72 +436,72 @@ msgid "Enter a username and password." msgstr "" #: contrib/admin/templates/admin/auth/user/change_password.html:17 -#: contrib/admin/templates/admin/auth/user/change_password.html:54 -#: contrib/admin/templates/admin/base.html:44 +#: contrib/admin/templates/admin/auth/user/change_password.html:55 +#: contrib/admin/templates/admin/base.html:49 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:4 msgid "Change password" msgstr "" -#: contrib/admin/templates/admin/auth/user/change_password.html:27 -#: contrib/admin/templates/admin/change_form.html:47 -#: contrib/admin/templates/admin/change_list.html:58 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#: contrib/admin/templates/admin/change_form.html:43 +#: contrib/admin/templates/admin/change_list.html:51 #: contrib/admin/templates/admin/login.html:21 #: contrib/admin/templates/registration/password_change_form.html:21 msgid "Please correct the error below." msgstr "" -#: contrib/admin/templates/admin/auth/user/change_password.html:27 -#: contrib/admin/templates/admin/change_form.html:47 -#: contrib/admin/templates/admin/change_list.html:58 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#: contrib/admin/templates/admin/change_form.html:43 +#: contrib/admin/templates/admin/change_list.html:51 #: contrib/admin/templates/admin/login.html:21 #: contrib/admin/templates/registration/password_change_form.html:21 msgid "Please correct the errors below." msgstr "" -#: contrib/admin/templates/admin/auth/user/change_password.html:31 +#: contrib/admin/templates/admin/auth/user/change_password.html:32 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" -#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/base.html:35 msgid "Welcome," msgstr "" -#: contrib/admin/templates/admin/base.html:35 +#: contrib/admin/templates/admin/base.html:40 msgid "View site" msgstr "" -#: contrib/admin/templates/admin/base.html:40 +#: contrib/admin/templates/admin/base.html:45 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:4 msgid "Documentation" msgstr "" -#: contrib/admin/templates/admin/base.html:46 +#: contrib/admin/templates/admin/base.html:51 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:4 msgid "Log out" msgstr "" #: contrib/admin/templates/admin/change_form.html:21 -#: contrib/admin/templates/admin/change_list.html:49 +#: contrib/admin/templates/admin/change_list_object_tools.html:8 #, python-format msgid "Add %(name)s" msgstr "" -#: contrib/admin/templates/admin/change_form.html:33 +#: contrib/admin/templates/admin/change_form_object_tools.html:5 #: contrib/admin/templates/admin/object_history.html:10 msgid "History" msgstr "" -#: contrib/admin/templates/admin/change_form.html:35 +#: contrib/admin/templates/admin/change_form_object_tools.html:7 #: contrib/admin/templates/admin/edit_inline/stacked.html:14 #: contrib/admin/templates/admin/edit_inline/tabular.html:36 msgid "View on site" msgstr "" -#: contrib/admin/templates/admin/change_list.html:69 +#: contrib/admin/templates/admin/change_list.html:62 msgid "Filter" msgstr "" @@ -492,13 +518,14 @@ msgstr "" msgid "Toggle sorting" msgstr "" -#: contrib/admin/templates/admin/delete_confirmation.html:17 -#: contrib/admin/templates/admin/related_widget_wrapper.html:23 -#: contrib/admin/templates/admin/submit_line.html:6 +#: contrib/admin/templates/admin/delete_confirmation.html:18 +#: contrib/admin/templates/admin/related_widget_wrapper.html:30 +#: contrib/admin/templates/admin/submit_line.html:7 +#: contrib/admin/templates/admin/widgets/related_widget_wrapper.html:24 msgid "Delete" msgstr "" -#: contrib/admin/templates/admin/delete_confirmation.html:23 +#: contrib/admin/templates/admin/delete_confirmation.html:24 #, python-format msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " @@ -506,40 +533,40 @@ msgid "" "following types of objects:" msgstr "" -#: contrib/admin/templates/admin/delete_confirmation.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:31 #, python-format msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " "following protected related objects:" msgstr "" -#: contrib/admin/templates/admin/delete_confirmation.html:37 +#: contrib/admin/templates/admin/delete_confirmation.html:38 #, python-format msgid "" "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " "All of the following related items will be deleted:" msgstr "" -#: contrib/admin/templates/admin/delete_confirmation.html:39 -#: contrib/admin/templates/admin/delete_selected_confirmation.html:38 +#: contrib/admin/templates/admin/delete_confirmation.html:40 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:39 msgid "Objects" msgstr "" -#: contrib/admin/templates/admin/delete_confirmation.html:46 -#: contrib/admin/templates/admin/delete_selected_confirmation.html:49 -msgid "Yes, I'm sure" -msgstr "" - #: contrib/admin/templates/admin/delete_confirmation.html:47 #: contrib/admin/templates/admin/delete_selected_confirmation.html:50 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:48 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:51 msgid "No, take me back" msgstr "" -#: contrib/admin/templates/admin/delete_selected_confirmation.html:16 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:17 msgid "Delete multiple objects" msgstr "" -#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:23 #, python-format msgid "" "Deleting the selected %(objects_name)s would result in deleting related " @@ -547,14 +574,14 @@ msgid "" "types of objects:" msgstr "" -#: contrib/admin/templates/admin/delete_selected_confirmation.html:29 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:30 #, python-format msgid "" "Deleting the selected %(objects_name)s would require deleting the following " "protected related objects:" msgstr "" -#: contrib/admin/templates/admin/delete_selected_confirmation.html:36 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:37 #, python-format msgid "" "Are you sure you want to delete the selected %(objects_name)s? All of the " @@ -563,9 +590,9 @@ msgstr "" #: contrib/admin/templates/admin/edit_inline/stacked.html:12 #: contrib/admin/templates/admin/edit_inline/tabular.html:34 -#: contrib/admin/templates/admin/index.html:37 -#: contrib/admin/templates/admin/related_widget_wrapper.html:9 -msgid "Change" +#: contrib/admin/templates/admin/index.html:38 +#: contrib/admin/templates/admin/related_widget_wrapper.html:15 +msgid "View" msgstr "" #: contrib/admin/templates/admin/edit_inline/tabular.html:20 @@ -587,27 +614,28 @@ msgid "Models in the %(name)s application" msgstr "" #: contrib/admin/templates/admin/index.html:31 -#: contrib/admin/templates/admin/related_widget_wrapper.html:16 +#: contrib/admin/templates/admin/related_widget_wrapper.html:23 +#: contrib/admin/templates/admin/widgets/related_widget_wrapper.html:17 msgid "Add" msgstr "" -#: contrib/admin/templates/admin/index.html:47 -msgid "You don't have permission to edit anything." +#: contrib/admin/templates/admin/index.html:51 +msgid "You don't have permission to view or edit anything." msgstr "" -#: contrib/admin/templates/admin/index.html:55 +#: contrib/admin/templates/admin/index.html:59 msgid "Recent actions" msgstr "" -#: contrib/admin/templates/admin/index.html:56 +#: contrib/admin/templates/admin/index.html:60 msgid "My actions" msgstr "" -#: contrib/admin/templates/admin/index.html:60 +#: contrib/admin/templates/admin/index.html:64 msgid "None available" msgstr "" -#: contrib/admin/templates/admin/index.html:74 +#: contrib/admin/templates/admin/index.html:78 msgid "Unknown content" msgstr "" @@ -653,7 +681,7 @@ msgid "Show all" msgstr "" #: contrib/admin/templates/admin/pagination.html:11 -#: contrib/admin/templates/admin/submit_line.html:3 +#: contrib/admin/templates/admin/submit_line.html:4 msgid "Save" msgstr "" @@ -661,17 +689,25 @@ msgstr "" msgid "Popup closing..." msgstr "" -#: contrib/admin/templates/admin/related_widget_wrapper.html:8 +#: contrib/admin/templates/admin/related_widget_wrapper.html:11 +#: contrib/admin/templates/admin/widgets/related_widget_wrapper.html:9 #, python-format msgid "Change selected %(model)s" msgstr "" -#: contrib/admin/templates/admin/related_widget_wrapper.html:15 +#: contrib/admin/templates/admin/related_widget_wrapper.html:14 +#, python-format +msgid "View selected %(model)s" +msgstr "" + +#: contrib/admin/templates/admin/related_widget_wrapper.html:22 +#: contrib/admin/templates/admin/widgets/related_widget_wrapper.html:16 #, python-format msgid "Add another %(model)s" msgstr "" -#: contrib/admin/templates/admin/related_widget_wrapper.html:22 +#: contrib/admin/templates/admin/related_widget_wrapper.html:29 +#: contrib/admin/templates/admin/widgets/related_widget_wrapper.html:23 #, python-format msgid "Delete selected %(model)s" msgstr "" @@ -692,18 +728,26 @@ msgstr[1] "" msgid "%(full_result_count)s total" msgstr "" -#: contrib/admin/templates/admin/submit_line.html:8 +#: contrib/admin/templates/admin/submit_line.html:9 msgid "Save as new" msgstr "" -#: contrib/admin/templates/admin/submit_line.html:9 +#: contrib/admin/templates/admin/submit_line.html:10 msgid "Save and add another" msgstr "" -#: contrib/admin/templates/admin/submit_line.html:10 +#: contrib/admin/templates/admin/submit_line.html:11 msgid "Save and continue editing" msgstr "" +#: contrib/admin/templates/admin/submit_line.html:11 +msgid "Save and view" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:12 +msgid "Close" +msgstr "" + #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." msgstr "" @@ -728,13 +772,13 @@ msgid "" msgstr "" #: contrib/admin/templates/registration/password_change_form.html:54 -#: contrib/admin/templates/registration/password_reset_confirm.html:24 +#: contrib/admin/templates/registration/password_reset_confirm.html:32 msgid "Change my password" msgstr "" #: contrib/admin/templates/registration/password_reset_complete.html:7 #: contrib/admin/templates/registration/password_reset_done.html:7 -#: contrib/admin/templates/registration/password_reset_form.html:7 +#: contrib/admin/templates/registration/password_reset_form.html:8 msgid "Password reset" msgstr "" @@ -742,25 +786,25 @@ msgstr "" msgid "Your password has been set. You may go ahead and log in now." msgstr "" -#: contrib/admin/templates/registration/password_reset_confirm.html:7 +#: contrib/admin/templates/registration/password_reset_confirm.html:8 msgid "Password reset confirmation" msgstr "" -#: contrib/admin/templates/registration/password_reset_confirm.html:17 +#: contrib/admin/templates/registration/password_reset_confirm.html:18 msgid "" "Please enter your new password twice so we can verify you typed it in " "correctly." msgstr "" -#: contrib/admin/templates/registration/password_reset_confirm.html:21 +#: contrib/admin/templates/registration/password_reset_confirm.html:24 msgid "New password:" msgstr "" -#: contrib/admin/templates/registration/password_reset_confirm.html:23 +#: contrib/admin/templates/registration/password_reset_confirm.html:29 msgid "Confirm password:" msgstr "" -#: contrib/admin/templates/registration/password_reset_confirm.html:29 +#: contrib/admin/templates/registration/password_reset_confirm.html:38 msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." @@ -802,50 +846,55 @@ msgstr "" msgid "The %(site_name)s team" msgstr "" -#: contrib/admin/templates/registration/password_reset_form.html:15 +#: contrib/admin/templates/registration/password_reset_form.html:16 msgid "" "Forgotten your password? Enter your email address below, and we'll email " "instructions for setting a new one." msgstr "" -#: contrib/admin/templates/registration/password_reset_form.html:19 +#: contrib/admin/templates/registration/password_reset_form.html:22 msgid "Email address:" msgstr "" -#: contrib/admin/templates/registration/password_reset_form.html:19 +#: contrib/admin/templates/registration/password_reset_form.html:25 msgid "Reset my password" msgstr "" -#: contrib/admin/templatetags/admin_list.py:387 +#: contrib/admin/templatetags/admin_list.py:410 msgid "All dates" msgstr "" -#: contrib/admin/views/main.py:81 -#, python-format -msgid "Select %s" -msgstr "" - #: contrib/admin/views/main.py:83 #, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:85 +#, python-format msgid "Select %s to change" msgstr "" -#: contrib/admin/widgets.py:92 +#: contrib/admin/views/main.py:87 +#, python-format +msgid "Select %s to view" +msgstr "" + +#: contrib/admin/widgets.py:101 msgid "Date:" msgstr "" -#: contrib/admin/widgets.py:93 +#: contrib/admin/widgets.py:102 msgid "Time:" msgstr "" -#: contrib/admin/widgets.py:175 +#: contrib/admin/widgets.py:164 msgid "Lookup" msgstr "" -#: contrib/admin/widgets.py:363 +#: contrib/admin/widgets.py:343 msgid "Currently:" msgstr "" -#: contrib/admin/widgets.py:364 +#: contrib/admin/widgets.py:344 msgid "Change:" msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po index 0e51c84..2b335c9 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2010-05-13 15:35+0200\n" "Last-Translator: Django team\n" "Language-Team: English \n" @@ -72,21 +72,21 @@ msgstr "" msgid "Click to remove all chosen %s at once." msgstr "" -#: contrib/admin/static/admin/js/actions.js:47 +#: contrib/admin/static/admin/js/actions.js:48 #: contrib/admin/static/admin/js/actions.min.js:2 msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "" msgstr[1] "" -#: contrib/admin/static/admin/js/actions.js:116 -#: contrib/admin/static/admin/js/actions.min.js:4 +#: contrib/admin/static/admin/js/actions.js:117 +#: contrib/admin/static/admin/js/actions.min.js:5 msgid "" "You have unsaved changes on individual editable fields. If you run an " "action, your unsaved changes will be lost." msgstr "" -#: contrib/admin/static/admin/js/actions.js:128 +#: contrib/admin/static/admin/js/actions.js:129 #: contrib/admin/static/admin/js/actions.min.js:5 msgid "" "You have selected an action, but you haven't saved your changes to " @@ -94,76 +94,76 @@ msgid "" "action." msgstr "" -#: contrib/admin/static/admin/js/actions.js:130 -#: contrib/admin/static/admin/js/actions.min.js:5 +#: contrib/admin/static/admin/js/actions.js:131 +#: contrib/admin/static/admin/js/actions.min.js:6 msgid "" "You have selected an action, and you haven't made any changes on individual " "fields. You're probably looking for the Go button rather than the Save " "button." msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:74 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:13 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:118 +msgid "Now" +msgstr "" + +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:14 +msgid "Midnight" +msgstr "" + +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:15 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:16 +msgid "Noon" +msgstr "" + +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:17 +msgid "6 p.m." +msgstr "" + +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:83 #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." msgstr[0] "" msgstr[1] "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:91 #, javascript-format msgid "Note: You are %s hour behind server time." msgid_plural "Note: You are %s hours behind server time." msgstr[0] "" msgstr[1] "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:109 -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:149 -msgid "Now" -msgstr "" - -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:116 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:136 msgid "Choose a Time" msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:146 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:166 msgid "Choose a time" msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:150 -msgid "Midnight" -msgstr "" - -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:151 -msgid "6 a.m." -msgstr "" - -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:152 -msgid "Noon" -msgstr "" - -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:153 -msgid "6 p.m." -msgstr "" - -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:157 -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:281 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:183 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:343 msgid "Cancel" msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:217 -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:274 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:248 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:328 msgid "Today" msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:224 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:265 msgid "Choose a Date" msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:272 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:322 msgid "Yesterday" msgstr "" -#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:276 +#: contrib/admin/static/admin/js/admin/DateTimeShortcuts.js:334 msgid "Tomorrow" msgstr "" @@ -252,11 +252,12 @@ msgstr "" #: contrib/admin/static/admin/js/collapse.js:10 #: contrib/admin/static/admin/js/collapse.js:21 -#: contrib/admin/static/admin/js/collapse.min.js:1 +#: contrib/admin/static/admin/js/collapse.min.js:4 +#: contrib/admin/static/admin/js/collapse.min.js:5 msgid "Show" msgstr "" #: contrib/admin/static/admin/js/collapse.js:18 -#: contrib/admin/static/admin/js/collapse.min.js:1 +#: contrib/admin/static/admin/js/collapse.min.js:4 msgid "Hide" msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo index 784da64..46468a9 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po index acec875..e9d5339 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Baptiste Darthenay , 2012-2013 -# Baptiste Darthenay , 2013-2017 +# Baptiste Darthenay , 2013-2018 # Claude Paroz , 2016 # Dinu Gherman , 2011 # kristjan , 2012 @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-12-09 14:27+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-30 21:41+0000\n" "Last-Translator: Baptiste Darthenay \n" "Language-Team: Esperanto (http://www.transifex.com/django/django/language/" "eo/)\n" @@ -92,6 +92,15 @@ msgstr "Aldoni alian %(verbose_name)sn" msgid "Remove" msgstr "Forigu" +msgid "Addition" +msgstr "Aldono" + +msgid "Change" +msgstr "Ŝanĝi" + +msgid "Deletion" +msgstr "Forviŝo" + msgid "action time" msgstr "aga tempo" @@ -170,11 +179,11 @@ msgstr "" "Premadu la stirklavon, aŭ Komando-klavon ĉe Mac, por elekti pli ol unu." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"La {name} \"{obj}\" estis aldonita sukcese. Vi rajtas ĝin redakti denove " -"sube." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "La {name} \"{obj}\" estis aldonita sukcese." + +msgid "You may edit it again below." +msgstr "Eblas redakti ĝin sube." #, python-brace-format msgid "" @@ -184,16 +193,19 @@ msgstr "" "La {name} \"{obj}\" estis sukcese aldonita. Vi povas sube aldoni alian {name}" "n." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "La {name} \"{obj}\" estis aldonita sukcese." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" "La {name} \"{obj}\" estis sukcese ŝanĝita. Vi povas sube redakti ĝin denove." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"La {name} \"{obj}\" estis aldonita sukcese. Vi rajtas ĝin redakti denove " +"sube." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -232,6 +244,10 @@ msgstr "Aldoni %sn" msgid "Change %s" msgstr "Ŝanĝi %s" +#, python-format +msgid "View %s" +msgstr "Vidi %sn" + msgid "Database error" msgstr "Datumbaza eraro" @@ -340,7 +356,7 @@ msgid "Change password" msgstr "Ŝanĝi pasvorton" msgid "Please correct the error below." -msgstr "Bonvolu ĝustigi la erarojn sube." +msgstr "Bonvolu ĝustigi la eraron sube." msgid "Please correct the errors below." msgstr "Bonvolu ĝustigi la erarojn sube." @@ -450,8 +466,8 @@ msgstr "" "Ĉu vi certas, ke vi volas forigi la elektitajn %(objects_name)s? Ĉiuj el la " "sekvaj objektoj kaj iliaj rilataj eroj estos forigita:" -msgid "Change" -msgstr "Ŝanĝi" +msgid "View" +msgstr "Vidi" msgid "Delete?" msgstr "Forviŝi?" @@ -470,8 +486,8 @@ msgstr "Modeloj en la %(name)s aplikaĵo" msgid "Add" msgstr "Aldoni" -msgid "You don't have permission to edit anything." -msgstr "Vi ne havas permeson por redakti ĉion ajn." +msgid "You don't have permission to view or edit anything." +msgstr "Vi havas nenian permeson por vidi aŭ redakti." msgid "Recent actions" msgstr "Lastaj agoj" @@ -534,6 +550,10 @@ msgstr "Ŝprucfenestro fermante…" msgid "Change selected %(model)s" msgstr "Redaktu elektitan %(model)sn" +#, python-format +msgid "View selected %(model)s" +msgstr "Vidi elektitan %(model)sn" + #, python-format msgid "Add another %(model)s" msgstr "Aldoni alian %(model)sn" @@ -564,6 +584,12 @@ msgstr "Konservi kaj aldoni alian" msgid "Save and continue editing" msgstr "Konservi kaj daŭre redakti" +msgid "Save and view" +msgstr "Konservi kaj vidi" + +msgid "Close" +msgstr "Fermi" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Dankon pro pasigo de kvalita tempon kun la retejo hodiaŭ." @@ -675,6 +701,10 @@ msgstr "Elekti %sn" msgid "Select %s to change" msgstr "Elekti %sn por ŝanĝi" +#, python-format +msgid "Select %s to view" +msgstr "Elektu %sn por vidi" + msgid "Date:" msgstr "Dato:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo index d5b0120..9b6aa8f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po index 01df2e9..f101319 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Baptiste Darthenay \n" "Language-Team: Esperanto (http://www.transifex.com/django/django/language/" @@ -101,27 +101,9 @@ msgstr "" "Vi elektas agon, kaj vi ne faris ajnajn ŝanĝojn ĉe unuopaj kampoj. Vi " "verŝajne serĉas la Iru-butonon prefere ol la Ŝirmu-butono." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Noto: Vi estas %s horo antaŭ la servila horo." -msgstr[1] "Noto: Vi estas %s horoj antaŭ la servila horo." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Noto: Vi estas %s horo post la servila horo." -msgstr[1] "Noto: Vi estas %s horoj post la servila horo." - msgid "Now" msgstr "Nun" -msgid "Choose a Time" -msgstr "Elektu horon" - -msgid "Choose a time" -msgstr "Elektu tempon" - msgid "Midnight" msgstr "Noktomezo" @@ -134,6 +116,24 @@ msgstr "Tagmezo" msgid "6 p.m." msgstr "6 ptm" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Noto: Vi estas %s horo antaŭ la servila horo." +msgstr[1] "Noto: Vi estas %s horoj antaŭ la servila horo." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Noto: Vi estas %s horo post la servila horo." +msgstr[1] "Noto: Vi estas %s horoj post la servila horo." + +msgid "Choose a Time" +msgstr "Elektu horon" + +msgid "Choose a time" +msgstr "Elektu tempon" + msgid "Cancel" msgstr "Malmendu" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo index 335a9c7..cfdc2b0 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po index c62ab2a..9931f7b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po @@ -3,13 +3,13 @@ # Translators: # Jannis Leidel , 2011 # Leonardo José Guzmán , 2013 -# Ramiro Morales, 2013-2017 +# Ramiro Morales, 2013-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-31 16:49+0000\n" "Last-Translator: Ramiro Morales\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/django/django/" "language/es_AR/)\n" @@ -89,6 +89,15 @@ msgstr "Agregar otro/a %(verbose_name)s" msgid "Remove" msgstr "Eliminar" +msgid "Addition" +msgstr "Agregado" + +msgid "Change" +msgstr "Modificar" + +msgid "Deletion" +msgstr "Borrado" + msgid "action time" msgstr "hora de la acción" @@ -168,9 +177,11 @@ msgstr "" "más de uno." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "Se agregó con éxito {name} \"{obj}\". Puede modificarlo/a abajo." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Se agregó con éxito {name} \"{obj}\"." + +msgid "You may edit it again below." +msgstr "Puede modificarlo/a nuevamente mas abajo." #, python-brace-format msgid "" @@ -179,16 +190,17 @@ msgid "" msgstr "" "Se agregó con éxito {name} \"{obj}\". Puede agregar otro/a {name} abajo." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "Se agregó con éxito {name} \"{obj}\"." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" "Se modificó con éxito {name} \"{obj}\". Puede modificarlo/a nuevamente abajo." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "Se agregó con éxito {name} \"{obj}\". Puede modificarlo/a abajo." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -204,8 +216,8 @@ msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" -"Deben existir items seleccionados para poder realizar acciones sobre los " -"mismos. No se modificó ningún item." +"Deben existir ítems seleccionados para poder realizar acciones sobre los " +"mismos. No se modificó ningún ítem." msgid "No action selected." msgstr "No se ha seleccionado ninguna acción." @@ -226,6 +238,10 @@ msgstr "Agregar %s" msgid "Change %s" msgstr "Modificar %s" +#, python-format +msgid "View %s" +msgstr "Ver %s" + msgid "Database error" msgstr "Error de base de datos" @@ -335,7 +351,7 @@ msgid "Change password" msgstr "Cambiar contraseña" msgid "Please correct the error below." -msgstr "Por favor, corrija los siguientes errores." +msgstr "Por favor, corrija el error detallado mas abajo." msgid "Please correct the errors below." msgstr "Por favor corrija los errores detallados abajo." @@ -447,11 +463,11 @@ msgid "" "following objects and their related items will be deleted:" msgstr "" "¿Está seguro de que desea eliminar el/los objetos %(objects_name)s?. Todos " -"los siguientes objetos e items relacionados a los mismos también serán " +"los siguientes objetos e ítems relacionados a los mismos también serán " "eliminados:" -msgid "Change" -msgstr "Modificar" +msgid "View" +msgstr "Ver" msgid "Delete?" msgstr "¿Eliminar?" @@ -470,8 +486,8 @@ msgstr "Modelos en la aplicación %(name)s" msgid "Add" msgstr "Agregar" -msgid "You don't have permission to edit anything." -msgstr "No tiene permiso para editar nada." +msgid "You don't have permission to view or edit anything." +msgstr "No tiene permiso para ver o modificar nada." msgid "Recent actions" msgstr "Acciones recientes" @@ -534,6 +550,10 @@ msgstr "Cerrando ventana emergente..." msgid "Change selected %(model)s" msgstr "Modificar %(model)s seleccionados/as" +#, python-format +msgid "View selected %(model)s" +msgstr "Ver %(model)s seleccionados/as" + #, python-format msgid "Add another %(model)s" msgstr "Agregar otro/a %(model)s" @@ -564,6 +584,12 @@ msgstr "Guardar y agregar otro" msgid "Save and continue editing" msgstr "Guardar y continuar editando" +msgid "Save and view" +msgstr "Guardar y ver" + +msgid "Close" +msgstr "Cerrar" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." @@ -679,6 +705,10 @@ msgstr "Seleccione %s" msgid "Select %s to change" msgstr "Seleccione %s a modificar" +#, python-format +msgid "Select %s to view" +msgstr "Seleccione %s que desea ver" + msgid "Date:" msgstr "Fecha:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo index e103c12..daf4fb3 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po index 80c96f1..ed9155d 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: Ramiro Morales\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/django/django/" @@ -101,6 +101,21 @@ msgstr "" "campos individuales. Es probable que lo que necesite usar en realidad sea el " "botón Ejecutar y no el botón Guardar." +msgid "Now" +msgstr "Ahora" + +msgid "Midnight" +msgstr "Medianoche" + +msgid "6 a.m." +msgstr "6 AM" + +msgid "Noon" +msgstr "Mediodía" + +msgid "6 p.m." +msgstr "6 PM" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -121,27 +136,12 @@ msgstr[1] "" "Nota: Ud. se encuentra en una zona horaria que está %s horas atrasada " "respecto a la del servidor." -msgid "Now" -msgstr "Ahora" - msgid "Choose a Time" msgstr "Seleccione una Hora" msgid "Choose a time" msgstr "Elija una hora" -msgid "Midnight" -msgstr "Medianoche" - -msgid "6 a.m." -msgstr "6 AM" - -msgid "Noon" -msgstr "Mediodía" - -msgid "6 p.m." -msgstr "6 PM" - msgid "Cancel" msgstr "Cancelar" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo index 44aee60..a84dbe0 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po index 2bb4734..b136291 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Ali Vakilzade , 2015 # Arash Fazeli , 2012 # Jannis Leidel , 2011 +# MJafar Mashhadi , 2018 # Mohammad Hossein Mojtahedi , 2017 # Pouya Abbassi, 2016 # Reza Mohammadi , 2013-2014 @@ -12,16 +13,16 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" -"Last-Translator: Mohammad Hossein Mojtahedi \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-23 22:46+0000\n" +"Last-Translator: MJafar Mashhadi \n" "Language-Team: Persian (http://www.transifex.com/django/django/language/" "fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -92,6 +93,15 @@ msgstr "افزودن یک %(verbose_name)s دیگر" msgid "Remove" msgstr "حذف" +msgid "Addition" +msgstr "افزودن" + +msgid "Change" +msgstr "تغییر" + +msgid "Deletion" +msgstr "کاستن" + msgid "action time" msgstr "زمان اقدام" @@ -171,11 +181,11 @@ msgstr "" "دارید." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -" {name} \"{obj}\" به موفقیت اضافه شد. شما میتوانید در قسمت پایین، آنرا " -"ویرایش کنید." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" با موفقیت اضافه شد." + +msgid "You may edit it again below." +msgstr "می‌توانید مجدداً ویرایش کنید." #, python-brace-format msgid "" @@ -185,10 +195,6 @@ msgstr "" "{name} \"{obj}\" با موفقیت اضافه شد. شما میتوانید {name} دیگری در قسمت پایین " "اضافه کنید." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" با موفقیت اضافه شد." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -196,6 +202,13 @@ msgstr "" "{name} \"{obj}\" با موفقیت تغییر یافت. شما میتوانید دوباره آنرا در قسمت " "پایین ویرایش کنید." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +" {name} \"{obj}\" به موفقیت اضافه شد. شما میتوانید در قسمت پایین، آنرا " +"ویرایش کنید." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -224,7 +237,7 @@ msgstr "%(name)s·\"%(obj)s\" با موفقیت حذف شد." #, python-format msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?" -msgstr "%(name)s با آی‌دی «%(key)s» وجود ندارد. شاید حذف شده است؟" +msgstr "%(name)s با کلید «%(key)s» وجود ندارد. ممکن است حذف شده باشد." #, python-format msgid "Add %s" @@ -234,6 +247,10 @@ msgstr "اضافه کردن %s" msgid "Change %s" msgstr "تغییر %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "خطا در بانک اطلاعاتی" @@ -241,11 +258,13 @@ msgstr "خطا در بانک اطلاعاتی" msgid "%(count)s %(name)s was changed successfully." msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s با موفقیت تغییر کرد." +msgstr[1] "%(count)s %(name)s با موفقیت تغییر کرد." #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "همه موارد %(total_count)s انتخاب شده" +msgstr[1] "همه موارد %(total_count)s انتخاب شده" #, python-format msgid "0 of %(cnt)s selected" @@ -449,8 +468,8 @@ msgstr "" "آیا در خصوص حذف %(objects_name)s انتخاب شده اطمینان دارید؟ تمام موجودیت‌های " "ذیل به همراه موارد مرتبط با آنها حذف خواهند شد:" -msgid "Change" -msgstr "تغییر" +msgid "View" +msgstr "" msgid "Delete?" msgstr "حذف؟" @@ -469,8 +488,8 @@ msgstr "مدلها در برنامه %(name)s " msgid "Add" msgstr "اضافه کردن" -msgid "You don't have permission to edit anything." -msgstr "شما اجازهٔ ویرایش چیزی را ندارید." +msgid "You don't have permission to view or edit anything." +msgstr "شما اجازهٔ مشاهده یا ویرایش چیزی را ندارید." msgid "Recent actions" msgstr "فعالیتهای اخیر" @@ -533,6 +552,10 @@ msgstr "در حال بستن پنجره..." msgid "Change selected %(model)s" msgstr "تغییر دادن %(model)s انتخاب شده" +#, python-format +msgid "View selected %(model)s" +msgstr "" + #, python-format msgid "Add another %(model)s" msgstr "افزدون %(model)s دیگر" @@ -548,6 +571,7 @@ msgstr "جستجو" msgid "%(counter)s result" msgid_plural "%(counter)s results" msgstr[0] "%(counter)s نتیجه" +msgstr[1] "%(counter)s نتیجه" #, python-format msgid "%(full_result_count)s total" @@ -562,6 +586,12 @@ msgstr "ذخیره و ایجاد یکی دیگر" msgid "Save and continue editing" msgstr "ذخیره و ادامهٔ ویرایش" +msgid "Save and view" +msgstr "ذخیره و نمایش" + +msgid "Close" +msgstr "بستن" + msgid "Thanks for spending some quality time with the Web site today." msgstr "متشکر از اینکه مدتی از وقت خود را به ما اختصاص دادید." @@ -672,6 +702,10 @@ msgstr "%s انتخاب کنید" msgid "Select %s to change" msgstr "%s را برای تغییر انتخاب کنید" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "تاریخ:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo index ddd5dd8..7c6fa11 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po index 7f5d4fb..5f8db3b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: Mohammad Hossein Mojtahedi \n" "Language-Team: Persian (http://www.transifex.com/django/django/language/" @@ -21,7 +21,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #, javascript-format msgid "Available %s" @@ -77,6 +77,7 @@ msgstr "برای حذف یکجای همهٔ %sی انتخاب شده کلیک ک msgid "%(sel)s of %(cnt)s selected" msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] " %(sel)s از %(cnt)s انتخاب شده‌اند" +msgstr[1] " %(sel)s از %(cnt)s انتخاب شده‌اند" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -102,25 +103,9 @@ msgstr "" "شما عملی را انجام داده اید، ولی تغییری انجام نداده اید. احتمالا دنبال کلید " "Go به جای Save میگردید." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "توجه: شما %s ساعت از زمان سرور جلو هستید." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "توجه: شما %s ساعت از زمان سرور عقب هستید." - msgid "Now" msgstr "اکنون" -msgid "Choose a Time" -msgstr "یک زمان انتخاب کنید" - -msgid "Choose a time" -msgstr "یک زمان انتخاب کنید" - msgid "Midnight" msgstr "نیمه‌شب" @@ -133,6 +118,24 @@ msgstr "ظهر" msgid "6 p.m." msgstr "۶ بعدازظهر" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "توجه: شما %s ساعت از زمان سرور جلو هستید." +msgstr[1] "توجه: شما %s ساعت از زمان سرور جلو هستید." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "توجه: شما %s ساعت از زمان سرور عقب هستید." +msgstr[1] "توجه: شما %s ساعت از زمان سرور عقب هستید." + +msgid "Choose a Time" +msgstr "یک زمان انتخاب کنید" + +msgid "Choose a time" +msgstr "یک زمان انتخاب کنید" + msgid "Cancel" msgstr "انصراف" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo index e7420b4..73edb24 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po index a1b211a..7957b6e 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po @@ -1,15 +1,15 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Claude Paroz , 2013-2017 +# Claude Paroz , 2013-2018 # Claude Paroz , 2011,2013 # Jannis Leidel , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:41+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 15:45+0000\n" "Last-Translator: Claude Paroz \n" "Language-Team: French (http://www.transifex.com/django/django/language/fr/)\n" "MIME-Version: 1.0\n" @@ -88,6 +88,15 @@ msgstr "Ajouter un objet %(verbose_name)s supplémentaire" msgid "Remove" msgstr "Supprimer" +msgid "Addition" +msgstr "Ajout" + +msgid "Change" +msgstr "Modifier" + +msgid "Deletion" +msgstr "Suppression" + msgid "action time" msgstr "heure de l'action" @@ -167,11 +176,11 @@ msgstr "" "en sélectionner plusieurs." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"L'objet {name} « {obj} » a été ajouté avec succès. Vous pouvez continuer " -"l'édition ci-dessous." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "L'objet {name} « {obj} » a été ajouté avec succès." + +msgid "You may edit it again below." +msgstr "Vous pouvez l'éditer à nouveau ci-dessous." #, python-brace-format msgid "" @@ -181,10 +190,6 @@ msgstr "" "L'objet {name} « {obj} » a été ajouté avec succès. Vous pouvez ajouter un " "autre objet « {name} » ci-dessous." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "L'objet {name} « {obj} » a été ajouté avec succès." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -192,6 +197,13 @@ msgstr "" "L'objet {name} « {obj} » a été modifié avec succès. Vous pouvez continuer " "l'édition ci-dessous." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"L'objet {name} « {obj} » a été ajouté avec succès. Vous pouvez continuer " +"l'édition ci-dessous." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -232,6 +244,10 @@ msgstr "Ajout %s" msgid "Change %s" msgstr "Modification de %s" +#, python-format +msgid "View %s" +msgstr "Afficher %s" + msgid "Database error" msgstr "Erreur de base de données" @@ -341,7 +357,7 @@ msgid "Change password" msgstr "Modifier le mot de passe" msgid "Please correct the error below." -msgstr "Corrigez les erreurs suivantes." +msgstr "Corrigez l'erreur ci-dessous." msgid "Please correct the errors below." msgstr "Corrigez les erreurs ci-dessous." @@ -455,8 +471,8 @@ msgstr "" "Voulez-vous vraiment supprimer les objets %(objects_name)s sélectionnés ? " "Tous les objets suivants et les éléments liés seront supprimés :" -msgid "Change" -msgstr "Modifier" +msgid "View" +msgstr "Afficher" msgid "Delete?" msgstr "Supprimer ?" @@ -475,8 +491,8 @@ msgstr "Modèles de l'application %(name)s" msgid "Add" msgstr "Ajouter" -msgid "You don't have permission to edit anything." -msgstr "Vous n'avez pas la permission de modifier quoi que ce soit." +msgid "You don't have permission to view or edit anything." +msgstr "Vous n'avez pas la permission de voir ou de modifier quoi que ce soit." msgid "Recent actions" msgstr "Actions récentes" @@ -540,6 +556,10 @@ msgstr "Fenêtre en cours de fermeture…" msgid "Change selected %(model)s" msgstr "Modifier l'objet %(model)s sélectionné" +#, python-format +msgid "View selected %(model)s" +msgstr "Afficher l'objet %(model)s sélectionné" + #, python-format msgid "Add another %(model)s" msgstr "Ajouter un autre objet %(model)s" @@ -570,6 +590,12 @@ msgstr "Enregistrer et ajouter un nouveau" msgid "Save and continue editing" msgstr "Enregistrer et continuer les modifications" +msgid "Save and view" +msgstr "Enregistrer et afficher" + +msgid "Close" +msgstr "Fermer" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Merci pour le temps que vous avez accordé à ce site aujourd'hui." @@ -686,6 +712,10 @@ msgstr "Sélectionnez %s" msgid "Select %s to change" msgstr "Sélectionnez l'objet %s à changer" +#, python-format +msgid "Select %s to view" +msgstr "Sélectionnez l'objet %s à afficher" + msgid "Date:" msgstr "Date :" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo index a0f397f..919247d 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po index 94f93da..4b17b0c 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-10-21 13:28+0000\n" "Last-Translator: Claude Paroz \n" "Language-Team: French (http://www.transifex.com/django/django/language/fr/)\n" @@ -101,27 +101,9 @@ msgstr "" "sur des champs. Vous cherchez probablement le bouton Envoyer et non le " "bouton Enregistrer." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Note : l'heure du serveur précède votre heure de %s heure." -msgstr[1] "Note : l'heure du serveur précède votre heure de %s heures." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Note : votre heure précède l'heure du serveur de %s heure." -msgstr[1] "Note : votre heure précède l'heure du serveur de %s heures." - msgid "Now" msgstr "Maintenant" -msgid "Choose a Time" -msgstr "Choisir une heure" - -msgid "Choose a time" -msgstr "Choisir une heure" - msgid "Midnight" msgstr "Minuit" @@ -134,6 +116,24 @@ msgstr "Midi" msgid "6 p.m." msgstr "18:00" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Note : l'heure du serveur précède votre heure de %s heure." +msgstr[1] "Note : l'heure du serveur précède votre heure de %s heures." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Note : votre heure précède l'heure du serveur de %s heure." +msgstr[1] "Note : votre heure précède l'heure du serveur de %s heures." + +msgid "Choose a Time" +msgstr "Choisir une heure" + +msgid "Choose a time" +msgstr "Choisir une heure" + msgid "Cancel" msgstr "Annuler" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo index 07c1153..ad734b8 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.po index 734d7ed..ef8f4bc 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-22 17:29+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-29 09:32+0000\n" "Last-Translator: GunChleoc\n" "Language-Team: Gaelic, Scottish (http://www.transifex.com/django/django/" "language/gd/)\n" @@ -90,6 +90,15 @@ msgstr "Cuir %(verbose_name)s eile ris" msgid "Remove" msgstr "Thoir air falbh" +msgid "Addition" +msgstr "Cur ris" + +msgid "Change" +msgstr "Atharraich" + +msgid "Deletion" +msgstr "Sguabadh às" + msgid "action time" msgstr "àm a’ ghnìomha" @@ -167,11 +176,11 @@ msgid "" msgstr "Cum sìos “Control” no “Command” air Mac gus iomadh nì a thaghadh." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"Chaidh {name} “{obj}” a chur ris gu soirbheachail. ’S urrainn dhut a " -"dheasachadh a-rithist gu h-ìosal." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Chaidh {name} “{obj}” a chur ris gu soirbheachail." + +msgid "You may edit it again below." +msgstr "’S urrainn dhut a dheasachadh a-rithist gu h-ìosal." #, python-brace-format msgid "" @@ -181,10 +190,6 @@ msgstr "" "Chaidh {name} “%{obj}” a chur ris gu soirbheachail. ’S urrainn dhut {name} " "eile a chur ris gu h-ìosal." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "Chaidh {name} “{obj}” a chur ris gu soirbheachail." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -192,6 +197,13 @@ msgstr "" "Chaidh {name} “{obj}” atharrachadh gu soirbheachail. ’S urrainn dhut a " "dheasachadh a-rithist gu h-ìosal." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"Chaidh {name} “{obj}” a chur ris gu soirbheachail. ’S urrainn dhut a " +"dheasachadh a-rithist gu h-ìosal." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -232,6 +244,10 @@ msgstr "Cuir %s ris" msgid "Change %s" msgstr "Atharraich %s" +#, python-format +msgid "View %s" +msgstr "Seall %s" + msgid "Database error" msgstr "Mearachd an stòir-dhàta" @@ -461,8 +477,8 @@ msgstr "" "sguabadh às? Thèid a h-uile oibseact seo ’s na nithean dàimheach aca a " "sguabadh às:" -msgid "Change" -msgstr "Atharraich" +msgid "View" +msgstr "Seall" msgid "Delete?" msgstr "A bheil thu airson a sguabadh às?" @@ -481,8 +497,8 @@ msgstr "Modailean ann an aplacaid %(name)s" msgid "Add" msgstr "Cuir ris" -msgid "You don't have permission to edit anything." -msgstr "Chan eil cead agad gus dad a dheasachadh." +msgid "You don't have permission to view or edit anything." +msgstr "Chan eil cead agad gus dad a shealltainn no a dheasachadh." msgid "Recent actions" msgstr "Gnìomhan o chionn goirid" @@ -546,6 +562,10 @@ msgstr "Tha a’ phriob-uinneag ’ga dùnadh…" msgid "Change selected %(model)s" msgstr "Atharraich a’ %(model)s a thagh thu" +#, python-format +msgid "View selected %(model)s" +msgstr "Seall %(model)s a thagh thu" + #, python-format msgid "Add another %(model)s" msgstr "Cuir %(model)s eile ris" @@ -578,6 +598,12 @@ msgstr "Sàbhail is cuir fear eile ris" msgid "Save and continue editing" msgstr "Sàbhail is deasaich a-rithist" +msgid "Save and view" +msgstr "Sàbhail is seall" + +msgid "Close" +msgstr "Dùin" + msgid "Thanks for spending some quality time with the Web site today." msgstr "" "Mòran taing gun do chuir thu seachad deagh-àm air an làrach-lìn an-diugh." @@ -697,6 +723,10 @@ msgstr "Tagh %s" msgid "Select %s to change" msgstr "Tagh %s gus atharrachadh" +#, python-format +msgid "Select %s to view" +msgstr "Tagh %s gus a shealltainn" + msgid "Date:" msgstr "Ceann-là:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo index 0234ad8..e7c0103 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po index 43c29dc..f198aa4 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-22 17:29+0000\n" "Last-Translator: GunChleoc\n" "Language-Team: Gaelic, Scottish (http://www.transifex.com/django/django/" @@ -106,6 +106,21 @@ msgstr "" "’S dòcha gu bheil thu airson am putan “Siuthad” a chleachdadh seach am putan " "“Sàbhail”." +msgid "Now" +msgstr "An-dràsta" + +msgid "Midnight" +msgstr "Meadhan-oidhche" + +msgid "6 a.m." +msgstr "6m" + +msgid "Noon" +msgstr "Meadhan-latha" + +msgid "6 p.m." +msgstr "6f" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -130,27 +145,12 @@ msgstr[2] "" msgstr[3] "" "An aire: Tha thu %s uair a thìde air dheireadh àm an fhrithealaiche." -msgid "Now" -msgstr "An-dràsta" - msgid "Choose a Time" msgstr "Tagh àm" msgid "Choose a time" msgstr "Tagh àm" -msgid "Midnight" -msgstr "Meadhan-oidhche" - -msgid "6 a.m." -msgstr "6m" - -msgid "Noon" -msgstr "Meadhan-latha" - -msgid "6 p.m." -msgstr "6f" - msgid "Cancel" msgstr "Sguir dheth" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo index 94510e4..23854f0 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po index 227a11b..bd6c92f 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Michael Wolf , 2016-2017 +# Michael Wolf , 2016-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 00:02+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-24 18:59+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Upper Sorbian (http://www.transifex.com/django/django/" "language/hsb/)\n" @@ -87,6 +87,15 @@ msgstr "Přidajće nowe %(verbose_name)s" msgid "Remove" msgstr "Wotstronić" +msgid "Addition" +msgstr "Přidaće" + +msgid "Change" +msgstr "Změnić" + +msgid "Deletion" +msgstr "Zhašenje" + msgid "action time" msgstr "akciski čas" @@ -164,9 +173,11 @@ msgid "" msgstr "Dźeržće „ctrl“ abo „cmd“ na Mac stłóčeny, zo byšće přez jedyn wubrał." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} „{obj}“ je so wuspěšnje přidał. Móžeće jón deleka wobdźěłować." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} „{obj}“ je so wuspěšnje přidał." + +msgid "You may edit it again below." +msgstr "Móžeće deleka unowa wobdźěłać." #, python-brace-format msgid "" @@ -175,15 +186,16 @@ msgid "" msgstr "" "{name} „{obj}“ je so wuspěšnje přidał. Móžeće deleka dalši {name} přidać." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} „{obj}“ je so wuspěšnje přidał." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} „{obj}“ je so wuspěšnje změnił. Móžeće jón deleka wobdźěłować." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} „{obj}“ je so wuspěšnje přidał. Móžeće jón deleka wobdźěłować." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -221,6 +233,10 @@ msgstr "%s přidać" msgid "Change %s" msgstr "%s změnić" +#, python-format +msgid "View %s" +msgstr "%s pokazać" + msgid "Database error" msgstr "Zmylk datoweje banki" @@ -442,8 +458,8 @@ msgstr "" "Chceće woprawdźe wubrane %(objects_name)s zhašeć? Wšě slědowace objekty a " "jich přisłušne zapiski so zhašeja:" -msgid "Change" -msgstr "Změnić" +msgid "View" +msgstr "Pokazać" msgid "Delete?" msgstr "Zhašeć?" @@ -462,8 +478,8 @@ msgstr "Modele w nałoženju %(name)s" msgid "Add" msgstr "Přidać" -msgid "You don't have permission to edit anything." -msgstr "Nimaće prawo něšto wobdźěłować." +msgid "You don't have permission to view or edit anything." +msgstr "Nimaće prawo něšto pokazać abo wobdźěłać." msgid "Recent actions" msgstr "Najnowše akcije" @@ -526,6 +542,10 @@ msgstr "Wuskakowace wokno so začinja..." msgid "Change selected %(model)s" msgstr "Wubrane %(model)s změnić" +#, python-format +msgid "View selected %(model)s" +msgstr "Wibrany %(model)s pokazać" + #, python-format msgid "Add another %(model)s" msgstr "Druhi %(model)s přidać" @@ -558,6 +578,12 @@ msgstr "Skłaodwac a druhi přidać" msgid "Save and continue editing" msgstr "Składować a dale wobdźěłować" +msgid "Save and view" +msgstr "Składować a pokazać" + +msgid "Close" +msgstr "Začinić" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Wulki dźak, zo sće dźensa rjane chwile z websydłom přebywali." @@ -668,6 +694,10 @@ msgstr "%s wubrać" msgid "Select %s to change" msgstr "%s wubrać, zo by so změniło" +#, python-format +msgid "Select %s to view" +msgstr "%s wubrać, kotryž ma so pokazać" + msgid "Date:" msgstr "Datum:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo index 1694fc6..48ff13a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po index 2e6fa49..e33aed6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 00:02+0000\n" "Last-Translator: Michael Wolf \n" "Language-Team: Upper Sorbian (http://www.transifex.com/django/django/" @@ -103,6 +103,21 @@ msgstr "" "Sće akciju wubrał, a njejsće žane změny na jednotliwych polach přewjedł. " "Pytajće najskerje za tłóčatkom „Pósłać“ město tłóčatka „Składować“." +msgid "Now" +msgstr "Nětko" + +msgid "Midnight" +msgstr "Połnóc" + +msgid "6 a.m." +msgstr "6:00 hodź. dopołdnja" + +msgid "Noon" +msgstr "připołdnjo" + +msgid "6 p.m." +msgstr "6 hodź. popołdnju" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -119,27 +134,12 @@ msgstr[1] "Kedźbu: Waš čas je wo %s hodźinje za serwerowym časom." msgstr[2] "Kedźbu: Waš čas je wo %s hodźiny za serwerowym časom." msgstr[3] "Kedźbu: Waš čas je wo %s hodźin za serwerowym časom." -msgid "Now" -msgstr "Nětko" - msgid "Choose a Time" msgstr "Wubjerće čas" msgid "Choose a time" msgstr "Wubjerće čas" -msgid "Midnight" -msgstr "Połnóc" - -msgid "6 a.m." -msgstr "6:00 hodź. dopołdnja" - -msgid "Noon" -msgstr "připołdnjo" - -msgid "6 p.m." -msgstr "6 hodź. popołdnju" - msgid "Cancel" msgstr "Přetorhnyć" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo index 7d8b48f..3988ba7 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po index d6be505..3e67ac7 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po @@ -2,7 +2,8 @@ # # Translators: # Ádám Krizsány , 2015 -# András Veres-Szentkirályi, 2016 +# Akos Zsolt Hochrein , 2018 +# András Veres-Szentkirályi, 2016,2018 # Jannis Leidel , 2011 # János R (Hangya), 2017 # János R (Hangya), 2014 @@ -13,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" -"Last-Translator: János R (Hangya)\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-31 07:37+0000\n" +"Last-Translator: András Veres-Szentkirályi\n" "Language-Team: Hungarian (http://www.transifex.com/django/django/language/" "hu/)\n" "MIME-Version: 1.0\n" @@ -93,6 +94,15 @@ msgstr "Újabb %(verbose_name)s hozzáadása" msgid "Remove" msgstr "Törlés" +msgid "Addition" +msgstr "Hozzáadás" + +msgid "Change" +msgstr "Módosítás" + +msgid "Deletion" +msgstr "Törlés" + msgid "action time" msgstr "művelet időpontja" @@ -172,9 +182,11 @@ msgstr "" "kiválasztásához." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "\"{obj}\" {name} sikeresen létrehozva. Alább ismét szerkesztheti." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "\"{obj}\" {name} sikeresen létrehozva." + +msgid "You may edit it again below." +msgstr "Alább ismét szerkesztheti." #, python-brace-format msgid "" @@ -183,15 +195,16 @@ msgid "" msgstr "" "\"{obj}\" {name} sikeresen létrehozva. Alább újabb {name} hozható létre." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "\"{obj}\" {name} sikeresen létrehozva." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "\"{obj}\" {name} sikeresen módosítva. Alább ismét szerkesztheti." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "\"{obj}\" {name} sikeresen létrehozva. Alább ismét szerkesztheti." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -230,6 +243,10 @@ msgstr "Új %s" msgid "Change %s" msgstr "%s módosítása" +#, python-format +msgid "View %s" +msgstr "%s megtekintése" + msgid "Database error" msgstr "Adatbázishiba" @@ -338,7 +355,7 @@ msgid "Change password" msgstr "Jelszó megváltoztatása" msgid "Please correct the error below." -msgstr "Kérem, javítsa az alábbi hibákat." +msgstr "Kérem javítsa a hibát alább." msgid "Please correct the errors below." msgstr "Kérem javítsa ki a lenti hibákat." @@ -450,8 +467,8 @@ msgstr "" "Biztosan törölni akarja a kiválasztott %(objects_name)s objektumokat? Minden " "alábbi objektum, és a hozzájuk kapcsolódóak is törlésre kerülnek:" -msgid "Change" -msgstr "Módosítás" +msgid "View" +msgstr "Megtekintés" msgid "Delete?" msgstr "Törli?" @@ -470,8 +487,8 @@ msgstr "%(name)s alkalmazásban elérhető modellek." msgid "Add" msgstr "Új" -msgid "You don't have permission to edit anything." -msgstr "Nincs joga szerkeszteni." +msgid "You don't have permission to view or edit anything." +msgstr "Nincs jogosultsága megkinteni vagy módosítani akármit." msgid "Recent actions" msgstr "Legutóbbi műveletek" @@ -532,6 +549,10 @@ msgstr "A popup bezáródik..." msgid "Change selected %(model)s" msgstr "Kiválasztott %(model)s szerkesztése" +#, python-format +msgid "View selected %(model)s" +msgstr "Kiválasztott %(model)s megtekintése" + #, python-format msgid "Add another %(model)s" msgstr "Újabb %(model)s hozzáadása" @@ -562,6 +583,12 @@ msgstr "Mentés és másik hozzáadása" msgid "Save and continue editing" msgstr "Mentés és a szerkesztés folytatása" +msgid "Save and view" +msgstr "Mentés és megtekintés" + +msgid "Close" +msgstr "Bezárás" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Köszönjük hogy egy kis időt eltöltött ma a honlapunkon." @@ -672,6 +699,10 @@ msgstr "%s kiválasztása" msgid "Select %s to change" msgstr "Válasszon ki egyet a módosításhoz (%s)" +#, python-format +msgid "Select %s to view" +msgstr "Válasszon ki egyet a megtekintéshez (%s)" + msgid "Date:" msgstr "Dátum:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo index a5877ca..fd76d35 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po index eadd3d4..5642e40 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: János R (Hangya)\n" "Language-Team: Hungarian (http://www.transifex.com/django/django/language/" @@ -102,27 +102,9 @@ msgstr "" "Kiválasztott egy műveletet, és nem módosított egyetlen mezőt sem. " "Feltehetően a Mehet gombot keresi a Mentés helyett." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Megjegyzés: %s órával a szerveridő előtt jársz" -msgstr[1] "Megjegyzés: %s órával a szerveridő előtt jársz" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Megjegyzés: %s órával a szerveridő mögött jársz" -msgstr[1] "Megjegyzés: %s órával a szerveridő mögött jársz" - msgid "Now" msgstr "Most" -msgid "Choose a Time" -msgstr "Válassza ki az időt" - -msgid "Choose a time" -msgstr "Válassza ki az időt" - msgid "Midnight" msgstr "Éjfél" @@ -135,6 +117,24 @@ msgstr "Dél" msgid "6 p.m." msgstr "Este 6 óra" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Megjegyzés: %s órával a szerveridő előtt jársz" +msgstr[1] "Megjegyzés: %s órával a szerveridő előtt jársz" + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Megjegyzés: %s órával a szerveridő mögött jársz" +msgstr[1] "Megjegyzés: %s órával a szerveridő mögött jársz" + +msgid "Choose a Time" +msgstr "Válassza ki az időt" + +msgid "Choose a time" +msgstr "Válassza ki az időt" + msgid "Cancel" msgstr "Mégsem" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo index 752280e..2a76a53 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po index a38cb76..6a875a1 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ # # Translators: # Claude Paroz , 2014 -# Fery Setiawan , 2015-2017 +# Fery Setiawan , 2015-2018 # Jannis Leidel , 2011 # M Asep Indrayana , 2015 # oon arfiandwi (OonID) , 2016 @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-11-24 14:12+0000\n" -"Last-Translator: rodin \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-18 23:35+0000\n" +"Last-Translator: Fery Setiawan \n" "Language-Team: Indonesian (http://www.transifex.com/django/django/language/" "id/)\n" "MIME-Version: 1.0\n" @@ -93,6 +93,15 @@ msgstr "Tambahkan %(verbose_name)s lagi" msgid "Remove" msgstr "Hapus" +msgid "Addition" +msgstr "Tambahan" + +msgid "Change" +msgstr "Ubah" + +msgid "Deletion" +msgstr "Penghapusan" + msgid "action time" msgstr "waktu aksi" @@ -171,11 +180,11 @@ msgstr "" "Tekan \"Control\", atau \"Command\" pada Mac, untuk memilih lebih dari satu." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" telah berhasil ditambahkan. Anda dapat mengeditnya kembali " -"di bawah." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" telah berhasil ditambahkan." + +msgid "You may edit it again below." +msgstr "Anda dapat menyunting itu kembali dibawah." #, python-brace-format msgid "" @@ -185,10 +194,6 @@ msgstr "" "{name} \"{obj}\" telah berhasil ditambahkan. Anda dapat menambahkan {name} " "lain di bawah." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" telah berhasil ditambahkan." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -196,6 +201,13 @@ msgstr "" " {name} \"{obj}\" telah berhasil diubah. Anda dapat mengeditnya kembali di " "bawah." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" telah berhasil ditambahkan. Anda dapat mengeditnya kembali " +"di bawah." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -233,6 +245,10 @@ msgstr "Tambahkan %s" msgid "Change %s" msgstr "Ubah %s" +#, python-format +msgid "View %s" +msgstr "Melihat %s" + msgid "Database error" msgstr "Galat basis data" @@ -339,7 +355,7 @@ msgid "Change password" msgstr "Ganti sandi" msgid "Please correct the error below." -msgstr "Perbaiki galat di bawah ini." +msgstr "Harap perbaiki kesalahan dibawah." msgid "Please correct the errors below." msgstr "Perbaiki galat di bawah ini." @@ -450,8 +466,8 @@ msgstr "" "Yakin akan menghapus %(objects_name)s terpilih? Semua objek berikut beserta " "objek terkait juga akan dihapus:" -msgid "Change" -msgstr "Ubah" +msgid "View" +msgstr "Tampilan" msgid "Delete?" msgstr "Hapus?" @@ -470,8 +486,8 @@ msgstr "Model pada aplikasi %(name)s" msgid "Add" msgstr "Tambah" -msgid "You don't have permission to edit anything." -msgstr "Anda tidak memiliki izin untuk mengubah apapun." +msgid "You don't have permission to view or edit anything." +msgstr "Anda tidak mempunyai perizinan untuk melihat atau menyunting apapun." msgid "Recent actions" msgstr "Tindakan terbaru" @@ -533,6 +549,10 @@ msgstr "Menutup jendela sembulan..." msgid "Change selected %(model)s" msgstr "Ubah %(model)s yang dipilih" +#, python-format +msgid "View selected %(model)s" +msgstr "Melihat%(model)sterpilih" + #, python-format msgid "Add another %(model)s" msgstr "Tambahkan %(model)s yang lain" @@ -562,6 +582,12 @@ msgstr "Simpan dan tambahkan lagi" msgid "Save and continue editing" msgstr "Simpan dan terus mengedit" +msgid "Save and view" +msgstr "Simpan dan tampilkan" + +msgid "Close" +msgstr "Tutup" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Terima kasih telah menggunakan situs ini hari ini." @@ -673,6 +699,10 @@ msgstr "Pilih %s" msgid "Select %s to change" msgstr "Pilih %s untuk diubah" +#, python-format +msgid "Select %s to view" +msgstr "Pilih %s untuk melihat" + msgid "Date:" msgstr "Tanggal:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo index 5828194..6b7bff3 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po index 9878dec..aa096df 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: rodin \n" "Language-Team: Indonesian (http://www.transifex.com/django/django/language/" @@ -101,25 +101,9 @@ msgstr "" "Anda telah memilih sebuah aksi, tetapi belum mengubah bidang apapun. " "Kemungkinan Anda mencari tombol Buka dan bukan tombol Simpan." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Catatan: Waktu Anda lebih cepat %s jam dibandingkan waktu server." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Catatan: Waktu Anda lebih lambat %s jam dibandingkan waktu server." - msgid "Now" msgstr "Sekarang" -msgid "Choose a Time" -msgstr "Pilih Waktu" - -msgid "Choose a time" -msgstr "Pilih waktu" - msgid "Midnight" msgstr "Tengah malam" @@ -132,6 +116,22 @@ msgstr "Siang" msgid "6 p.m." msgstr "18.00" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Catatan: Waktu Anda lebih cepat %s jam dibandingkan waktu server." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Catatan: Waktu Anda lebih lambat %s jam dibandingkan waktu server." + +msgid "Choose a Time" +msgstr "Pilih Waktu" + +msgid "Choose a time" +msgstr "Pilih waktu" + msgid "Cancel" msgstr "Batal" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo index 2f6413d..f16efbd 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po index c07a5b3..bd8d939 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po @@ -4,13 +4,13 @@ # Hafsteinn Einarsson , 2011-2012 # Jannis Leidel , 2011 # Kári Tristan Helgason , 2013 -# Thordur Sigurdsson , 2016-2017 +# Thordur Sigurdsson , 2016-2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:40+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-22 20:44+0000\n" "Last-Translator: Thordur Sigurdsson \n" "Language-Team: Icelandic (http://www.transifex.com/django/django/language/" "is/)\n" @@ -89,6 +89,15 @@ msgstr "Bæta við öðrum %(verbose_name)s" msgid "Remove" msgstr "Fjarlægja" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "Breyta" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "tími aðgerðar" @@ -167,10 +176,11 @@ msgstr "" "Haltu inni „Control“, eða „Command“ á Mac til þess að velja fleira en eitt." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} „{obj}“ hefur verið bætt við. Þú getur breytt því aftur að neðan." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} „{obj}“ var bætt við." + +msgid "You may edit it again below." +msgstr "Þú mátt breyta þessu aftur hér að neðan." #, python-brace-format msgid "" @@ -179,15 +189,17 @@ msgid "" msgstr "" "{name} „{obj}“ hefur verið breytt. Þú getur bætt við öðru {name} að neðan." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} „{obj}“ var bætt við." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} „{obj}“ hefur verið breytt. Þú getur breytt því aftur að neðan." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} „{obj}“ hefur verið bætt við. Þú getur breytt því aftur að neðan." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -225,6 +237,10 @@ msgstr "Bæta við %s" msgid "Change %s" msgstr "Breyta %s" +#, python-format +msgid "View %s" +msgstr "Skoða %s" + msgid "Database error" msgstr "Gagnagrunnsvilla" @@ -333,7 +349,7 @@ msgid "Change password" msgstr "Breyta lykilorði" msgid "Please correct the error below." -msgstr "Vinsamlegast leiðréttu villurnar hér að neðan." +msgstr "Vinsamlegast lagfærðu villuna fyrir neðan." msgid "Please correct the errors below." msgstr "Vinsamlegast leiðréttu villurnar hér að neðan." @@ -442,8 +458,8 @@ msgstr "" "Ertu viss um að þú viljir eyða völdum %(objects_name)s? Öllum eftirtöldum " "hlutum og skyldum hlutum verður eytt:" -msgid "Change" -msgstr "Breyta" +msgid "View" +msgstr "Skoða" msgid "Delete?" msgstr "Eyða?" @@ -462,8 +478,8 @@ msgstr "Módel í appinu %(name)s" msgid "Add" msgstr "Bæta við" -msgid "You don't have permission to edit anything." -msgstr "Þú hefur ekki réttindi til að breyta neinu" +msgid "You don't have permission to view or edit anything." +msgstr "Þú hefur ekki réttindi til að skoða eða breyta neinu." msgid "Recent actions" msgstr "Nýlegar aðgerðir" @@ -525,6 +541,10 @@ msgstr "Sprettigluggi lokast..." msgid "Change selected %(model)s" msgstr "Breyta völdu %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Skoða valið %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Bæta við %(model)s" @@ -555,6 +575,12 @@ msgstr "Vista og búa til nýtt" msgid "Save and continue editing" msgstr "Vista og halda áfram að breyta" +msgid "Save and view" +msgstr "Vista og skoða" + +msgid "Close" +msgstr "Loka" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Takk fyrir að verja tíma í vefsíðuna í dag." @@ -668,6 +694,10 @@ msgstr "Veldu %s" msgid "Select %s to change" msgstr "Veldu %s til að breyta" +#, python-format +msgid "Select %s to view" +msgstr "Veldu %s til að skoða" + msgid "Date:" msgstr "Dagsetning:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo index 33c7039..3f47b7b 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po index 024e77a..847c39c 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po @@ -4,14 +4,15 @@ # gudbergur , 2012 # Hafsteinn Einarsson , 2011-2012 # Jannis Leidel , 2011 +# Matt R, 2018 # Thordur Sigurdsson , 2016-2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" -"PO-Revision-Date: 2017-09-19 16:41+0000\n" -"Last-Translator: Thordur Sigurdsson \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2018-05-18 14:09+0000\n" +"Last-Translator: Matt R\n" "Language-Team: Icelandic (http://www.transifex.com/django/django/language/" "is/)\n" "MIME-Version: 1.0\n" @@ -99,27 +100,9 @@ msgstr "" "Þú hefur valið aðgerð en hefur ekki gert breytingar á reitum. Þú ert líklega " "að leita að 'Fara' hnappnum frekar en 'Vista' hnappnum." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Athugaðu að þú ert %s klukkustund á undan tíma vefþjóns." -msgstr[1] "Athugaðu að þú ert %s klukkustundum á undan tíma vefþjóns." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Athugaðu að þú ert %s klukkustund á eftir tíma vefþjóns." -msgstr[1] "Athugaðu að þú ert %s klukkustundum á eftir tíma vefþjóns." - msgid "Now" msgstr "Núna" -msgid "Choose a Time" -msgstr "Veldu tíma" - -msgid "Choose a time" -msgstr "Veldu tíma" - msgid "Midnight" msgstr "Miðnætti" @@ -132,6 +115,24 @@ msgstr "Hádegi" msgid "6 p.m." msgstr "6 e.h." +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Athugaðu að þú ert %s klukkustund á undan tíma vefþjóns." +msgstr[1] "Athugaðu að þú ert %s klukkustundum á undan tíma vefþjóns." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Athugaðu að þú ert %s klukkustund á eftir tíma vefþjóns." +msgstr[1] "Athugaðu að þú ert %s klukkustundum á eftir tíma vefþjóns." + +msgid "Choose a Time" +msgstr "Veldu tíma" + +msgid "Choose a time" +msgstr "Veldu tíma" + msgid "Cancel" msgstr "Hætta við" @@ -148,40 +149,40 @@ msgid "Tomorrow" msgstr "Á morgun" msgid "January" -msgstr "Janúar" +msgstr "janúar" msgid "February" -msgstr "Febrúar" +msgstr "febrúar" msgid "March" -msgstr "Mars" +msgstr "mars" msgid "April" -msgstr "Apríl" +msgstr "apríl" msgid "May" -msgstr "Maí" +msgstr "maí" msgid "June" -msgstr "Júní" +msgstr "júní" msgid "July" -msgstr "Júlí" +msgstr "júlí" msgid "August" -msgstr "Ágúst" +msgstr "ágúst" msgid "September" -msgstr "September" +msgstr "september" msgid "October" -msgstr "Október" +msgstr "október" msgid "November" -msgstr "Nóvember" +msgstr "nóvember" msgid "December" -msgstr "Desember" +msgstr "desember" msgctxt "one letter Sunday" msgid "S" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo index fc35671..e978d93 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po index d8f79ab..2f2c9c6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po @@ -1,12 +1,14 @@ # This file is distributed under the same license as the Django package. # # Translators: -# bbstuntman , 2017 +# Topolino_Hackerino , 2017 +# Carlo Miron , 2018 # Denis Darii , 2011 # Flavio Curella , 2013 # Jannis Leidel , 2011 # Luciano De Falco Alfano, 2016 # Marco Bonetti, 2014 +# Mirco Grillo , 2018 # Nicola Larosa , 2013 # palmux , 2014-2015 # Mattia Procopio , 2015 @@ -15,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" -"Last-Translator: palmux \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-30 21:10+0000\n" +"Last-Translator: Carlo Miron \n" "Language-Team: Italian (http://www.transifex.com/django/django/language/" "it/)\n" "MIME-Version: 1.0\n" @@ -95,6 +97,15 @@ msgstr "Aggiungi un altro %(verbose_name)s." msgid "Remove" msgstr "Elimina" +msgid "Addition" +msgstr "Aggiunta " + +msgid "Change" +msgstr "Modifica" + +msgid "Deletion" +msgstr "Eliminazione" + msgid "action time" msgstr "momento dell'azione" @@ -173,11 +184,11 @@ msgstr "" "Tieni premuto \"Control\", o \"Command\" su Mac, per selezionarne più di uno." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"Il {name} \"{obj}\" è stato aggiunto con successo. Puoi modificarlo " -"nuovamente qui sotto." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Il {name} \"{obj}\" è stato aggiunto con successo." + +msgid "You may edit it again below." +msgstr "Puoi modificarlo di nuovo qui sotto." #, python-brace-format msgid "" @@ -187,10 +198,6 @@ msgstr "" "Il {name} \"{obj}\" è stato aggiunto con successo. Puoi aggiungere un altro " "{name} qui sotto." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "Il {name} \"{obj}\" è stato aggiunto con successo." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -198,6 +205,13 @@ msgstr "" "Il {name} \"{obj}\" è stato modificato con successo. Puoi modificarlo " "nuovamente qui sotto." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"Il {name} \"{obj}\" è stato aggiunto con successo. Puoi modificarlo " +"nuovamente qui sotto." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -237,6 +251,10 @@ msgstr "Aggiungi %s" msgid "Change %s" msgstr "Modifica %s" +#, python-format +msgid "View %s" +msgstr "Vista %s" + msgid "Database error" msgstr "Errore del database" @@ -346,7 +364,7 @@ msgid "Change password" msgstr "Modifica password" msgid "Please correct the error below." -msgstr "Correggi l'errore qui sotto." +msgstr "Per favore, correggi l'errore sottostante" msgid "Please correct the errors below." msgstr "Correggi gli errori qui sotto." @@ -458,8 +476,8 @@ msgstr "" "Confermi la cancellazione dell'elemento %(objects_name)s selezionato? " "Saranno rimossi tutti i seguenti oggetti e le loro voci correlate:" -msgid "Change" -msgstr "Modifica" +msgid "View" +msgstr "Vista" msgid "Delete?" msgstr "Cancellare?" @@ -478,8 +496,8 @@ msgstr "Modelli nell'applicazione %(name)s" msgid "Add" msgstr "Aggiungi" -msgid "You don't have permission to edit anything." -msgstr "Non hai i privilegi per modificare nulla." +msgid "You don't have permission to view or edit anything." +msgstr "Non hai i permessi per visualizzare o modificare nulla" msgid "Recent actions" msgstr "Azioni recenti" @@ -542,6 +560,10 @@ msgstr "Chiusura popup..." msgid "Change selected %(model)s" msgstr "Modifica la selezione %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Visualizza il %(model)s selezionato" + #, python-format msgid "Add another %(model)s" msgstr "Aggiungi un altro %(model)s" @@ -572,6 +594,12 @@ msgstr "Salva e aggiungi un altro" msgid "Save and continue editing" msgstr "Salva e continua le modifiche" +msgid "Save and view" +msgstr "Salva e visualizza" + +msgid "Close" +msgstr "Chiudi" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi." @@ -683,6 +711,10 @@ msgstr "Scegli %s" msgid "Select %s to change" msgstr "Scegli %s da modificare" +#, python-format +msgid "Select %s to view" +msgstr "Seleziona %s per visualizzarlo" + msgid "Date:" msgstr "Data:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo index 19b04dd..85f5ce8 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po index 0625ab8..baa69c6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: palmux \n" "Language-Team: Italian (http://www.transifex.com/django/django/language/" @@ -104,27 +104,9 @@ msgstr "" "Hai selezionato un'azione, e non hai ancora apportato alcuna modifica a " "campi singoli. Probabilmente stai cercando il pulsante Go, invece di Save." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Nota: Sei %s ora in anticipo rispetto al server." -msgstr[1] "Nota: Sei %s ore in anticipo rispetto al server." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Nota: Sei %s ora in ritardo rispetto al server." -msgstr[1] "Nota: Sei %s ore in ritardo rispetto al server." - msgid "Now" msgstr "Adesso" -msgid "Choose a Time" -msgstr "Scegli un orario" - -msgid "Choose a time" -msgstr "Scegli un orario" - msgid "Midnight" msgstr "Mezzanotte" @@ -137,6 +119,24 @@ msgstr "Mezzogiorno" msgid "6 p.m." msgstr "6 del pomeriggio" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Nota: Sei %s ora in anticipo rispetto al server." +msgstr[1] "Nota: Sei %s ore in anticipo rispetto al server." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Nota: Sei %s ora in ritardo rispetto al server." +msgstr[1] "Nota: Sei %s ore in ritardo rispetto al server." + +msgid "Choose a Time" +msgstr "Scegli un orario" + +msgid "Choose a time" +msgstr "Scegli un orario" + msgid "Cancel" msgstr "Annulla" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo index a2cafad..7743bd8 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po index 221e43e..8220896 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po @@ -3,15 +3,15 @@ # Translators: # Claude Paroz , 2016 # Jannis Leidel , 2011 -# Shinya Okano , 2012-2017 +# Shinya Okano , 2012-2018 # Tetsuya Morimoto , 2011 # 上田慶祐 , 2015 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:41+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-20 04:31+0000\n" "Last-Translator: Shinya Okano \n" "Language-Team: Japanese (http://www.transifex.com/django/django/language/" "ja/)\n" @@ -90,6 +90,15 @@ msgstr "%(verbose_name)s の追加" msgid "Remove" msgstr "削除" +msgid "Addition" +msgstr "追加" + +msgid "Change" +msgstr "変更" + +msgid "Deletion" +msgstr "削除" + msgid "action time" msgstr "操作時刻" @@ -169,9 +178,11 @@ msgstr "" "Command キーを使ってください" #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" を追加しました。続けて編集できます。" +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" を追加しました。" + +msgid "You may edit it again below." +msgstr "以下で再度編集できます。" #, python-brace-format msgid "" @@ -179,15 +190,16 @@ msgid "" "below." msgstr "{name} \"{obj}\" を追加しました。 別の {name} を以下から追加できます。" -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" を追加しました。" - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" を変更しました。 以下から再度編集できます。" +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" を追加しました。続けて編集できます。" + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -224,6 +236,10 @@ msgstr "%s を追加" msgid "Change %s" msgstr "%s を変更" +#, python-format +msgid "View %s" +msgstr "%sを表示" + msgid "Database error" msgstr "データベースエラー" @@ -441,8 +457,8 @@ msgstr "" "本当に選択した %(objects_name)s を削除しますか? 以下の全てのオブジェクトと関" "連する要素が削除されます:" -msgid "Change" -msgstr "変更" +msgid "View" +msgstr "表示" msgid "Delete?" msgstr "削除しますか?" @@ -461,8 +477,8 @@ msgstr "%(name)s アプリケーション内のモデル" msgid "Add" msgstr "追加" -msgid "You don't have permission to edit anything." -msgstr "変更のためのパーミッションがありません。" +msgid "You don't have permission to view or edit anything." +msgstr "表示または変更のためのパーミッションがありません。" msgid "Recent actions" msgstr "最近行った操作" @@ -524,6 +540,10 @@ msgstr "ポップアップを閉じています..." msgid "Change selected %(model)s" msgstr "選択された %(model)s の変更" +#, python-format +msgid "View selected %(model)s" +msgstr "選択された%(model)sの表示" + #, python-format msgid "Add another %(model)s" msgstr "%(model)s の追加" @@ -553,6 +573,12 @@ msgstr "保存してもう一つ追加" msgid "Save and continue editing" msgstr "保存して編集を続ける" +msgid "Save and view" +msgstr "保存して表示" + +msgid "Close" +msgstr "閉じる" + msgid "Thanks for spending some quality time with the Web site today." msgstr "ご利用ありがとうございました。" @@ -661,6 +687,10 @@ msgstr "%s を選択" msgid "Select %s to change" msgstr "変更する %s を選択" +#, python-format +msgid "Select %s to view" +msgstr "表示する%sを選択" + msgid "Date:" msgstr "日付:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo index de2a044..24824f8 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po index d041ecd..3768547 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Shinya Okano \n" "Language-Team: Japanese (http://www.transifex.com/django/django/language/" @@ -96,25 +96,9 @@ msgstr "" "操作を選択しましたが、フィールドに変更はありませんでした。もしかして保存ボタ" "ンではなくて実行ボタンをお探しですか。" -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "ノート: あなたの環境はサーバー時間より、%s時間進んでいます。" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "ノート: あなたの環境はサーバー時間より、%s時間遅れています。" - msgid "Now" msgstr "現在" -msgid "Choose a Time" -msgstr "時間を選択" - -msgid "Choose a time" -msgstr "時間を選択" - msgid "Midnight" msgstr "0時" @@ -127,6 +111,22 @@ msgstr "12時" msgid "6 p.m." msgstr "午後 6 時" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "ノート: あなたの環境はサーバー時間より、%s時間進んでいます。" + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "ノート: あなたの環境はサーバー時間より、%s時間遅れています。" + +msgid "Choose a Time" +msgstr "時間を選択" + +msgid "Choose a time" +msgstr "時間を選択" + msgid "Cancel" msgstr "キャンセル" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo index 820c8b6..e2614c3 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po index 7ee6672..37427ee 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po @@ -7,15 +7,16 @@ # Jaehong Kim , 2011 # Jannis Leidel , 2011 # Le Tartuffe , 2014,2016 +# Noh Seho , 2018 # Seacbyul Lee , 2017 # Taesik Yoon , 2015 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:41+0000\n" -"Last-Translator: Seacbyul Lee \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-18 09:00+0000\n" +"Last-Translator: Noh Seho \n" "Language-Team: Korean (http://www.transifex.com/django/django/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -92,6 +93,15 @@ msgstr "%(verbose_name)s 더 추가하기" msgid "Remove" msgstr "삭제하기" +msgid "Addition" +msgstr "추가" + +msgid "Change" +msgstr "변경" + +msgid "Deletion" +msgstr "삭제" + msgid "action time" msgstr "액션 타임" @@ -169,11 +179,11 @@ msgid "" msgstr "하나 이상을 선택하려면 \"Control\" 키, Mac은 \"Command\"키를 누르세요." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\"가 성공적으로 추가되었습니다. 아래에서 다시 수정할 수 있습니" -"다." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\"가 성공적으로 추가되었습니다." + +msgid "You may edit it again below." +msgstr "아래 내용을 수정해야 합니다." #, python-brace-format msgid "" @@ -184,12 +194,15 @@ msgstr "" "수 있습니다." #, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\"가 성공적으로 추가되었습니다." +msgid "" +"The {name} \"{obj}\" was changed successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\"가 성공적으로 추가되었습니다. 아래에서 다시 수정할 수 있습니" +"다." #, python-brace-format msgid "" -"The {name} \"{obj}\" was changed successfully. You may edit it again below." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" "{name} \"{obj}\"가 성공적으로 추가되었습니다. 아래에서 다시 수정할 수 있습니" "다." @@ -234,6 +247,10 @@ msgstr "%s 추가" msgid "Change %s" msgstr "%s 변경" +#, python-format +msgid "View %s" +msgstr "뷰 %s" + msgid "Database error" msgstr "데이터베이스 오류" @@ -340,7 +357,7 @@ msgid "Change password" msgstr "비밀번호 변경" msgid "Please correct the error below." -msgstr "아래의 오류를 수정하십시오." +msgstr "아래 오류를 해결해주세요." msgid "Please correct the errors below." msgstr "아래의 오류들을 수정하십시오." @@ -450,8 +467,8 @@ msgstr "" "선택한 %(objects_name)s를 정말 삭제하시겠습니까? 다음의 오브젝트와 연관 아이" "템들이 모두 삭제됩니다:" -msgid "Change" -msgstr "변경" +msgid "View" +msgstr "" msgid "Delete?" msgstr "삭제" @@ -470,8 +487,8 @@ msgstr "%(name)s 애플리케이션의 모델" msgid "Add" msgstr "추가" -msgid "You don't have permission to edit anything." -msgstr "수정할 권한이 없습니다." +msgid "You don't have permission to view or edit anything." +msgstr "조회하거나 수정할 수 있는 권한이 없습니다." msgid "Recent actions" msgstr "최근 활동" @@ -533,6 +550,10 @@ msgstr "팝업 닫는 중..." msgid "Change selected %(model)s" msgstr "선택된 %(model)s 변경" +#, python-format +msgid "View selected %(model)s" +msgstr "" + #, python-format msgid "Add another %(model)s" msgstr "%(model)s 추가" @@ -562,6 +583,12 @@ msgstr "저장 및 다른 이름으로 추가" msgid "Save and continue editing" msgstr "저장 및 편집 계속" +msgid "Save and view" +msgstr "저정하고 조회하기" + +msgid "Close" +msgstr "닫기" + msgid "Thanks for spending some quality time with the Web site today." msgstr "사이트를 이용해 주셔서 고맙습니다." @@ -672,6 +699,10 @@ msgstr "%s 선택" msgid "Select %s to change" msgstr "변경할 %s 선택" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "날짜:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo index 04d1372..8ef689d 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po index bab7dcd..6d52c03 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Hoseok Lee \n" "Language-Team: Korean (http://www.transifex.com/django/django/language/ko/)\n" @@ -99,25 +99,9 @@ msgstr "" "개별 필드에 아무런 변경이 없는 상태로 액션을 선택했습니다. 저장 버튼이 아니" "라 진행 버튼을 찾아보세요." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Note: 서버 시간보다 %s 시간 빠릅니다." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Note: 서버 시간보다 %s 시간 늦은 시간입니다." - msgid "Now" msgstr "현재" -msgid "Choose a Time" -msgstr "시간 선택" - -msgid "Choose a time" -msgstr "시간 선택" - msgid "Midnight" msgstr "자정" @@ -130,6 +114,22 @@ msgstr "정오" msgid "6 p.m." msgstr "오후 6시" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Note: 서버 시간보다 %s 시간 빠릅니다." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Note: 서버 시간보다 %s 시간 늦은 시간입니다." + +msgid "Choose a Time" +msgstr "시간 선택" + +msgid "Choose a time" +msgstr "시간 선택" + msgid "Cancel" msgstr "취소" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo index e39a229..f866f81 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po index 6ab3676..4752f75 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # Translators: # Jannis Leidel , 2011 # lauris , 2011 -# Matas Dailyda , 2015-2017 +# Matas Dailyda , 2015-2018 # Nikolajus Krauklis , 2013 # Simonas Kazlauskas , 2012-2013 # sirex , 2011 @@ -11,17 +11,18 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:40+0000\n" -"Last-Translator: Matas Dailyda \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 01:29+0000\n" +"Last-Translator: Jannis Leidel \n" "Language-Team: Lithuanian (http://www.transifex.com/django/django/language/" "lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < " +"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? " +"1 : n % 1 != 0 ? 2: 3);\n" #, python-format msgid "Successfully deleted %(count)d %(items)s." @@ -92,6 +93,15 @@ msgstr "Pridėti dar viena %(verbose_name)s" msgid "Remove" msgstr "Pašalinti" +msgid "Addition" +msgstr "Pridėjimas" + +msgid "Change" +msgstr "Pakeisti" + +msgid "Deletion" +msgstr "Pašalinimas" + msgid "action time" msgstr "veiksmo laikas" @@ -171,10 +181,11 @@ msgstr "" "daugiau nei vieną." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" buvo sėkmingai pridėtas. Galite jį vėl redaguoti žemiau." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" buvo sėkmingai pridėtas." + +msgid "You may edit it again below." +msgstr "Galite tai dar kartą redaguoti žemiau." #, python-brace-format msgid "" @@ -183,15 +194,17 @@ msgid "" msgstr "" "{name} \"{obj}\" buvo sėkmingai pridėtas. Galite pridėti kitą {name} žemiau." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" buvo sėkmingai pridėtas." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" buvo sėkmingai pakeistas. Galite jį koreguoti žemiau." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" buvo sėkmingai pridėtas. Galite jį vėl redaguoti žemiau." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -229,6 +242,10 @@ msgstr "Pridėti %s" msgid "Change %s" msgstr "Pakeisti %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Duomenų bazės klaida" @@ -238,6 +255,7 @@ msgid_plural "%(count)s %(name)s were changed successfully." msgstr[0] "%(count)s %(name)s sėkmingai pakeistas." msgstr[1] "%(count)s %(name)s sėkmingai pakeisti." msgstr[2] "%(count)s %(name)s " +msgstr[3] "%(count)s %(name)s " #, python-format msgid "%(total_count)s selected" @@ -245,6 +263,7 @@ msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s pasirinktas" msgstr[1] "%(total_count)s pasirinkti" msgstr[2] "Visi %(total_count)s pasirinkti" +msgstr[3] "Visi %(total_count)s pasirinkti" #, python-format msgid "0 of %(cnt)s selected" @@ -339,7 +358,7 @@ msgid "Change password" msgstr "Keisti slaptažodį" msgid "Please correct the error below." -msgstr "Ištaisykite žemiau esancias klaidas." +msgstr "Prašome ištaisyti žemiau esančią klaidą." msgid "Please correct the errors below." msgstr "Ištaisykite žemiau esančias klaidas." @@ -448,8 +467,8 @@ msgstr "" "Ar esate tikri, kad norite ištrinti pasirinktus %(objects_name)s? Sekantys " "pasirinkti bei susiję objektai bus ištrinti:" -msgid "Change" -msgstr "Pakeisti" +msgid "View" +msgstr "Peržiūrėti" msgid "Delete?" msgstr "Ištrinti?" @@ -468,8 +487,8 @@ msgstr "%(name)s aplikacijos modeliai" msgid "Add" msgstr "Pridėti" -msgid "You don't have permission to edit anything." -msgstr "Neturite teisių ką nors keistis." +msgid "You don't have permission to view or edit anything." +msgstr "Jūs neturite teisių peržiūrai ir redagavimui." msgid "Recent actions" msgstr "Paskutiniai veiksmai" @@ -532,6 +551,10 @@ msgstr "Langas užsidaro..." msgid "Change selected %(model)s" msgstr "Keisti pasirinktus %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Peržiūrėti pasirinktus %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Pridėti dar vieną %(model)s" @@ -549,6 +572,7 @@ msgid_plural "%(counter)s results" msgstr[0] "%(counter)s rezultatas" msgstr[1] "%(counter)s rezultatai" msgstr[2] "%(counter)s rezultatai" +msgstr[3] "%(counter)s rezultatai" #, python-format msgid "%(full_result_count)s total" @@ -563,6 +587,12 @@ msgstr "Išsaugoti ir pridėti naują" msgid "Save and continue editing" msgstr "Išsaugoti ir tęsti redagavimą" +msgid "Save and view" +msgstr "Išsaugoti ir peržiūrėti" + +msgid "Close" +msgstr "Uždaryti" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Dėkui už šiandien tinklalapyje turiningai praleistą laiką." @@ -674,6 +704,10 @@ msgstr "Pasirinkti %s" msgid "Select %s to change" msgstr "Pasirinkite %s kurį norite keisti" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Data:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo index d00b3f9..77922d3 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po index 1aad1b1..a922bd6 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Matas Dailyda \n" "Language-Team: Lithuanian (http://www.transifex.com/django/django/language/" @@ -19,8 +19,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < " +"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? " +"1 : n % 1 != 0 ? 2: 3);\n" #, javascript-format msgid "Available %s" @@ -80,6 +81,7 @@ msgid_plural "%(sel)s of %(cnt)s selected" msgstr[0] "pasirinktas %(sel)s iš %(cnt)s" msgstr[1] "pasirinkti %(sel)s iš %(cnt)s" msgstr[2] "pasirinkti %(sel)s iš %(cnt)s" +msgstr[3] "pasirinkti %(sel)s iš %(cnt)s" msgid "" "You have unsaved changes on individual editable fields. If you run an " @@ -103,35 +105,9 @@ msgstr "" "Pasirinkote veiksmą, bet neesate pakeitę laukų reikšmių. Jūs greičiausiai " "ieškote mygtuko Vykdyti, o ne mygtuko Saugoti." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "" -"Pastaba: Jūsų laikrodis rodo %s valanda daugiau nei serverio laikrodis." -msgstr[1] "" -"Pastaba: Jūsų laikrodis rodo %s valandomis daugiau nei serverio laikrodis." -msgstr[2] "" -"Pastaba: Jūsų laikrodis rodo %s valandų daugiau nei serverio laikrodis." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "" -"Pastaba: Jūsų laikrodis rodo %s valanda mažiau nei serverio laikrodis." -msgstr[1] "" -"Pastaba: Jūsų laikrodis rodo %s valandomis mažiau nei serverio laikrodis." -msgstr[2] "" -"Pastaba: Jūsų laikrodis rodo %s valandų mažiau nei serverio laikrodis." - msgid "Now" msgstr "Dabar" -msgid "Choose a Time" -msgstr "Pasirinkite laiką" - -msgid "Choose a time" -msgstr "Pasirinkite laiką" - msgid "Midnight" msgstr "Vidurnaktis" @@ -144,6 +120,36 @@ msgstr "Vidurdienis" msgid "6 p.m." msgstr "18:00" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "" +"Pastaba: Jūsų laikrodis rodo %s valanda daugiau nei serverio laikrodis." +msgstr[1] "" +"Pastaba: Jūsų laikrodis rodo %s valandomis daugiau nei serverio laikrodis." +msgstr[2] "" +"Pastaba: Jūsų laikrodis rodo %s valandų daugiau nei serverio laikrodis." +msgstr[3] "" +"Pastaba: Jūsų laikrodis rodo %s valandų daugiau nei serverio laikrodis." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "" +"Pastaba: Jūsų laikrodis rodo %s valanda mažiau nei serverio laikrodis." +msgstr[1] "" +"Pastaba: Jūsų laikrodis rodo %s valandomis mažiau nei serverio laikrodis." +msgstr[2] "" +"Pastaba: Jūsų laikrodis rodo %s valandų mažiau nei serverio laikrodis." +msgstr[3] "" +"Pastaba: Jūsų laikrodis rodo %s valandų mažiau nei serverio laikrodis." + +msgid "Choose a Time" +msgstr "Pasirinkite laiką" + +msgid "Choose a time" +msgstr "Pasirinkite laiką" + msgid "Cancel" msgstr "Atšaukti" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo index 38c0f8a..5c2ec1a 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po index 024552e..ed2f0f1 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po @@ -2,7 +2,8 @@ # # Translators: # edgars , 2011 -# Edgars Voroboks , 2017 +# NullIsNot0 , 2017 +# NullIsNot0 , 2018 # Jannis Leidel , 2011 # Māris Nartišs , 2016 # peterisb , 2016 @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-11-18 07:25+0000\n" -"Last-Translator: Edgars Voroboks \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-03 12:04+0000\n" +"Last-Translator: NullIsNot0 \n" "Language-Team: Latvian (http://www.transifex.com/django/django/language/" "lv/)\n" "MIME-Version: 1.0\n" @@ -91,6 +92,15 @@ msgstr "Pievienot vēl %(verbose_name)s" msgid "Remove" msgstr "Dzēst" +msgid "Addition" +msgstr "Pievienošana" + +msgid "Change" +msgstr "Izmainīt" + +msgid "Deletion" +msgstr "Dzēšana" + msgid "action time" msgstr "darbības laiks" @@ -170,11 +180,11 @@ msgstr "" "izvēlētos vairāk par vienu." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" tika veiksmīgi pievienots. Zemāk var turpināt veikt " -"izmaiņas." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" tika veiksmīgi pievienots." + +msgid "You may edit it again below." +msgstr "Jūs varat to atkal labot zemāk. " #, python-brace-format msgid "" @@ -184,16 +194,19 @@ msgstr "" "{name} \"{obj}\" tika veiksmīgi pievienots. Zemāk var pievienot vēl citu " "{name}." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" tika veiksmīgi pievienots." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" "{name} \"{obj}\" tika veiksmīgi mainīts. Zemāk var turpināt veikt izmaiņas." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" tika veiksmīgi pievienots. Zemāk var turpināt veikt " +"izmaiņas." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -228,6 +241,10 @@ msgstr "Pievienot %s" msgid "Change %s" msgstr "Labot %s" +#, python-format +msgid "View %s" +msgstr "Apskatīt %s" + msgid "Database error" msgstr "Datubāzes kļūda" @@ -338,7 +355,7 @@ msgid "Change password" msgstr "Paroles maiņa" msgid "Please correct the error below." -msgstr "Lūdzu, izlabojiet kļūdas zemāk." +msgstr "Lūdzu izlabojiet zemāk redzamo kļūdu." msgid "Please correct the errors below." msgstr "Lūdzu labo kļūdas zemāk." @@ -447,8 +464,8 @@ msgstr "" "Vai esat pārliecināts, ka vēlaties dzēst izvēlētos %(objects_name)s " "objektus? Visi sekojošie objekti un tiem piesaistītie objekti tiks izdzēsti:" -msgid "Change" -msgstr "Izmainīt" +msgid "View" +msgstr "Apskatīt" msgid "Delete?" msgstr "Dzēst?" @@ -467,8 +484,8 @@ msgstr "Modeļi %(name)s lietotnē" msgid "Add" msgstr "Pievienot" -msgid "You don't have permission to edit anything." -msgstr "Jums nav tiesības neko labot." +msgid "You don't have permission to view or edit anything." +msgstr "Jums nav tiesību neko apskatīt vai labot." msgid "Recent actions" msgstr "Nesenās darbības" @@ -530,6 +547,10 @@ msgstr "Logs aizveras..." msgid "Change selected %(model)s" msgstr "Mainīt izvēlēto %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Apskatīt izvēlēto %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Pievienot citu %(model)s" @@ -561,6 +582,12 @@ msgstr "Saglabāt un pievienot vēl vienu" msgid "Save and continue editing" msgstr "Saglabāt un turpināt labošanu" +msgid "Save and view" +msgstr "Saglabāt un apskatīt" + +msgid "Close" +msgstr "Aizvērt" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Paldies par pavadīto laiku mājas lapā." @@ -672,6 +699,10 @@ msgstr "Izvēlēties %s" msgid "Select %s to change" msgstr "Izvēlēties %s, lai izmainītu" +#, python-format +msgid "Select %s to view" +msgstr "Izvēlēties %s, lai apskatītu" + msgid "Date:" msgstr "Datums:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo index 059a9f5..61e6e33 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po index a626a9e..4f1b55f 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po @@ -1,16 +1,16 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Edgars Voroboks , 2017 +# NullIsNot0 , 2017 # Jannis Leidel , 2011 # peterisb , 2016 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-11-18 08:13+0000\n" -"Last-Translator: Edgars Voroboks \n" +"Last-Translator: NullIsNot0 \n" "Language-Team: Latvian (http://www.transifex.com/django/django/language/" "lv/)\n" "MIME-Version: 1.0\n" @@ -103,6 +103,21 @@ msgstr "" "Jūs esat izvēlējies veikt darbību un neesat izmainījis nevienu lauku. Jūs " "droši vien meklējat pogu 'Aiziet' nevis 'Saglabāt'." +msgid "Now" +msgstr "Tagad" + +msgid "Midnight" +msgstr "Pusnakts" + +msgid "6 a.m." +msgstr "06.00" + +msgid "Noon" +msgstr "Pusdienas laiks" + +msgid "6 p.m." +msgstr "6:00" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -117,27 +132,12 @@ msgstr[0] "Piezīme: Tavs laiks ir %s stundas pēc servera laika." msgstr[1] "Piezīme: Tavs laiks ir %s stundu pēc servera laika." msgstr[2] "Piezīme: Tavs laiks ir %s stundas pēc servera laika." -msgid "Now" -msgstr "Tagad" - msgid "Choose a Time" msgstr "Izvēlies laiku" msgid "Choose a time" msgstr "Izvēlieties laiku" -msgid "Midnight" -msgstr "Pusnakts" - -msgid "6 a.m." -msgstr "06.00" - -msgid "Noon" -msgstr "Pusdienas laiks" - -msgid "6 p.m." -msgstr "6:00" - msgid "Cancel" msgstr "Atcelt" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo index dba2a8f..a649b24 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po index eed7fde..d7fc5e4 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po @@ -4,16 +4,16 @@ # Ankhbayar , 2013 # Jannis Leidel , 2011 # jargalan , 2011 -# Zorig , 2016 -# Анхбаяр Анхаа , 2013-2016 +# Zorig, 2016 +# Анхбаяр Анхаа , 2013-2016,2018 # Баясгалан Цэвлээ , 2011,2017 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:40+0000\n" -"Last-Translator: Баясгалан Цэвлээ \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-09 04:47+0000\n" +"Last-Translator: Анхбаяр Анхаа \n" "Language-Team: Mongolian (http://www.transifex.com/django/django/language/" "mn/)\n" "MIME-Version: 1.0\n" @@ -91,6 +91,15 @@ msgstr "Өөр %(verbose_name)s нэмэх " msgid "Remove" msgstr "Хасах" +msgid "Addition" +msgstr "Нэмэгдсэн" + +msgid "Change" +msgstr "Өөрчлөх" + +msgid "Deletion" +msgstr "Устгагдсан" + msgid "action time" msgstr "үйлдлийн хугацаа" @@ -170,9 +179,11 @@ msgstr "" "байгаад сонгоно." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" амжилттай нэмэгдлээ. Та дахин засах боломжтой." +msgid "The {name} \"{obj}\" was added successfully." +msgstr " {name} \"{obj}\" амжилттай нэмэгдлээ." + +msgid "You may edit it again below." +msgstr "Та дараахийг дахин засах боломжтой" #, python-brace-format msgid "" @@ -182,15 +193,16 @@ msgstr "" "{name} \"{obj}\" амжилттай нэмэгдлээ. Доорх хэсгээс {name} өөрийн нэмэх " "боломжтой." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr " {name} \"{obj}\" амжилттай нэмэгдлээ." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" амжилттай өөрчилөгдлөө. Та дахин засах боломжтой." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" амжилттай нэмэгдлээ. Та дахин засах боломжтой." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -229,6 +241,10 @@ msgstr "%s-ийг нэмэх" msgid "Change %s" msgstr "%s-ийг өөрчлөх" +#, python-format +msgid "View %s" +msgstr "%s харах " + msgid "Database error" msgstr "Өгөгдлийн сангийн алдаа" @@ -337,7 +353,7 @@ msgid "Change password" msgstr "Нууц үг өөрчлөх" msgid "Please correct the error below." -msgstr "Доорх алдаануудыг засна уу." +msgstr "Доорх алдааг засна уу" msgid "Please correct the errors below." msgstr "Доор гарсан алдаануудыг засна уу." @@ -446,8 +462,8 @@ msgstr "" "Та %(objects_name)s ийг устгах гэж байна итгэлтэй байна? Дараах обектууд " "болон холбоотой зүйлс хамт устагдах болно:" -msgid "Change" -msgstr "Өөрчлөх" +msgid "View" +msgstr "Харах" msgid "Delete?" msgstr "Устгах уу?" @@ -466,8 +482,8 @@ msgstr "%(name)s хэрэглүүр дэх моделууд." msgid "Add" msgstr "Нэмэх" -msgid "You don't have permission to edit anything." -msgstr "Та ямар нэг зүйл засварлах зөвшөөрөлгүй байна." +msgid "You don't have permission to view or edit anything." +msgstr "Танд харах болон засах эрх алга." msgid "Recent actions" msgstr "Сүүлд хийсэн үйлдлүүд" @@ -530,6 +546,10 @@ msgstr "Цонх хаагдлаа" msgid "Change selected %(model)s" msgstr "Сонгосон %(model)s-ийг өөрчлөх" +#, python-format +msgid "View selected %(model)s" +msgstr "Сонгосон %(model)s-ийг харах" + #, python-format msgid "Add another %(model)s" msgstr "Өөр %(model)s нэмэх" @@ -560,6 +580,12 @@ msgstr "Хадгалаад өөрийг нэмэх" msgid "Save and continue editing" msgstr "Хадгалаад нэмж засах" +msgid "Save and view" +msgstr "Хадгалаад харах." + +msgid "Close" +msgstr "Хаах" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Манай вэб сайтыг ашигласанд баярлалаа." @@ -670,6 +696,10 @@ msgstr "%s-г сонго" msgid "Select %s to change" msgstr "Өөрчлөх %s-г сонгоно уу" +#, python-format +msgid "Select %s to view" +msgstr "Харахын тулд %s сонгоно уу" + msgid "Date:" msgstr "Огноо:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo index b50885a..e6c5986 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po index 509cedd..28a8598 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po @@ -2,16 +2,16 @@ # # Translators: # Tsolmon , 2012 -# Zorig , 2014,2018 +# Zorig, 2014,2018 # Анхбаяр Анхаа , 2011-2012,2015 # Ганзориг БП , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2018-02-21 00:38+0000\n" -"Last-Translator: Zorig \n" +"Last-Translator: Zorig\n" "Language-Team: Mongolian (http://www.transifex.com/django/django/language/" "mn/)\n" "MIME-Version: 1.0\n" @@ -99,27 +99,9 @@ msgstr "" "Та 1 үйлдлийг сонгосон байна бас та ямарваа өөрчлөлт оруулсангүй. Та Save " "товчлуур биш Go товчлуурыг хайж байгаа бололтой." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Та серверийн цагаас %s цагийн түрүүнд явж байна" -msgstr[1] "Та серверийн цагаас %s цагийн түрүүнд явж байна" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Та серверийн цагаас %s цагаар хоцорч байна" -msgstr[1] "Та серверийн цагаас %s цагаар хоцорч байна" - msgid "Now" msgstr "Одоо" -msgid "Choose a Time" -msgstr "Цаг сонгох" - -msgid "Choose a time" -msgstr "Цаг сонгох" - msgid "Midnight" msgstr "Шөнө дунд" @@ -132,6 +114,24 @@ msgstr "Үд дунд" msgid "6 p.m." msgstr "Оройн 6 цаг" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Та серверийн цагаас %s цагийн түрүүнд явж байна" +msgstr[1] "Та серверийн цагаас %s цагийн түрүүнд явж байна" + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Та серверийн цагаас %s цагаар хоцорч байна" +msgstr[1] "Та серверийн цагаас %s цагаар хоцорч байна" + +msgid "Choose a Time" +msgstr "Цаг сонгох" + +msgid "Choose a time" +msgstr "Цаг сонгох" + msgid "Cancel" msgstr "Болих" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo index eb47b17..dd7b5e6 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po index 660716c..525138a 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ # Jannis Leidel , 2011 # jensadne , 2013-2014 # Jon , 2015-2016 -# Jon , 2017 +# Jon , 2017-2018 # Jon , 2013 # Jon , 2011,2013 # Sigurd Gartmann , 2012 @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-11-27 12:33+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-30 11:34+0000\n" "Last-Translator: Jon \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/" "language/nb/)\n" @@ -94,6 +94,15 @@ msgstr "Legg til ny %(verbose_name)s" msgid "Remove" msgstr "Fjern" +msgid "Addition" +msgstr "Tillegg" + +msgid "Change" +msgstr "Endre" + +msgid "Deletion" +msgstr "Sletting" + msgid "action time" msgstr "tid for handling" @@ -172,9 +181,11 @@ msgstr "" "Hold nede «Control», eller «Command» på en Mac, for å velge mer enn en." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" ble lagt til. Du kan redigere videre nedenfor." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" ble lagt til." + +msgid "You may edit it again below." +msgstr "Du kan endre det igjen nedenfor." #, python-brace-format msgid "" @@ -182,15 +193,16 @@ msgid "" "below." msgstr "{name} \"{obj}\" ble lagt til. Du kan legge til en ny {name} nedenfor." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" ble lagt til." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" ble endret. Du kan redigere videre nedenfor." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" ble lagt til. Du kan redigere videre nedenfor." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -227,6 +239,10 @@ msgstr "Legg til ny %s" msgid "Change %s" msgstr "Endre %s" +#, python-format +msgid "View %s" +msgstr "Se %s" + msgid "Database error" msgstr "Databasefeil" @@ -335,7 +351,7 @@ msgid "Change password" msgstr "Endre passord" msgid "Please correct the error below." -msgstr "Vennligst korriger feilene under." +msgstr "Vennligst korriger feilen under." msgid "Please correct the errors below." msgstr "Vennligst korriger feilene under." @@ -446,8 +462,8 @@ msgstr "" "Er du sikker på vil slette det valgte %(objects_name)s? De følgende " "objektene og deres relaterte objekter vil bli slettet:" -msgid "Change" -msgstr "Endre" +msgid "View" +msgstr "Se" msgid "Delete?" msgstr "Slette?" @@ -466,8 +482,8 @@ msgstr "Modeller i %(name)s-applikasjonen" msgid "Add" msgstr "Legg til" -msgid "You don't have permission to edit anything." -msgstr "Du har ikke rettigheter til å redigere noe." +msgid "You don't have permission to view or edit anything." +msgstr "Du har ikke tillatelse til å vise eller endre noe." msgid "Recent actions" msgstr "Siste handlinger" @@ -529,6 +545,10 @@ msgstr "Lukker popup..." msgid "Change selected %(model)s" msgstr "Endre valgt %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Se valgte %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Legg til ny %(model)s" @@ -559,6 +579,12 @@ msgstr "Lagre og legg til ny" msgid "Save and continue editing" msgstr "Lagre og fortsett å redigere" +msgid "Save and view" +msgstr "Lagre og se" + +msgid "Close" +msgstr "Lukk" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Takk for i dag." @@ -669,6 +695,10 @@ msgstr "Velg %s" msgid "Select %s to change" msgstr "Velg %s du ønsker å endre" +#, python-format +msgid "Select %s to view" +msgstr "Velg %s å se" + msgid "Date:" msgstr "Dato:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo index 02c8aac..5f34eb3 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po index f00cbfa..7588b48 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Jon \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/" @@ -101,27 +101,9 @@ msgstr "" "Du har valgt en handling, og har ikke gjort noen endringer i individuelle " "felter. Du ser mest sannsynlig etter Gå-knappen, ikke Lagre-knappen." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Merk: Du er %s time foran server-tid." -msgstr[1] "Merk: Du er %s timer foran server-tid." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Merk: Du er %s time bak server-tid." -msgstr[1] "Merk: Du er %s timer bak server-tid." - msgid "Now" msgstr "Nå" -msgid "Choose a Time" -msgstr "Velg et klokkeslett" - -msgid "Choose a time" -msgstr "Velg et klokkeslett" - msgid "Midnight" msgstr "Midnatt" @@ -134,6 +116,24 @@ msgstr "12:00" msgid "6 p.m." msgstr "18:00" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Merk: Du er %s time foran server-tid." +msgstr[1] "Merk: Du er %s timer foran server-tid." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Merk: Du er %s time bak server-tid." +msgstr[1] "Merk: Du er %s timer bak server-tid." + +msgid "Choose a Time" +msgstr "Velg et klokkeslett" + +msgid "Choose a time" +msgstr "Velg et klokkeslett" + msgid "Cancel" msgstr "Avbryt" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo index d10694a..7f97615 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po index 19baad9..14b83e8 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po @@ -1,13 +1,14 @@ # This file is distributed under the same license as the Django package. # # Translators: +# A S Alam , 2018 # Jannis Leidel , 2011 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:40+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 01:29+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Panjabi (Punjabi) (http://www.transifex.com/django/django/" "language/pa/)\n" @@ -23,7 +24,7 @@ msgstr "%(count)d %(items)s ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਈਆਂ ਗ #, python-format msgid "Cannot delete %(name)s" -msgstr "" +msgstr "%(name)s ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" msgid "Are you sure?" msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਚਾਹੁੰਦੇ ਹੋ?" @@ -33,7 +34,7 @@ msgid "Delete selected %(verbose_name_plural)s" msgstr "ਚੁਣੇ %(verbose_name_plural)s ਹਟਾਓ" msgid "Administration" -msgstr "" +msgstr "ਪਰਸ਼ਾਸ਼ਨ" msgid "All" msgstr "ਸਭ" @@ -84,14 +85,23 @@ msgstr "%(verbose_name)s ਹੋਰ ਸ਼ਾਮਲ" msgid "Remove" msgstr "ਹਟਾਓ" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "ਬਦਲੋ" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "ਕਾਰਵਾਈ ਸਮਾਂ" msgid "user" -msgstr "" +msgstr "ਵਰਤੋਂਕਾਰ" msgid "content type" -msgstr "" +msgstr "ਸਮੱਗਰੀ ਕਿਸਮ" msgid "object id" msgstr "ਆਬਜੈਕਟ id" @@ -161,8 +171,10 @@ msgid "" msgstr "" #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "" + +msgid "You may edit it again below." msgstr "" #, python-brace-format @@ -172,12 +184,13 @@ msgid "" msgstr "" #, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." +msgid "" +"The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" #, python-brace-format msgid "" -"The {name} \"{obj}\" was changed successfully. You may edit it again below." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -214,6 +227,10 @@ msgstr "%s ਸ਼ਾਮਲ" msgid "Change %s" msgstr "%s ਬਦਲੋ" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "ਡਾਟਾਬੇਸ ਗਲਤੀ" @@ -316,7 +333,7 @@ msgid "Change password" msgstr "ਪਾਸਵਰਡ ਬਦਲੋ" msgid "Please correct the error below." -msgstr "ਹੇਠ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਜੀ।" +msgstr "" msgid "Please correct the errors below." msgstr "" @@ -413,8 +430,8 @@ msgid "" "following objects and their related items will be deleted:" msgstr "" -msgid "Change" -msgstr "ਬਦਲੋ" +msgid "View" +msgstr "" msgid "Delete?" msgstr "ਹਟਾਉਣਾ?" @@ -433,8 +450,8 @@ msgstr "" msgid "Add" msgstr "ਸ਼ਾਮਲ" -msgid "You don't have permission to edit anything." -msgstr "ਤੁਹਾਨੂੰ ਕੁਝ ਵੀ ਸੋਧਣ ਦਾ ਅਧਿਕਾਰ ਨਹੀਂ ਹੈ।" +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "" @@ -490,6 +507,10 @@ msgstr "" msgid "Change selected %(model)s" msgstr "" +#, python-format +msgid "View selected %(model)s" +msgstr "" + #, python-format msgid "Add another %(model)s" msgstr "" @@ -520,6 +541,12 @@ msgstr "ਸੰਭਾਲੋ ਤੇ ਹੋਰ ਸ਼ਾਮਲ" msgid "Save and continue editing" msgstr "ਸੰਭਾਲੋ ਤੇ ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + msgid "Thanks for spending some quality time with the Web site today." msgstr "ਅੱਜ ਵੈੱਬਸਾਈਟ ਨੂੰ ਕੁਝ ਚੰਗਾ ਸਮਾਂ ਦੇਣ ਲਈ ਧੰਨਵਾਦ ਹੈ।" @@ -621,6 +648,10 @@ msgstr "%s ਚੁਣੋ" msgid "Select %s to change" msgstr "ਬਦਲਣ ਲਈ %s ਚੁਣੋ" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "ਮਿਤੀ:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo index 0d95b10..57cc79f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po index 12cdeb3..2a36046 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-19 16:41+0000\n" "Last-Translator: Jannis Leidel \n" "Language-Team: Panjabi (Punjabi) (http://www.transifex.com/django/django/" @@ -86,27 +86,9 @@ msgid "" "button." msgstr "" -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "" -msgstr[1] "" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "" -msgstr[1] "" - msgid "Now" msgstr "ਹੁਣੇ" -msgid "Choose a Time" -msgstr "" - -msgid "Choose a time" -msgstr "ਸਮਾਂ ਚੁਣੋ" - msgid "Midnight" msgstr "ਅੱਧੀ-ਰਾਤ" @@ -119,6 +101,24 @@ msgstr "ਦੁਪਹਿਰ" msgid "6 p.m." msgstr "" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "" +msgstr[1] "" + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "" +msgstr[1] "" + +msgid "Choose a Time" +msgstr "" + +msgid "Choose a time" +msgstr "ਸਮਾਂ ਚੁਣੋ" + msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo index 802ce6b..0f767ac 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po index b7ea462..ad093b4 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ # Karol , 2012 # konryd , 2011 # konryd , 2011 -# m_aciek , 2016-2017 +# m_aciek , 2016-2018 # m_aciek , 2015 # Ola Sitarska , 2013 # Ola Sitarska , 2013 @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-12-12 01:04+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 08:42+0000\n" "Last-Translator: m_aciek \n" "Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n" "MIME-Version: 1.0\n" @@ -99,6 +99,15 @@ msgstr "Dodaj kolejne %(verbose_name)s" msgid "Remove" msgstr "Usuń" +msgid "Addition" +msgstr "Dodanie" + +msgid "Change" +msgstr "Zmień" + +msgid "Deletion" +msgstr "Usunięcie" + msgid "action time" msgstr "czas akcji" @@ -178,10 +187,11 @@ msgstr "" "więcej niż jeden wybór." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} „{obj}” został dodany pomyślnie. Można edytować go ponownie poniżej." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} „{obj}” został dodany pomyślnie." + +msgid "You may edit it again below." +msgstr "Poniżej możesz ponownie edytować." #, python-brace-format msgid "" @@ -190,10 +200,6 @@ msgid "" msgstr "" "{name} „{obj}” został dodany pomyślnie. Można dodać kolejny {name} poniżej." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} „{obj}” został dodany pomyślnie." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -201,6 +207,12 @@ msgstr "" "{name} „{obj}” został pomyślnie zmieniony. Można edytować go ponownie " "poniżej." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} „{obj}” został dodany pomyślnie. Można edytować go ponownie poniżej." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -238,6 +250,10 @@ msgstr "Dodaj %s" msgid "Change %s" msgstr "Zmień %s" +#, python-format +msgid "View %s" +msgstr "Obejrzyj %s" + msgid "Database error" msgstr "Błąd bazy danych" @@ -350,7 +366,7 @@ msgid "Change password" msgstr "Zmiana hasła" msgid "Please correct the error below." -msgstr "Proszę, popraw poniższe błędy." +msgstr "Prosimy poprawić poniższy błąd." msgid "Please correct the errors below." msgstr "Proszę, popraw poniższe błędy." @@ -461,8 +477,8 @@ msgstr "" "Czy chcesz skasować zaznaczone %(objects_name)s? Następujące obiekty oraz " "obiekty od nich zależne zostaną skasowane:" -msgid "Change" -msgstr "Zmień" +msgid "View" +msgstr "Obejrzyj" msgid "Delete?" msgstr "Usunąć?" @@ -481,8 +497,8 @@ msgstr "Modele w aplikacji %(name)s" msgid "Add" msgstr "Dodaj" -msgid "You don't have permission to edit anything." -msgstr "Nie masz uprawnień, by cokolwiek edytować." +msgid "You don't have permission to view or edit anything." +msgstr "Nie masz uprawnień do oglądania ani edycji niczego." msgid "Recent actions" msgstr "Ostatnie działania" @@ -545,6 +561,10 @@ msgstr "Zamykanie okna..." msgid "Change selected %(model)s" msgstr "Zmień wybrane %(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "Obejrzyj wybrane %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Dodaj kolejny %(model)s" @@ -577,6 +597,12 @@ msgstr "Zapisz i dodaj nowy" msgid "Save and continue editing" msgstr "Zapisz i kontynuuj edycję" +msgid "Save and view" +msgstr "Zapisz i obejrzyj" + +msgid "Close" +msgstr "Zamknij" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Dziękujemy za spędzenie cennego czasu na stronie." @@ -691,6 +717,10 @@ msgstr "Zaznacz %s" msgid "Select %s to change" msgstr "Zaznacz %s do zmiany" +#, python-format +msgid "Select %s to view" +msgstr "Wybierz %s do obejrzenia" + msgid "Date:" msgstr "Data:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo index 0d7d289..af684a9 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po index 5287542..9b137ed 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: Tomasz Kajtoch \n" "Language-Team: Polish (http://www.transifex.com/django/django/language/pl/)\n" @@ -105,6 +105,21 @@ msgstr "" "Wybrano akcję, lecz nie dokonano żadnych zmian w polach. Prawdopodobnie " "szukasz przycisku „Wykonaj”, a nie „Zapisz”." +msgid "Now" +msgstr "Teraz" + +msgid "Midnight" +msgstr "Północ" + +msgid "6 a.m." +msgstr "6 rano" + +msgid "Noon" +msgstr "Południe" + +msgid "6 p.m." +msgstr "6 po południu" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -137,27 +152,12 @@ msgstr[3] "" "Uwaga: Czas lokalny jest przesunięty o %s godzin do tyłu w stosunku do czasu " "serwera." -msgid "Now" -msgstr "Teraz" - msgid "Choose a Time" msgstr "Wybierz Czas" msgid "Choose a time" msgstr "Wybierz czas" -msgid "Midnight" -msgstr "Północ" - -msgid "6 a.m." -msgstr "6 rano" - -msgid "Noon" -msgstr "Południe" - -msgid "6 p.m." -msgstr "6 po południu" - msgid "Cancel" msgstr "Anuluj" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo index 80ffb01..9530505 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po index b3385bf..9e092cc 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po @@ -7,23 +7,26 @@ # dudanogueira , 2012 # Elyézer Rezende , 2013 # Fábio C. Barrionuevo da Luz , 2015 -# Francisco Petry Rauber , 2016 +# Xico Petry , 2016 # Gladson , 2013 # Guilherme Ferreira , 2017 # semente, 2012-2013 # Jannis Leidel , 2011 +# João Paulo Andrade , 2018 # Lucas Infante , 2015 # Luiz Boaretto , 2017 +# Marcelo Moro Brondani , 2018 # Marco Rougeth , 2015 +# Otávio Reis Perkles , 2018 # Raysa Dutra, 2016 # Sergio Garcia , 2015 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" -"Last-Translator: andrewsmedina \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-25 18:02+0000\n" +"Last-Translator: Marcelo Moro Brondani \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/" "language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -101,6 +104,15 @@ msgstr "Adicionar outro(a) %(verbose_name)s" msgid "Remove" msgstr "Remover" +msgid "Addition" +msgstr "Adição" + +msgid "Change" +msgstr "Modificar" + +msgid "Deletion" +msgstr "Eliminação" + msgid "action time" msgstr "hora da ação" @@ -180,11 +192,11 @@ msgstr "" "mais de uma opção." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"O {name} \"{obj}\" foi adicionado com sucesso. Você pode editar ele " -"novamente abaixo." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "O {name} \"{obj}\" foi adicionado com sucesso." + +msgid "You may edit it again below." +msgstr "Você pode editá-lo novamente abaixo." #, python-brace-format msgid "" @@ -194,10 +206,6 @@ msgstr "" "O {name} \"{obj}\" foi adicionado com sucesso. Você pode adicionar outro " "{name} abaixo." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "O {name} \"{obj}\" foi adicionado com sucesso." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -205,6 +213,13 @@ msgstr "" "O {name} \"{obj}\" foi alterado com sucesso. Você pode modificar ele " "novamente abaixo." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"O {name} \"{obj}\" foi adicionado com sucesso. Você pode editar ele " +"novamente abaixo." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -243,6 +258,10 @@ msgstr "Adicionar %s" msgid "Change %s" msgstr "Modificar %s" +#, python-format +msgid "View %s" +msgstr "Visualizar %s" + msgid "Database error" msgstr "Erro no banco de dados" @@ -351,7 +370,7 @@ msgid "Change password" msgstr "Alterar senha" msgid "Please correct the error below." -msgstr "Por favor, corrija o erro abaixo." +msgstr "Por favor corrija o erro abaixo " msgid "Please correct the errors below." msgstr "Por favor, corrija os erros abaixo." @@ -462,8 +481,8 @@ msgstr "" "Tem certeza de que deseja apagar o %(objects_name)s selecionado? Todos os " "seguintes objetos e seus itens relacionados serão removidos:" -msgid "Change" -msgstr "Modificar" +msgid "View" +msgstr "Visualizar" msgid "Delete?" msgstr "Apagar?" @@ -482,8 +501,8 @@ msgstr "Modelos na aplicação %(name)s" msgid "Add" msgstr "Adicionar" -msgid "You don't have permission to edit anything." -msgstr "Você não tem permissão para edição." +msgid "You don't have permission to view or edit anything." +msgstr "Você não tem permissão para ver ou editar nada." msgid "Recent actions" msgstr "Ações recentes" @@ -546,6 +565,10 @@ msgstr "Fechando popup..." msgid "Change selected %(model)s" msgstr "Alterar %(model)s selecionado" +#, python-format +msgid "View selected %(model)s" +msgstr "Visualizar %(model)s selecionados" + #, python-format msgid "Add another %(model)s" msgstr "Adicionar outro %(model)s" @@ -576,6 +599,12 @@ msgstr "Salvar e adicionar outro(a)" msgid "Save and continue editing" msgstr "Salvar e continuar editando" +msgid "Save and view" +msgstr "Salvar e visualizar" + +msgid "Close" +msgstr "Fechar" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Obrigado por visitar nosso Web site hoje." @@ -687,6 +716,10 @@ msgstr "Selecione %s" msgid "Select %s to change" msgstr "Selecione %s para modificar" +#, python-format +msgid "Select %s to view" +msgstr "Selecione %s para visualizar" + msgid "Date:" msgstr "Data:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo index 51a2977..f499f4f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po index a0e4632..a5a872b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: Tarsis Azevedo \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/" @@ -102,27 +102,9 @@ msgstr "" "Você selecionou uma ação, e você não fez alterações em campos individuais. " "Você provavelmente está procurando o botão Ir ao invés do botão Salvar." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Nota: Você está %s hora à frente do horário do servidor." -msgstr[1] "Nota: Você está %s horas à frente do horário do servidor." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Nota: Você está %s hora atrás do tempo do servidor." -msgstr[1] "Nota: Você está %s horas atrás do horário do servidor." - msgid "Now" msgstr "Agora" -msgid "Choose a Time" -msgstr "Escolha um horário" - -msgid "Choose a time" -msgstr "Escolha uma hora" - msgid "Midnight" msgstr "Meia-noite" @@ -135,6 +117,24 @@ msgstr "Meio-dia" msgid "6 p.m." msgstr "6 da tarde" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Nota: Você está %s hora à frente do horário do servidor." +msgstr[1] "Nota: Você está %s horas à frente do horário do servidor." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Nota: Você está %s hora atrás do tempo do servidor." +msgstr[1] "Nota: Você está %s horas atrás do horário do servidor." + +msgid "Choose a Time" +msgstr "Escolha um horário" + +msgid "Choose a time" +msgstr "Escolha uma hora" + msgid "Cancel" msgstr "Cancelar" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo index 3959ec5..e4406be 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po index 8af860a..de11776 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po @@ -1,6 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Bogdan Mateescu, 2018 # Daniel Ursache-Dogariu, 2011 # Denis Darii , 2011,2014 # Ionel Cristian Mărieș , 2012 @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-19 16:41+0000\n" -"Last-Translator: Razvan Stefanescu \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 07:39+0000\n" +"Last-Translator: Bogdan Mateescu\n" "Language-Team: Romanian (http://www.transifex.com/django/django/language/" "ro/)\n" "MIME-Version: 1.0\n" @@ -91,6 +92,15 @@ msgstr "Adăugati încă un/o %(verbose_name)s" msgid "Remove" msgstr "Elimină" +msgid "Addition" +msgstr "Adăugare" + +msgid "Change" +msgstr "Schimbă" + +msgid "Deletion" +msgstr "Ștergere" + msgid "action time" msgstr "timp acțiune" @@ -170,11 +180,11 @@ msgstr "" "mult de unul." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" a fost adăugat cu succes. Poți să îl editezi în continuare " -"mai jos." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" a fost adăugat cu succes." + +msgid "You may edit it again below." +msgstr "O poți edita din nou mai jos." #, python-brace-format msgid "" @@ -183,10 +193,6 @@ msgid "" msgstr "" "{name} \"{obj}\" a fost adăugat cu succes. Poți adăuga alt {name} mai jos." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" a fost adăugat cu succes." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -194,6 +200,13 @@ msgstr "" "{name} \"{obj}\" a fost modificat cu succes. Poți să îl editezi în " "continuare mai jos." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" a fost adăugat cu succes. Poți să îl editezi în continuare " +"mai jos." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -231,6 +244,10 @@ msgstr "Adaugă %s" msgid "Change %s" msgstr "Schimbă %s" +#, python-format +msgid "View %s" +msgstr "Vizualizează %s" + msgid "Database error" msgstr "Eroare de bază de date" @@ -341,7 +358,7 @@ msgid "Change password" msgstr "Schimbă parola" msgid "Please correct the error below." -msgstr "Corectați erorile de mai jos" +msgstr "Corectați eroarea de mai jos." msgid "Please correct the errors below." msgstr "Corectați erorile de mai jos." @@ -361,7 +378,7 @@ msgid "Documentation" msgstr "Documentație" msgid "Log out" -msgstr "Deautentificare" +msgstr "Deconectează-te" #, python-format msgid "Add %(name)s" @@ -453,8 +470,8 @@ msgstr "" "Sigur doriţi să ștergeți %(objects_name)s conform selecției? Toate obiectele " "următoare alături de cele asociate lor vor fi șterse:" -msgid "Change" -msgstr "Schimbă" +msgid "View" +msgstr "Vizualizează" msgid "Delete?" msgstr "Elimină?" @@ -473,8 +490,8 @@ msgstr "Modele în aplicația %(name)s" msgid "Add" msgstr "Adaugă" -msgid "You don't have permission to edit anything." -msgstr "Nu nicio permisiune de editare." +msgid "You don't have permission to view or edit anything." +msgstr "Nu aveți permisiunea de a edita sau vizualiza nimic." msgid "Recent actions" msgstr "Acțiuni recente" @@ -537,6 +554,10 @@ msgstr "Fereastra se închide..." msgid "Change selected %(model)s" msgstr "Modifică %(model)s selectat" +#, python-format +msgid "View selected %(model)s" +msgstr "Vizualizați %(model)s selectate" + #, python-format msgid "Add another %(model)s" msgstr "Adaugă alt %(model)s" @@ -568,6 +589,12 @@ msgstr "Salvați și mai adăugați" msgid "Save and continue editing" msgstr "Salvați și continuați editarea" +msgid "Save and view" +msgstr "Salvează și vizualizează" + +msgid "Close" +msgstr "Închide" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Mulţumiri pentru timpul petrecut astăzi pe sit." @@ -681,6 +708,10 @@ msgstr "Selectează %s" msgid "Select %s to change" msgstr "Selectează %s pentru schimbare" +#, python-format +msgid "Select %s to view" +msgstr "Selecteză %s pentru a vizualiza" + msgid "Date:" msgstr "Dată:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo index 1fd0c66..73da126 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po index e92a998..1ac469b 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po @@ -1,6 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: +# Bogdan Mateescu, 2018 # Daniel Ursache-Dogariu, 2011 # Denis Darii , 2011 # Ionel Cristian Mărieș , 2012 @@ -11,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" -"PO-Revision-Date: 2017-09-19 16:41+0000\n" -"Last-Translator: Razvan Stefanescu \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2018-02-27 12:32+0000\n" +"Last-Translator: Bogdan Mateescu\n" "Language-Team: Romanian (http://www.transifex.com/django/django/language/" "ro/)\n" "MIME-Version: 1.0\n" @@ -106,29 +107,9 @@ msgstr "" "Ați selectat o acţiune și nu ațţi făcut modificări în cîmpuri individuale. " "Probabil căutați butonul Go, în loc de Salvează." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Notă: Sunteți cu %s ora înaintea orei serverului." -msgstr[1] "Notă: Sunteți cu %s ore înaintea orei serverului." -msgstr[2] "Notă: Sunteți cu %s ore înaintea orei serverului." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Notă: Sunteți cu %s oră în urma orei serverului." -msgstr[1] "Notă: Sunteți cu %s ore în urma orei serverului." -msgstr[2] "Notă: Sunteți cu %s ore în urma orei serverului." - msgid "Now" msgstr "Acum" -msgid "Choose a Time" -msgstr "Alege o oră" - -msgid "Choose a time" -msgstr "Alege o oră" - msgid "Midnight" msgstr "Miezul nopții" @@ -141,6 +122,26 @@ msgstr "Amiază" msgid "6 p.m." msgstr "6 p.m." +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Notă: Sunteți cu %s oră înaintea orei serverului." +msgstr[1] "Notă: Sunteți cu %s ore înaintea orei serverului." +msgstr[2] "Notă: Sunteți cu %s de ore înaintea orei serverului." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Notă: Sunteți cu %s oră în urma orei serverului." +msgstr[1] "Notă: Sunteți cu %s ore în urma orei serverului." +msgstr[2] "Notă: Sunteți cu %s de ore în urma orei serverului." + +msgid "Choose a Time" +msgstr "Alege o oră" + +msgid "Choose a time" +msgstr "Alege o oră" + msgid "Cancel" msgstr "Anulează" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo index 0e41898..2e9cd28 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po index bafa193..4800060 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po @@ -4,17 +4,18 @@ # Ivan Ivaschenko , 2013 # Denis Darii , 2011 # Dimmus , 2011 -# Eugene MechanisM , 2016-2017 -# inoks , 2016 +# Eugene , 2016-2017 +# Sergey , 2016 # Jannis Leidel , 2011 # Алексей Борискин , 2012-2015 +# Дмитрий Шатера , 2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" -"Last-Translator: Eugene MechanisM \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-06-29 07:41+0000\n" +"Last-Translator: Дмитрий Шатера \n" "Language-Team: Russian (http://www.transifex.com/django/django/language/" "ru/)\n" "MIME-Version: 1.0\n" @@ -94,6 +95,15 @@ msgstr "Добавить еще один %(verbose_name)s" msgid "Remove" msgstr "Удалить" +msgid "Addition" +msgstr "Добавление" + +msgid "Change" +msgstr "Изменить" + +msgid "Deletion" +msgstr "Удаление" + msgid "action time" msgstr "время действия" @@ -173,11 +183,11 @@ msgstr "" "значений." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" был успешно добавлен. Вы можете отредактировать его еще раз " -"ниже." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" было успешно добавлено." + +msgid "You may edit it again below." +msgstr "Вы можете снова изменить этот объект ниже." #, python-brace-format msgid "" @@ -187,10 +197,6 @@ msgstr "" "{name} \"{obj}\" был успешно добавлен. Вы можете добавить еще один {name} " "ниже." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" было успешно добавлено." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -198,6 +204,13 @@ msgstr "" "{name} \"{obj}\" был изменен успешно. Вы можете отредактировать его снова " "ниже." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" был успешно добавлен. Вы можете отредактировать его еще раз " +"ниже." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -234,6 +247,10 @@ msgstr "Добавить %s" msgid "Change %s" msgstr "Изменить %s" +#, python-format +msgid "View %s" +msgstr "Просмотреть %s" + msgid "Database error" msgstr "Ошибка базы данных" @@ -346,7 +363,7 @@ msgid "Change password" msgstr "Изменить пароль" msgid "Please correct the error below." -msgstr "Пожалуйста, исправьте ошибки ниже." +msgstr "Пожалуйста, исправьте ошибку ниже." msgid "Please correct the errors below." msgstr "Пожалуйста, исправьте ошибки ниже." @@ -456,8 +473,8 @@ msgstr "" "Вы уверены, что хотите удалить %(objects_name)s? Все следующие объекты и " "связанные с ними элементы будут удалены:" -msgid "Change" -msgstr "Изменить" +msgid "View" +msgstr "Просмотреть" msgid "Delete?" msgstr "Удалить?" @@ -476,8 +493,8 @@ msgstr "Модели в приложении %(name)s" msgid "Add" msgstr "Добавить" -msgid "You don't have permission to edit anything." -msgstr "У вас недостаточно прав для редактирования." +msgid "You don't have permission to view or edit anything." +msgstr "У вас недостаточно полномочий для просмотра или изменения чего либо." msgid "Recent actions" msgstr "Последние действия" @@ -541,6 +558,10 @@ msgstr "Всплывающее окно закрывается..." msgid "Change selected %(model)s" msgstr "Изменить выбранный объект типа \"%(model)s\"" +#, python-format +msgid "View selected %(model)s" +msgstr "Просмотреть выбранный объект типа \"%(model)s\"" + #, python-format msgid "Add another %(model)s" msgstr "Добавить ещё один объект типа \"%(model)s\"" @@ -573,6 +594,12 @@ msgstr "Сохранить и добавить другой объект" msgid "Save and continue editing" msgstr "Сохранить и продолжить редактирование" +msgid "Save and view" +msgstr "Сохранить и просмотреть" + +msgid "Close" +msgstr "Закрыть" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Благодарим вас за время, проведенное на этом сайте." @@ -685,6 +712,10 @@ msgstr "Выберите %s" msgid "Select %s to change" msgstr "Выберите %s для изменения" +#, python-format +msgid "Select %s to view" +msgstr "Выберите %s для просмотра" + msgid "Date:" msgstr "Дата:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo index b7e8c79..4a51b2f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po index 9fe33f3..281cd51 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po @@ -3,8 +3,8 @@ # Translators: # Denis Darii , 2011 # Dimmus , 2011 -# Eugene MechanisM , 2012 -# Eugene MechanisM , 2016 +# Eugene , 2012 +# Eugene , 2016 # Jannis Leidel , 2011 # Алексей Борискин , 2012,2014-2015 # Андрей Щуров , 2016 @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" -"Last-Translator: Eugene MechanisM \n" +"Last-Translator: Eugene \n" "Language-Team: Russian (http://www.transifex.com/django/django/language/" "ru/)\n" "MIME-Version: 1.0\n" @@ -109,6 +109,21 @@ msgstr "" "воспользоваться кнопкой \"Выполнить\", а не кнопкой \"Сохранить\". Если это " "так, то нажмите \"Отмена\", чтобы вернуться в интерфейс редактирования. " +msgid "Now" +msgstr "Сейчас" + +msgid "Midnight" +msgstr "Полночь" + +msgid "6 a.m." +msgstr "6 утра" + +msgid "Noon" +msgstr "Полдень" + +msgid "6 p.m." +msgstr "6 вечера" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -129,27 +144,12 @@ msgstr[2] "" msgstr[3] "" "Внимание: Ваше локальное время отстаёт от времени сервера на %s часов." -msgid "Now" -msgstr "Сейчас" - msgid "Choose a Time" msgstr "Выберите время" msgid "Choose a time" msgstr "Выберите время" -msgid "Midnight" -msgstr "Полночь" - -msgid "6 a.m." -msgstr "6 утра" - -msgid "Noon" -msgstr "Полдень" - -msgid "6 p.m." -msgstr "6 вечера" - msgid "Cancel" msgstr "Отмена" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo index 8036292..a4a7938 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po index 2467c7c..0bcd6c4 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po @@ -2,14 +2,14 @@ # # Translators: # Besnik , 2011,2015 -# Besnik , 2015 +# Besnik , 2015,2018 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-11-29 22:00+0000\n" -"Last-Translator: Besnik \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 01:29+0000\n" +"Last-Translator: Jannis Leidel \n" "Language-Team: Albanian (http://www.transifex.com/django/django/language/" "sq/)\n" "MIME-Version: 1.0\n" @@ -88,6 +88,15 @@ msgstr "Shtoni një tjetër %(verbose_name)s" msgid "Remove" msgstr "Hiqe" +msgid "Addition" +msgstr "Shtim" + +msgid "Change" +msgstr "Ndryshoje" + +msgid "Deletion" +msgstr "Fshirje" + msgid "action time" msgstr "kohë veprimi" @@ -167,9 +176,11 @@ msgstr "" "\"Command\"." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" u ndryshua me sukses. Mund ta ripërpunoni më poshtë." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" u shtua me sukses." + +msgid "You may edit it again below." +msgstr "Mund ta ripërpunoni më poshtë." #, python-brace-format msgid "" @@ -179,15 +190,16 @@ msgstr "" "{name} \"{obj}\" u ndryshua me sukses. Mund të shtoni një tjetër {name} më " "poshtë." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" u shtua me sukses." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" u ndryshua me sukses. Mund të ripërpunoni më poshtë." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" u ndryshua me sukses. Mund ta ripërpunoni më poshtë." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -226,6 +238,10 @@ msgstr "Shtoni %s" msgid "Change %s" msgstr "Ndrysho %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "Gabim baze të dhënash" @@ -446,8 +462,8 @@ msgstr "" "Jeni i sigurt se doni të fshihen %(objects_name)s e përzgjedhur? Krejt " "objektet vijues dhe gjëra të lidhura me ta do të fshihen:" -msgid "Change" -msgstr "Ndryshoje" +msgid "View" +msgstr "Shiheni" msgid "Delete?" msgstr "Të fshihet?" @@ -466,8 +482,8 @@ msgstr "Modele te aplikacioni %(name)s" msgid "Add" msgstr "Shtoni" -msgid "You don't have permission to edit anything." -msgstr "S’keni leje për të përpunuar ndonjë gjë." +msgid "You don't have permission to view or edit anything." +msgstr "S’keni leje të shihni apo përpunoni gjë." msgid "Recent actions" msgstr "Veprime së fundi" @@ -530,6 +546,10 @@ msgstr "Flluska po mbyllet…" msgid "Change selected %(model)s" msgstr "Ndryshoni %(model)s e përzgjedhur" +#, python-format +msgid "View selected %(model)s" +msgstr "Shiheni të përzgjedhurin %(model)s" + #, python-format msgid "Add another %(model)s" msgstr "Shtoni një %(model)s tjetër" @@ -560,6 +580,12 @@ msgstr "Ruajeni dhe shtoni një tjetër" msgid "Save and continue editing" msgstr "Ruajeni dhe vazhdoni përpunimin" +msgid "Save and view" +msgstr "Ruajeni dhe shiheni" + +msgid "Close" +msgstr "Mbylle" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Faleminderit që shpenzoni sot pak kohë të çmuar me sajtin Web." @@ -673,6 +699,10 @@ msgstr "Përzgjidhni %s" msgid "Select %s to change" msgstr "Përzgjidhni %s për ta ndryshuar" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "Datë:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo index 0b6d681..7b4668b 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po index d6889ff..163c241 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-11-29 22:17+0000\n" "Last-Translator: Besnik \n" "Language-Team: Albanian (http://www.transifex.com/django/django/language/" @@ -101,27 +101,9 @@ msgstr "" "individuale. Ndoshta po kërkonit për butonin Shko, në vend se për butonin " "Ruaje." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Shënim: Jeni %s orë para kohës së shërbyesit." -msgstr[1] "Shënim: Jeni %s orë para kohës së shërbyesit." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Shënim: Jeni %s orë pas kohës së shërbyesit." -msgstr[1] "Shënim: Jeni %s orë pas kohës së shërbyesit." - msgid "Now" msgstr "Tani" -msgid "Choose a Time" -msgstr "Zgjidhni një Kohë" - -msgid "Choose a time" -msgstr "Zgjidhni një kohë" - msgid "Midnight" msgstr "Mesnatë" @@ -134,6 +116,24 @@ msgstr "Mesditë" msgid "6 p.m." msgstr "6 p.m." +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Shënim: Jeni %s orë para kohës së shërbyesit." +msgstr[1] "Shënim: Jeni %s orë para kohës së shërbyesit." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Shënim: Jeni %s orë pas kohës së shërbyesit." +msgstr[1] "Shënim: Jeni %s orë pas kohës së shërbyesit." + +msgid "Choose a Time" +msgstr "Zgjidhni një Kohë" + +msgid "Choose a time" +msgstr "Zgjidhni një kohë" + msgid "Cancel" msgstr "Anuloje" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo index 839669e..d1af2b9 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po index acddca9..8a77c1c 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2018-01-30 11:44+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-04 19:52+0000\n" "Last-Translator: Branko Kokanovic \n" "Language-Team: Serbian (http://www.transifex.com/django/django/language/" "sr/)\n" @@ -76,6 +76,8 @@ msgid "" "Please enter the correct %(username)s and password for a staff account. Note " "that both fields may be case-sensitive." msgstr "" +"Молим вас унесите исправно %(username)s и лозинку. Обратите пажњу да мала и " +"велика слова представљају различите карактере." msgid "Action:" msgstr "Радња:" @@ -87,6 +89,15 @@ msgstr "Додај још један објекат класе %(verbose_name)s. msgid "Remove" msgstr "Обриши" +msgid "Addition" +msgstr "Додавања" + +msgid "Change" +msgstr "Измени" + +msgid "Deletion" +msgstr "Брисања" + msgid "action time" msgstr "време радње" @@ -94,7 +105,7 @@ msgid "user" msgstr "корисник" msgid "content type" -msgstr "" +msgstr "тип садржаја" msgid "object id" msgstr "id објекта" @@ -133,7 +144,7 @@ msgstr "Објекат уноса лога" #, python-brace-format msgid "Added {name} \"{object}\"." -msgstr "" +msgstr "Додат објекат {name} \"{object}\"." msgid "Added." msgstr "Додато." @@ -143,15 +154,15 @@ msgstr "и" #, python-brace-format msgid "Changed {fields} for {name} \"{object}\"." -msgstr "" +msgstr "Измењена поља {fields} за {name} \"{object}\"." #, python-brace-format msgid "Changed {fields}." -msgstr "" +msgstr "Измењена поља {fields}." #, python-brace-format msgid "Deleted {name} \"{object}\"." -msgstr "" +msgstr "Обрисан објекат {name} \"{object}\"." msgid "No fields changed." msgstr "Без измена у пољима." @@ -162,36 +173,45 @@ msgstr "Ништа" msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" +"Држите „Control“, или „Command“ на Mac-у да бисте обележили више од једне " +"ставке." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" +msgid "The {name} \"{obj}\" was added successfully." +msgstr "Објекат {name} \"{obj}\" успешно додат." + +msgid "You may edit it again below." +msgstr "Можете га изменити опет испод" #, python-brace-format msgid "" "The {name} \"{obj}\" was added successfully. You may add another {name} " "below." msgstr "" - -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "" +"Објекат {name} \"{obj}\" успешно додат. Можете додати још један {name} испод." #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" +"Објекат {name} \"{obj}\" успешно измењен. Можете га опет изменити испод." + +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "Објекат {name} \"{obj}\" успешно додат. Испод га можете изменити." #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " "below." msgstr "" +"Објекат {name} \"{obj}\" успешно измењен. Можете додати још један {name} " +"испод." #, python-brace-format msgid "The {name} \"{obj}\" was changed successfully." -msgstr "" +msgstr "Објекат {name} \"{obj}\" успешно измењен." msgid "" "Items must be selected in order to perform actions on them. No items have " @@ -209,7 +229,7 @@ msgstr "Објекат „%(obj)s“ класе %(name)s успешно је о #, python-format msgid "%(name)s with ID \"%(key)s\" doesn't exist. Perhaps it was deleted?" -msgstr "" +msgstr "%(name)s са идентификацијом \"%(key)s\" не постоји. Можда је избрисан?" #, python-format msgid "Add %s" @@ -219,6 +239,10 @@ msgstr "Додај објекат класе %s" msgid "Change %s" msgstr "Измени објекат класе %s" +#, python-format +msgid "View %s" +msgstr "Преглед %s" + msgid "Database error" msgstr "Грешка у бази података" @@ -248,13 +272,15 @@ msgstr "Историјат измена: %s" #. suitable to be an item in a list. #, python-format msgid "%(class_name)s %(instance)s" -msgstr "" +msgstr "%(class_name)s %(instance)s" #, python-format msgid "" "Deleting %(class_name)s %(instance)s would require deleting the following " "protected related objects: %(related_objects)s" msgstr "" +"Да би избрисали %(class_name)s%(instance)s потребно је брисати и следеће " +"заштићене повезане објекте: %(related_objects)s" msgid "Django site admin" msgstr "Django администрација сајта" @@ -270,7 +296,7 @@ msgstr "Пријава" #, python-format msgid "%(app)s administration" -msgstr "" +msgstr "%(app)s администрација" msgid "Page not found" msgstr "Страница није пронађена" @@ -294,6 +320,8 @@ msgid "" "There's been an error. It's been reported to the site administrators via " "email and should be fixed shortly. Thanks for your patience." msgstr "" +"Десила се грешка. Пријављена је администраторима сајта преко е-поште и " +"требало би да ускоро буде исправљена. Хвала Вам на стрпљењу." msgid "Run the selected action" msgstr "Покрени одабрану радњу" @@ -325,10 +353,10 @@ msgid "Change password" msgstr "Промена лозинке" msgid "Please correct the error below." -msgstr "Исправите наведене грешке." +msgstr "Молимо исправите грешку испод." msgid "Please correct the errors below." -msgstr "" +msgstr "Исправите грешке испод." #, python-format msgid "Enter a new password for the user %(username)s." @@ -338,7 +366,7 @@ msgid "Welcome," msgstr "Добродошли," msgid "View site" -msgstr "" +msgstr "Погледај сајт" msgid "Documentation" msgstr "Документација" @@ -399,13 +427,13 @@ msgstr "" "Следећи објекти који су у вези са овим објектом ће такође бити обрисани:" msgid "Objects" -msgstr "" +msgstr "Објекти" msgid "Yes, I'm sure" msgstr "Да, сигуран сам" msgid "No, take me back" -msgstr "" +msgstr "Не, хоћу назад" msgid "Delete multiple objects" msgstr "Брисање више објеката" @@ -436,8 +464,8 @@ msgstr "" "Да ли сте сигурни да желите да избришете изабране %(objects_name)s? Сви " "следећи објекти и објекти са њима повезани ће бити избрисани:" -msgid "Change" -msgstr "Измени" +msgid "View" +msgstr "Преглед" msgid "Delete?" msgstr "Брисање?" @@ -447,17 +475,17 @@ msgid " By %(filter_title)s " msgstr " %(filter_title)s " msgid "Summary" -msgstr "" +msgstr "Сумарно" #, python-format msgid "Models in the %(name)s application" -msgstr "" +msgstr "Модели у апликацији %(name)s" msgid "Add" msgstr "Додај" -msgid "You don't have permission to edit anything." -msgstr "Немате дозволе да уносите било какве измене." +msgid "You don't have permission to view or edit anything." +msgstr "Немате дозвола да погледате или измените ништа." msgid "Recent actions" msgstr "Скорашње акције" @@ -484,6 +512,8 @@ msgid "" "You are authenticated as %(username)s, but are not authorized to access this " "page. Would you like to login to a different account?" msgstr "" +"Пријављени сте као %(username)s, али немате овлашћења да приступите овој " +"страни. Да ли желите да се пријавите под неким другим налогом?" msgid "Forgotten your password or username?" msgstr "Заборавили сте лозинку или корисничко име?" @@ -511,19 +541,23 @@ msgid "Save" msgstr "Сачувај" msgid "Popup closing..." -msgstr "" +msgstr "Искачући прозор се затвара..." #, python-format msgid "Change selected %(model)s" -msgstr "" +msgstr "Измени одабрани модел %(model)s" + +#, python-format +msgid "View selected %(model)s" +msgstr "Погледај означени %(model)s" #, python-format msgid "Add another %(model)s" -msgstr "" +msgstr "Додај још један модел %(model)s" #, python-format msgid "Delete selected %(model)s" -msgstr "" +msgstr "Обриши одабрани модел %(model)s" msgid "Search" msgstr "Претрага" @@ -548,6 +582,12 @@ msgstr "Сачувај и додај следећи" msgid "Save and continue editing" msgstr "Сачувај и настави са изменама" +msgid "Save and view" +msgstr "Сними и погледај" + +msgid "Close" +msgstr "Затвори" + msgid "Thanks for spending some quality time with the Web site today." msgstr "Хвала што сте данас провели време на овом сајту." @@ -603,17 +643,23 @@ msgid "" "We've emailed you instructions for setting your password, if an account " "exists with the email you entered. You should receive them shortly." msgstr "" +"Послали смо Вам упутства за постављање лозинке, уколико налог са овом " +"адресом постоји. Требало би да их добијете ускоро." msgid "" "If you don't receive an email, please make sure you've entered the address " "you registered with, and check your spam folder." msgstr "" +"Ако не добијете поруку, проверите да ли сте унели добру адресу са којом сте " +"се и регистровали и проверите спам фасциклу." #, python-format msgid "" "You're receiving this email because you requested a password reset for your " "user account at %(site_name)s." msgstr "" +"Примате ову поруку зато што сте затражили ресетовање лозинке за кориснички " +"налог на сајту %(site_name)s." msgid "Please go to the following page and choose a new password:" msgstr "Идите на следећу страницу и поставите нову лозинку." @@ -632,6 +678,8 @@ msgid "" "Forgotten your password? Enter your email address below, and we'll email " "instructions for setting a new one." msgstr "" +"Заборавили сте лозинку? Унесите адресу е-поште испод и послаћемо Вам на њу " +"упутства за постављање нове лозинке." msgid "Email address:" msgstr "Адреса е-поште:" @@ -650,6 +698,10 @@ msgstr "Одабери објекат класе %s" msgid "Select %s to change" msgstr "Одабери објекат класе %s за измену" +#, python-format +msgid "Select %s to view" +msgstr "Одабери %s за преглед" + msgid "Date:" msgstr "Датум:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo index 6425256..3c6ee7f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po index e628863..325f7f4 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2018-01-30 10:24+0000\n" "Last-Translator: Branko Kokanovic \n" "Language-Team: Serbian (http://www.transifex.com/django/django/language/" @@ -95,6 +95,21 @@ msgid "" "button." msgstr "Изабрали сте акцију али нисте изменили ни једно поље." +msgid "Now" +msgstr "Тренутно време" + +msgid "Midnight" +msgstr "Поноћ" + +msgid "6 a.m." +msgstr "18ч" + +msgid "Noon" +msgstr "Подне" + +msgid "6 p.m." +msgstr "18ч" + #, javascript-format msgid "Note: You are %s hour ahead of server time." msgid_plural "Note: You are %s hours ahead of server time." @@ -109,27 +124,12 @@ msgstr[0] "Обавештење: %s сат сте иза серверског в msgstr[1] "Обавештење: %s сата сте иза серверског времена." msgstr[2] "Обавештење: %s сати сте иза серверског времена." -msgid "Now" -msgstr "Тренутно време" - msgid "Choose a Time" msgstr "Одаберите време" msgid "Choose a time" msgstr "Одабир времена" -msgid "Midnight" -msgstr "Поноћ" - -msgid "6 a.m." -msgstr "18ч" - -msgid "Noon" -msgstr "Подне" - -msgid "6 p.m." -msgstr "18ч" - msgid "Cancel" msgstr "Поништи" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo index c3415d0..1b2ec3f 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po index 8c27839..093c656 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po @@ -2,16 +2,16 @@ # # Translators: # Jannis Leidel , 2011 -# Kowit Charoenratchatabhan , 2013-2014,2017 +# Kowit Charoenratchatabhan , 2013-2014,2017-2018 # piti118 , 2012 # Suteepat Damrongyingsupab , 2011-2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-11-29 04:29+0000\n" -"Last-Translator: Kowit Charoenratchatabhan \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 01:29+0000\n" +"Last-Translator: Jannis Leidel \n" "Language-Team: Thai (http://www.transifex.com/django/django/language/th/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -86,11 +86,20 @@ msgstr "เพิ่ม %(verbose_name)s อีก" msgid "Remove" msgstr "ถอดออก" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "เปลี่ยนแปลง" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "เวลาลงมือ" msgid "user" -msgstr "" +msgstr "ผู้ใช้" msgid "content type" msgstr "" @@ -146,7 +155,7 @@ msgstr "" #, python-brace-format msgid "Changed {fields}." -msgstr "" +msgstr "เปลี่ยน {fields}." #, python-brace-format msgid "Deleted {name} \"{object}\"." @@ -163,8 +172,10 @@ msgid "" msgstr "" #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "" + +msgid "You may edit it again below." msgstr "" #, python-brace-format @@ -174,12 +185,13 @@ msgid "" msgstr "" #, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." +msgid "" +"The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "" #, python-brace-format msgid "" -"The {name} \"{obj}\" was changed successfully. You may edit it again below." +"The {name} \"{obj}\" was added successfully. You may edit it again below." msgstr "" #, python-brace-format @@ -218,6 +230,10 @@ msgstr "เพิ่ม %s" msgid "Change %s" msgstr "เปลี่ยน %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "เกิดความผิดพลาดที่ฐานข้อมูล" @@ -322,7 +338,7 @@ msgid "Change password" msgstr "เปลี่ยนรหัสผ่าน" msgid "Please correct the error below." -msgstr "โปรดแก้ไขข้อผิดพลาดด้านล่าง" +msgstr "" msgid "Please correct the errors below." msgstr "กรุณาแก้ไขข้อผิดพลาดด้านล่าง" @@ -428,8 +444,8 @@ msgstr "" "คุณแน่ใจหรือว่า ต้องการลบ %(objects_name)s ที่ถูกเลือก? เนื่องจากอ็อบเจ็กต์ " "และรายการที่เกี่ยวข้องทั้งหมดต่อไปนี้จะถูกลบด้วย" -msgid "Change" -msgstr "เปลี่ยนแปลง" +msgid "View" +msgstr "" msgid "Delete?" msgstr "ลบ?" @@ -448,8 +464,8 @@ msgstr "โมเดลในแอป %(name)s" msgid "Add" msgstr "เพิ่ม" -msgid "You don't have permission to edit anything." -msgstr "คุณไม่สิทธิ์ในการเปลี่ยนแปลงข้อมูลใดๆ ได้" +msgid "You don't have permission to view or edit anything." +msgstr "" msgid "Recent actions" msgstr "" @@ -507,6 +523,10 @@ msgstr "" msgid "Change selected %(model)s" msgstr "" +#, python-format +msgid "View selected %(model)s" +msgstr "" + #, python-format msgid "Add another %(model)s" msgstr "" @@ -536,6 +556,12 @@ msgstr "บันทึกและเพิ่ม" msgid "Save and continue editing" msgstr "บันทึกและกลับมาแก้ไข" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + msgid "Thanks for spending some quality time with the Web site today." msgstr "ขอบคุณที่สละเวลาอันมีค่าให้กับเว็บไซต์ของเราในวันนี้" @@ -587,7 +613,7 @@ msgstr "" msgid "" "We've emailed you instructions for setting your password, if an account " "exists with the email you entered. You should receive them shortly." -msgstr "" +msgstr "เราได้ส่งอีเมลวิธีการตั้งรหัสผ่าน ไปที่อีเมลที่คุณให้ไว้เรียบร้อยแล้ว และคุณจะได้รับเร็วๆ นี้" msgid "" "If you don't receive an email, please make sure you've entered the address " @@ -638,6 +664,10 @@ msgstr "เลือก %s" msgid "Select %s to change" msgstr "เลือก %s เพื่อเปลี่ยนแปลง" +#, python-format +msgid "Select %s to view" +msgstr "" + msgid "Date:" msgstr "วันที่ :" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo index 51754d5..71eff63 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po index 0ad6de4..5cca152 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po @@ -2,16 +2,16 @@ # # Translators: # Jannis Leidel , 2011 -# Kowit Charoenratchatabhan , 2011-2012 +# Kowit Charoenratchatabhan , 2011-2012,2018 # Perry Roper , 2017 # Suteepat Damrongyingsupab , 2012 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" -"PO-Revision-Date: 2017-09-18 05:04+0000\n" -"Last-Translator: Perry Roper \n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" +"PO-Revision-Date: 2018-05-06 07:50+0000\n" +"Last-Translator: Kowit Charoenratchatabhan \n" "Language-Team: Thai (http://www.transifex.com/django/django/language/th/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -96,25 +96,9 @@ msgid "" msgstr "" "คุณได้เลือกคำสั่งและคุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในฟิลด์ คุณอาจมองหาปุ่มไปมากกว่าปุ่มบันทึก" -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "" - msgid "Now" msgstr "ขณะนี้" -msgid "Choose a Time" -msgstr "" - -msgid "Choose a time" -msgstr "เลือกเวลา" - msgid "Midnight" msgstr "เที่ยงคืน" @@ -127,6 +111,22 @@ msgstr "เที่ยงวัน" msgid "6 p.m." msgstr "หกโมงเย็น" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "หมายเหตุ: เวลาคุณเร็วกว่าเวลาบนเซิร์ฟเวอร์อยู่ %s ชั่วโมง." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "หมายเหตุ: เวลาคุณช้ากว่าเวลาบนเซิร์ฟเวอร์อยู่ %s ชั่วโมง." + +msgid "Choose a Time" +msgstr "เลือกเวลา" + +msgid "Choose a time" +msgstr "เลือกเวลา" + msgid "Cancel" msgstr "ยกเลิก" @@ -134,7 +134,7 @@ msgid "Today" msgstr "วันนี้" msgid "Choose a Date" -msgstr "" +msgstr "เลือกวัน" msgid "Yesterday" msgstr "เมื่อวาน" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo index 8082a0f..565511d 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po index 32cc0a0..79e3583 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: -# BouRock, 2015-2017 +# BouRock, 2015-2018 # BouRock, 2014-2015 # Caner Başaran , 2013 # Cihad GÜNDOĞDU , 2012 @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2017-09-23 18:54+0000\n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-05-28 17:04+0000\n" "Last-Translator: BouRock\n" "Language-Team: Turkish (http://www.transifex.com/django/django/language/" "tr/)\n" @@ -94,6 +94,15 @@ msgstr "Başka bir %(verbose_name)s ekle" msgid "Remove" msgstr "Kaldır" +msgid "Addition" +msgstr "Ekleme" + +msgid "Change" +msgstr "Değiştir" + +msgid "Deletion" +msgstr "Silme" + msgid "action time" msgstr "eylem zamanı" @@ -173,10 +182,11 @@ msgstr "" "basılı tutun." #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "" -"{name} \"{obj}\" başarılı olarak eklendi. Aşağıda tekrar düzenleyebilirsiniz." +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name} \"{obj}\" başarılı olarak eklendi." + +msgid "You may edit it again below." +msgstr "Aşağıdan bunu tekrar düzenleyebilirsiniz." #, python-brace-format msgid "" @@ -186,10 +196,6 @@ msgstr "" "{name} \"{obj}\" başarılı olarak eklendi. Aşağıda başka bir {name} " "ekleyebilirsiniz." -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name} \"{obj}\" başarılı olarak eklendi." - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." @@ -197,6 +203,12 @@ msgstr "" "{name} \"{obj}\" başarılı olarak değiştirildi. Aşağıda tekrar " "düzenleyebilirsiniz." +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "" +"{name} \"{obj}\" başarılı olarak eklendi. Aşağıda tekrar düzenleyebilirsiniz." + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -235,6 +247,10 @@ msgstr "%s ekle" msgid "Change %s" msgstr "%s değiştir" +#, python-format +msgid "View %s" +msgstr "%s göster" + msgid "Database error" msgstr "Veritabanı hatası" @@ -454,8 +470,8 @@ msgstr "" "Seçilen %(objects_name)s nesnelerini silmek istediğinize emin misiniz? " "Aşağıdaki nesnelerin tümü ve onların ilgili öğeleri silinecektir:" -msgid "Change" -msgstr "Değiştir" +msgid "View" +msgstr "Göster" msgid "Delete?" msgstr "Silinsin mi?" @@ -474,8 +490,8 @@ msgstr "%(name)s uygulamasındaki modeller" msgid "Add" msgstr "Ekle" -msgid "You don't have permission to edit anything." -msgstr "Hiçbir şeyi düzenlemek için izne sahip değilsiniz." +msgid "You don't have permission to view or edit anything." +msgstr "Hiçbir şeyi düzenlemek ve göstermek için izne sahip değilsiniz." msgid "Recent actions" msgstr "Son eylemler" @@ -538,6 +554,10 @@ msgstr "Açılır pencere kapanıyor..." msgid "Change selected %(model)s" msgstr "Seçilen %(model)s değiştir" +#, python-format +msgid "View selected %(model)s" +msgstr "Seçilen %(model)s göster" + #, python-format msgid "Add another %(model)s" msgstr "Başka bir %(model)s ekle" @@ -568,6 +588,12 @@ msgstr "Kaydet ve başka birini ekle" msgid "Save and continue editing" msgstr "Kaydet ve düzenlemeye devam et" +msgid "Save and view" +msgstr "Kaydet ve göster" + +msgid "Close" +msgstr "Kapat" + msgid "Thanks for spending some quality time with the Web site today." msgstr "" "Bugün Web sitesinde biraz güzel zaman geçirdiğiniz için teşekkür ederiz." @@ -679,6 +705,10 @@ msgstr "%s seç" msgid "Select %s to change" msgstr "Değiştirmek için %s seçin" +#, python-format +msgid "Select %s to view" +msgstr "Göstermek için %s seçin" + msgid "Date:" msgstr "Tarih:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo index a6e6909..bdd81b6 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po index cbe4ec1..52d2c99 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2017-09-23 18:54+0000\n" "Last-Translator: BouRock\n" "Language-Team: Turkish (http://www.transifex.com/django/django/language/" @@ -102,27 +102,9 @@ msgstr "" "Bir eylem seçtiniz, fakat bireysel alanlar üzerinde hiçbir değişiklik " "yapmadınız. Muhtemelen Kaydet düğmesi yerine Git düğmesini arıyorsunuz." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "Not: Sunucu saatinin %s saat ilerisindesiniz." -msgstr[1] "Not: Sunucu saatinin %s saat ilerisindesiniz." - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "Not: Sunucu saatinin %s saat gerisindesiniz." -msgstr[1] "Not: Sunucu saatinin %s saat gerisindesiniz." - msgid "Now" msgstr "Şimdi" -msgid "Choose a Time" -msgstr "Bir Saat Seçin" - -msgid "Choose a time" -msgstr "Bir saat seçin" - msgid "Midnight" msgstr "Geceyarısı" @@ -135,6 +117,24 @@ msgstr "Öğle" msgid "6 p.m." msgstr "6 ö.s." +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "Not: Sunucu saatinin %s saat ilerisindesiniz." +msgstr[1] "Not: Sunucu saatinin %s saat ilerisindesiniz." + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "Not: Sunucu saatinin %s saat gerisindesiniz." +msgstr[1] "Not: Sunucu saatinin %s saat gerisindesiniz." + +msgid "Choose a Time" +msgstr "Bir Saat Seçin" + +msgid "Choose a time" +msgstr "Bir saat seçin" + msgid "Cancel" msgstr "İptal" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo index ffcb4a9..537c896 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po index d5a24d7..2858020 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po @@ -6,12 +6,14 @@ # Jannis Leidel , 2011 # Kevin Sze , 2012 # Lele Long , 2011,2015 +# Le Yang , 2018 # Liping Wang , 2016-2017 # mozillazg , 2016 # Ronald White , 2013-2014 # Sean Lee , 2013 # Sean Lee , 2013 # slene , 2011 +# xuyi wang , 2018 # Ziang Song , 2012 # Kevin Sze , 2012 # 雨翌 , 2016 @@ -20,9 +22,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 16:49+0100\n" -"PO-Revision-Date: 2018-02-03 06:40+0000\n" -"Last-Translator: Brian Wang \n" +"POT-Creation-Date: 2018-05-21 14:16-0300\n" +"PO-Revision-Date: 2018-07-16 13:10+0000\n" +"Last-Translator: xuyi wang \n" "Language-Team: Chinese (China) (http://www.transifex.com/django/django/" "language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -98,6 +100,15 @@ msgstr "添加另一个 %(verbose_name)s" msgid "Remove" msgstr "删除" +msgid "Addition" +msgstr "" + +msgid "Change" +msgstr "修改" + +msgid "Deletion" +msgstr "" + msgid "action time" msgstr "动作时间" @@ -175,9 +186,11 @@ msgid "" msgstr "按住 ”Control“,或者Mac上的 “Command”,可以选择多个。" #, python-brace-format -msgid "" -"The {name} \"{obj}\" was added successfully. You may edit it again below." -msgstr "{name} \"{obj}\" 已经添加成功。你可以在下面再次编辑它。" +msgid "The {name} \"{obj}\" was added successfully." +msgstr "{name}\"{obj}\"添加成功。" + +msgid "You may edit it again below." +msgstr "您可以在下面再次编辑它." #, python-brace-format msgid "" @@ -185,15 +198,16 @@ msgid "" "below." msgstr "{name} \"{obj}\" 已经添加成功。你可以在下面添加其它的{name}。" -#, python-brace-format -msgid "The {name} \"{obj}\" was added successfully." -msgstr "{name}\"{obj}\"添加成功。" - #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may edit it again below." msgstr "{name} \"{obj}\" 添加成功。你可以在下面再次编辑它。" +#, python-brace-format +msgid "" +"The {name} \"{obj}\" was added successfully. You may edit it again below." +msgstr "{name} \"{obj}\" 已经添加成功。你可以在下面再次编辑它。" + #, python-brace-format msgid "" "The {name} \"{obj}\" was changed successfully. You may add another {name} " @@ -228,6 +242,10 @@ msgstr "增加 %s" msgid "Change %s" msgstr "修改 %s" +#, python-format +msgid "View %s" +msgstr "" + msgid "Database error" msgstr "数据库错误" @@ -332,7 +350,7 @@ msgid "Change password" msgstr "修改密码" msgid "Please correct the error below." -msgstr "请修正下面的错误。" +msgstr "请更正下列错误。" msgid "Please correct the errors below." msgstr "请更正下列错误。" @@ -438,8 +456,8 @@ msgstr "" "请确认要删除选中的 %(objects_name)s 吗?以下所有对象和余它们相关的条目将都会" "被删除:" -msgid "Change" -msgstr "修改" +msgid "View" +msgstr "" msgid "Delete?" msgstr "删除?" @@ -458,8 +476,8 @@ msgstr "在应用程序 %(name)s 中的模型" msgid "Add" msgstr "增加" -msgid "You don't have permission to edit anything." -msgstr "你无权修改任何东西。" +msgid "You don't have permission to view or edit anything." +msgstr "无权查看或修改。" msgid "Recent actions" msgstr "最近动作" @@ -519,6 +537,10 @@ msgstr "弹窗关闭中。。。" msgid "Change selected %(model)s" msgstr "更改选中的%(model)s" +#, python-format +msgid "View selected %(model)s" +msgstr "查看已选的%(model)s" + #, python-format msgid "Add another %(model)s" msgstr "增加另一个 %(model)s" @@ -548,6 +570,12 @@ msgstr "保存并增加另一个" msgid "Save and continue editing" msgstr "保存并继续编辑" +msgid "Save and view" +msgstr "" + +msgid "Close" +msgstr "" + msgid "Thanks for spending some quality time with the Web site today." msgstr "感谢您今天在本站花费了一些宝贵时间。" @@ -651,6 +679,10 @@ msgstr "选择 %s" msgid "Select %s to change" msgstr "选择 %s 来修改" +#, python-format +msgid "Select %s to view" +msgstr "选择%s查看" + msgid "Date:" msgstr "日期:" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo index 01a83bd..2df6930 100644 Binary files a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo and b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po index 55bde06..b37c864 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po @@ -1,7 +1,7 @@ # This file is distributed under the same license as the Django package. # # Translators: -# Bestony , 2018 +# Bai HuanCheng (Bestony) , 2018 # Jannis Leidel , 2011 # Kewei Ma , 2016 # Lele Long , 2011,2015 @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-17 23:12+0200\n" +"POT-Creation-Date: 2018-05-17 11:50+0200\n" "PO-Revision-Date: 2018-01-14 07:41+0000\n" -"Last-Translator: Bestony \n" +"Last-Translator: Bai HuanCheng (Bestony) \n" "Language-Team: Chinese (China) (http://www.transifex.com/django/django/" "language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -103,25 +103,9 @@ msgstr "" "你已选则执行一个动作, 但可编辑栏位沒有任何改变. 你应该尝试 '去' 按钮, 而不是 " "'保存' 按钮." -#, javascript-format -msgid "Note: You are %s hour ahead of server time." -msgid_plural "Note: You are %s hours ahead of server time." -msgstr[0] "注意:你比服务器时间超前 %s 个小时。" - -#, javascript-format -msgid "Note: You are %s hour behind server time." -msgid_plural "Note: You are %s hours behind server time." -msgstr[0] "注意:你比服务器时间滞后 %s 个小时。" - msgid "Now" msgstr "现在" -msgid "Choose a Time" -msgstr "选择一个时间" - -msgid "Choose a time" -msgstr "选择一个时间" - msgid "Midnight" msgstr "午夜" @@ -134,6 +118,22 @@ msgstr "正午" msgid "6 p.m." msgstr "下午6点" +#, javascript-format +msgid "Note: You are %s hour ahead of server time." +msgid_plural "Note: You are %s hours ahead of server time." +msgstr[0] "注意:你比服务器时间超前 %s 个小时。" + +#, javascript-format +msgid "Note: You are %s hour behind server time." +msgid_plural "Note: You are %s hours behind server time." +msgstr[0] "注意:你比服务器时间滞后 %s 个小时。" + +msgid "Choose a Time" +msgstr "选择一个时间" + +msgid "Choose a time" +msgstr "选择一个时间" + msgid "Cancel" msgstr "取消" diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0001_initial.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0001_initial.py new file mode 100644 index 0000000..f1e2804 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0001_initial.py @@ -0,0 +1,47 @@ +import django.contrib.admin.models +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('contenttypes', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='LogEntry', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('action_time', models.DateTimeField(auto_now=True, verbose_name='action time')), + ('object_id', models.TextField(null=True, verbose_name='object id', blank=True)), + ('object_repr', models.CharField(max_length=200, verbose_name='object repr')), + ('action_flag', models.PositiveSmallIntegerField(verbose_name='action flag')), + ('change_message', models.TextField(verbose_name='change message', blank=True)), + ('content_type', models.ForeignKey( + to_field='id', + on_delete=models.SET_NULL, + blank=True, null=True, + to='contenttypes.ContentType', + verbose_name='content type', + )), + ('user', models.ForeignKey( + to=settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + verbose_name='user', + )), + ], + options={ + 'ordering': ('-action_time',), + 'db_table': 'django_admin_log', + 'verbose_name': 'log entry', + 'verbose_name_plural': 'log entries', + }, + bases=(models.Model,), + managers=[ + ('objects', django.contrib.admin.models.LogEntryManager()), + ], + ), + ] diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0002_logentry_remove_auto_add.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0002_logentry_remove_auto_add.py new file mode 100644 index 0000000..a2b1916 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0002_logentry_remove_auto_add.py @@ -0,0 +1,22 @@ +from django.db import migrations, models +from django.utils import timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin', '0001_initial'), + ] + + # No database changes; removes auto_add and adds default/editable. + operations = [ + migrations.AlterField( + model_name='logentry', + name='action_time', + field=models.DateTimeField( + verbose_name='action time', + default=timezone.now, + editable=False, + ), + ), + ] diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0003_logentry_add_action_flag_choices.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0003_logentry_add_action_flag_choices.py new file mode 100644 index 0000000..a041a9d --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/migrations/0003_logentry_add_action_flag_choices.py @@ -0,0 +1,20 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin', '0002_logentry_remove_auto_add'), + ] + + # No database changes; adds choices to action_flag. + operations = [ + migrations.AlterField( + model_name='logentry', + name='action_flag', + field=models.PositiveSmallIntegerField( + choices=[(1, 'Addition'), (2, 'Change'), (3, 'Deletion')], + verbose_name='action flag', + ), + ), + ] diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/models.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/models.py index 82b3cc0..c7bac40 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/models.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/models.py @@ -13,6 +13,12 @@ ADDITION = 1 CHANGE = 2 DELETION = 3 +ACTION_FLAG_CHOICES = ( + (ADDITION, _('Addition')), + (CHANGE, _('Change')), + (DELETION, _('Deletion')), +) + class LogEntryManager(models.Manager): use_in_migrations = True @@ -50,7 +56,7 @@ class LogEntry(models.Model): object_id = models.TextField(_('object id'), blank=True, null=True) # Translators: 'repr' means representation (https://docs.python.org/3/library/functions.html#repr) object_repr = models.CharField(_('object repr'), max_length=200) - action_flag = models.PositiveSmallIntegerField(_('action flag')) + action_flag = models.PositiveSmallIntegerField(_('action flag'), choices=ACTION_FLAG_CHOICES) # change_message is either a string or a JSON structure change_message = models.TextField(_('change message'), blank=True) @@ -95,7 +101,7 @@ class LogEntry(models.Model): if self.change_message and self.change_message[0] == '[': try: change_message = json.loads(self.change_message) - except ValueError: + except json.JSONDecodeError: return self.change_message messages = [] for sub_message in change_message: diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/options.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/options.py index 8d8f263..0f4dd93 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/options.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/options.py @@ -45,6 +45,7 @@ from django.urls import reverse from django.utils.decorators import method_decorator from django.utils.html import format_html from django.utils.http import urlencode +from django.utils.inspect import get_func_args from django.utils.safestring import mark_safe from django.utils.text import capfirst, format_lazy, get_text_list from django.utils.translation import gettext as _, ngettext @@ -112,6 +113,7 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): formfield_overrides = {} readonly_fields = () ordering = None + sortable_by = None view_on_site = True show_full_result_count = True checks_class = BaseModelAdminChecks @@ -146,7 +148,7 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): # formfield_overrides because **kwargs is more specific, and should # always win. if db_field.__class__ in self.formfield_overrides: - kwargs = dict(self.formfield_overrides[db_field.__class__], **kwargs) + kwargs = {**self.formfield_overrides[db_field.__class__], **kwargs} # Get the correct formfield. if isinstance(db_field, models.ForeignKey): @@ -166,6 +168,7 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): can_add_related=related_modeladmin.has_add_permission(request), can_change_related=related_modeladmin.has_change_permission(request), can_delete_related=related_modeladmin.has_delete_permission(request), + can_view_related=related_modeladmin.has_view_permission(request), ) formfield.widget = widgets.RelatedFieldWidgetWrapper( formfield.widget, db_field.remote_field, self.admin_site, **wrapper_kwargs @@ -177,7 +180,7 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): # passed to formfield_for_dbfield override the defaults. for klass in db_field.__class__.mro(): if klass in self.formfield_overrides: - kwargs = dict(copy.deepcopy(self.formfield_overrides[klass]), **kwargs) + kwargs = {**copy.deepcopy(self.formfield_overrides[klass]), **kwargs} return db_field.formfield(**kwargs) # For any other type of field, just call its formfield() method. @@ -354,6 +357,10 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): qs = qs.order_by(*ordering) return qs + def get_sortable_by(self, request): + """Hook for specifying which fields can be sorted in the changelist.""" + return self.sortable_by if self.sortable_by is not None else self.get_list_display(request) + def lookup_allowed(self, lookup, value): from django.contrib.admin.filters import SimpleListFilter @@ -365,9 +372,8 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): # As ``limit_choices_to`` can be a callable, invoke it here. if callable(fk_lookup): fk_lookup = fk_lookup() - for k, v in widgets.url_params_from_lookup_dict(fk_lookup).items(): - if k == lookup and v == value: - return True + if (lookup, value) in widgets.url_params_from_lookup_dict(fk_lookup).items(): + return True relation_parts = [] prev_field = None @@ -493,6 +499,25 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): codename = get_permission_codename('delete', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) + def has_view_permission(self, request, obj=None): + """ + Return True if the given request has permission to view the given + Django model instance. The default implementation doesn't examine the + `obj` parameter. + + If overridden by the user in subclasses, it should return True if the + given request has permission to view the `obj` model instance. If `obj` + is None, it should return True if the request has permission to view + any object of the given type. + """ + opts = self.opts + codename_view = get_permission_codename('view', opts) + codename_change = get_permission_codename('change', opts) + return ( + request.user.has_perm('%s.%s' % (opts.app_label, codename_view)) or + request.user.has_perm('%s.%s' % (opts.app_label, codename_change)) + ) + def has_module_permission(self, request): """ Return True if the given request has any permission in the given @@ -556,12 +581,19 @@ class ModelAdmin(BaseModelAdmin): inline_instances = [] for inline_class in self.inlines: inline = inline_class(self.model, self.admin_site) + # RemovedInDjango30Warning: obj will be a required argument. + args = get_func_args(inline.has_add_permission) + if 'obj' in args: + inline_has_add_permission = inline.has_add_permission(request, obj) + else: + inline_has_add_permission = inline.has_add_permission(request) if request: - if not (inline.has_add_permission(request) or + if not (inline.has_view_permission(request, obj) or + inline_has_add_permission or inline.has_change_permission(request, obj) or inline.has_delete_permission(request, obj)): continue - if not inline.has_add_permission(request): + if not inline_has_add_permission: inline.max_num = 0 inline_instances.append(inline) @@ -614,19 +646,20 @@ class ModelAdmin(BaseModelAdmin): def get_model_perms(self, request): """ Return a dict of all perms for this model. This dict has the keys - ``add``, ``change``, and ``delete`` mapping to the True/False for each - of those actions. + ``add``, ``change``, ``delete``, and ``view`` mapping to the True/False + for each of those actions. """ return { 'add': self.has_add_permission(request), 'change': self.has_change_permission(request), 'delete': self.has_delete_permission(request), + 'view': self.has_view_permission(request), } def _get_form_for_get_fields(self, request, obj): return self.get_form(request, obj, fields=None) - def get_form(self, request, obj=None, **kwargs): + def get_form(self, request, obj=None, change=False, **kwargs): """ Return a Form class for use in the admin add view. This is used by add_view and change_view. @@ -639,6 +672,10 @@ class ModelAdmin(BaseModelAdmin): exclude = [] if excluded is None else list(excluded) readonly_fields = self.get_readonly_fields(request, obj) exclude.extend(readonly_fields) + # Exclude all fields if it's a change form and the user doesn't have + # the change permission. + if change and hasattr(request, 'user') and not self.has_change_permission(request, obj): + exclude.extend(fields) if excluded is None and hasattr(self.form, '_meta') and self.form._meta.exclude: # Take the custom ModelForm's Meta.exclude into account only if the # ModelAdmin doesn't define its own. @@ -655,12 +692,12 @@ class ModelAdmin(BaseModelAdmin): form = type(self.form.__name__, (self.form,), new_attrs) defaults = { - "form": form, - "fields": fields, - "exclude": exclude, - "formfield_callback": partial(self.formfield_for_dbfield, request=request), + 'form': form, + 'fields': fields, + 'exclude': exclude, + 'formfield_callback': partial(self.formfield_for_dbfield, request=request), + **kwargs, } - defaults.update(kwargs) if defaults['fields'] is None and not modelform_defines_fields(defaults['form']): defaults['fields'] = forms.ALL_FIELDS @@ -690,6 +727,7 @@ class ModelAdmin(BaseModelAdmin): # Add the action checkboxes if any actions are available. if self.get_actions(request): list_display = ['action_checkbox'] + list(list_display) + sortable_by = self.get_sortable_by(request) ChangeList = self.get_changelist(request) return ChangeList( request, @@ -704,6 +742,7 @@ class ModelAdmin(BaseModelAdmin): self.list_max_show_all, self.list_editable, self, + sortable_by, ) def get_object(self, request, object_id, from_field=None): @@ -726,9 +765,9 @@ class ModelAdmin(BaseModelAdmin): Return a Form class for use in the Formset on the changelist page. """ defaults = { - "formfield_callback": partial(self.formfield_for_dbfield, request=request), + 'formfield_callback': partial(self.formfield_for_dbfield, request=request), + **kwargs, } - defaults.update(kwargs) if defaults.get('fields') is None and not modelform_defines_fields(defaults.get('form')): defaults['fields'] = forms.ALL_FIELDS @@ -740,9 +779,9 @@ class ModelAdmin(BaseModelAdmin): is used. """ defaults = { - "formfield_callback": partial(self.formfield_for_dbfield, request=request), + 'formfield_callback': partial(self.formfield_for_dbfield, request=request), + **kwargs, } - defaults.update(kwargs) return modelformset_factory( self.model, self.get_changelist_form(request), extra=0, fields=self.list_editable, **defaults @@ -811,18 +850,10 @@ class ModelAdmin(BaseModelAdmin): A list_display column containing a checkbox widget. """ return helpers.checkbox.render(helpers.ACTION_CHECKBOX_NAME, str(obj.pk)) - action_checkbox.short_description = mark_safe('') - - def get_actions(self, request): - """ - Return a dictionary mapping the names of all actions for this - ModelAdmin to a tuple of (callable, name, description) for each action. - """ - # If self.actions is explicitly set to None that means that we don't - # want *any* actions enabled on this page. - if self.actions is None or IS_POPUP_VAR in request.GET: - return OrderedDict() + action_checkbox.short_description = mark_safe('') + def _get_base_actions(self): + """Return the list of actions, prior to any request-based filtering.""" actions = [] # Gather actions from the admin site first @@ -833,23 +864,44 @@ class ModelAdmin(BaseModelAdmin): # Then gather them from the model admin and all parent classes, # starting with self and working back up. for klass in self.__class__.mro()[::-1]: - class_actions = getattr(klass, 'actions', []) - # Avoid trying to iterate over None - if not class_actions: - continue + class_actions = getattr(klass, 'actions', []) or [] actions.extend(self.get_action(action) for action in class_actions) # get_action might have returned None, so filter any of those out. - actions = filter(None, actions) + return filter(None, actions) + def _filter_actions_by_permissions(self, request, actions): + """Filter out any actions that the user doesn't have access to.""" + filtered_actions = [] + for action in actions: + callable = action[0] + if not hasattr(callable, 'allowed_permissions'): + filtered_actions.append(action) + continue + permission_checks = ( + getattr(self, 'has_%s_permission' % permission) + for permission in callable.allowed_permissions + ) + if any(has_permission(request) for has_permission in permission_checks): + filtered_actions.append(action) + return filtered_actions + + def get_actions(self, request): + """ + Return a dictionary mapping the names of all actions for this + ModelAdmin to a tuple of (callable, name, description) for each action. + """ + # If self.actions is set to None that means actions are disabled on + # this page. + if self.actions is None or IS_POPUP_VAR in request.GET: + return OrderedDict() + actions = self._filter_actions_by_permissions(request, self._get_base_actions()) # Convert the actions into an OrderedDict keyed by name. - actions = OrderedDict( + return OrderedDict( (name, (func, name, desc)) for func, name, desc in actions ) - return actions - def get_action_choices(self, request, default_choices=BLANK_CHOICE_DASH): """ Return a list of choices for use in a form object. Each choice is a @@ -944,8 +996,27 @@ class ModelAdmin(BaseModelAdmin): return "%s__iexact" % field_name[1:] elif field_name.startswith('@'): return "%s__search" % field_name[1:] - else: - return "%s__icontains" % field_name + # Use field_name if it includes a lookup. + opts = queryset.model._meta + lookup_fields = field_name.split(LOOKUP_SEP) + # Go through the fields, following all relations. + prev_field = None + for path_part in lookup_fields: + if path_part == 'pk': + path_part = opts.pk.name + try: + field = opts.get_field(path_part) + except FieldDoesNotExist: + # Use valid query lookups. + if prev_field and prev_field.get_lookup(path_part): + return field_name + else: + prev_field = field + if hasattr(field, 'get_path_info'): + # Update opts to follow the relation. + opts = field.get_path_info()[-1].to_opts + # Otherwise, use the field with icontains. + return "%s__icontains" % field_name use_distinct = False search_fields = self.get_search_fields(request) @@ -956,11 +1027,7 @@ class ModelAdmin(BaseModelAdmin): or_queries = [models.Q(**{orm_lookup: bit}) for orm_lookup in orm_lookups] queryset = queryset.filter(reduce(operator.or_, or_queries)) - if not use_distinct: - for search_spec in orm_lookups: - if lookup_needs_distinct(self.opts, search_spec): - use_distinct = True - break + use_distinct |= any(lookup_needs_distinct(self.opts, search_spec) for search_spec in orm_lookups) return queryset, use_distinct @@ -1032,6 +1099,10 @@ class ModelAdmin(BaseModelAdmin): """ obj.delete() + def delete_queryset(self, request, queryset): + """Given a queryset, delete it from the database.""" + queryset.delete() + def save_formset(self, request, form, formset, change): """ Given an inline formset save it to the database. @@ -1056,13 +1127,23 @@ class ModelAdmin(BaseModelAdmin): preserved_filters = self.get_preserved_filters(request) form_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, form_url) view_on_site_url = self.get_view_on_site_url(obj) + has_editable_inline_admin_formsets = False + for inline in context['inline_admin_formsets']: + if inline.has_add_permission or inline.has_change_permission or inline.has_delete_permission: + has_editable_inline_admin_formsets = True + break context.update({ 'add': add, 'change': change, + 'has_view_permission': self.has_view_permission(request, obj), 'has_add_permission': self.has_add_permission(request), 'has_change_permission': self.has_change_permission(request, obj), 'has_delete_permission': self.has_delete_permission(request, obj), - 'has_file_field': True, # FIXME - this should check if form or formsets have a FileField, + 'has_editable_inline_admin_formsets': has_editable_inline_admin_formsets, + 'has_file_field': context['adminform'].form.is_multipart() or any( + admin_formset.formset.form().is_multipart() + for admin_formset in context['inline_admin_formsets'] + ), 'has_absolute_url': view_on_site_url is not None, 'absolute_url': view_on_site_url, 'form_url': form_url, @@ -1134,11 +1215,10 @@ class ModelAdmin(BaseModelAdmin): "_saveasnew" in request.POST and self.save_as_continue and self.has_change_permission(request, obj) ): - msg = format_html( - _('The {name} "{obj}" was added successfully. You may edit it again below.'), - **msg_dict - ) - self.message_user(request, msg, messages.SUCCESS) + msg = _('The {name} "{obj}" was added successfully.') + if self.has_change_permission(request, obj): + msg += ' ' + _('You may edit it again below.') + self.message_user(request, format_html(msg, **msg_dict), messages.SUCCESS) if post_url_continue is None: post_url_continue = obj_url post_url_continue = add_preserved_filters( @@ -1409,10 +1489,15 @@ class ModelAdmin(BaseModelAdmin): for inline, formset in zip(inline_instances, formsets): fieldsets = list(inline.get_fieldsets(request, obj)) readonly = list(inline.get_readonly_fields(request, obj)) + has_add_permission = inline.has_add_permission(request, obj) + has_change_permission = inline.has_change_permission(request, obj) + has_delete_permission = inline.has_delete_permission(request, obj) + has_view_permission = inline.has_view_permission(request, obj) prepopulated = dict(inline.get_prepopulated_fields(request, obj)) inline_admin_formset = helpers.InlineAdminFormSet( - inline, formset, fieldsets, prepopulated, readonly, - model_admin=self, + inline, formset, fieldsets, prepopulated, readonly, model_admin=self, + has_add_permission=has_add_permission, has_change_permission=has_change_permission, + has_delete_permission=has_delete_permission, has_view_permission=has_view_permission, ) inline_admin_formsets.append(inline_admin_formset) return inline_admin_formsets @@ -1471,20 +1556,19 @@ class ModelAdmin(BaseModelAdmin): else: obj = self.get_object(request, unquote(object_id), to_field) - if not self.has_change_permission(request, obj): + if not self.has_view_permission(request, obj) and not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: return self._get_obj_does_not_exist_redirect(request, opts, object_id) - ModelForm = self.get_form(request, obj) + ModelForm = self.get_form(request, obj, change=not add) if request.method == 'POST': form = ModelForm(request.POST, request.FILES, instance=obj) - if form.is_valid(): - form_validated = True + form_validated = form.is_valid() + if form_validated: new_object = self.save_form(request, form, change=not add) else: - form_validated = False new_object = form.instance formsets, inline_instances = self._create_formsets(request, new_object, change=not add) if all_valid(formsets) and form_validated: @@ -1508,11 +1592,15 @@ class ModelAdmin(BaseModelAdmin): form = ModelForm(instance=obj) formsets, inline_instances = self._create_formsets(request, obj, change=True) + if not add and not self.has_change_permission(request, obj): + readonly_fields = flatten_fieldsets(self.get_fieldsets(request, obj)) + else: + readonly_fields = self.get_readonly_fields(request, obj) adminForm = helpers.AdminForm( form, list(self.get_fieldsets(request, obj)), self.get_prepopulated_fields(request, obj), - self.get_readonly_fields(request, obj), + readonly_fields, model_admin=self) media = self.media + adminForm.media @@ -1520,20 +1608,25 @@ class ModelAdmin(BaseModelAdmin): for inline_formset in inline_formsets: media = media + inline_formset.media - context = dict( - self.admin_site.each_context(request), - title=(_('Add %s') if add else _('Change %s')) % opts.verbose_name, - adminform=adminForm, - object_id=object_id, - original=obj, - is_popup=(IS_POPUP_VAR in request.POST or - IS_POPUP_VAR in request.GET), - to_field=to_field, - media=media, - inline_admin_formsets=inline_formsets, - errors=helpers.AdminErrorList(form, formsets), - preserved_filters=self.get_preserved_filters(request), - ) + if add: + title = _('Add %s') + elif self.has_change_permission(request, obj): + title = _('Change %s') + else: + title = _('View %s') + context = { + **self.admin_site.each_context(request), + 'title': title % opts.verbose_name, + 'adminform': adminForm, + 'object_id': object_id, + 'original': obj, + 'is_popup': IS_POPUP_VAR in request.POST or IS_POPUP_VAR in request.GET, + 'to_field': to_field, + 'media': media, + 'inline_admin_formsets': inline_formsets, + 'errors': helpers.AdminErrorList(form, formsets), + 'preserved_filters': self.get_preserved_filters(request), + } # Hide the "Save" and "Save and continue" buttons if "Save as New" was # previously chosen to prevent the interface from getting confusing. @@ -1558,7 +1651,7 @@ class ModelAdmin(BaseModelAdmin): def _get_edited_object_pks(self, request, prefix): """Return POST data values of list_editable primary keys.""" - pk_pattern = re.compile('{}-\d+-{}$'.format(prefix, self.model._meta.pk.name)) + pk_pattern = re.compile(r'{}-\d+-{}$'.format(prefix, self.model._meta.pk.name)) return [value for key, value in request.POST.items() if pk_pattern.match(key)] def _get_list_editable_queryset(self, request, prefix): @@ -1585,7 +1678,7 @@ class ModelAdmin(BaseModelAdmin): from django.contrib.admin.views.main import ERROR_FLAG opts = self.model._meta app_label = opts.app_label - if not self.has_change_permission(request, None): + if not self.has_view_permission(request) and not self.has_change_permission(request): raise PermissionDenied try: @@ -1650,6 +1743,8 @@ class ModelAdmin(BaseModelAdmin): # Handle POSTed bulk-edit data. if request.method == 'POST' and cl.list_editable and '_save' in request.POST: + if not self.has_change_permission(request): + raise PermissionDenied FormSet = self.get_changelist_formset(request) modified_objects = self._get_list_editable_queryset(request, FormSet.get_default_prefix()) formset = cl.formset = FormSet(request.POST, request.FILES, queryset=modified_objects) @@ -1678,7 +1773,7 @@ class ModelAdmin(BaseModelAdmin): return HttpResponseRedirect(request.get_full_path()) # Handle GET -- construct a formset for display. - elif cl.list_editable: + elif cl.list_editable and self.has_change_permission(request): FormSet = self.get_changelist_formset(request) formset = cl.formset = FormSet(queryset=cl.result_list) @@ -1702,25 +1797,25 @@ class ModelAdmin(BaseModelAdmin): cl.result_count ) - context = dict( - self.admin_site.each_context(request), - module_name=str(opts.verbose_name_plural), - selection_note=_('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)}, - selection_note_all=selection_note_all % {'total_count': cl.result_count}, - title=cl.title, - is_popup=cl.is_popup, - to_field=cl.to_field, - cl=cl, - media=media, - has_add_permission=self.has_add_permission(request), - opts=cl.opts, - action_form=action_form, - actions_on_top=self.actions_on_top, - actions_on_bottom=self.actions_on_bottom, - actions_selection_counter=self.actions_selection_counter, - preserved_filters=self.get_preserved_filters(request), - ) - context.update(extra_context or {}) + context = { + **self.admin_site.each_context(request), + 'module_name': str(opts.verbose_name_plural), + 'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)}, + 'selection_note_all': selection_note_all % {'total_count': cl.result_count}, + 'title': cl.title, + 'is_popup': cl.is_popup, + 'to_field': cl.to_field, + 'cl': cl, + 'media': media, + 'has_add_permission': self.has_add_permission(request), + 'opts': cl.opts, + 'action_form': action_form, + 'actions_on_top': self.actions_on_top, + 'actions_on_bottom': self.actions_on_bottom, + 'actions_selection_counter': self.actions_selection_counter, + 'preserved_filters': self.get_preserved_filters(request), + **(extra_context or {}), + } request.current_app = self.admin_site.name @@ -1730,6 +1825,13 @@ class ModelAdmin(BaseModelAdmin): 'admin/change_list.html' ], context) + def get_deleted_objects(self, objs, request): + """ + Hook for customizing the delete process for the delete view and the + "delete selected" action. + """ + return get_deleted_objects(objs, request, self.admin_site) + @csrf_protect_m def delete_view(self, request, object_id, extra_context=None): with transaction.atomic(using=router.db_for_write(self.model)): @@ -1752,12 +1854,9 @@ class ModelAdmin(BaseModelAdmin): if obj is None: return self._get_obj_does_not_exist_redirect(request, opts, object_id) - using = router.db_for_write(self.model) - # Populate deleted_objects, a data structure of all related objects that # will also be deleted. - (deleted_objects, model_count, perms_needed, protected) = get_deleted_objects( - [obj], opts, request.user, self.admin_site, using) + deleted_objects, model_count, perms_needed, protected = self.get_deleted_objects([obj], request) if request.POST and not protected: # The user has confirmed the deletion. if perms_needed: @@ -1777,23 +1876,22 @@ class ModelAdmin(BaseModelAdmin): else: title = _("Are you sure?") - context = dict( - self.admin_site.each_context(request), - title=title, - object_name=object_name, - object=obj, - deleted_objects=deleted_objects, - model_count=dict(model_count).items(), - perms_lacking=perms_needed, - protected=protected, - opts=opts, - app_label=app_label, - preserved_filters=self.get_preserved_filters(request), - is_popup=(IS_POPUP_VAR in request.POST or - IS_POPUP_VAR in request.GET), - to_field=to_field, - ) - context.update(extra_context or {}) + context = { + **self.admin_site.each_context(request), + 'title': title, + 'object_name': object_name, + 'object': obj, + 'deleted_objects': deleted_objects, + 'model_count': dict(model_count).items(), + 'perms_lacking': perms_needed, + 'protected': protected, + 'opts': opts, + 'app_label': app_label, + 'preserved_filters': self.get_preserved_filters(request), + 'is_popup': IS_POPUP_VAR in request.POST or IS_POPUP_VAR in request.GET, + 'to_field': to_field, + **(extra_context or {}), + } return self.render_delete_form(request, context) @@ -1806,7 +1904,7 @@ class ModelAdmin(BaseModelAdmin): if obj is None: return self._get_obj_does_not_exist_redirect(request, model._meta, object_id) - if not self.has_change_permission(request, obj): + if not self.has_view_permission(request, obj) and not self.has_change_permission(request, obj): raise PermissionDenied # Then get the history for this object. @@ -1817,16 +1915,16 @@ class ModelAdmin(BaseModelAdmin): content_type=get_content_type_for_model(model) ).select_related().order_by('action_time') - context = dict( - self.admin_site.each_context(request), - title=_('Change history: %s') % obj, - action_list=action_list, - module_name=str(capfirst(opts.verbose_name_plural)), - object=obj, - opts=opts, - preserved_filters=self.get_preserved_filters(request), - ) - context.update(extra_context or {}) + context = { + **self.admin_site.each_context(request), + 'title': _('Change history: %s') % obj, + 'action_list': action_list, + 'module_name': str(capfirst(opts.verbose_name_plural)), + 'object': obj, + 'opts': opts, + 'preserved_filters': self.get_preserved_filters(request), + **(extra_context or {}), + } request.current_app = self.admin_site.name @@ -1939,22 +2037,31 @@ class InlineModelAdmin(BaseModelAdmin): exclude = exclude or None can_delete = self.can_delete and self.has_delete_permission(request, obj) defaults = { - "form": self.form, - "formset": self.formset, - "fk_name": self.fk_name, - "fields": fields, - "exclude": exclude, - "formfield_callback": partial(self.formfield_for_dbfield, request=request), - "extra": self.get_extra(request, obj, **kwargs), - "min_num": self.get_min_num(request, obj, **kwargs), - "max_num": self.get_max_num(request, obj, **kwargs), - "can_delete": can_delete, + 'form': self.form, + 'formset': self.formset, + 'fk_name': self.fk_name, + 'fields': fields, + 'exclude': exclude, + 'formfield_callback': partial(self.formfield_for_dbfield, request=request), + 'extra': self.get_extra(request, obj, **kwargs), + 'min_num': self.get_min_num(request, obj, **kwargs), + 'max_num': self.get_max_num(request, obj, **kwargs), + 'can_delete': can_delete, + **kwargs, } - defaults.update(kwargs) base_model_form = defaults['form'] + can_change = self.has_change_permission(request, obj) if request else True + can_add = self.has_add_permission(request, obj) if request else True class DeleteProtectedModelForm(base_model_form): + def __init__(self, *args, **kwargs): + super(DeleteProtectedModelForm, self).__init__(*args, **kwargs) + if not can_change and not self.instance._state.adding: + self.fields = {} + if not can_add and self.instance._state.adding: + self.fields = {} + def hand_clean_DELETE(self): """ We don't validate the 'DELETE' field itself because on @@ -1964,7 +2071,7 @@ class InlineModelAdmin(BaseModelAdmin): if self.cleaned_data.get(DELETION_FIELD_NAME, False): using = router.db_for_write(self._meta.model) collector = NestedObjects(using=using) - if self.instance.pk is None: + if self.instance._state.adding: return collector.collect([self.instance]) if collector.protected: @@ -2002,40 +2109,52 @@ class InlineModelAdmin(BaseModelAdmin): def get_queryset(self, request): queryset = super().get_queryset(request) - if not self.has_change_permission(request): + if not self.has_change_permission(request) and not self.has_view_permission(request): queryset = queryset.none() return queryset - def has_add_permission(self, request): + def has_add_permission(self, request, obj): if self.opts.auto_created: # We're checking the rights to an auto-created intermediate model, # which doesn't have its own individual permissions. The user needs - # to have the change permission for the related model in order to + # to have the view permission for the related model in order to # be able to do anything with the intermediate model. - return self.has_change_permission(request) + return self.has_view_permission(request, obj) return super().has_add_permission(request) def has_change_permission(self, request, obj=None): - opts = self.opts - if opts.auto_created: - # The model was auto-created as intermediary for a - # ManyToMany-relationship, find the target model - for field in opts.fields: - if field.remote_field and field.remote_field.model != self.parent_model: - opts = field.remote_field.model._meta - break - codename = get_permission_codename('change', opts) - return request.user.has_perm("%s.%s" % (opts.app_label, codename)) + if self.opts.auto_created: + # We're checking the rights to an auto-created intermediate model, + # which doesn't have its own individual permissions. The user needs + # to have the view permission for the related model in order to + # be able to do anything with the intermediate model. + return self.has_view_permission(request, obj) + return super().has_change_permission(request) def has_delete_permission(self, request, obj=None): if self.opts.auto_created: # We're checking the rights to an auto-created intermediate model, # which doesn't have its own individual permissions. The user needs - # to have the change permission for the related model in order to + # to have the view permission for the related model in order to # be able to do anything with the intermediate model. - return self.has_change_permission(request, obj) + return self.has_view_permission(request, obj) return super().has_delete_permission(request, obj) + def has_view_permission(self, request, obj=None): + if self.opts.auto_created: + opts = self.opts + # The model was auto-created as intermediary for a many-to-many + # Many-relationship; find the target model. + for field in opts.fields: + if field.remote_field and field.remote_field.model != self.parent_model: + opts = field.remote_field.model._meta + break + return ( + request.user.has_perm('%s.%s' % (opts.app_label, get_permission_codename('view', opts))) or + request.user.has_perm('%s.%s' % (opts.app_label, get_permission_codename('change', opts))) + ) + return super().has_view_permission(request) + class StackedInline(InlineModelAdmin): template = 'admin/edit_inline/stacked.html' diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/sites.py b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/sites.py index 2e37ade..0dafe97 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/sites.py +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/sites.py @@ -9,6 +9,8 @@ from django.db.models.base import ModelBase from django.http import Http404, HttpResponseRedirect from django.template.response import TemplateResponse from django.urls import NoReverseMatch, reverse +from django.utils.functional import LazyObject +from django.utils.module_loading import import_string from django.utils.text import capfirst from django.utils.translation import gettext as _, gettext_lazy from django.views.decorators.cache import never_cache @@ -94,9 +96,7 @@ class AdminSite: If a model is abstract, raise ImproperlyConfigured. """ - if not admin_class: - admin_class = ModelAdmin - + admin_class = admin_class or ModelAdmin if isinstance(model_or_iterable, ModelBase): model_or_iterable = [model_or_iterable] for model in model_or_iterable: @@ -312,7 +312,7 @@ class AdminSite: defaults = { 'form_class': AdminPasswordChangeForm, 'success_url': url, - 'extra_context': dict(self.each_context(request), **(extra_context or {})), + 'extra_context': {**self.each_context(request), **(extra_context or {})}, } if self.password_change_template is not None: defaults['template_name'] = self.password_change_template @@ -325,7 +325,7 @@ class AdminSite: """ from django.contrib.auth.views import PasswordChangeDoneView defaults = { - 'extra_context': dict(self.each_context(request), **(extra_context or {})), + 'extra_context': {**self.each_context(request), **(extra_context or {})}, } if self.password_change_done_template is not None: defaults['template_name'] = self.password_change_done_template @@ -350,13 +350,13 @@ class AdminSite: """ from django.contrib.auth.views import LogoutView defaults = { - 'extra_context': dict( - self.each_context(request), + 'extra_context': { + **self.each_context(request), # Since the user isn't logged out at this point, the value of # has_permission must be overridden. - has_permission=False, + 'has_permission': False, **(extra_context or {}) - ), + }, } if self.logout_template is not None: defaults['template_name'] = self.logout_template @@ -378,12 +378,12 @@ class AdminSite: # it cannot import models from other applications at the module level, # and django.contrib.admin.forms eventually imports User. from django.contrib.admin.forms import AdminAuthenticationForm - context = dict( - self.each_context(request), - title=_('Log in'), - app_path=request.get_full_path(), - username=request.user.get_username(), - ) + context = { + **self.each_context(request), + 'title': _('Log in'), + 'app_path': request.get_full_path(), + 'username': request.user.get_username(), + } if (REDIRECT_FIELD_NAME not in request.GET and REDIRECT_FIELD_NAME not in request.POST): context[REDIRECT_FIELD_NAME] = reverse('admin:index', current_app=self.name) @@ -432,7 +432,8 @@ class AdminSite: 'object_name': model._meta.object_name, 'perms': perms, } - if perms.get('change'): + if perms.get('change') or perms.get('view'): + model_dict['view_only'] = not perms.get('change') try: model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name) except NoReverseMatch: @@ -486,12 +487,12 @@ class AdminSite: """ app_list = self.get_app_list(request) - context = dict( - self.each_context(request), - title=self.index_title, - app_list=app_list, - ) - context.update(extra_context or {}) + context = { + **self.each_context(request), + 'title': self.index_title, + 'app_list': app_list, + **(extra_context or {}), + } request.current_app = self.name @@ -504,13 +505,13 @@ class AdminSite: # Sort the models alphabetically within each app. app_dict['models'].sort(key=lambda x: x['name']) app_name = apps.get_app_config(app_label).verbose_name - context = dict( - self.each_context(request), - title=_('%(app)s administration') % {'app': app_name}, - app_list=[app_dict], - app_label=app_label, - ) - context.update(extra_context or {}) + context = { + **self.each_context(request), + 'title': _('%(app)s administration') % {'app': app_name}, + 'app_list': [app_dict], + 'app_label': app_label, + **(extra_context or {}), + } request.current_app = self.name @@ -520,6 +521,14 @@ class AdminSite: ], context) +class DefaultAdminSite(LazyObject): + def _setup(self): + AdminSiteClass = import_string(apps.get_app_config('admin').default_site) + self._wrapped = AdminSiteClass() + + # This global object represents the default admin site, for the common case. -# You can instantiate AdminSite in your own code to create a custom admin site. -site = AdminSite() +# You can provide your own AdminSite using the (Simple)AdminConfig.default_site +# attribute. You can also instantiate AdminSite in your own code to create a +# custom admin site. +site = DefaultAdminSite() diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/base.css b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/base.css index 5dfeaff..6551e23 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/base.css +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/base.css @@ -662,6 +662,11 @@ div.breadcrumbs a:focus, div.breadcrumbs a:hover { /* ACTION ICONS */ +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url(../img/icon-viewlink.svg) 0 1px no-repeat; +} + .addlink { padding-left: 16px; background: url(../img/icon-addlink.svg) 0 1px no-repeat; diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/forms.css b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/forms.css index 77985d5..5db927d 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/forms.css +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/forms.css @@ -177,7 +177,7 @@ form .aligned table p { padding-left: 0; } -fieldset .field-box { +fieldset .fieldBox { float: left; margin-right: 20px; } @@ -291,12 +291,29 @@ body.popup .submit-row { color: #fff; } +.submit-row a.closelink { + display: inline-block; + background: #bbbbbb; + border-radius: 4px; + padding: 10px 15px; + height: 15px; + line-height: 15px; + margin: 0 0 0 5px; + color: #fff; +} + .submit-row a.deletelink:focus, .submit-row a.deletelink:hover, .submit-row a.deletelink:active { background: #a41515; } +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: #aaaaaa; +} + /* CUSTOM FORM FIELDS */ .vSelectMultipleField { diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/responsive.css b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/responsive.css index 7460304..05fd2c5 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/responsive.css +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/responsive.css @@ -207,13 +207,13 @@ input[type="submit"], button { min-height: 0; } - fieldset .field-box { + fieldset .fieldBox { float: none; margin: 0 -10px; padding: 0 10px; } - fieldset .field-box + .field-box { + fieldset .fieldBox + .fieldBox { margin-top: 10px; padding-top: 10px; border-top: 1px solid #eee; @@ -572,7 +572,7 @@ input[type="submit"], button { width: auto; } - fieldset .field-box + .field-box { + fieldset .fieldBox + .fieldBox { margin-top: 15px; padding-top: 15px; } @@ -810,12 +810,16 @@ input[type="submit"], button { width: 100%; } - .submit-row input, .submit-row input.default, .submit-row a { + .submit-row input, .submit-row input.default, .submit-row a, .submit-row a.closelink { float: none; margin: 0 0 10px; text-align: center; } + .submit-row a.closelink { + padding: 10px 0; + } + .submit-row p.deletelink-box { order: 4; } diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/rtl.css b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/rtl.css index ef39781..d998e7c 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/rtl.css +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/rtl.css @@ -35,7 +35,7 @@ th { margin-right: 1.5em; } -.addlink, .changelink { +.viewlink, .addlink, .changelink { padding-left: 0; padding-right: 16px; background-position: 100% 1px; @@ -180,7 +180,7 @@ input[type=submit].default, .submit-row input.default { float: left; } -fieldset .field-box { +fieldset .fieldBox { float: right; margin-left: 20px; margin-right: 0; diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg new file mode 100644 index 0000000..a1ca1d3 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg @@ -0,0 +1,3 @@ + + + diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js index 52471d9..b6bcda0 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js @@ -164,8 +164,8 @@ Requires jQuery, core.js, and SelectBox.js. if (!is_stacked) { // In horizontal mode, give the same height to the two boxes. - var j_from_box = $(from_box); - var j_to_box = $(to_box); + var j_from_box = $('#' + field_id + '_from'); + var j_to_box = $('#' + field_id + '_to'); var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }; if (j_from_box.outerHeight() > 0) { resize_filters(); // This fieldset is already open. Resize now. diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.js index 0f435ab..524616f 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.js @@ -71,16 +71,16 @@ showClear(); } }); - $(options.allToggle).show().click(function() { + $(options.allToggle).show().on('click', function() { checker($(this).prop("checked")); updateCounter(); }); - $("a", options.acrossQuestions).click(function(event) { + $("a", options.acrossQuestions).on('click', function(event) { event.preventDefault(); $(options.acrossInput).val(1); showClear(); }); - $("a", options.acrossClears).click(function(event) { + $("a", options.acrossClears).on('click', function(event) { event.preventDefault(); $(options.allToggle).prop("checked", false); clearAcross(); @@ -88,7 +88,7 @@ updateCounter(); }); lastChecked = null; - $(actionCheckboxes).click(function(event) { + $(actionCheckboxes).on('click', function(event) { if (!event) { event = window.event; } var target = event.target ? event.target : event.srcElement; if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) { @@ -112,12 +112,12 @@ $('form#changelist-form table#result_list tr').on('change', 'td:gt(0) :input', function() { list_editable_changed = true; }); - $('form#changelist-form button[name="index"]').click(function(event) { + $('form#changelist-form button[name="index"]').on('click', function(event) { if (list_editable_changed) { return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); } }); - $('form#changelist-form input[name="_save"]').click(function(event) { + $('form#changelist-form input[name="_save"]').on('click', function(event) { var action_changed = false; $('select option:selected', options.actionContainer).each(function() { if ($(this).val()) { diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.min.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.min.js index 1b771fb..31e83c1 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.min.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.min.js @@ -1,6 +1,7 @@ (function(a){var f;a.fn.actions=function(e){var b=a.extend({},a.fn.actions.defaults,e),g=a(this),k=!1,l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},n=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},p=function(){n(); -a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},q=function(c){c?l():n();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length,d=a(".action-counter").data("actionsIcnt");a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:d},!0));a(b.allToggle).prop("checked",function(){var a;c===g.length?(a=!0,l()):(a=!1,p());return a})};a(b.counterContainer).show(); -a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);h();1===a(b.acrossInput).val()&&m()});a(b.allToggle).show().click(function(){q(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);p();q(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&& -a.data(f)!==a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(g).each(function(){if(a.data(this)===a.data(f)||a.data(this)===a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").on("change","td:gt(0) :input",function(){k=!0});a('form#changelist-form button[name="index"]').click(function(a){if(k)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))}); -a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return k?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})}; -a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"};a(document).ready(function(){var e=a("tr input.action-select");0'+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").click(function(c){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", -[a(this).attr("id")]);return!1})})})(django.jQuery); +$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3"); +(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){0===a(b).find("div.errors").length&&a(b).addClass("collapsed").find("h2").first().append(' ('+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").on("click",function(c){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]): +a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",[a(this).attr("id")]);return!1})})})(django.jQuery); diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.js index c8eb997..5916e86 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.js @@ -58,7 +58,7 @@ addButton = $this.filter(":last").next().find("a"); } } - addButton.click(function(e) { + addButton.on('click', function(e) { e.preventDefault(); var template = $("#" + options.prefix + "-empty"); var row = template.clone(true); @@ -91,7 +91,7 @@ addButton.parent().hide(); } // The delete button of each row triggers a bunch of other things - row.find("a." + options.deleteCssClass).click(function(e1) { + row.find("a." + options.deleteCssClass).on('click', function(e1) { e1.preventDefault(); // Remove the parent form containing this button: row.remove(); @@ -145,10 +145,10 @@ // Tabular inlines --------------------------------------------------------- - $.fn.tabularFormset = function(options) { + $.fn.tabularFormset = function(selector, options) { var $rows = $(this); var alternatingRows = function(row) { - $($rows.selector).not(".add-row").removeClass("row1 row2") + $(selector).not(".add-row").removeClass("row1 row2") .filter(":even").addClass("row1").end() .filter(":odd").addClass("row2"); }; @@ -212,10 +212,10 @@ }; // Stacked inlines --------------------------------------------------------- - $.fn.stackedFormset = function(options) { + $.fn.stackedFormset = function(selector, options) { var $rows = $(this); var updateInlineLabel = function(row) { - $($rows.selector).find(".inline_label").each(function(i) { + $(selector).find(".inline_label").each(function(i) { var count = i + 1; $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); }); @@ -281,13 +281,16 @@ $(document).ready(function() { $(".js-inline-admin-formset").each(function() { var data = $(this).data(), - inlineOptions = data.inlineFormset; + inlineOptions = data.inlineFormset, + selector; switch(data.inlineType) { case "stacked": - $(inlineOptions.name + "-group .inline-related").stackedFormset(inlineOptions.options); + selector = inlineOptions.name + "-group .inline-related"; + $(selector).stackedFormset(selector, inlineOptions.options); break; case "tabular": - $(inlineOptions.name + "-group .tabular.inline-related tbody:first > tr").tabularFormset(inlineOptions.options); + selector = inlineOptions.name + "-group .tabular.inline-related tbody:first > tr"; + $(selector).tabularFormset(selector, inlineOptions.options); break; } }); diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.min.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.min.js index 3f50ab9..65af8eb 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.min.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.min.js @@ -1,13 +1,13 @@ -var $jscomp={scope:{},findInternal:function(b,c,a){b instanceof String&&(b=String(b));for(var d=b.length,e=0;e'+a.addText+""),k=c.find("tr:last a")):(d.filter(":last").after('"),k=d.filter(":last").next().find("a")));k.click(function(c){c.preventDefault();c=b("#"+a.prefix+"-empty"); -var d=c.clone(!0);d.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+l);d.is("tr")?d.children(":last").append('"):d.is("ul")||d.is("ol")?d.append('
  • '+a.deleteText+"
  • "):d.children(":first").append(''+a.deleteText+"");d.find("*").each(function(){e(this,a.prefix,f.val())});d.insertBefore(b(c)); -b(f).val(parseInt(f.val(),10)+1);l+=1;""!==h.val()&&0>=h.val()-f.val()&&k.parent().hide();d.find("a."+a.deleteCssClass).click(function(c){c.preventDefault();d.remove();--l;a.removed&&a.removed(d);b(document).trigger("formset:removed",[d,a.prefix]);c=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(c.length);(""===h.val()||0 tr").tabularFormset(a.options)}})})})(django.jQuery); +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(b,d,a){b instanceof String&&(b=String(b));for(var c=b.length,f=0;f'+a.addText+""),l=d.find("tr:last a")):(c.filter(":last").after('"),l=c.filter(":last").next().find("a")));l.on("click",function(d){d.preventDefault();d=b("#"+a.prefix+"-empty"); +var c=d.clone(!0);c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+h);c.is("tr")?c.children(":last").append('"):c.is("ul")||c.is("ol")?c.append('
  • '+a.deleteText+"
  • "):c.children(":first").append(''+a.deleteText+"");c.find("*").each(function(){f(this,a.prefix,g.val())});c.insertBefore(b(d)); +b(g).val(parseInt(g.val(),10)+1);h+=1;""!==e.val()&&0>=e.val()-g.val()&&l.parent().hide();c.find("a."+a.deleteCssClass).on("click",function(d){d.preventDefault();c.remove();--h;a.removed&&a.removed(c);b(document).trigger("formset:removed",[c,a.prefix]);d=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(d.length);(""===e.val()||0 tr",b(d).tabularFormset(d,a.options)}})})})(django.jQuery); diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.js index 5d4b0e8..bef45a3 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.js @@ -30,12 +30,12 @@ }; prepopulatedField.data('_changed', false); - prepopulatedField.change(function() { + prepopulatedField.on('change', function() { prepopulatedField.data('_changed', true); }); if (!prepopulatedField.val()) { - $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); + $(dependencies.join(',')).on('keyup change focus', populate); } }); }; diff --git a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js index 75f3c17..43c1b79 100644 --- a/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js +++ b/thesisenv/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js @@ -1 +1 @@ -(function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0 elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + noModule: true + }; + + function DOMEval( code, doc, node ) { + doc = doc || document; + + var i, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + if ( node[ i ] ) { + script[ i ] = node[ i ]; + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + var - version = "2.2.3", + version = "3.3.1", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -75,18 +139,9 @@ var return new jQuery.fn.init( selector, context ); }, - // Support: Android<4.1 + // Support: Android <=4.0 only // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; jQuery.fn = jQuery.prototype = { @@ -95,9 +150,6 @@ jQuery.fn = jQuery.prototype = { constructor: jQuery, - // Start with an empty selector - selector: "", - // The default length of a jQuery object is 0 length: 0, @@ -108,13 +160,14 @@ jQuery.fn = jQuery.prototype = { // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { - return num != null ? - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } - // Return all the elements in a clean array - slice.call( this ); + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; }, // Take an array of elements and push it onto the stack @@ -126,7 +179,6 @@ jQuery.fn = jQuery.prototype = { // Add the old object onto the stack (as a reference) ret.prevObject = this; - ret.context = this.context; // Return the newly-formed element set return ret; @@ -189,7 +241,7 @@ jQuery.extend = jQuery.fn.extend = function() { } // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + if ( typeof target !== "object" && !isFunction( target ) ) { target = {}; } @@ -216,11 +268,11 @@ jQuery.extend = jQuery.fn.extend = function() { // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + ( copyIsArray = Array.isArray( copy ) ) ) ) { if ( copyIsArray ) { copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; + clone = src && Array.isArray( src ) ? src : []; } else { clone = src && jQuery.isPlainObject( src ) ? src : {}; @@ -255,105 +307,42 @@ jQuery.extend( { noop: function() {}, - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - isPlainObject: function( obj ) { - var key; + var proto, Ctor; - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { return false; } - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; } - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; }, isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 var name; + for ( name in obj ) { return false; } return true; }, - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - // Evaluates a script in a global context globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + DOMEval( code ); }, each: function( obj, callback ) { @@ -377,7 +366,7 @@ jQuery.extend( { return obj; }, - // Support: Android<4.1 + // Support: Android <=4.0 only trim: function( text ) { return text == null ? "" : @@ -406,6 +395,8 @@ jQuery.extend( { return arr == null ? -1 : indexOf.call( arr, elem, i ); }, + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit merge: function( first, second ) { var len = +second.length, j = 0, @@ -474,51 +465,14 @@ jQuery.extend( { // A global GUID counter for objects guid: 1, - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support } ); -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; } -/* jshint ignore: end */ // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), @@ -528,14 +482,14 @@ function( i, name ) { function isArrayLike( obj ) { - // Support: iOS 8.2 (not reproducible in simulator) + // Support: real iOS 8.2 only (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); + type = toType( obj ); - if ( type === "function" || jQuery.isWindow( obj ) ) { + if ( isFunction( obj ) || isWindow( obj ) ) { return false; } @@ -544,14 +498,14 @@ function isArrayLike( obj ) { } var Sizzle = /*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * - * Date: 2015-10-17 + * Date: 2016-08-08 */ (function( window ) { @@ -592,9 +546,6 @@ var i, return 0; }, - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - // Instance methods hasOwn = ({}).hasOwnProperty, arr = [], @@ -603,7 +554,7 @@ var i, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 + // https://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; @@ -623,7 +574,7 @@ var i, whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + @@ -680,9 +631,9 @@ var i, rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, - rescape = /'|\\/g, - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; @@ -698,13 +649,39 @@ var i, String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function() { setDocument(); - }; + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); // Optimize for push.apply( _, NodeList ) try { @@ -736,7 +713,7 @@ try { } function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, + var m, i, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document @@ -829,7 +806,7 @@ function Sizzle( selector, context, results, seed ) { // Capture the context ID, setting it first if necessary if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); + nid = nid.replace( rcssescape, fcssescape ); } else { context.setAttribute( "id", (nid = expando) ); } @@ -837,9 +814,8 @@ function Sizzle( selector, context, results, seed ) { // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); + groups[i] = "#" + nid + " " + toSelector( groups[i] ); } newSelector = groups.join( "," ); @@ -900,22 +876,22 @@ function markFunction( fn ) { /** * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result + * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { - var div = document.createElement("div"); + var el = document.createElement("fieldset"); try { - return !!fn( div ); + return !!fn( el ); } catch (e) { return false; } finally { // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); + if ( el.parentNode ) { + el.parentNode.removeChild( el ); } // release memory in IE - div = null; + el = null; } } @@ -942,8 +918,7 @@ function addHandle( attrs, handler ) { function siblingCheck( a, b ) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); + a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes if ( diff ) { @@ -984,6 +959,62 @@ function createButtonPseudo( type ) { }; } +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + /** * Returns a function to use in pseudos for positionals * @param {Function} fn @@ -1036,7 +1067,7 @@ isXML = Sizzle.isXML = function( elem ) { * @returns {Object} Returns the current document */ setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, + var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected @@ -1051,14 +1082,16 @@ setDocument = Sizzle.setDocument = function( node ) { // Support: IE 9-11, Edge // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); } } @@ -1068,18 +1101,18 @@ setDocument = Sizzle.setDocument = function( node ) { // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); }); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; }); // Support: IE<9 @@ -1087,32 +1120,28 @@ setDocument = Sizzle.setDocument = function( node ) { // Support: IE<10 // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, + // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; }); - // ID find and filter + // ID filter and find if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute("id") === attrId; }; }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { @@ -1121,6 +1150,36 @@ setDocument = Sizzle.setDocument = function( node ) { return node && node.value === attrId; }; }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; } // Tag @@ -1174,77 +1233,87 @@ setDocument = Sizzle.setDocument = function( node ) { // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 + // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { // Build QSA regex // Regex strategy adopted from Diego Perini - assert(function( div ) { + assert(function( el ) { // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + ""; // Support: IE8, Opera 11-12.16 // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { + if ( !el.querySelectorAll("[selected]").length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push("~="); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { + if ( !el.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push(".#.+[+~]"); } }); - assert(function( div ) { + assert(function( el ) { + el.innerHTML = "" + + ""; + // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment var input = document.createElement("input"); input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); + el.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { + if ( el.querySelectorAll("[name=d]").length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); + el.querySelectorAll("*,:x"); rbuggyQSA.push(",.*:"); }); } @@ -1255,14 +1324,14 @@ setDocument = Sizzle.setDocument = function( node ) { docElem.oMatchesSelector || docElem.msMatchesSelector) )) ) { - assert(function( div ) { + assert(function( el ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); + support.disconnectedMatch = matches.call( el, "*" ); // This should fail with an exception // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); + matches.call( el, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); }); } @@ -1464,6 +1533,10 @@ Sizzle.attr = function( elem, name ) { null; }; +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; @@ -1931,13 +2004,8 @@ Expr = Sizzle.selectors = { }, // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements @@ -2139,7 +2207,9 @@ function toSelector( tokens ) { function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", doneName = done++; return combinator.first ? @@ -2150,6 +2220,7 @@ function addCombinator( matcher, combinator, base ) { return matcher( elem, context, xml ); } } + return false; } : // Check against all ancestor/preceding elements @@ -2175,14 +2246,16 @@ function addCombinator( matcher, combinator, base ) { // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - if ( (oldCache = uniqueCache[ dir ]) && + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return (newCache[ 2 ] = oldCache[ 2 ]); } else { // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; + uniqueCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { @@ -2192,6 +2265,7 @@ function addCombinator( matcher, combinator, base ) { } } } + return false; }; } @@ -2554,8 +2628,7 @@ select = Sizzle.select = function( selector, context, results, seed ) { // Reduce context if the leading compound selector is an ID tokens = match[0] = match[0].slice( 0 ); if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; if ( !context ) { @@ -2625,17 +2698,17 @@ setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { +support.sortDetached = assert(function( el ) { // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; }); // Support: IE<8 // Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; }) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { @@ -2646,10 +2719,10 @@ if ( !assert(function( div ) { // Support: IE<9 // Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; }) ) { addHandle( "value", function( elem, name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { @@ -2660,8 +2733,8 @@ if ( !support.attributes || !assert(function( div ) { // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; }) ) { addHandle( booleans, function( elem, name, isXML ) { var val; @@ -2682,11 +2755,15 @@ return Sizzle; jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; + +// Deprecated jQuery.expr[ ":" ] = jQuery.expr.pseudos; jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + @@ -2721,40 +2798,41 @@ var siblings = function( n, elem ) { var rneedsContext = jQuery.expr.match.needsContext; -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + -var risSimple = /^.[^:#\[\.,]*$/; // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { + if ( isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; } ); - } + // Single element if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; } ); - } - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); } - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); } jQuery.filter = function( expr, elems, not ) { @@ -2764,18 +2842,19 @@ jQuery.filter = function( expr, elems, not ) { expr = ":not(" + expr + ")"; } - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); }; jQuery.fn.extend( { find: function( selector ) { - var i, + var i, ret, len = this.length, - ret = [], self = this; if ( typeof selector !== "string" ) { @@ -2788,14 +2867,13 @@ jQuery.fn.extend( { } ) ); } + ret = this.pushStack( [] ); + for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; + return len > 1 ? jQuery.uniqueSort( ret ) : ret; }, filter: function( selector ) { return this.pushStack( winnow( this, selector || [], false ) ); @@ -2827,7 +2905,8 @@ var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function( selector, context, root ) { var match, elem; @@ -2874,7 +2953,7 @@ var rootjQuery, for ( match in context ) { // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { + if ( isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes @@ -2890,17 +2969,12 @@ var rootjQuery, } else { elem = document.getElementById( match[ 2 ] ); - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { + if ( elem ) { // Inject the element directly into the jQuery object - this.length = 1; this[ 0 ] = elem; + this.length = 1; } - - this.context = document; - this.selector = selector; return this; } @@ -2916,13 +2990,13 @@ var rootjQuery, // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; + this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { + } else if ( isFunction( selector ) ) { return root.ready !== undefined ? root.ready( selector ) : @@ -2930,11 +3004,6 @@ var rootjQuery, selector( jQuery ); } - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - return jQuery.makeArray( selector, this ); }; @@ -2975,23 +3044,24 @@ jQuery.fn.extend( { i = 0, l = this.length, matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; + targets = typeof selectors !== "string" && jQuery( selectors ); - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { - matched.push( cur ); - break; + matched.push( cur ); + break; + } } } } @@ -3076,7 +3146,18 @@ jQuery.each( { return siblings( elem.firstChild ); }, contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { @@ -3106,14 +3187,14 @@ jQuery.each( { return this.pushStack( matched ); }; } ); -var rnotwhite = ( /\S+/g ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); // Convert String-formatted options into Object-formatted ones function createOptions( options ) { var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { object[ flag ] = true; } ); return object; @@ -3174,7 +3255,7 @@ jQuery.Callbacks = function( options ) { fire = function() { // Enforce single-firing - locked = options.once; + locked = locked || options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes @@ -3230,11 +3311,11 @@ jQuery.Callbacks = function( options ) { ( function add( args ) { jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { + if ( isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + } else if ( arg && arg.length && toType( arg ) !== "string" ) { // Inspect recursively add( arg ); @@ -3298,7 +3379,7 @@ jQuery.Callbacks = function( options ) { // Abort any pending executions lock: function() { locked = queue = []; - if ( !memory ) { + if ( !memory && !firing ) { list = memory = ""; } return this; @@ -3336,15 +3417,59 @@ jQuery.Callbacks = function( options ) { }; +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + jQuery.extend( { Deferred: function( func ) { var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] ], state = "pending", promise = { @@ -3355,23 +3480,33 @@ jQuery.extend( { deferred.done( arguments ).fail( arguments ); return this; }, - then: function( /* fnDone, fnFail, fnProgress */ ) { + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; + return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { + if ( returned && isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) .fail( newDefer.reject ); } else { newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, + this, fn ? [ returned ] : arguments ); } @@ -3380,6 +3515,170 @@ jQuery.extend( { fns = null; } ).promise(); }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object @@ -3389,33 +3688,58 @@ jQuery.extend( { }, deferred = {}; - // Keep pipe for back-compat - promise.pipe = promise.then; - // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], - stateString = tuple[ 3 ]; + stateString = tuple[ 5 ]; - // promise[ done | fail | progress ] = list.add + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { - list.add( function() { + list.add( + function() { - // state = [ resolved | rejected ] - state = stateString; + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); } - // deferred[ resolve | reject | notify ] + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); return this; }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith deferred[ tuple[ 0 ] + "With" ] = list.fireWith; } ); @@ -3432,68 +3756,95 @@ jQuery.extend( { }, // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), resolveValues = slice.call( arguments ), - length = resolveValues.length, - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + // the master Deferred + master = jQuery.Deferred(), - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { + // subordinate callback factory + updateFunc = function( i ) { return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); } }; - }, + }; - progressValues, progressContexts, resolveContexts; + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); } } - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); } - return deferred.promise(); + return master.promise(); } } ); +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + // The deferred used on DOM ready -var readyList; +var readyList = jQuery.Deferred(); jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); return this; }; @@ -3507,15 +3858,6 @@ jQuery.extend( { // the ready event fires. See #6781 readyWait: 1, - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - // Handle when the DOM is ready ready: function( wait ) { @@ -3534,53 +3876,36 @@ jQuery.extend( { // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } } } ); -/** - * The ready event handler and self cleanup method - */ +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method function completed() { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); jQuery.ready(); } -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - readyList = jQuery.Deferred(); + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { +} else { - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} @@ -3593,7 +3918,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { bulk = key == null; // Sets many values - if ( jQuery.type( key ) === "object" ) { + if ( toType( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); @@ -3603,7 +3928,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { } else if ( value !== undefined ) { chainable = true; - if ( !jQuery.isFunction( value ) ) { + if ( !isFunction( value ) ) { raw = true; } @@ -3634,14 +3959,34 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { } } - return chainable ? - elems : + if ( chainable ) { + return elems; + } - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; }; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} var acceptData = function( owner ) { // Accepts only: @@ -3650,7 +3995,6 @@ var acceptData = function( owner ) { // - Node.DOCUMENT_NODE // - Object // - Any - /* jshint -W018 */ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; @@ -3665,35 +4009,8 @@ Data.uid = 1; Data.prototype = { - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, cache: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - // Check if the owner object already has a cache var value = owner[ this.expando ]; @@ -3730,15 +4047,16 @@ Data.prototype = { cache = this.cache( owner ); // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) if ( typeof data === "string" ) { - cache[ data ] = value; + cache[ camelCase( data ) ] = value; // Handle: [ owner, { properties } ] args } else { // Copy the properties one-by-one to the cache object for ( prop in data ) { - cache[ prop ] = data[ prop ]; + cache[ camelCase( prop ) ] = data[ prop ]; } } return cache; @@ -3746,10 +4064,11 @@ Data.prototype = { get: function( owner, key ) { return key === undefined ? this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; }, access: function( owner, key, value ) { - var stored; // In cases where either: // @@ -3765,10 +4084,7 @@ Data.prototype = { if ( key === undefined || ( ( key && typeof key === "string" ) && value === undefined ) ) { - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); + return this.get( owner, key ); } // When the key is not a string, or both a key and value @@ -3784,58 +4100,45 @@ Data.prototype = { return value !== undefined ? value : key; }, remove: function( owner, key ) { - var i, name, camel, + var i, cache = owner[ this.expando ]; if ( cache === undefined ) { return; } - if ( key === undefined ) { - this.register( owner ); - - } else { + if ( key !== undefined ) { // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { + if ( Array.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); } else { - camel = jQuery.camelCase( key ); + key = camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); } - i = name.length; + i = key.length; while ( i-- ) { - delete cache[ name[ i ] ]; + delete cache[ key[ i ] ]; } } // Remove the expando if there's no more data if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - // Support: Chrome <= 35-45+ + // Support: Chrome <=35 - 45 // Webkit & Blink performance suffers when deleting properties // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) if ( owner.nodeType ) { owner[ this.expando ] = undefined; } else { @@ -3867,6 +4170,31 @@ var dataUser = new Data(); var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + function dataAttr( elem, key, data ) { var name; @@ -3878,14 +4206,7 @@ function dataAttr( elem, key, data ) { if ( typeof data === "string" ) { try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; + data = getData( data ); } catch ( e ) {} // Make sure we set the data so it isn't changed later @@ -3936,12 +4257,12 @@ jQuery.fn.extend( { i = attrs.length; while ( i-- ) { - // Support: IE11+ + // Support: IE 11 only // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); + name = camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } @@ -3961,7 +4282,7 @@ jQuery.fn.extend( { } return access( this, function( value ) { - var data, camelKey; + var data; // The calling jQuery object (element matches) is not empty // (and therefore has an element appears at this[ 0 ]) and the @@ -3971,29 +4292,15 @@ jQuery.fn.extend( { if ( elem && value === undefined ) { // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); if ( data !== undefined ) { return data; } // Attempt to "discover" the data in // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); + data = dataAttr( elem, key ); if ( data !== undefined ) { return data; } @@ -4003,24 +4310,10 @@ jQuery.fn.extend( { } // Set the data... - camelKey = jQuery.camelCase( key ); this.each( function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } + // We always store the camelCased key + dataUser.set( this, key, value ); } ); }, null, value, arguments.length > 1, null, true ); }, @@ -4043,7 +4336,7 @@ jQuery.extend( { // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { + if ( !queue || Array.isArray( data ) ) { queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); @@ -4173,24 +4466,58 @@ var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; -var isHidden = function( elem, el ) { +var isHiddenWithinTree = function( elem, el ) { - // isHidden might be called from jQuery#filter function; + // isHiddenWithinTree might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; }; +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, + var adjusted, scale, maxIterations = 20, currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), @@ -4200,30 +4527,33 @@ function adjustCSS( elem, prop, valueParts, tween ) { if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; - // Make sure we update the tween properties later on - valueParts = valueParts || []; - // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; - do { + while ( maxIterations-- ) { - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; } if ( valueParts ) { @@ -4241,18 +4571,114 @@ function adjustCSS( elem, prop, valueParts, tween ) { } return adjusted; } + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); var rcheckableType = ( /^(?:checkbox|radio)$/i ); -var rtagName = ( /<([\w:-]+)/ ); +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); // We have to close these tags to support XHTML (#13200) var wrapMap = { - // Support: IE9 + // Support: IE <=9 only option: [ 1, "" ], // XHTML parsers do not magically insert elements in the @@ -4266,7 +4692,7 @@ var wrapMap = { _default: [ 0, "", "" ] }; -// Support: IE9 +// Support: IE <=9 only wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; @@ -4275,17 +4701,25 @@ wrapMap.th = wrapMap.td; function getAll( context, tag ) { - // Support: IE9-11+ + // Support: IE <=9 - 11 only // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; + var ret; - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; } @@ -4319,9 +4753,9 @@ function buildFragment( elems, context, scripts, selection, ignored ) { if ( elem || elem === 0 ) { // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { + if ( toType( elem ) === "object" ) { - // Support: Android<4.1, PhantomJS<2 + // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); @@ -4344,7 +4778,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { tmp = tmp.lastChild; } - // Support: Android<4.1, PhantomJS<2 + // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, tmp.childNodes ); @@ -4401,7 +4835,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { div = fragment.appendChild( document.createElement( "div" ) ), input = document.createElement( "input" ); - // Support: Android 4.0-4.3, Safari<=5.1 + // Support: Android 4.0 - 4.3 only // Check state lost if the name is set (#11217) // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (#14901) @@ -4411,15 +4845,17 @@ function buildFragment( elems, context, scripts, selection, ignored ) { div.appendChild( input ); - // Support: Safari<=5.1, Android<4.2 + // Support: Android <=4.1 only // Older WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - // Support: IE<=11+ + // Support: IE <=11 only // Make sure textarea (and checkbox) defaultValue is properly cloned div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; } )(); +var documentElement = document.documentElement; + var @@ -4435,7 +4871,7 @@ function returnFalse() { return false; } -// Support: IE9 +// Support: IE <=9 only // See #13393 for more info function safeActiveElement() { try { @@ -4531,6 +4967,12 @@ jQuery.event = { selector = handleObjIn.selector; } + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; @@ -4551,7 +4993,7 @@ jQuery.event = { } // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; @@ -4633,7 +5075,7 @@ jQuery.event = { } // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; @@ -4694,19 +5136,23 @@ jQuery.event = { } }, - dispatch: function( event ) { + dispatch: function( nativeEvent ) { // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); + var event = jQuery.event.fix( nativeEvent ); - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired @@ -4755,146 +5201,95 @@ jQuery.event = { }, handlers: function( event, handlers ) { - var i, matches, sel, handleObj, + var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; - // Support (at least): Chrome, IE9 // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { for ( ; cur !== this; cur = cur.parentNode || this ) { // Don't check non-elements (#13208) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } - if ( matches[ sel ] ) { - matches.push( handleObj ); + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); } } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); } } } } // Add the remaining (directly-bound) handlers + cur = this; if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, - fixHooks: {}, + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); } - - return event; - } + } ); }, - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); }, special: { @@ -4927,7 +5322,7 @@ jQuery.event = { // For checkbox, fire native event so checked state will be right trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { this.click(); return false; } @@ -4935,7 +5330,7 @@ jQuery.event = { // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); + return nodeName( event.target, "a" ); } }, @@ -4977,11 +5372,21 @@ jQuery.Event = function( src, props ) { this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && - // Support: Android<4.0 + // Support: Android <=2.3 only src.returnValue === false ? returnTrue : returnFalse; + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + // Event type } else { this.type = src; @@ -4993,26 +5398,27 @@ jQuery.Event = function( src, props ) { } // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); + this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, + isSimulated: false, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; - if ( e ) { + if ( e && !this.isSimulated ) { e.preventDefault(); } }, @@ -5021,7 +5427,7 @@ jQuery.Event.prototype = { this.isPropagationStopped = returnTrue; - if ( e ) { + if ( e && !this.isSimulated ) { e.stopPropagation(); } }, @@ -5030,7 +5436,7 @@ jQuery.Event.prototype = { this.isImmediatePropagationStopped = returnTrue; - if ( e ) { + if ( e && !this.isSimulated ) { e.stopImmediatePropagation(); } @@ -5038,13 +5444,74 @@ jQuery.Event.prototype = { } }; +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", @@ -5075,6 +5542,7 @@ jQuery.each( { } ); jQuery.fn.extend( { + on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, @@ -5121,26 +5589,32 @@ jQuery.fn.extend( { var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - // Support: IE 10-11, Edge 10240+ + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g; -// Manipulating tables requires a tbody +// Prefer a tbody over its parent table for containing new rows function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation @@ -5149,10 +5623,8 @@ function disableScript( elem ) { return elem; } function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); } else { elem.removeAttribute( "type" ); } @@ -5218,15 +5690,15 @@ function domManip( collection, args, callback, ignored ) { l = collection.length, iNoClone = l - 1, value = args[ 0 ], - isFunction = jQuery.isFunction( value ); + valueIsFunction = isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || + if ( valueIsFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); - if ( isFunction ) { + if ( valueIsFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); @@ -5258,7 +5730,7 @@ function domManip( collection, args, callback, ignored ) { // Keep references to cloned scripts for later restoration if ( hasScripts ) { - // Support: Android<4.1, PhantomJS<2 + // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( scripts, getAll( node, "script" ) ); } @@ -5280,14 +5752,14 @@ function domManip( collection, args, callback, ignored ) { !dataPriv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - if ( node.src ) { + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl ) { jQuery._evalUrl( node.src ); } } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); } } } @@ -5333,7 +5805,7 @@ jQuery.extend( { if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); @@ -5386,13 +5858,13 @@ jQuery.extend( { } } - // Support: Chrome <= 35-45+ + // Support: Chrome <=35 - 45+ // Assign undefined instead of using delete, see Data#remove elem[ dataPriv.expando ] = undefined; } if ( elem[ dataUser.expando ] ) { - // Support: Chrome <= 35-45+ + // Support: Chrome <=35 - 45+ // Assign undefined instead of using delete, see Data#remove elem[ dataUser.expando ] = undefined; } @@ -5402,10 +5874,6 @@ jQuery.extend( { } ); jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - detach: function( selector ) { return remove( this, selector, true ); }, @@ -5563,86 +6031,19 @@ jQuery.each( { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; } ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "