">
+
3
+from django.db import migrations, models
4
+import django.db.models.deletion
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('backend', '0030_alter_points_dest'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='points',
16
+            name='ticket',
17
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.ambulanceticket'),
18
+        ),
19
+    ]

+ 17 - 0
app/backend/migrations/0032_remove_points_ticket.py

@@ -0,0 +1,17 @@
1
+# Generated by Django 3.2.5 on 2021-07-23 09:51
2
+
3
+from django.db import migrations
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0031_points_ticket'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.RemoveField(
14
+            model_name='points',
15
+            name='ticket',
16
+        ),
17
+    ]

+ 18 - 0
app/backend/migrations/0033_patient_address_text.py

@@ -0,0 +1,18 @@
1
+# Generated by Django 3.2.5 on 2021-07-25 04:21
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0032_remove_points_ticket'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='address_text',
16
+            field=models.TextField(blank=True, null=True),
17
+        ),
18
+    ]

+ 23 - 0
app/backend/migrations/0034_auto_20210725_1125.py

@@ -0,0 +1,23 @@
1
+# Generated by Django 3.2.5 on 2021-07-25 04:25
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0033_patient_address_text'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='birth_date',
16
+            field=models.DateField(null=True),
17
+        ),
18
+        migrations.AlterField(
19
+            model_name='patient',
20
+            name='age',
21
+            field=models.IntegerField(blank=True, null=True),
22
+        ),
23
+    ]

+ 18 - 0
app/backend/migrations/0035_patient_patient_status.py

@@ -0,0 +1,18 @@
1
+# Generated by Django 3.2.5 on 2021-07-25 05:01
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0034_auto_20210725_1125'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='patient_status',
16
+            field=models.CharField(choices=[('request', 'Request'), ('process', 'Process'), ('complete', 'Complete')], max_length=30, null=True),
17
+        ),
18
+    ]

+ 23 - 0
app/backend/migrations/0036_auto_20210725_1207.py

@@ -0,0 +1,23 @@
1
+# Generated by Django 3.2.5 on 2021-07-25 05:07
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('backend', '0035_patient_patient_status'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='patient',
15
+            name='created_at',
16
+            field=models.DateTimeField(auto_now_add=True, null=True),
17
+        ),
18
+        migrations.AddField(
19
+            model_name='patient',
20
+            name='updated_at',
21
+            field=models.DateTimeField(auto_now=True),
22
+        ),
23
+    ]

BIN
app/backend/migrations/__pycache__/0030_alter_points_dest.cpython-39.pyc


BIN
app/backend/migrations/__pycache__/0031_points_ticket.cpython-39.pyc


BIN
app/backend/migrations/__pycache__/0032_remove_points_ticket.cpython-39.pyc


BIN
app/backend/migrations/__pycache__/0033_patient_address_text.cpython-39.pyc


BIN
app/backend/migrations/__pycache__/0034_auto_20210725_1125.cpython-39.pyc


BIN
app/backend/migrations/__pycache__/0035_patient_patient_status.cpython-39.pyc


BIN
app/backend/migrations/__pycache__/0036_auto_20210725_1207.cpython-39.pyc


+ 65 - 20
app/backend/models.py

@@ -8,11 +8,13 @@ from smart_selects.db_fields import (
8 8
     ChainedManyToManyField,
9 9
     GroupedForeignKey,
10 10
 )
11
+from django.db.models import Q
11 12
 import googlemaps
12 13
 from django.contrib.gis.geos import fromstr
13 14
 
14 15
 from django.conf import settings
15 16
 import csv
17
+import haversine as hs
16 18
 
17 19
 gmaps = googlemaps.Client(key=settings.GOOGLE_MAPS_API_KEY)
18 20
 # Create your models here.
@@ -37,7 +39,6 @@ class Ambulance(models.Model):
37 39
         choices=(("working", "Working"), ("free", "Free"), ("ma", "MA")),
38 40
         null=True,
39 41
     )
40
-
41 42
     created_at = models.DateTimeField(auto_now_add=True, null=True)
42 43
     updated_at = models.DateTimeField(auto_now=True)
43 44
 
@@ -105,7 +106,8 @@ class AmbulanceTicket(models.Model):
105 106
 class Patient(models.Model):
106 107
     first_name = models.CharField(max_length=100)
107 108
     last_name = models.CharField(max_length=100)
108
-    age = models.IntegerField()
109
+    birth_date = models.DateField(null=True)
110
+    age = models.IntegerField(null=True, blank=True)
109 111
     idcard = models.CharField(max_length=20, null=True, blank=False)
110 112
     prefix = models.CharField(
111 113
         max_length=30,
@@ -127,13 +129,50 @@ class Patient(models.Model):
127 129
         null=True,
128 130
     )
129 131
     comment  = models.TextField(blank=True, null=True)
132
+    address_text  = models.TextField(blank=True, null=True)
130 133
     #test
134
+    patient_status = models.CharField(
135
+        max_length=30,
136
+        choices=(("request", "Request"), ("process", "Process"), ("complete", "Complete")),
137
+        null=True,
138
+    )
139
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
140
+    updated_at = models.DateTimeField(auto_now=True)
141
+
131 142
     def __str__(self):
132 143
         #self.nearby()
133 144
         return f"{self.first_name} {self.last_name}"
134 145
 
135 146
 
147
+
148
+    def nearby_from_db(self, dlimit):
149
+        bd = ""
150
+        temps = []
151
+        for h0 in  Hospital.objects.all():
152
+            p2 = (h0.geolocation.lat, h0.geolocation.lon)
153
+            p1 = (self.geolocation.lat, self.geolocation.lon)
154
+            d = round(hs.haversine(p1,p2), 2)
155
+            if d < dlimit:
156
+                #bd += f"<tr><td>{h0.title}</td><td>{d}km</td></tr>"
157
+                temps.append({'title': h0.title, 'd': d, 'id': h0.id, 'beds': h0.free_beds()})
158
+                #print(f"to {h0.title} => {hs.haversine(p1, p2)}km")
159
+
160
+        temps.sort(key= lambda s: s['d'], reverse=False)
161
+        for t in temps:
162
+            bd += f"<tr><td><a href='/admin/backend/hospital/{t['id']}/change/' target='_blank'>{t['title']}</a></td><td>{t['d']} km</td><td>{t['beds']}</td></tr>"
163
+
164
+        rt = f'''
165
+<br>
166
+        <table><thead><tr><th>Hospital</th><th>Distance</th><th>Free Beds</th></tr></thead>
167
+        <tbody>
168
+            {bd}
169
+        </tbody>
170
+        </table>
171
+        '''
172
+        return rt
173
+
136 174
     def nearby(self):
175
+        #self.nearby_from_db()
137 176
         r = gmaps.places_nearby(location=(self.geolocation.lat, self.geolocation.lon), type="hospital", radius=10000)
138 177
         bd = ""
139 178
         for r0 in r['results']:
@@ -199,9 +238,32 @@ class Place(models.Model):
199 238
 
200 239
     def __str__(self):
201 240
         return f"{self.address} ({self.geolocation})"
241
+
242
+
243
+
244
+
245
+class Hospital(models.Model):
246
+    title = models.CharField(max_length=200)
247
+    location = models.PointField(blank=True, null=True)
248
+    address_text = models.TextField(blank=True, null=True)
249
+    #address = models.CharField(max_length=100)
250
+    address = map_fields.AddressField(max_length=200)
251
+    geolocation = map_fields.GeoLocationField(max_length=100)
252
+
253
+    created_at = models.DateTimeField(auto_now_add=True, null=True)
254
+    updated_at = models.DateTimeField(auto_now=True)
255
+
256
+    def __str__(self):
257
+        return f"{self.title} {self.address_text}"
258
+
259
+    def free_beds(self):
260
+        return self.bed_set.filter(~Q(occupy=True)).count()
261
+
262
+
202 263
 class Points(models.Model):
203 264
     #src  = models.ForeignKey(Place, on_delete=models.SET_NULL, null=True, blank=False, related_name='src')
204
-    dest  = models.ForeignKey(Place, on_delete=models.SET_NULL, null=True, blank=False, related_name='dest')
265
+    #ticket = models.ForeignKey(AmbulanceTicket, on_delete=models.SET_NULL, null=True)
266
+    dest  = models.ForeignKey(Hospital, on_delete=models.SET_NULL, null=True, blank=False)
205 267
     address = map_fields.AddressField(max_length=200, null=True)
206 268
     geolocation = map_fields.GeoLocationField(max_length=100, null=True)
207 269
 
@@ -225,23 +287,6 @@ class Points(models.Model):
225 287
         print(dst)
226 288
         super(Points, self).save(*args, **kwargs)
227 289
 
228
-
229
-
230
-class Hospital(models.Model):
231
-    title = models.CharField(max_length=200)
232
-    location = models.PointField(blank=True, null=True)
233
-    address_text = models.TextField(blank=True, null=True)
234
-    #address = models.CharField(max_length=100)
235
-    address = map_fields.AddressField(max_length=200)
236
-    geolocation = map_fields.GeoLocationField(max_length=100)
237
-
238
-    created_at = models.DateTimeField(auto_now_add=True, null=True)
239
-    updated_at = models.DateTimeField(auto_now=True)
240
-
241
-    def __str__(self):
242
-        return f"{self.title} {self.address_text}"
243
-
244
-
245 290
 class Bed(models.Model):
246 291
     code = models.CharField(max_length=30)
247 292
     occupy = models.BooleanField(default=False)

+ 1 - 1
app/backend/templates/backend/index.html

@@ -4,5 +4,5 @@
4 4
 
5 5
 {% block content %}
6 6
 Hello world
7
-<a href="{% url "import_file" %}">Import</a>
7
+<a href="{% url "backend.import_file" %}">Import</a>
8 8
 {% endblock %}

+ 6 - 1
app/backend/urls.py

@@ -1,8 +1,13 @@
1 1
 from django.urls import path
2
-
2
+from django.conf.urls import url
3 3
 from . import views
4 4
 
5 5
 urlpatterns = [
6 6
     path('', views.index, name='index'),
7 7
     path('import_file', views.import_file, name='import_file'),
8
+     url(
9
+        r'^hospital-autocomplete/$',
10
+        views.HospitalAutocomplete.as_view(),
11
+        name='hospital-autocomplete',
12
+    ),
8 13
 ]

+ 17 - 0
app/backend/views.py

@@ -1,5 +1,7 @@
1 1
 from django.shortcuts import render
2
+from dal import autocomplete
2 3
 
4
+from .models import Hospital
3 5
 # Create your views here.
4 6
 from django.http import HttpResponse
5 7
 
@@ -9,3 +11,18 @@ def index(request):
9 11
 
10 12
 def import_file(request):
11 13
     return render(request, 'backend/import_file.html')
14
+
15
+
16
+
17
+class HospitalAutocomplete(autocomplete.Select2QuerySetView):
18
+    def get_queryset(self):
19
+        # Don't forget to filter out results depending on the visitor !
20
+        if not self.request.user.is_authenticated:
21
+            return Hospital.objects.none()
22
+
23
+        qs = Hospital.objects.all()
24
+
25
+        if self.q:
26
+            qs = qs.filter(title__contains=self.q)
27
+
28
+        return qs

+ 26 - 0
app/cert.pem

@@ -0,0 +1,26 @@
1
+-----BEGIN CERTIFICATE-----
2
+MIIEdTCCAt2gAwIBAgIQHZxX+6y4OViy/tCHkaIX+jANBgkqhkiG9w0BAQsFADCB
3
+kTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTMwMQYDVQQLDCpzaW1w
4
+bGljb2x0ZC5AbWFjaGluZS5sb2NhbCAoU2ltcGxpY28gTHRkLikxOjA4BgNVBAMM
5
+MW1rY2VydCBzaW1wbGljb2x0ZC5AbWFjaGluZS5sb2NhbCAoU2ltcGxpY28gTHRk
6
+LikwHhcNMjEwNzI0MTAzMjUzWhcNMjMxMDI0MTAzMjUzWjBdMScwJQYDVQQKEx5t
7
+a2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxMjAwBgNVBAsMKXJvb3RAbWFj
8
+aGluZS5sb2NhbCAoU3lzdGVtIEFkbWluaXN0cmF0b3IpMIIBIjANBgkqhkiG9w0B
9
+AQEFAAOCAQ8AMIIBCgKCAQEAzO3kDm8SonO2P/pSOQmFPYoj2+fz8nEd5ss+vL/e
10
+Rc5BaJsq1651glIdOyUX13B4E0viTF0aa6SP9jZLU6lPluJwW5UYCuVSW67wL0Ev
11
+C82TBpBz2hMGuC6DcpG0nJgzY04kuz0mJaqWtWD4AMq3BOwgBNy2PrB45cUGBBe3
12
+bvsCip9ykVW8vHEWKgHpdnZvUYnbbbea9jDR/nB0cDeKd5K45V/Lv2ECBAGa272C
13
+9a9uqXuzIcVFsdOb9ss6YNyiSs1AJeXTV16M5u6ZlVN95IU9AHqWxeTCVYyGZWZt
14
+g1XD7MB/M22/mDUjZg1fdK3v2n+RFxyo/FGoNE6ziACz6wIDAQABo3wwejAOBgNV
15
+HQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAUHmGB
16
+OP5O8TsFjAThvXx+jAsNHWQwMgYDVR0RBCswKYIJbG9jYWxob3N0hwQAAAAAhwR/
17
+AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBgQA/wteJRFk9
18
+0NqaOKrD1YPXvhq+rXns5yEWgnomi11d5LkHvwtM9A9HmkW0/LB8FPoiY17NUPqR
19
+xZi2RAQcHn9j1wDuBKEMb5Y/xCt5k+Szhyvgfxyqkt4ef4yJ46vIcSXTLjb/+LWm
20
+LW+YLl4vbtYnq4zYtcczVQrnDoPNZGjTGIGDs15PzHZoFt7fY7dypFr/McZnI11z
21
+RRd+z7cjMoxs9UCO7O/f/E8Rpv6pkNuAVzPrezy84fcyN9elbr1eJVNKjLXWf0CR
22
+Ry2PxLkK/x7tWcE2eLVY+kZC5HfHzkiXgulBazhXprLwIcFwePmkQQ2b8ktY/+io
23
+a5DUZ56gZV2BpLK0KiokAmRZh5GWBkMwrJu5YgALiqJAGGg+JBPC6SMOp9vlXPqw
24
+zldZGjtb8jcFpCC6xMvsWag+MF6pIQrOSV+AaPf5/008jbrfwDlBXtMcxWmNtBJv
25
+CAFZlQ+UNIb/QHEM22WQNGacCmyX+hLy/GwCJVk8wyNfPOz2wYKVeAk=
26
+-----END CERTIFICATE-----

BIN
app/client.ks


+ 0 - 0
app/front/__init__.py


BIN
app/front/__pycache__/__init__.cpython-39.pyc


BIN
app/front/__pycache__/admin.cpython-39.pyc


BIN
app/front/__pycache__/apps.cpython-39.pyc


BIN
app/front/__pycache__/models.cpython-39.pyc


BIN
app/front/__pycache__/urls.cpython-39.pyc


BIN
app/front/__pycache__/views.cpython-39.pyc


+ 3 - 0
app/front/admin.py

@@ -0,0 +1,3 @@
1
+from django.contrib import admin
2
+
3
+# Register your models here.

+ 6 - 0
app/front/apps.py

@@ -0,0 +1,6 @@
1
+from django.apps import AppConfig
2
+
3
+
4
+class FrontConfig(AppConfig):
5
+    default_auto_field = 'django.db.models.BigAutoField'
6
+    name = 'front'

+ 0 - 0
app/front/migrations/__init__.py


BIN
app/front/migrations/__pycache__/__init__.cpython-39.pyc


+ 3 - 0
app/front/models.py

@@ -0,0 +1,3 @@
1
+from django.db import models
2
+
3
+# Create your models here.

+ 35 - 0
app/front/templates/front/index.html

@@ -0,0 +1,35 @@
1
+{% extends "base.html" %}
2
+
3
+{% load static %}
4
+{% block content %}
5
+<br>
6
+<div class='row'>
7
+    <form method='post' enctype="multipart/form-data">
8
+         {% csrf_token %}
9
+    <div class='col-md-12'>
10
+        <input type='text' name='firstName' class='form-control' placeholder='ชื่อ' required/>
11
+        <br>
12
+        <input type='text' name='lastName' class='form-control' placeholder='นามสกุล' required/>
13
+        <br>
14
+        <input type='text' name='idCard' class='form-control' placeholder='หมายเลขบัตรประชาชน' required />
15
+        <br>
16
+        <input type='date' name='bd' class='form-control' placeholder='วันเกิด' required />
17
+        <br>
18
+        <textarea name='address' class='form-control' placeholder='ที่อยู่' required></textarea>  
19
+        <br>
20
+        <textarea name='comment' class='form-control' placeholder='ข้อความฝากถึงเจ้าหน้าที่'></textarea>  
21
+        <br>
22
+        <input type='tel' name='tel' class='form-control' placeholder='Tel.' required/>
23
+        <br>
24
+        <label>อัพโหลดภาพ</label>
25
+        <input type="file" name='photo' accept="image/*;capture=camera" class='form-control' required> </br>
26
+        <span class="glyphicon glyphicon-map-marker"></span>
27
+        <a class='btn btn-primary form-control' id="currentLocationBtn">
28
+        <i class="bi bi-geo-alt-fill"></i>
29
+            คลิกเพื่อแสดงตำแหน่ง</a><br><br>
30
+        <input type='text' class='form-control' name='geo' id='geoText' readonly/><br>
31
+        <input type='submit' value='ส่งข้อมูล' class='btn-success form-control'/><br><br>
32
+    </div>
33
+    </form>
34
+</div>
35
+{% endblock %}

+ 8 - 0
app/front/templates/front/success.html

@@ -0,0 +1,8 @@
1
+
2
+{% extends "base.html" %}
3
+
4
+{% block content %}
5
+<div class="alert alert-success" role="alert">
6
+<h1>จะติดต่อกลับไปโดยเร็วครับ</h1>
7
+</div>
8
+{% endblock %}

+ 3 - 0
app/front/tests.py

@@ -0,0 +1,3 @@
1
+from django.test import TestCase
2
+
3
+# Create your tests here.

+ 9 - 0
app/front/urls.py

@@ -0,0 +1,9 @@
1
+
2
+from django.urls import path
3
+from django.conf.urls import url
4
+from . import views
5
+
6
+urlpatterns = [
7
+    path('', views.index, name='index'),
8
+    path('success', views.success, name='success'),
9
+]

+ 25 - 0
app/front/views.py

@@ -0,0 +1,25 @@
1
+from django.shortcuts import render, redirect
2
+from backend.models import Patient
3
+
4
+# Create your views here.
5
+
6
+def index(request):
7
+    if request.method == "POST":
8
+        print(request.POST)
9
+        print(request.FILES)
10
+        p = Patient()
11
+        p.first_name = request.POST.get('firstName')
12
+        p.last_name = request.POST.get('lastName')
13
+        p.idcard = request.POST.get('idCard')
14
+        p.address = request.POST.get('address')
15
+        p.geolocation = request.POST.get('geo')
16
+        p.birth_date = request.POST.get('bd')
17
+        p.comment = request.POST.get('comment')
18
+        p.photo = request.FILES.get('photo')
19
+        p.patient_status = "request"
20
+        p.save()
21
+        return redirect('success')
22
+    return render(request, 'front/index.html')
23
+
24
+def success(request):
25
+    return render(request, 'front/success.html')

+ 28 - 0
app/key.pem

@@ -0,0 +1,28 @@
1
+-----BEGIN PRIVATE KEY-----
2
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDM7eQObxKic7Y/
3
++lI5CYU9iiPb5/PycR3myz68v95FzkFomyrXrnWCUh07JRfXcHgTS+JMXRprpI/2
4
+NktTqU+W4nBblRgK5VJbrvAvQS8LzZMGkHPaEwa4LoNykbScmDNjTiS7PSYlqpa1
5
+YPgAyrcE7CAE3LY+sHjlxQYEF7du+wKKn3KRVby8cRYqAel2dm9Ridttt5r2MNH+
6
+cHRwN4p3krjlX8u/YQIEAZrbvYL1r26pe7MhxUWx05v2yzpg3KJKzUAl5dNXXozm
7
+7pmVU33khT0AepbF5MJVjIZlZm2DVcPswH8zbb+YNSNmDV90re/af5EXHKj8Uag0
8
+TrOIALPrAgMBAAECggEBALGtmMwC9c8wMFYsPVoCrSl8OjcSV2pfNSPEGLMiUB+K
9
+AyAlWPID6xKBC6MaOB+s/g8M/jpjhuLJnaBF1u3EoKMb1XsyO9RGnC+t78Wo6Jd9
10
+N/q7CBeN44eRnJqbRlN3iyaQvDwzen2x+FVuq9hT6nc0G1bb3o9gBpKBTwQBZCOt
11
+o4djb1dkSx3qB917VC4+0yK1pknliANxxdVcq8ZHfcY3G7xkgV8crn5UB95HmFAp
12
+9sJ1XxpXHqoD+lgLakQKhgHOTqQdb0mbMOPkHA5Zw2YRV89FaYc2m+if3rWyaK4z
13
+yk9hSd8/LK71rmYO0YlVDGwWkhUkDAD3q/T20kpeFxECgYEA/Uf5PqKc3Z9k6bTp
14
+3JnfMNrXY4Nk1pE8apZF1Saho8mKsCX0Vm3x4DC8xZgwE5gvMusopHWp/EoCvMet
15
+5/EJpNXzjLZB35IdAiGCYQPLEQTQjmCtsQIRoknhZc9nKPw/iWlev68Yrrf16jkj
16
+9FrvyyFEWQ4wUgQftPC/7u5Ad58CgYEAzyELXIxtXpXdjch0X9L7IRULuQ4Rs7q3
17
+7+TvFYd5P0X2zBBJ7AHjamaru7C+ytnT7bpSudRv36k9KySsHtqGKl9uSJrGGJeW
18
+kqQ9wOorwu9PDVvdL2DxG31bK5b+BcQhqSPYJEVe3FpETJgtbFNIIf9LEVg73v91
19
+iNiNqbwSEDUCgYEAq7poCQrSVwWisz7BrZv6kzJeBY/qB/1TPGWFFZ9qyxV0Xjht
20
+sUg8TihdZY/pUO/HWLvOw6svxOodbwfoJrHsOwIBbu+IPGDiIDa+Iq8iuPhNu6tb
21
+OP/RGvsCwzfblxNotO9nmYnLr3L1Xoi9kwkxOsXkhIk1Q/ad1N3DFOofdbsCgYAq
22
+X2kymqu5INF9MtfTzpZ/Uw3d4qnuabE9S0k5z0gXkJmHb4Gf3VcHqk9RizvMxbkc
23
+NfS8fWARkk6oJ81qVmwB+RnXkooZ99De2OilMYKYU1qJshRSn/NTG1buWOpIhbIZ
24
+JvMNoH9idrjoLm2EbpkgE1jpCHLfEMWbpCl+4rGTTQKBgQCvOqqWpwS0fJFwbx1h
25
+F+jcLf9eQHD5B/kh91f4dvB3Uywi2vP5pkAPkRS2dd6z5ZKNuHCCUYizKDR6d20g
26
+EnGUuN96uyby4vT5Xar1/6IWcJl2VpjHAUjGAKw2PHRA4ti+RO7oo4TP9J/tF/Ec
27
+xoO0p1jYKttMAiKBlw10sNBZmg==
28
+-----END PRIVATE KEY-----

BIN
app/media/uploads/2021/07/25/411452.jpg


BIN
app/media/uploads/2021/07/25/411452_XyreIWY.jpg


BIN
app/media/uploads/2021/07/25/78392.jpg


BIN
app/media/uploads/2021/07/25/78392_KFXeZqU.jpg


BIN
app/media/uploads/2021/07/25/heartbeat.png


BIN
app/media/uploads/2021/07/25/heartbeat_wFHVZDY.png


BIN
app/mycert.cer


+ 3 - 0
app/requirements.txt

@@ -6,3 +6,6 @@ django-colorfield
6 6
 googlemaps
7 7
 django-json-widget
8 8
 django-import-export
9
+haversine
10
+django-autocomplete-light==3.5.1
11
+django-sslserver

BIN
app/shaqfindbed/__pycache__/settings.cpython-39.pyc


BIN
app/shaqfindbed/__pycache__/urls.cpython-39.pyc


+ 9 - 5
app/shaqfindbed/settings.py

@@ -33,19 +33,23 @@ ALLOWED_HOSTS = []
33 33
 # Application definition
34 34
 
35 35
 INSTALLED_APPS = [
36
+    "sslserver",
36 37
     'django.contrib.staticfiles',
38
+    'django.contrib.gis',
39
+    'smart_selects',
40
+    'colorfield',
41
+    'django_json_widget',
42
+    'dal',
43
+    'dal_select2',
44
+    'django_google_maps',
37 45
     'django.contrib.admin',
38 46
     'django.contrib.auth',
39 47
     'django.contrib.contenttypes',
40 48
     'django.contrib.sessions',
41 49
     'django.contrib.messages',
42 50
     'import_export',
43
-    'django_google_maps',
44
-    'django.contrib.gis',
45
-    'smart_selects',
46
-    'colorfield',
47
-    'django_json_widget',
48 51
     'backend.apps.BackendConfig',
52
+    'front.apps.FrontConfig',
49 53
 ]
50 54
 
51 55
 MIDDLEWARE = [

+ 1 - 0
app/shaqfindbed/urls.py

@@ -21,6 +21,7 @@ from django.conf.urls.static import static
21 21
 
22 22
 urlpatterns = [
23 23
     path('backend/', include('backend.urls')),
24
+    path('front/', include('front.urls')),
24 25
     path('admin/', admin.site.urls),
25 26
     url(r'^chaining/', include('smart_selects.urls')),
26 27
 ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

BIN
app/static/.DS_Store


+ 2 - 2
app/static/admin/css/forms.css

@@ -527,10 +527,10 @@ form .related-widget-wrapper ul {
527 527
 .form-row .field-get_map .readonly {
528 528
     margin:0px;
529 529
 }
530
-.field-get_map label, .field-nearby_places label {
530
+.field-get_map label, .field-nearby_places label, .field-nearby_from_db label{
531 531
     float:initial !important;
532 532
 }
533
-.field-get_map  .readonly, .field-nearby_places .readonly{
533
+.field-get_map  .readonly, .field-nearby_places .readonly, .field-nearby_from_db .readonly{
534 534
     margin-left:0px !important;
535 535
     overflow:auto;
536 536
 }

BIN
app/static/django_google_maps/.DS_Store


+ 11 - 0
app/static/django_google_maps/css/google-maps-admin.css

@@ -0,0 +1,11 @@
1
+@media (min-width: 848px) {
2
+    .map_canvas_wrapper {margin-left: 170px;}
3
+    .main.shifted .map_canvas_wrapper {margin-left: 0;}
4
+}
5
+@media (min-width: 1118px) {
6
+    .main.shifted .map_canvas_wrapper {margin-left: 170px;}
7
+}
8
+
9
+#id_address {width: 40em;}
10
+.map_canvas_wrapper {width: 100%;}
11
+#map_canvas {width: 100%; height: 40em;}

+ 180 - 0
app/static/django_google_maps/js/google-maps-admin.js

@@ -0,0 +1,180 @@
1
+
2
+/*
3
+Integration for Google Maps in the django admin.
4
+
5
+How it works:
6
+
7
+You have an address field on the page.
8
+Enter an address and an on change event will update the map
9
+with the address. A marker will be placed at the address.
10
+If the user needs to move the marker, they can and the geolocation
11
+field will be updated.
12
+
13
+Only one marker will remain present on the map at a time.
14
+
15
+This script expects:
16
+
17
+<input type="text" name="address" id="id_address" />
18
+<input type="text" name="geolocation" id="id_geolocation" />
19
+
20
+<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
21
+
22
+*/
23
+
24
+function googleMapAdmin() {
25
+
26
+    var autocomplete;
27
+    var geocoder = new google.maps.Geocoder();
28
+    var map;
29
+    var marker;
30
+
31
+    var geolocationId = 'id_geolocation';
32
+    var addressId = 'id_address';
33
+
34
+    var self = {
35
+        initialize: function() {
36
+            var lat = 0;
37
+            var lng = 0;
38
+            var zoom = 2;
39
+            // set up initial map to be world view. also, add change
40
+            // event so changing address will update the map
41
+            var existinglocation = self.getExistingLocation();
42
+
43
+            if (existinglocation) {
44
+                lat = existinglocation[0];
45
+                lng = existinglocation[1];
46
+                zoom = 18;
47
+            }
48
+
49
+            var latlng = new google.maps.LatLng(lat,lng);
50
+            var myOptions = {
51
+              zoom: zoom,
52
+              center: latlng,
53
+              mapTypeId: self.getMapType()
54
+            };
55
+            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
56
+            if (existinglocation) {
57
+                self.setMarker(latlng);
58
+            }
59
+
60
+            autocomplete = new google.maps.places.Autocomplete(
61
+                /** @type {!HTMLInputElement} */(document.getElementById(addressId)),
62
+                self.getAutoCompleteOptions());
63
+
64
+            // this only triggers on enter, or if a suggested location is chosen
65
+            // todo: if a user doesn't choose a suggestion and presses tab, the map doesn't update
66
+            autocomplete.addListener("place_changed", self.codeAddress);
67
+
68
+            // don't make enter submit the form, let it just trigger the place_changed event
69
+            // which triggers the map update & geocode
70
+            $("#" + addressId).keydown(function (e) {
71
+                if (e.keyCode == 13) {  // enter key
72
+                    e.preventDefault();
73
+                    return false;
74
+                }
75
+            });
76
+        },
77
+
78
+        getMapType : function() {
79
+            // https://developers.google.com/maps/documentation/javascript/maptypes
80
+            var geolocation = document.getElementById(addressId);
81
+            var allowedType = ['roadmap', 'satellite', 'hybrid', 'terrain'];
82
+            var mapType = geolocation.getAttribute('data-map-type');
83
+
84
+            if (mapType && -1 !== allowedType.indexOf(mapType)) {
85
+                return mapType;
86
+            }
87
+
88
+            return google.maps.MapTypeId.HYBRID;
89
+        },
90
+
91
+        getAutoCompleteOptions : function() {
92
+            var geolocation = document.getElementById(addressId);
93
+            var autocompleteOptions = geolocation.getAttribute('data-autocomplete-options');
94
+
95
+            if (!autocompleteOptions) {
96
+                return {
97
+                   types: ['geocode']
98
+                };
99
+            }
100
+
101
+            return JSON.parse(autocompleteOptions);
102
+        },
103
+
104
+        getExistingLocation: function() {
105
+            var geolocation = document.getElementById(geolocationId).value;
106
+            if (geolocation) {
107
+                return geolocation.split(',');
108
+            }
109
+        },
110
+
111
+        codeAddress: function() {
112
+            var place = autocomplete.getPlace();
113
+
114
+            if(place.geometry !== undefined) {
115
+                self.updateWithCoordinates(place.geometry.location);
116
+            }
117
+            else {
118
+                geocoder.geocode({'address': place.name}, function(results, status) {
119
+                    if (status == google.maps.GeocoderStatus.OK) {
120
+                        var latlng = results[0].geometry.location;
121
+                        self.updateWithCoordinates(latlng);
122
+                    } else {
123
+                        alert("Geocode was not successful for the following reason: " + status);
124
+                    }
125
+                });
126
+            }
127
+        },
128
+
129
+        updateWithCoordinates: function(latlng) {
130
+            map.setCenter(latlng);
131
+            map.setZoom(18);
132
+            self.setMarker(latlng);
133
+            self.updateGeolocation(latlng);
134
+        },
135
+
136
+        setMarker: function(latlng) {
137
+            if (marker) {
138
+                self.updateMarker(latlng);
139
+            } else {
140
+                self.addMarker({'latlng': latlng, 'draggable': true});
141
+            }
142
+        },
143
+
144
+        addMarker: function(Options) {
145
+            marker = new google.maps.Marker({
146
+                map: map,
147
+                position: Options.latlng
148
+            });
149
+
150
+            var draggable = Options.draggable || false;
151
+            if (draggable) {
152
+                self.addMarkerDrag(marker);
153
+            }
154
+        },
155
+
156
+        addMarkerDrag: function() {
157
+            marker.setDraggable(true);
158
+            google.maps.event.addListener(marker, 'dragend', function(new_location) {
159
+                self.updateGeolocation(new_location.latLng);
160
+            });
161
+        },
162
+
163
+        updateMarker: function(latlng) {
164
+            marker.setPosition(latlng);
165
+        },
166
+
167
+        updateGeolocation: function(latlng) {
168
+            document.getElementById(geolocationId).value = latlng.lat() + "," + latlng.lng();
169
+            $("#" + geolocationId).trigger('change');
170
+        }
171
+    };
172
+
173
+    return self;
174
+}
175
+
176
+//$(document).ready(function() {
177
+jQuery(function($) {
178
+    var googlemap = googleMapAdmin();
179
+    googlemap.initialize();
180
+});

BIN
app/static/img/heartbeat.png


+ 15 - 0
app/static/js/main.js

@@ -0,0 +1,15 @@
1
+$(function(){
2
+    $("#currentLocationBtn").click(function(){
3
+        if ("geolocation" in navigator){ //check geolocation available
4
+            //try to get user current location using getCurrentPosition() method
5
+            console.log("current location");
6
+            navigator.geolocation.getCurrentPosition(function(position){
7
+                console.log("xxxx");
8
+                $("#geoText").val(position.coords.latitude+","+position.coords.longitude );
9
+
10
+            });
11
+        }else{
12
+            console.log("Browser doesn't support geolocation!");
13
+        }
14
+    });
15
+});

+ 422 - 0
app/stunnel.log

@@ -0,0 +1,422 @@
1
+2021.07.24 09:02:55 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
2
+2021.07.24 09:02:55 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
3
+2021.07.24 09:02:55 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
4
+2021.07.24 09:02:55 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
5
+2021.07.24 09:02:55 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
6
+2021.07.24 09:02:55 LOG5[ui]: UTF-8 byte order mark not detected
7
+2021.07.24 09:02:55 LOG5[ui]: FIPS mode disabled
8
+2021.07.24 09:02:55 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
9
+2021.07.24 09:02:55 LOG5[ui]: Configuration successful
10
+2021.07.24 09:10:14 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
11
+2021.07.24 09:10:14 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
12
+2021.07.24 09:10:14 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
13
+2021.07.24 09:10:14 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
14
+2021.07.24 09:10:14 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
15
+2021.07.24 09:10:14 LOG5[ui]: UTF-8 byte order mark not detected
16
+2021.07.24 09:10:14 LOG5[ui]: FIPS mode disabled
17
+2021.07.24 09:10:14 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
18
+2021.07.24 09:10:14 LOG5[ui]: Configuration successful
19
+2021.07.24 09:33:28 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
20
+2021.07.24 09:33:28 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
21
+2021.07.24 09:33:28 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
22
+2021.07.24 09:33:28 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
23
+2021.07.24 09:33:28 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
24
+2021.07.24 09:33:28 LOG5[ui]: UTF-8 byte order mark not detected
25
+2021.07.24 09:33:28 LOG5[ui]: FIPS mode disabled
26
+2021.07.24 09:33:28 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
27
+2021.07.24 09:33:28 LOG5[ui]: Configuration successful
28
+2021.07.24 09:35:04 LOG5[0]: Service [https] accepted connection from 172.18.0.1:60024
29
+2021.07.24 09:35:04 LOG5[1]: Service [https] accepted connection from 172.18.0.1:60028
30
+2021.07.24 09:35:04 LOG3[0]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
31
+2021.07.24 09:35:04 LOG3[1]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
32
+2021.07.24 09:35:04 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
33
+2021.07.24 09:35:04 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
34
+2021.07.24 09:35:05 LOG5[2]: Service [https] accepted connection from 172.18.0.1:60032
35
+2021.07.24 09:35:05 LOG3[2]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
36
+2021.07.24 09:35:05 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
37
+2021.07.24 09:35:10 LOG5[3]: Service [https] accepted connection from 172.18.0.1:60036
38
+2021.07.24 09:35:10 LOG3[3]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
39
+2021.07.24 09:35:10 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
40
+2021.07.24 09:35:26 LOG5[4]: Service [https] accepted connection from 172.18.0.1:60040
41
+2021.07.24 09:35:26 LOG3[4]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
42
+2021.07.24 09:35:26 LOG5[4]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
43
+2021.07.24 09:35:31 LOG5[5]: Service [https] accepted connection from 172.18.0.1:60044
44
+2021.07.24 09:35:31 LOG3[5]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
45
+2021.07.24 09:35:31 LOG5[5]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
46
+2021.07.24 09:35:34 LOG5[6]: Service [https] accepted connection from 172.18.0.1:60048
47
+2021.07.24 09:35:34 LOG3[6]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
48
+2021.07.24 09:35:34 LOG5[6]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
49
+2021.07.24 09:35:35 LOG5[7]: Service [https] accepted connection from 172.18.0.1:60052
50
+2021.07.24 09:35:35 LOG3[7]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
51
+2021.07.24 09:35:35 LOG5[7]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
52
+2021.07.24 09:35:37 LOG5[8]: Service [https] accepted connection from 172.18.0.1:60056
53
+2021.07.24 09:35:37 LOG3[8]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
54
+2021.07.24 09:35:37 LOG5[8]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
55
+2021.07.24 09:35:38 LOG5[9]: Service [https] accepted connection from 172.18.0.1:60060
56
+2021.07.24 09:35:38 LOG3[9]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
57
+2021.07.24 09:35:38 LOG5[9]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
58
+2021.07.24 09:35:43 LOG5[10]: Service [https] accepted connection from 172.18.0.1:60064
59
+2021.07.24 09:35:43 LOG3[10]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
60
+2021.07.24 09:35:43 LOG5[10]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
61
+2021.07.24 09:36:01 LOG5[12]: Service [https] accepted connection from 172.18.0.1:60070
62
+2021.07.24 09:36:01 LOG3[12]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
63
+2021.07.24 09:36:01 LOG5[11]: Service [https] accepted connection from 172.18.0.1:60072
64
+2021.07.24 09:36:01 LOG5[12]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
65
+2021.07.24 09:36:01 LOG5[14]: Service [https] accepted connection from 172.18.0.1:60080
66
+2021.07.24 09:36:01 LOG5[13]: Service [https] accepted connection from 172.18.0.1:60076
67
+2021.07.24 09:36:01 LOG3[11]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
68
+2021.07.24 09:36:01 LOG3[14]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
69
+2021.07.24 09:36:01 LOG3[13]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
70
+2021.07.24 09:36:01 LOG5[11]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
71
+2021.07.24 09:36:01 LOG5[13]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
72
+2021.07.24 09:36:01 LOG5[14]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
73
+2021.07.24 09:36:39 LOG5[16]: Service [https] accepted connection from 172.18.0.1:60122
74
+2021.07.24 09:36:39 LOG3[16]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
75
+2021.07.24 09:36:39 LOG5[15]: Service [https] accepted connection from 172.18.0.1:60120
76
+2021.07.24 09:36:39 LOG5[16]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
77
+2021.07.24 09:36:39 LOG5[17]: Service [https] accepted connection from 172.18.0.1:60126
78
+2021.07.24 09:36:39 LOG3[15]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
79
+2021.07.24 09:36:39 LOG5[18]: Service [https] accepted connection from 172.18.0.1:60130
80
+2021.07.24 09:36:39 LOG3[17]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
81
+2021.07.24 09:36:39 LOG5[17]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
82
+2021.07.24 09:36:39 LOG5[15]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
83
+2021.07.24 09:36:39 LOG3[18]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
84
+2021.07.24 09:36:39 LOG5[18]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
85
+2021.07.24 09:37:05 LOG5[ui]: Terminated
86
+2021.07.24 09:37:21 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
87
+2021.07.24 09:37:21 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
88
+2021.07.24 09:37:21 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
89
+2021.07.24 09:37:21 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
90
+2021.07.24 09:37:21 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
91
+2021.07.24 09:37:21 LOG5[ui]: UTF-8 byte order mark not detected
92
+2021.07.24 09:37:21 LOG5[ui]: FIPS mode disabled
93
+2021.07.24 09:37:21 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
94
+2021.07.24 09:37:21 LOG5[ui]: Configuration successful
95
+2021.07.24 09:37:40 LOG5[1]: Service [https] accepted connection from 172.18.0.1:59516
96
+2021.07.24 09:37:40 LOG5[0]: Service [https] accepted connection from 172.18.0.1:59518
97
+2021.07.24 09:37:40 LOG3[1]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
98
+2021.07.24 09:37:40 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
99
+2021.07.24 09:37:40 LOG3[0]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
100
+2021.07.24 09:37:40 LOG5[2]: Service [https] accepted connection from 172.18.0.1:59524
101
+2021.07.24 09:37:40 LOG3[2]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
102
+2021.07.24 09:37:40 LOG5[3]: Service [https] accepted connection from 172.18.0.1:59528
103
+2021.07.24 09:37:40 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
104
+2021.07.24 09:37:40 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
105
+2021.07.24 09:37:40 LOG3[3]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
106
+2021.07.24 09:37:40 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
107
+2021.07.24 09:37:51 LOG5[5]: Service [https] accepted connection from 172.18.0.1:59536
108
+2021.07.24 09:37:51 LOG5[4]: Service [https] accepted connection from 172.18.0.1:59538
109
+2021.07.24 09:37:51 LOG3[5]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
110
+2021.07.24 09:37:51 LOG5[5]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
111
+2021.07.24 09:37:51 LOG3[4]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
112
+2021.07.24 09:37:51 LOG5[6]: Service [https] accepted connection from 172.18.0.1:59542
113
+2021.07.24 09:37:51 LOG5[7]: Service [https] accepted connection from 172.18.0.1:59546
114
+2021.07.24 09:37:51 LOG5[4]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
115
+2021.07.24 09:37:51 LOG3[6]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
116
+2021.07.24 09:37:51 LOG5[6]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
117
+2021.07.24 09:37:51 LOG3[7]: SSL_accept: 141FC044: error:141FC044:SSL routines:tls_setup_handshake:internal error
118
+2021.07.24 09:37:51 LOG5[7]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
119
+2021.07.24 09:39:11 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
120
+2021.07.24 09:39:11 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
121
+2021.07.24 09:39:11 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
122
+2021.07.24 09:39:11 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
123
+2021.07.24 09:39:11 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
124
+2021.07.24 09:39:11 LOG5[ui]: UTF-8 byte order mark not detected
125
+2021.07.24 09:39:11 LOG5[ui]: FIPS mode disabled
126
+2021.07.24 09:39:11 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
127
+2021.07.24 09:39:11 LOG5[ui]: Configuration successful
128
+2021.07.24 09:39:23 LOG5[1]: Service [https] accepted connection from 172.18.0.1:60180
129
+2021.07.24 09:39:23 LOG5[0]: Service [https] accepted connection from 172.18.0.1:60182
130
+2021.07.24 09:39:23 LOG3[1]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
131
+2021.07.24 09:39:23 LOG3[0]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
132
+2021.07.24 09:39:23 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
133
+2021.07.24 09:39:23 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
134
+2021.07.24 09:39:42 LOG5[3]: Service [https] accepted connection from 172.18.0.1:60190
135
+2021.07.24 09:39:42 LOG5[2]: Service [https] accepted connection from 172.18.0.1:60192
136
+2021.07.24 09:39:42 LOG3[3]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
137
+2021.07.24 09:39:42 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
138
+2021.07.24 09:39:42 LOG3[2]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
139
+2021.07.24 09:39:42 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
140
+2021.07.24 09:39:57 LOG5[ui]: Terminated
141
+2021.07.24 09:40:13 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
142
+2021.07.24 09:40:13 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
143
+2021.07.24 09:40:13 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
144
+2021.07.24 09:40:13 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
145
+2021.07.24 09:40:13 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
146
+2021.07.24 09:40:13 LOG5[ui]: UTF-8 byte order mark not detected
147
+2021.07.24 09:40:13 LOG5[ui]: FIPS mode disabled
148
+2021.07.24 09:40:13 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
149
+2021.07.24 09:40:13 LOG5[ui]: Configuration successful
150
+2021.07.24 09:40:19 LOG5[0]: Service [https] accepted connection from 172.18.0.1:60204
151
+2021.07.24 09:40:19 LOG5[1]: Service [https] accepted connection from 172.18.0.1:60206
152
+2021.07.24 09:40:19 LOG3[0]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
153
+2021.07.24 09:40:19 LOG3[1]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
154
+2021.07.24 09:40:19 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
155
+2021.07.24 09:40:19 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
156
+2021.07.24 09:40:35 LOG5[2]: Service [https] accepted connection from 172.18.0.1:60212
157
+2021.07.24 09:40:35 LOG5[3]: Service [https] accepted connection from 172.18.0.1:60214
158
+2021.07.24 09:40:35 LOG3[3]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
159
+2021.07.24 09:40:35 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
160
+2021.07.24 09:40:35 LOG3[2]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
161
+2021.07.24 09:40:35 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
162
+2021.07.24 09:40:35 LOG5[4]: Service [https] accepted connection from 172.18.0.1:60218
163
+2021.07.24 09:40:35 LOG3[4]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
164
+2021.07.24 09:40:35 LOG5[4]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
165
+2021.07.24 09:40:36 LOG5[6]: Service [https] accepted connection from 172.18.0.1:60226
166
+2021.07.24 09:40:36 LOG5[5]: Service [https] accepted connection from 172.18.0.1:60224
167
+2021.07.24 09:40:36 LOG3[5]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
168
+2021.07.24 09:40:36 LOG5[5]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
169
+2021.07.24 09:40:36 LOG3[6]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
170
+2021.07.24 09:40:36 LOG5[6]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
171
+2021.07.24 09:40:36 LOG5[7]: Service [https] accepted connection from 172.18.0.1:60230
172
+2021.07.24 09:40:36 LOG3[7]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
173
+2021.07.24 09:40:36 LOG5[7]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
174
+2021.07.24 09:40:41 LOG5[9]: Service [https] accepted connection from 172.18.0.1:60240
175
+2021.07.24 09:40:41 LOG5[8]: Service [https] accepted connection from 172.18.0.1:60238
176
+2021.07.24 09:40:41 LOG3[9]: SSL_accept: 1408F09C: error:1408F09C:SSL routines:ssl3_get_record:http request
177
+2021.07.24 09:40:41 LOG5[9]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
178
+2021.07.24 09:40:42 LOG5[10]: Service [https] accepted connection from 172.18.0.1:60248
179
+2021.07.24 09:40:42 LOG5[11]: Service [https] accepted connection from 172.18.0.1:60250
180
+2021.07.24 09:40:42 LOG3[10]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
181
+2021.07.24 09:40:42 LOG5[10]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
182
+2021.07.24 09:40:42 LOG3[11]: SSL_accept: 14094416: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
183
+2021.07.24 09:40:42 LOG5[11]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
184
+2021.07.24 09:40:49 LOG5[ui]: Terminated
185
+2021.07.24 09:43:36 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
186
+2021.07.24 09:43:36 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
187
+2021.07.24 09:43:36 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
188
+2021.07.24 09:43:36 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
189
+2021.07.24 09:43:36 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
190
+2021.07.24 09:43:36 LOG5[ui]: UTF-8 byte order mark not detected
191
+2021.07.24 09:43:36 LOG5[ui]: FIPS mode disabled
192
+2021.07.24 09:43:36 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
193
+2021.07.24 09:43:36 LOG5[ui]: Configuration successful
194
+2021.07.24 09:45:21 LOG3[ui]: Received SIGINT; terminating
195
+2021.07.24 09:45:40 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
196
+2021.07.24 09:45:40 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
197
+2021.07.24 09:45:40 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
198
+2021.07.24 09:45:40 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
199
+2021.07.24 09:45:40 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
200
+2021.07.24 09:45:40 LOG5[ui]: UTF-8 byte order mark not detected
201
+2021.07.24 09:45:40 LOG5[ui]: FIPS mode disabled
202
+2021.07.24 09:45:40 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
203
+2021.07.24 09:45:40 LOG5[ui]: Configuration successful
204
+2021.07.24 09:46:18 LOG3[ui]: Received SIGINT; terminating
205
+2021.07.24 09:46:35 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
206
+2021.07.24 09:46:35 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
207
+2021.07.24 09:46:35 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
208
+2021.07.24 09:46:35 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
209
+2021.07.24 09:46:35 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
210
+2021.07.24 09:46:35 LOG5[ui]: UTF-8 byte order mark not detected
211
+2021.07.24 09:46:35 LOG5[ui]: FIPS mode disabled
212
+2021.07.24 09:46:35 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
213
+2021.07.24 09:46:35 LOG5[ui]: Configuration successful
214
+2021.07.24 09:47:13 LOG3[ui]: Received SIGINT; terminating
215
+2021.07.24 09:47:18 LOG5[ui]: stunnel 5.50 on aarch64-unknown-linux-gnu platform
216
+2021.07.24 09:47:18 LOG5[ui]: Compiled with OpenSSL 1.1.1b  26 Feb 2019
217
+2021.07.24 09:47:18 LOG5[ui]: Running  with OpenSSL 1.1.1d  10 Sep 2019
218
+2021.07.24 09:47:18 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
219
+2021.07.24 09:47:18 LOG5[ui]: Reading configuration from file /code/stunnel/dev_https
220
+2021.07.24 09:47:18 LOG5[ui]: UTF-8 byte order mark not detected
221
+2021.07.24 09:47:18 LOG5[ui]: FIPS mode disabled
222
+2021.07.24 09:47:18 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
223
+2021.07.24 09:47:18 LOG5[ui]: Configuration successful
224
+2021.07.24 09:48:29 LOG5[ui]: Terminated
225
+2021.07.24 16:51:14 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
226
+2021.07.24 16:51:14 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
227
+2021.07.24 16:51:14 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
228
+2021.07.24 16:51:14 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
229
+2021.07.24 16:51:14 LOG5[ui]: UTF-8 byte order mark not detected
230
+2021.07.24 16:51:14 LOG5[ui]: FIPS mode disabled
231
+2021.07.24 16:51:14 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
232
+2021.07.24 16:51:14 LOG5[ui]: Configuration successful
233
+2021.07.24 16:51:14 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
234
+2021.07.24 16:51:21 LOG3[ui]: Received SIGINT; terminating
235
+2021.07.24 16:51:21 LOG5[ui]: Terminating 1 service thread(s)
236
+2021.07.24 16:51:21 LOG5[ui]: Service threads terminated
237
+2021.07.24 16:51:27 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
238
+2021.07.24 16:51:27 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
239
+2021.07.24 16:51:27 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
240
+2021.07.24 16:51:27 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
241
+2021.07.24 16:51:27 LOG5[ui]: UTF-8 byte order mark not detected
242
+2021.07.24 16:51:27 LOG5[ui]: FIPS mode disabled
243
+2021.07.24 16:51:27 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
244
+2021.07.24 16:51:27 LOG5[ui]: Configuration successful
245
+2021.07.24 16:51:27 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
246
+2021.07.24 16:51:30 LOG3[ui]: Received SIGINT; terminating
247
+2021.07.24 16:51:30 LOG5[ui]: Terminating 1 service thread(s)
248
+2021.07.24 16:51:30 LOG5[ui]: Service threads terminated
249
+2021.07.24 16:52:32 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
250
+2021.07.24 16:52:32 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
251
+2021.07.24 16:52:32 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
252
+2021.07.24 16:52:32 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
253
+2021.07.24 16:52:32 LOG5[ui]: UTF-8 byte order mark not detected
254
+2021.07.24 16:52:32 LOG5[ui]: FIPS mode disabled
255
+2021.07.24 16:52:32 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
256
+2021.07.24 16:52:32 LOG5[ui]: Configuration successful
257
+2021.07.24 16:52:32 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
258
+2021.07.24 16:52:43 LOG5[0]: Service [https] accepted connection from ::1:55636
259
+2021.07.24 16:52:43 LOG5[1]: Service [https] accepted connection from ::1:55637
260
+2021.07.24 16:52:43 LOG3[0]: SSL_accept: ssl/record/ssl3_record.c:322: error:1408F09C:SSL routines:ssl3_get_record:http request
261
+2021.07.24 16:52:43 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
262
+2021.07.24 16:52:44 LOG5[2]: Service [https] accepted connection from ::1:55646
263
+2021.07.24 16:52:44 LOG3[1]: SSL_accept: ssl/record/ssl3_record.c:322: error:1408F09C:SSL routines:ssl3_get_record:http request
264
+2021.07.24 16:52:44 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
265
+2021.07.24 16:52:44 LOG3[2]: SSL_accept: ssl/record/ssl3_record.c:322: error:1408F09C:SSL routines:ssl3_get_record:http request
266
+2021.07.24 16:52:44 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
267
+2021.07.24 16:52:44 LOG5[3]: Service [https] accepted connection from ::1:55647
268
+2021.07.24 16:52:44 LOG3[3]: SSL_accept: ssl/record/ssl3_record.c:322: error:1408F09C:SSL routines:ssl3_get_record:http request
269
+2021.07.24 16:52:44 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
270
+2021.07.24 16:52:46 LOG5[4]: Service [https] accepted connection from ::1:55652
271
+2021.07.24 16:52:46 LOG5[5]: Service [https] accepted connection from ::1:55653
272
+2021.07.24 16:52:46 LOG3[4]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
273
+2021.07.24 16:52:46 LOG5[4]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
274
+2021.07.24 16:52:46 LOG3[5]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
275
+2021.07.24 16:52:46 LOG5[5]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
276
+2021.07.24 16:52:47 LOG5[7]: Service [https] accepted connection from ::1:55655
277
+2021.07.24 16:52:47 LOG5[6]: Service [https] accepted connection from ::1:55654
278
+2021.07.24 16:52:47 LOG3[6]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
279
+2021.07.24 16:52:47 LOG5[6]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
280
+2021.07.24 16:52:47 LOG3[7]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
281
+2021.07.24 16:52:47 LOG5[7]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
282
+2021.07.24 16:53:00 LOG3[ui]: Received SIGINT; terminating
283
+2021.07.24 16:53:00 LOG5[ui]: Terminating 1 service thread(s)
284
+2021.07.24 16:53:00 LOG5[ui]: Service threads terminated
285
+2021.07.24 16:54:06 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
286
+2021.07.24 16:54:06 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
287
+2021.07.24 16:54:06 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
288
+2021.07.24 16:54:06 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
289
+2021.07.24 16:54:06 LOG5[ui]: UTF-8 byte order mark not detected
290
+2021.07.24 16:54:06 LOG5[ui]: FIPS mode disabled
291
+2021.07.24 16:54:06 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
292
+2021.07.24 16:54:06 LOG5[ui]: Configuration successful
293
+2021.07.24 16:54:06 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
294
+2021.07.24 16:54:15 LOG5[0]: Service [https] accepted connection from ::1:55712
295
+2021.07.24 16:54:15 LOG5[1]: Service [https] accepted connection from ::1:55713
296
+2021.07.24 16:54:15 LOG3[0]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
297
+2021.07.24 16:54:15 LOG3[1]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
298
+2021.07.24 16:54:15 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
299
+2021.07.24 16:54:15 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
300
+2021.07.24 16:54:26 LOG3[ui]: Received SIGINT; terminating
301
+2021.07.24 16:54:26 LOG5[ui]: Terminating 1 service thread(s)
302
+2021.07.24 16:54:26 LOG5[ui]: Service threads terminated
303
+2021.07.24 16:55:46 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
304
+2021.07.24 16:55:46 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
305
+2021.07.24 16:55:46 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
306
+2021.07.24 16:55:46 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
307
+2021.07.24 16:55:46 LOG5[ui]: UTF-8 byte order mark not detected
308
+2021.07.24 16:55:46 LOG5[ui]: FIPS mode disabled
309
+2021.07.24 16:55:46 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
310
+2021.07.24 16:55:46 LOG5[ui]: Configuration successful
311
+2021.07.24 16:55:46 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
312
+2021.07.24 16:55:57 LOG5[0]: Service [https] accepted connection from ::1:55754
313
+2021.07.24 16:55:57 LOG5[1]: Service [https] accepted connection from ::1:55755
314
+2021.07.24 16:55:57 LOG3[1]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
315
+2021.07.24 16:55:57 LOG3[0]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
316
+2021.07.24 16:55:57 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
317
+2021.07.24 16:55:57 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
318
+2021.07.24 16:56:28 LOG3[ui]: Received SIGINT; terminating
319
+2021.07.24 16:56:28 LOG5[ui]: Terminating 1 service thread(s)
320
+2021.07.24 16:56:28 LOG5[ui]: Service threads terminated
321
+2021.07.24 16:57:27 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
322
+2021.07.24 16:57:27 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
323
+2021.07.24 16:57:27 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
324
+2021.07.24 16:57:27 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
325
+2021.07.24 16:57:27 LOG5[ui]: UTF-8 byte order mark not detected
326
+2021.07.24 16:57:27 LOG5[ui]: FIPS mode disabled
327
+2021.07.24 16:57:27 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
328
+2021.07.24 16:57:27 LOG5[ui]: Configuration successful
329
+2021.07.24 16:57:27 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
330
+2021.07.24 16:57:31 LOG5[1]: Service [https] accepted connection from ::1:55812
331
+2021.07.24 16:57:31 LOG5[0]: Service [https] accepted connection from ::1:55811
332
+2021.07.24 16:57:31 LOG3[1]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
333
+2021.07.24 16:57:31 LOG3[0]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
334
+2021.07.24 16:57:31 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
335
+2021.07.24 16:57:31 LOG5[2]: Service [https] accepted connection from ::1:55814
336
+2021.07.24 16:57:31 LOG3[2]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
337
+2021.07.24 16:57:31 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
338
+2021.07.24 16:57:31 LOG5[3]: Service [https] accepted connection from ::1:55815
339
+2021.07.24 16:57:31 LOG3[3]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
340
+2021.07.24 16:57:31 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
341
+2021.07.24 16:57:31 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
342
+2021.07.24 16:57:32 LOG5[4]: Service [https] accepted connection from ::1:55816
343
+2021.07.24 16:57:32 LOG5[5]: Service [https] accepted connection from ::1:55817
344
+2021.07.24 16:57:32 LOG3[4]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
345
+2021.07.24 16:57:32 LOG3[5]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
346
+2021.07.24 16:57:32 LOG5[4]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
347
+2021.07.24 16:57:32 LOG5[5]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
348
+2021.07.24 16:57:32 LOG5[6]: Service [https] accepted connection from ::1:55818
349
+2021.07.24 16:57:32 LOG5[7]: Service [https] accepted connection from ::1:55819
350
+2021.07.24 16:57:32 LOG3[7]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
351
+2021.07.24 16:57:32 LOG3[6]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
352
+2021.07.24 16:57:32 LOG5[7]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
353
+2021.07.24 16:57:32 LOG5[6]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
354
+2021.07.24 16:58:05 LOG5[9]: Service [https] accepted connection from ::1:55829
355
+2021.07.24 16:58:05 LOG5[8]: Service [https] accepted connection from ::1:55828
356
+2021.07.24 16:58:05 LOG3[9]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
357
+2021.07.24 16:58:05 LOG5[9]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
358
+2021.07.24 16:58:05 LOG3[8]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
359
+2021.07.24 16:58:05 LOG5[8]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
360
+2021.07.24 16:58:05 LOG5[10]: Service [https] accepted connection from ::1:55831
361
+2021.07.24 16:58:05 LOG3[10]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
362
+2021.07.24 16:58:05 LOG5[10]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
363
+2021.07.24 16:58:05 LOG5[11]: Service [https] accepted connection from ::1:55832
364
+2021.07.24 16:58:05 LOG3[11]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
365
+2021.07.24 16:58:05 LOG5[11]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
366
+2021.07.24 16:58:14 LOG5[12]: Service [https] accepted connection from ::1:55833
367
+2021.07.24 16:58:14 LOG5[13]: Service [https] accepted connection from ::1:55834
368
+2021.07.24 16:58:14 LOG3[12]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
369
+2021.07.24 16:58:14 LOG3[13]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
370
+2021.07.24 16:58:14 LOG5[12]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
371
+2021.07.24 16:58:14 LOG5[13]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
372
+2021.07.24 16:58:14 LOG5[14]: Service [https] accepted connection from ::1:55835
373
+2021.07.24 16:58:14 LOG3[14]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
374
+2021.07.24 16:58:14 LOG5[14]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
375
+2021.07.24 16:58:14 LOG5[15]: Service [https] accepted connection from ::1:55836
376
+2021.07.24 16:58:14 LOG3[15]: SSL_accept: ssl/statem/statem_lib.c:110: error:141FC044:SSL routines:tls_setup_handshake:internal error
377
+2021.07.24 16:58:14 LOG5[15]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
378
+2021.07.24 16:58:44 LOG3[ui]: Received SIGINT; terminating
379
+2021.07.24 16:58:44 LOG5[ui]: Terminating 1 service thread(s)
380
+2021.07.24 16:58:44 LOG5[ui]: Service threads terminated
381
+2021.07.24 16:58:55 LOG5[ui]: stunnel 5.59 on x86_64-apple-darwin20.3.0 platform
382
+2021.07.24 16:58:55 LOG5[ui]: Compiled/running with OpenSSL 1.1.1k  25 Mar 2021
383
+2021.07.24 16:58:55 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI
384
+2021.07.24 16:58:55 LOG5[ui]: Reading configuration from file /Users/simplicoltd./projects/shaqFindBed/app/stunnel/dev_https
385
+2021.07.24 16:58:55 LOG5[ui]: UTF-8 byte order mark not detected
386
+2021.07.24 16:58:55 LOG5[ui]: FIPS mode disabled
387
+2021.07.24 16:58:55 LOG4[ui]: Insecure file permissions on stunnel/stunnel.pem
388
+2021.07.24 16:58:55 LOG5[ui]: Configuration successful
389
+2021.07.24 16:58:55 LOG5[ui]: Binding service [https] to 0.0.0.0:8443: Address already in use (48)
390
+2021.07.24 16:58:58 LOG5[1]: Service [https] accepted connection from ::1:55856
391
+2021.07.24 16:58:58 LOG5[0]: Service [https] accepted connection from ::1:55855
392
+2021.07.24 16:58:59 LOG3[1]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
393
+2021.07.24 16:58:59 LOG3[0]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
394
+2021.07.24 16:58:59 LOG5[1]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
395
+2021.07.24 16:58:59 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
396
+2021.07.24 16:59:10 LOG5[3]: Service [https] accepted connection from ::1:55859
397
+2021.07.24 16:59:10 LOG5[2]: Service [https] accepted connection from ::1:55858
398
+2021.07.24 16:59:10 LOG3[2]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
399
+2021.07.24 16:59:10 LOG5[2]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
400
+2021.07.24 16:59:10 LOG3[3]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
401
+2021.07.24 16:59:10 LOG5[3]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
402
+2021.07.24 16:59:19 LOG5[4]: Service [https] accepted connection from ::1:55862
403
+2021.07.24 16:59:19 LOG5[5]: Service [https] accepted connection from ::1:55863
404
+2021.07.24 16:59:19 LOG3[5]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
405
+2021.07.24 16:59:19 LOG5[5]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
406
+2021.07.24 16:59:19 LOG3[4]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
407
+2021.07.24 16:59:19 LOG5[4]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
408
+2021.07.24 16:59:20 LOG5[6]: Service [https] accepted connection from ::1:55864
409
+2021.07.24 16:59:20 LOG5[7]: Service [https] accepted connection from ::1:55865
410
+2021.07.24 16:59:20 LOG3[6]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
411
+2021.07.24 16:59:20 LOG5[6]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
412
+2021.07.24 16:59:20 LOG3[7]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
413
+2021.07.24 16:59:20 LOG5[7]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
414
+2021.07.24 16:59:24 LOG5[9]: Service [https] accepted connection from ::1:55867
415
+2021.07.24 16:59:24 LOG5[8]: Service [https] accepted connection from ::1:55866
416
+2021.07.24 16:59:24 LOG3[9]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
417
+2021.07.24 16:59:24 LOG3[8]: SSL_accept: ssl/record/rec_layer_s3.c:1544: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
418
+2021.07.24 16:59:24 LOG5[9]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
419
+2021.07.24 16:59:24 LOG5[8]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
420
+2021.07.24 17:02:53 LOG3[ui]: Received SIGINT; terminating
421
+2021.07.24 17:02:53 LOG5[ui]: Terminating 1 service thread(s)
422
+2021.07.24 17:02:53 LOG5[ui]: Service threads terminated

+ 12 - 0
app/stunnel/dev_https

@@ -0,0 +1,12 @@
1
+pid=
2
+
3
+cert = stunnel/stunnel.pem
4
+sslVersion = all
5
+options = NO_SSLv2
6
+foreground = yes
7
+output = stunnel.log
8
+
9
+[https]
10
+accept=8443
11
+connect=8000
12
+TIMEOUTclose=1

+ 16 - 0
app/stunnel/stunnel.cert

@@ -0,0 +1,16 @@
1
+-----BEGIN CERTIFICATE-----
2
+MIICljCCAX4CCQDaOf5rCaLNiTANBgkqhkiG9w0BAQUFADANMQswCQYDVQQGEwJU
3
+SDAeFw0yMTA3MjQwOTUzMzhaFw0yMjA3MjQwOTUzMzhaMA0xCzAJBgNVBAYTAlRI
4
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtRzaYRi1lPyQNJAH28Lm
5
+CuhM0d+2Mpdnox2GWYsIw5UgmgdXjev1po/SOaTR4R1sFdDDcGkM+yBM/Ei1fnG4
6
+rH84EQ8Q2Gqzna4mCyBov3uVn2Xw4m4gvkSVxjpSgeVPRl0LcJU1z0ksVjxDcddd
7
+sLc74MjP6dfX4P66ZBUyhf4E/nQG2EpoXUr3kHGHhyWLMjOQqA8CZfmLnxnqeDcC
8
+j5sCKDMcyEQM/5kT6Sg5cXfZTKWmBBMGc0/SUc+pUhS8GTUjY8Oub/6Ps6pwXiOc
9
+XVptNpEmnyXJzs082M8QGjHdA1DbpQoVF3qFbhjMmAKPzgl5U4qo65nTOWiWuav5
10
+vwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAuqUF+sV7/rrAtPAGvjlGwzNmK0ZWX
11
+cSP6poqxMOQesuq2DFr84EBEn5X19/8MNlYkDUCZJwaToXpJuobTlDiUaqccxa6a
12
+z+jweD3zr088Sfy5gyimZd9w2ZLmY2r5vNG/ccX2iAbCbMEbvX4/GApzbQEZZ0Xl
13
+SrCF1SIrmuJbDY80oP3bgS+Xi3y1ZVwAfuynHFXdefTvE0XD+XY5QsfapZ5l/+Wp
14
+iv/N2VZkb2KDFwsnlfIKGK7TcIYLCeMRT0RnHoS2SuI6dbj7TSnmv2oHl4bf03uQ
15
+RxH8PFexbaS7WgIteLGUFs3rCM7hFoO53oioiYjQYnCTqUsp/nN0h61Y
16
+-----END CERTIFICATE-----

+ 27 - 0
app/stunnel/stunnel.key

@@ -0,0 +1,27 @@
1
+-----BEGIN RSA PRIVATE KEY-----
2
+MIIEogIBAAKCAQEAtRzaYRi1lPyQNJAH28LmCuhM0d+2Mpdnox2GWYsIw5UgmgdX
3
+jev1po/SOaTR4R1sFdDDcGkM+yBM/Ei1fnG4rH84EQ8Q2Gqzna4mCyBov3uVn2Xw
4
+4m4gvkSVxjpSgeVPRl0LcJU1z0ksVjxDcdddsLc74MjP6dfX4P66ZBUyhf4E/nQG
5
+2EpoXUr3kHGHhyWLMjOQqA8CZfmLnxnqeDcCj5sCKDMcyEQM/5kT6Sg5cXfZTKWm
6
+BBMGc0/SUc+pUhS8GTUjY8Oub/6Ps6pwXiOcXVptNpEmnyXJzs082M8QGjHdA1Db
7
+pQoVF3qFbhjMmAKPzgl5U4qo65nTOWiWuav5vwIDAQABAoIBACSej90gBN757iJi
8
+mOQrVR4ReC7bP9ic2lyVxKtoPD5nca8TGvXcJtAltkjndXRB4a/LhSi+ZNyF3GsK
9
+PIAzeDaQhoKUfEB12plgM9r+E4/b6hXPo9P0lnRCI9JvymzvM4czmvOJh9bAodFR
10
+4AUtmYj4k4fQspFCjii0+HTyAEQtEBYHtUgOjfA8aZ39aXHtKmDuX3bRQ5LEhEYg
11
+NAmpgiqikjvamaQlceuXWk0ZTE15/dd4WaYa0dlNW/kEs0+hM5BVP2ndvbix/W2+
12
+mWrZedPk0OFAJHY0i+0sWUzwDU8jdegHGmKcbUfNyDbr4WsiUVjxuHQZrltm4xWl
13
+WOlCTAkCgYEA5E8GkyL1USjvWUOxEc8D4vT0RbT8ppc63NAfnpMRt8eF/xCXZClA
14
+SAppWTlGMtjvbGRTo7n6ZRXDR7dlRCil7N1S8PS8k1diZ6oElaDqUIymiAy2Cv15
15
+rr1QDlA+kshnRIj3WhvBtUOgygI8Usuit+pzCoQkcG4dDdeAFhQO4X0CgYEAyxRk
16
+6CZ4J77ynu34hBsI03RjqdKowHXkx5ohVm09VCEcR1bODsVSvtBDEeeqW+77KBVP
17
+sDZXxEXl7S6orJklfTGg8PpMLiflqfcP6gz51qfoQTzscWIXomfIcMsJCYQVfuPG
18
+XL0P4wU6u+QGggwiFuw9ycnGWDrtfV5/6pn/rOsCgYBdDHAri3Xb7AkQomwKTArT
19
+du4PcuH9q2kMEa6xXFM+SY0tFT/+TGmscsHY4WTg2FVMId+MvQF2LVZ3ZiFZlA97
20
+6AAjwDsS+exbP4m6yeh1h71feX7AH+p18yYrjzzRaefcoM3e5a0fCT8A1cRsIh5h
21
+QqY8RPrs75PbzlafqPEfqQKBgHsxJ/VcQM97mhqnKXaaH8SGel7ul8gIvHwJF+gh
22
+5G5Al7L/CYkUUpnGJKmb61BRrLIoG2s9zAgYjt5Oy6vIS2Gi1YrZi5UERuHQKitF
23
+K9n3iYDpwFUXuFagtosV36mSIqgS7KYdWqHQ7kxEi14glh1puiHK8TNcq+y9gsOC
24
+IAN5AoGACa3JWYinvJSMyKQfgywSr1Joi/0MwGXOoj3G7wxrxp220v9MxiSdedfH
25
+na3n1VoTrYro8Z8K9NqGqGScydLds/EtZb7HyZUU+07NYMSNDNbFQfozdwErV4tU
26
+oW6Vh2b9gtI/yvsLZhZNdjwfleOS/jw/137g1RrjzcDRaswTIz0=
27
+-----END RSA PRIVATE KEY-----

+ 43 - 0
app/stunnel/stunnel.pem

@@ -0,0 +1,43 @@
1
+-----BEGIN RSA PRIVATE KEY-----
2
+MIIEogIBAAKCAQEAtRzaYRi1lPyQNJAH28LmCuhM0d+2Mpdnox2GWYsIw5UgmgdX
3
+jev1po/SOaTR4R1sFdDDcGkM+yBM/Ei1fnG4rH84EQ8Q2Gqzna4mCyBov3uVn2Xw
4
+4m4gvkSVxjpSgeVPRl0LcJU1z0ksVjxDcdddsLc74MjP6dfX4P66ZBUyhf4E/nQG
5
+2EpoXUr3kHGHhyWLMjOQqA8CZfmLnxnqeDcCj5sCKDMcyEQM/5kT6Sg5cXfZTKWm
6
+BBMGc0/SUc+pUhS8GTUjY8Oub/6Ps6pwXiOcXVptNpEmnyXJzs082M8QGjHdA1Db
7
+pQoVF3qFbhjMmAKPzgl5U4qo65nTOWiWuav5vwIDAQABAoIBACSej90gBN757iJi
8
+mOQrVR4ReC7bP9ic2lyVxKtoPD5nca8TGvXcJtAltkjndXRB4a/LhSi+ZNyF3GsK
9
+PIAzeDaQhoKUfEB12plgM9r+E4/b6hXPo9P0lnRCI9JvymzvM4czmvOJh9bAodFR
10
+4AUtmYj4k4fQspFCjii0+HTyAEQtEBYHtUgOjfA8aZ39aXHtKmDuX3bRQ5LEhEYg
11
+NAmpgiqikjvamaQlceuXWk0ZTE15/dd4WaYa0dlNW/kEs0+hM5BVP2ndvbix/W2+
12
+mWrZedPk0OFAJHY0i+0sWUzwDU8jdegHGmKcbUfNyDbr4WsiUVjxuHQZrltm4xWl
13
+WOlCTAkCgYEA5E8GkyL1USjvWUOxEc8D4vT0RbT8ppc63NAfnpMRt8eF/xCXZClA
14
+SAppWTlGMtjvbGRTo7n6ZRXDR7dlRCil7N1S8PS8k1diZ6oElaDqUIymiAy2Cv15
15
+rr1QDlA+kshnRIj3WhvBtUOgygI8Usuit+pzCoQkcG4dDdeAFhQO4X0CgYEAyxRk
16
+6CZ4J77ynu34hBsI03RjqdKowHXkx5ohVm09VCEcR1bODsVSvtBDEeeqW+77KBVP
17
+sDZXxEXl7S6orJklfTGg8PpMLiflqfcP6gz51qfoQTzscWIXomfIcMsJCYQVfuPG
18
+XL0P4wU6u+QGggwiFuw9ycnGWDrtfV5/6pn/rOsCgYBdDHAri3Xb7AkQomwKTArT
19
+du4PcuH9q2kMEa6xXFM+SY0tFT/+TGmscsHY4WTg2FVMId+MvQF2LVZ3ZiFZlA97
20
+6AAjwDsS+exbP4m6yeh1h71feX7AH+p18yYrjzzRaefcoM3e5a0fCT8A1cRsIh5h
21
+QqY8RPrs75PbzlafqPEfqQKBgHsxJ/VcQM97mhqnKXaaH8SGel7ul8gIvHwJF+gh
22
+5G5Al7L/CYkUUpnGJKmb61BRrLIoG2s9zAgYjt5Oy6vIS2Gi1YrZi5UERuHQKitF
23
+K9n3iYDpwFUXuFagtosV36mSIqgS7KYdWqHQ7kxEi14glh1puiHK8TNcq+y9gsOC
24
+IAN5AoGACa3JWYinvJSMyKQfgywSr1Joi/0MwGXOoj3G7wxrxp220v9MxiSdedfH
25
+na3n1VoTrYro8Z8K9NqGqGScydLds/EtZb7HyZUU+07NYMSNDNbFQfozdwErV4tU
26
+oW6Vh2b9gtI/yvsLZhZNdjwfleOS/jw/137g1RrjzcDRaswTIz0=
27
+-----END RSA PRIVATE KEY-----
28
+-----BEGIN CERTIFICATE-----
29
+MIICljCCAX4CCQDaOf5rCaLNiTANBgkqhkiG9w0BAQUFADANMQswCQYDVQQGEwJU
30
+SDAeFw0yMTA3MjQwOTUzMzhaFw0yMjA3MjQwOTUzMzhaMA0xCzAJBgNVBAYTAlRI
31
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtRzaYRi1lPyQNJAH28Lm
32
+CuhM0d+2Mpdnox2GWYsIw5UgmgdXjev1po/SOaTR4R1sFdDDcGkM+yBM/Ei1fnG4
33
+rH84EQ8Q2Gqzna4mCyBov3uVn2Xw4m4gvkSVxjpSgeVPRl0LcJU1z0ksVjxDcddd
34
+sLc74MjP6dfX4P66ZBUyhf4E/nQG2EpoXUr3kHGHhyWLMjOQqA8CZfmLnxnqeDcC
35
+j5sCKDMcyEQM/5kT6Sg5cXfZTKWmBBMGc0/SUc+pUhS8GTUjY8Oub/6Ps6pwXiOc
36
+XVptNpEmnyXJzs082M8QGjHdA1DbpQoVF3qFbhjMmAKPzgl5U4qo65nTOWiWuav5
37
+vwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAuqUF+sV7/rrAtPAGvjlGwzNmK0ZWX
38
+cSP6poqxMOQesuq2DFr84EBEn5X19/8MNlYkDUCZJwaToXpJuobTlDiUaqccxa6a
39
+z+jweD3zr088Sfy5gyimZd9w2ZLmY2r5vNG/ccX2iAbCbMEbvX4/GApzbQEZZ0Xl
40
+SrCF1SIrmuJbDY80oP3bgS+Xi3y1ZVwAfuynHFXdefTvE0XD+XY5QsfapZ5l/+Wp
41
+iv/N2VZkb2KDFwsnlfIKGK7TcIYLCeMRT0RnHoS2SuI6dbj7TSnmv2oHl4bf03uQ
42
+RxH8PFexbaS7WgIteLGUFs3rCM7hFoO53oioiYjQYnCTqUsp/nN0h61Y
43
+-----END CERTIFICATE-----

+ 12 - 0
app/templates/admin/404.html

@@ -0,0 +1,12 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n %}
3
+
4
+{% block title %}{% translate 'Page not found' %}{% endblock %}
5
+
6
+{% block content %}
7
+
8
+<h2>{% translate 'Page not found' %}</h2>
9
+
10
+<p>{% translate 'We’re sorry, but the requested page could not be found.' %}</p>
11
+
12
+{% endblock %}

+ 17 - 0
app/templates/admin/500.html

@@ -0,0 +1,17 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n %}
3
+
4
+{% block breadcrumbs %}
5
+<div class="breadcrumbs">
6
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
7
+&rsaquo; {% translate 'Server error' %}
8
+</div>
9
+{% endblock %}
10
+
11
+{% block title %}{% translate 'Server error (500)' %}{% endblock %}
12
+
13
+{% block content %}
14
+<h1>{% translate 'Server Error <em>(500)</em>' %}</h1>
15
+<p>{% translate 'There’s been an error. It’s been reported to the site administrators via email and should be fixed shortly. Thanks for your patience.' %}</p>
16
+
17
+{% endblock %}

+ 23 - 0
app/templates/admin/actions.html

@@ -0,0 +1,23 @@
1
+{% load i18n %}
2
+<div class="actions">
3
+  {% block actions %}
4
+    {% block actions-form %}
5
+    {% for field in action_form %}{% if field.label %}<label>{{ field.label }} {% endif %}{{ field }}{% if field.label %}</label>{% endif %}{% endfor %}
6
+    {% endblock %}
7
+    {% block actions-submit %}
8
+    <button type="submit" class="button" title="{% translate "Run the selected action" %}" name="index" value="{{ action_index|default:0 }}">{% translate "Go" %}</button>
9
+    {% endblock %}
10
+    {% block actions-counter %}
11
+    {% if actions_selection_counter %}
12
+        <span class="action-counter" data-actions-icnt="{{ cl.result_list|length }}">{{ selection_note }}</span>
13
+        {% if cl.result_count != cl.result_list|length %}
14
+        <span class="all hidden">{{ selection_note_all }}</span>
15
+        <span class="question hidden">
16
+            <a href="#" title="{% translate "Click here to select the objects across all pages" %}">{% blocktranslate with cl.result_count as total_count %}Select all {{ total_count }} {{ module_name }}{% endblocktranslate %}</a>
17
+        </span>
18
+        <span class="clear hidden"><a href="#">{% translate "Clear selection" %}</a></span>
19
+        {% endif %}
20
+    {% endif %}
21
+    {% endblock %}
22
+  {% endblock %}
23
+</div>

+ 18 - 0
app/templates/admin/app_index.html

@@ -0,0 +1,18 @@
1
+{% extends "admin/index.html" %}
2
+{% load i18n %}
3
+
4
+{% block bodyclass %}{{ block.super }} app-{{ app_label }}{% endblock %}
5
+
6
+{% if not is_popup %}
7
+{% block breadcrumbs %}
8
+<div class="breadcrumbs">
9
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
10
+&rsaquo;
11
+{% for app in app_list %}
12
+{{ app.name }}
13
+{% endfor %}
14
+</div>
15
+{% endblock %}
16
+{% endif %}
17
+
18
+{% block sidebar %}{% endblock %}

+ 40 - 0
app/templates/admin/app_list.html

@@ -0,0 +1,40 @@
1
+{% load i18n %}
2
+
3
+{% if app_list %}
4
+  {% for app in app_list %}
5
+    <div class="app-{{ app.app_label }} module{% if app.app_url in request.path %} current-app{% endif %}">
6
+      <table>
7
+        <caption>
8
+          <a href="{{ app.app_url }}" class="section" title="{% blocktranslate with name=app.name %}Models in the {{ name }} application{% endblocktranslate %}">{{ app.name }}</a>
9
+        </caption>
10
+        {% for model in app.models %}
11
+          <tr class="model-{{ model.object_name|lower }}{% if model.admin_url in request.path %} current-model{% endif %}">
12
+            {% if model.admin_url %}
13
+              <th scope="row"><a href="{{ model.admin_url }}"{% if model.admin_url in request.path %} aria-current="page"{% endif %}>{{ model.name }}</a></th>
14
+            {% else %}
15
+              <th scope="row">{{ model.name }}</th>
16
+            {% endif %}
17
+
18
+            {% if model.add_url %}
19
+              <td><a href="{{ model.add_url }}" class="addlink">{% translate 'Add' %}</a></td>
20
+            {% else %}
21
+              <td></td>
22
+            {% endif %}
23
+
24
+            {% if model.admin_url and show_changelinks %}
25
+              {% if model.view_only %}
26
+                <td><a href="{{ model.admin_url }}" class="viewlink">{% translate 'View' %}</a></td>
27
+              {% else %}
28
+                <td><a href="{{ model.admin_url }}" class="changelink">{% translate 'Change' %}</a></td>
29
+              {% endif %}
30
+            {% elif show_changelinks %}
31
+              <td></td>
32
+            {% endif %}
33
+          </tr>
34
+        {% endfor %}
35
+      </table>
36
+    </div>
37
+  {% endfor %}
38
+{% else %}
39
+  <p>{% translate 'You don’t have permission to view or edit anything.' %}</p>
40
+{% endif %}

+ 10 - 0
app/templates/admin/auth/user/add_form.html

@@ -0,0 +1,10 @@
1
+{% extends "admin/change_form.html" %}
2
+{% load i18n %}
3
+
4
+{% block form_top %}
5
+  {% if not is_popup %}
6
+    <p>{% translate 'First, enter a username and password. Then, you’ll be able to edit more user options.' %}</p>
7
+  {% else %}
8
+    <p>{% translate "Enter a username and password." %}</p>
9
+  {% endif %}
10
+{% endblock %}

+ 57 - 0
app/templates/admin/auth/user/change_password.html

@@ -0,0 +1,57 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n static %}
3
+{% load admin_urls %}
4
+
5
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
6
+{% block bodyclass %}{{ block.super }} {{ opts.app_label }}-{{ opts.model_name }} change-form{% endblock %}
7
+{% if not is_popup %}
8
+{% block breadcrumbs %}
9
+<div class="breadcrumbs">
10
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
11
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
12
+&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
13
+&rsaquo; <a href="{% url opts|admin_urlname:'change' original.pk|admin_urlquote %}">{{ original|truncatewords:"18" }}</a>
14
+&rsaquo; {% translate 'Change password' %}
15
+</div>
16
+{% endblock %}
17
+{% endif %}
18
+{% block content %}<div id="content-main">
19
+<form{% if form_url %} action="{{ form_url }}"{% endif %} method="post" id="{{ opts.model_name }}_form">{% csrf_token %}{% block form_top %}{% endblock %}
20
+<input type="text" name="username" value="{{ original.get_username }}" class="hidden">
21
+<div>
22
+{% if is_popup %}<input type="hidden" name="_popup" value="1">{% endif %}
23
+{% if form.errors %}
24
+    <p class="errornote">
25
+    {% if form.errors.items|length == 1 %}{% translate "Please correct the error below." %}{% else %}{% translate "Please correct the errors below." %}{% endif %}
26
+    </p>
27
+{% endif %}
28
+
29
+<p>{% blocktranslate with username=original %}Enter a new password for the user <strong>{{ username }}</strong>.{% endblocktranslate %}</p>
30
+
31
+<fieldset class="module aligned">
32
+
33
+<div class="form-row">
34
+  {{ form.password1.errors }}
35
+  {{ form.password1.label_tag }} {{ form.password1 }}
36
+  {% if form.password1.help_text %}
37
+  <div class="help">{{ form.password1.help_text|safe }}</div>
38
+  {% endif %}
39
+</div>
40
+
41
+<div class="form-row">
42
+  {{ form.password2.errors }}
43
+  {{ form.password2.label_tag }} {{ form.password2 }}
44
+  {% if form.password2.help_text %}
45
+  <div class="help">{{ form.password2.help_text|safe }}</div>
46
+  {% endif %}
47
+</div>
48
+
49
+</fieldset>
50
+
51
+<div class="submit-row">
52
+<input type="submit" value="{% translate 'Change password' %}" class="default">
53
+</div>
54
+
55
+</div>
56
+</form></div>
57
+{% endblock %}

+ 104 - 0
app/templates/admin/base.html

@@ -0,0 +1,104 @@
1
+{% load i18n static %}<!DOCTYPE html>
2
+{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
3
+<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" dir="{{ LANGUAGE_BIDI|yesno:'rtl,ltr,auto' }}">
4
+<head>
5
+<title>{% block title %}{% endblock %}</title>
6
+<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}">
7
+{% if not is_popup and is_nav_sidebar_enabled %}
8
+  <link rel="stylesheet" type="text/css" href="{% static "admin/css/nav_sidebar.css" %}">
9
+  <script src="{% static 'admin/js/nav_sidebar.js' %}" defer></script>
10
+{% endif %}
11
+{% block extrastyle %}{% endblock %}
12
+{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}">{% endif %}
13
+{% block extrahead %}{% endblock %}
14
+{% block responsive %}
15
+    <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
16
+    <link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive.css" %}">
17
+    {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive_rtl.css" %}">{% endif %}
18
+{% endblock %}
19
+{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
20
+</head>
21
+{% load i18n %}
22
+
23
+<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}"
24
+  data-admin-utc-offset="{% now "Z" %}">
25
+
26
+<!-- Container -->
27
+<div id="container">
28
+
29
+    {% if not is_popup %}
30
+    <!-- Header -->
31
+    <div id="header">
32
+        <div id="branding">
33
+        {% block branding %}{% endblock %}
34
+        </div>
35
+        {% block usertools %}
36
+        {% if has_permission %}
37
+        <div id="user-tools">
38
+            {% block welcome-msg %}
39
+                {% translate 'Welcome,' %}
40
+                <strong>{% firstof user.get_short_name user.get_username %}</strong>.
41
+            {% endblock %}
42
+            {% block userlinks %}
43
+                {% if site_url %}
44
+                    <a href="{{ site_url }}">{% translate 'View site' %}</a> /
45
+                {% endif %}
46
+                {% if user.is_active and user.is_staff %}
47
+                    {% url 'django-admindocs-docroot' as docsroot %}
48
+                    {% if docsroot %}
49
+                        <a href="{{ docsroot }}">{% translate 'Documentation' %}</a> /
50
+                    {% endif %}
51
+                {% endif %}
52
+                {% if user.has_usable_password %}
53
+                <a href="{% url 'admin:password_change' %}">{% translate 'Change password' %}</a> /
54
+                {% endif %}
55
+                <a href="{% url 'admin:logout' %}">{% translate 'Log out' %}</a>
56
+            {% endblock %}
57
+        </div>
58
+        {% endif %}
59
+        {% endblock %}
60
+        {% block nav-global %}{% endblock %}
61
+    </div>
62
+    <!-- END Header -->
63
+    {% block breadcrumbs %}
64
+    <div class="breadcrumbs">
65
+    <a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
66
+    {% if title %} &rsaquo; {{ title }}{% endif %}
67
+    </div>
68
+    {% endblock %}
69
+    {% endif %}
70
+
71
+    <div class="main shifted" id="main">
72
+      {% if not is_popup and is_nav_sidebar_enabled %}
73
+        {% block nav-sidebar %}
74
+          {% include "admin/nav_sidebar.html" %}
75
+        {% endblock %}
76
+      {% endif %}
77
+      <div class="content">
78
+        {% block messages %}
79
+          {% if messages %}
80
+            <ul class="messagelist">{% for message in messages %}
81
+              <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message|capfirst }}</li>
82
+            {% endfor %}</ul>
83
+          {% endif %}
84
+        {% endblock messages %}
85
+        <!-- Content -->
86
+        <div id="content" class="{% block coltype %}colM{% endblock %}">
87
+          {% block pretitle %}{% endblock %}
88
+          {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
89
+          {% block content_subtitle %}{% if subtitle %}<h2>{{ subtitle }}</h2>{% endif %}{% endblock %}
90
+          {% block content %}
91
+            {% block object-tools %}{% endblock %}
92
+            {{ content }}
93
+          {% endblock %}
94
+          {% block sidebar %}{% endblock %}
95
+          <br class="clear">
96
+        </div>
97
+        <!-- END Content -->
98
+        {% block footer %}<div id="footer"></div>{% endblock %}
99
+      </div>
100
+    </div>
101
+</div>
102
+<!-- END Container -->
103
+</body>
104
+</html>

+ 9 - 0
app/templates/admin/base_site.html

@@ -0,0 +1,9 @@
1
+{% extends "admin/base.html" %}
2
+
3
+{% block title %}{% if subtitle %}{{ subtitle }} | {% endif %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
4
+
5
+{% block branding %}
6
+<h1 id="site-name"><a href="{% url 'admin:index' %}">ShaqFindBeds <!-- {{ site_header|default:_('ShaqFindBed administration') }} --></a></h1>
7
+{% endblock %}
8
+
9
+{% block nav-global %}{% endblock %}

+ 81 - 0
app/templates/admin/change_form.html

@@ -0,0 +1,81 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n admin_urls static admin_modify %}
3
+
4
+{% block extrahead %}{{ block.super }}
5
+<script src="{% url 'admin:jsi18n' %}"></script>
6
+{{ media }}
7
+{% endblock %}
8
+
9
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">{% endblock %}
10
+
11
+{% block coltype %}colM{% endblock %}
12
+
13
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
14
+
15
+{% if not is_popup %}
16
+{% block breadcrumbs %}
17
+<div class="breadcrumbs">
18
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
19
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
20
+&rsaquo; {% if has_view_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
21
+&rsaquo; {% if add %}{% blocktranslate with name=opts.verbose_name %}Add {{ name }}{% endblocktranslate %}{% else %}{{ original|truncatewords:"18" }}{% endif %}
22
+</div>
23
+{% endblock %}
24
+{% endif %}
25
+
26
+{% block content %}<div id="content-main">
27
+{% block object-tools %}
28
+{% if change %}{% if not is_popup %}
29
+  <ul class="object-tools">
30
+    {% block object-tools-items %}
31
+      {% change_form_object_tools %}
32
+    {% endblock %}
33
+  </ul>
34
+{% endif %}{% endif %}
35
+{% endblock %}
36
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}{% if form_url %}action="{{ form_url }}" {% endif %}method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
37
+<div>
38
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1">{% endif %}
39
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">{% endif %}
40
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
41
+{% if errors %}
42
+    <p class="errornote">
43
+    {% if errors|length == 1 %}{% translate "Please correct the error below." %}{% else %}{% translate "Please correct the errors below." %}{% endif %}
44
+    </p>
45
+    {{ adminform.form.non_field_errors }}
46
+{% endif %}
47
+
48
+{% block field_sets %}
49
+{% for fieldset in adminform %}
50
+  {% include "admin/includes/fieldset.html" %}
51
+{% endfor %}
52
+{% endblock %}
53
+
54
+{% block after_field_sets %}{% endblock %}
55
+
56
+{% block inline_field_sets %}
57
+{% for inline_admin_formset in inline_admin_formsets %}
58
+    {% include inline_admin_formset.opts.template %}
59
+{% endfor %}
60
+{% endblock %}
61
+
62
+{% block after_related_objects %}{% endblock %}
63
+
64
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
65
+
66
+{% block admin_change_form_document_ready %}
67
+    <script id="django-admin-form-add-constants"
68
+            src="{% static 'admin/js/change_form.js' %}"
69
+            {% if adminform and add %}
70
+                data-model-name="{{ opts.model_name }}"
71
+            {% endif %}
72
+            async>
73
+    </script>
74
+{% endblock %}
75
+
76
+{# JavaScript for prepopulated fields #}
77
+{% prepopulated_fields_js %}
78
+
79
+</div>
80
+</form></div>
81
+{% endblock %}

+ 8 - 0
app/templates/admin/change_form_object_tools.html

@@ -0,0 +1,8 @@
1
+{% load i18n admin_urls %}
2
+{% block object-tools-items %}
3
+<li>
4
+    {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
5
+    <a href="{% add_preserved_filters history_url %}" class="historylink">{% translate "History" %}</a>
6
+</li>
7
+{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% translate "View on site" %}</a></li>{% endif %}
8
+{% endblock %}

+ 86 - 0
app/templates/admin/change_list.html

@@ -0,0 +1,86 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n admin_urls static admin_list %}
3
+
4
+{% block extrastyle %}
5
+  {{ block.super }}
6
+  <link rel="stylesheet" type="text/css" href="{% static "admin/css/changelists.css" %}">
7
+  {% if cl.formset %}
8
+    <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
9
+  {% endif %}
10
+  {% if cl.formset or action_form %}
11
+    <script src="{% url 'admin:jsi18n' %}"></script>
12
+  {% endif %}
13
+  {{ media.css }}
14
+  {% if not actions_on_top and not actions_on_bottom %}
15
+    <style>
16
+      #changelist table thead th:first-child {width: inherit}
17
+    </style>
18
+  {% endif %}
19
+{% endblock %}
20
+
21
+{% block extrahead %}
22
+{{ block.super }}
23
+{{ media.js }}
24
+{% endblock %}
25
+
26
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-list{% endblock %}
27
+
28
+{% if not is_popup %}
29
+{% block breadcrumbs %}
30
+<div class="breadcrumbs">
31
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
32
+&rsaquo; <a href="{% url 'admin:app_list' app_label=cl.opts.app_label %}">{{ cl.opts.app_config.verbose_name }}</a>
33
+&rsaquo; {{ cl.opts.verbose_name_plural|capfirst }}
34
+</div>
35
+{% endblock %}
36
+{% endif %}
37
+
38
+{% block coltype %}{% endblock %}
39
+
40
+{% block content %}
41
+  <div id="content-main">
42
+    {% block object-tools %}
43
+        <ul class="object-tools">
44
+          {% block object-tools-items %}
45
+            {% change_list_object_tools %}
46
+          {% endblock %}
47
+        </ul>
48
+    {% endblock %}
49
+    {% if cl.formset and cl.formset.errors %}
50
+        <p class="errornote">
51
+        {% if cl.formset.total_error_count == 1 %}{% translate "Please correct the error below." %}{% else %}{% translate "Please correct the errors below." %}{% endif %}
52
+        </p>
53
+        {{ cl.formset.non_form_errors }}
54
+    {% endif %}
55
+    <div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist">
56
+      <div class="changelist-form-container">
57
+        {% block search %}{% search_form cl %}{% endblock %}
58
+        {% block date_hierarchy %}{% if cl.date_hierarchy %}{% date_hierarchy cl %}{% endif %}{% endblock %}
59
+
60
+        <form id="changelist-form" method="post"{% if cl.formset and cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %} novalidate>{% csrf_token %}
61
+        {% if cl.formset %}
62
+          <div>{{ cl.formset.management_form }}</div>
63
+        {% endif %}
64
+
65
+        {% block result_list %}
66
+          {% if action_form and actions_on_top and cl.show_admin_actions %}{% admin_actions %}{% endif %}
67
+          {% result_list cl %}
68
+          {% if action_form and actions_on_bottom and cl.show_admin_actions %}{% admin_actions %}{% endif %}
69
+        {% endblock %}
70
+        {% block pagination %}{% pagination cl %}{% endblock %}
71
+        </form>
72
+      </div>
73
+      {% block filters %}
74
+        {% if cl.has_filters %}
75
+          <div id="changelist-filter">
76
+            <h2>{% translate 'Filter' %}</h2>
77
+            {% if cl.has_active_filters %}<h3 id="changelist-filter-clear">
78
+              <a href="{{ cl.clear_all_filters_qs }}">&#10006; {% translate "Clear all filters" %}</a>
79
+            </h3>{% endif %}
80
+            {% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %}
81
+          </div>
82
+        {% endif %}
83
+      {% endblock %}
84
+    </div>
85
+  </div>
86
+{% endblock %}

+ 12 - 0
app/templates/admin/change_list_object_tools.html

@@ -0,0 +1,12 @@
1
+{% load i18n admin_urls %}
2
+
3
+{% block object-tools-items %}
4
+  {% if has_add_permission %}
5
+  <li>
6
+    {% url cl.opts|admin_urlname:'add' as add_url %}
7
+    <a href="{% add_preserved_filters add_url is_popup to_field %}" class="addlink">
8
+      {% blocktranslate with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktranslate %}
9
+    </a>
10
+  </li>
11
+  {% endif %}
12
+{% endblock %}

+ 38 - 0
app/templates/admin/change_list_results.html

@@ -0,0 +1,38 @@
1
+{% load i18n static %}
2
+{% if result_hidden_fields %}
3
+<div class="hiddenfields">{# DIV for HTML validation #}
4
+{% for item in result_hidden_fields %}{{ item }}{% endfor %}
5
+</div>
6
+{% endif %}
7
+{% if results %}
8
+<div class="results">
9
+<table id="result_list">
10
+<thead>
11
+<tr>
12
+{% for header in result_headers %}
13
+<th scope="col"{{ header.class_attrib }}>
14
+   {% if header.sortable %}
15
+     {% if header.sort_priority > 0 %}
16
+       <div class="sortoptions">
17
+         <a class="sortremove" href="{{ header.url_remove }}" title="{% translate "Remove from sorting" %}"></a>
18
+         {% if num_sorted_fields > 1 %}<span class="sortpriority" title="{% blocktranslate with priority_number=header.sort_priority %}Sorting priority: {{ priority_number }}{% endblocktranslate %}">{{ header.sort_priority }}</span>{% endif %}
19
+         <a href="{{ header.url_toggle }}" class="toggle {% if header.ascending %}ascending{% else %}descending{% endif %}" title="{% translate "Toggle sorting" %}"></a>
20
+       </div>
21
+     {% endif %}
22
+   {% endif %}
23
+   <div class="text">{% if header.sortable %}<a href="{{ header.url_primary }}">{{ header.text|capfirst }}</a>{% else %}<span>{{ header.text|capfirst }}</span>{% endif %}</div>
24
+   <div class="clear"></div>
25
+</th>{% endfor %}
26
+</tr>
27
+</thead>
28
+<tbody>
29
+{% for result in results %}
30
+{% if result.form and result.form.non_field_errors %}
31
+    <tr><td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td></tr>
32
+{% endif %}
33
+<tr>{% for item in result %}{{ item }}{% endfor %}</tr>
34
+{% endfor %}
35
+</tbody>
36
+</table>
37
+</div>
38
+{% endif %}

+ 16 - 0
app/templates/admin/date_hierarchy.html

@@ -0,0 +1,16 @@
1
+{% if show %}
2
+<div class="xfull">
3
+<ul class="toplinks">
4
+{% block date-hierarchy-toplinks %}
5
+{% block date-hierarchy-back %}
6
+{% if back %}<li class="date-back"><a href="{{ back.link }}">&lsaquo; {{ back.title }}</a></li>{% endif %}
7
+{% endblock %}
8
+{% block date-hierarchy-choices %}
9
+{% for choice in choices %}
10
+<li> {% if choice.link %}<a href="{{ choice.link }}">{% endif %}{{ choice.title }}{% if choice.link %}</a>{% endif %}</li>
11
+{% endfor %}
12
+{% endblock %}
13
+{% endblock %}
14
+</ul><br class="clear">
15
+</div>
16
+{% endif %}

+ 52 - 0
app/templates/admin/delete_confirmation.html

@@ -0,0 +1,52 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n admin_urls static %}
3
+
4
+{% block extrahead %}
5
+    {{ block.super }}
6
+    {{ media }}
7
+    <script src="{% static 'admin/js/cancel.js' %}" async></script>
8
+{% endblock %}
9
+
10
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation{% endblock %}
11
+
12
+{% block breadcrumbs %}
13
+<div class="breadcrumbs">
14
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
15
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
16
+&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
17
+&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
18
+&rsaquo; {% translate 'Delete' %}
19
+</div>
20
+{% endblock %}
21
+
22
+{% block content %}
23
+{% if perms_lacking %}
24
+    <p>{% blocktranslate with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}</p>
25
+    <ul>
26
+    {% for obj in perms_lacking %}
27
+        <li>{{ obj }}</li>
28
+    {% endfor %}
29
+    </ul>
30
+{% elif protected %}
31
+    <p>{% blocktranslate with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktranslate %}</p>
32
+    <ul>
33
+    {% for obj in protected %}
34
+        <li>{{ obj }}</li>
35
+    {% endfor %}
36
+    </ul>
37
+{% else %}
38
+    <p>{% blocktranslate with escaped_object=object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktranslate %}</p>
39
+    {% include "admin/includes/object_delete_summary.html" %}
40
+    <h2>{% translate "Objects" %}</h2>
41
+    <ul>{{ deleted_objects|unordered_list }}</ul>
42
+    <form method="post">{% csrf_token %}
43
+    <div>
44
+    <input type="hidden" name="post" value="yes">
45
+    {% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1">{% endif %}
46
+    {% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">{% endif %}
47
+    <input type="submit" value="{% translate 'Yes, I’m sure' %}">
48
+    <a href="#" class="button cancel-link">{% translate "No, take me back" %}</a>
49
+    </div>
50
+    </form>
51
+{% endif %}
52
+{% endblock %}

+ 55 - 0
app/templates/admin/delete_selected_confirmation.html

@@ -0,0 +1,55 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n l10n admin_urls static %}
3
+
4
+{% block extrahead %}
5
+    {{ block.super }}
6
+    {{ media }}
7
+    <script src="{% static 'admin/js/cancel.js' %}" async></script>
8
+{% endblock %}
9
+
10
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation delete-selected-confirmation{% endblock %}
11
+
12
+{% block breadcrumbs %}
13
+<div class="breadcrumbs">
14
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
15
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
16
+&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
17
+&rsaquo; {% translate 'Delete multiple objects' %}
18
+</div>
19
+{% endblock %}
20
+
21
+{% block content %}
22
+{% if perms_lacking %}
23
+    <p>{% blocktranslate %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}</p>
24
+    <ul>
25
+    {% for obj in perms_lacking %}
26
+        <li>{{ obj }}</li>
27
+    {% endfor %}
28
+    </ul>
29
+{% elif protected %}
30
+    <p>{% blocktranslate %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktranslate %}</p>
31
+    <ul>
32
+    {% for obj in protected %}
33
+        <li>{{ obj }}</li>
34
+    {% endfor %}
35
+    </ul>
36
+{% else %}
37
+    <p>{% blocktranslate %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktranslate %}</p>
38
+    {% include "admin/includes/object_delete_summary.html" %}
39
+    <h2>{% translate "Objects" %}</h2>
40
+    {% for deletable_object in deletable_objects %}
41
+        <ul>{{ deletable_object|unordered_list }}</ul>
42
+    {% endfor %}
43
+    <form method="post">{% csrf_token %}
44
+    <div>
45
+    {% for obj in queryset %}
46
+    <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}">
47
+    {% endfor %}
48
+    <input type="hidden" name="action" value="delete_selected">
49
+    <input type="hidden" name="post" value="yes">
50
+    <input type="submit" value="{% translate 'Yes, I’m sure' %}">
51
+    <a href="#" class="button cancel-link">{% translate "No, take me back" %}</a>
52
+    </div>
53
+    </form>
54
+{% endif %}
55
+{% endblock %}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 29 - 0
app/templates/admin/edit_inline/stacked.html


+ 79 - 0
app/templates/admin/edit_inline/tabular.html

@@ -0,0 +1,79 @@
1
+{% load i18n admin_urls static admin_modify %}
2
+<div class="js-inline-admin-formset inline-group" id="{{ inline_admin_formset.formset.prefix }}-group"
3
+     data-inline-type="tabular"
4
+     data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
5
+  <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
6
+{{ inline_admin_formset.formset.management_form }}
7
+<fieldset class="module {{ inline_admin_formset.classes }}">
8
+   {% if inline_admin_formset.formset.max_num == 1 %}
9
+     <h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
10
+   {% else %}
11
+     <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
12
+   {% endif %}
13
+   {{ inline_admin_formset.formset.non_form_errors }}
14
+   <table>
15
+     <thead><tr>
16
+       <th class="original"></th>
17
+     {% for field in inline_admin_formset.fields %}
18
+       {% if not field.widget.is_hidden %}
19
+         <th class="column-{{ field.name }}{% if field.required %} required{% endif %}">{{ field.label|capfirst }}
20
+         {% if field.help_text %}<img src="{% static "admin/img/icon-unknown.svg" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}">{% endif %}
21
+         </th>
22
+       {% endif %}
23
+     {% endfor %}
24
+     {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}<th>{% translate "Delete?" %}</th>{% endif %}
25
+     </tr></thead>
26
+
27
+     <tbody>
28
+     {% for inline_admin_form in inline_admin_formset %}
29
+        {% if inline_admin_form.form.non_field_errors %}
30
+        <tr class="row-form-errors"><td colspan="{{ inline_admin_form|cell_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
31
+        {% endif %}
32
+        <tr class="form-row {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last and inline_admin_formset.has_add_permission %} empty-form{% endif %}"
33
+             id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
34
+        <td class="original">
35
+          {% if inline_admin_form.original or inline_admin_form.show_url %}<p>
36
+          {% if inline_admin_form.original %}
37
+          {{ inline_admin_form.original }}
38
+          {% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}<a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}" class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %}">{% if inline_admin_formset.has_change_permission %}{% translate "Change" %}{% else %}{% translate "View" %}{% endif %}</a>{% endif %}
39
+          {% endif %}
40
+          {% if inline_admin_form.show_url %}<a href="{{ inline_admin_form.absolute_url }}">{% translate "View on site" %}</a>{% endif %}
41
+            </p>{% endif %}
42
+          {% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
43
+          {% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %}
44
+          {% spaceless %}
45
+          {% for fieldset in inline_admin_form %}
46
+            {% for line in fieldset %}
47
+              {% for field in line %}
48
+                {% if not field.is_readonly and field.field.is_hidden %}{{ field.field }}{% endif %}
49
+              {% endfor %}
50
+            {% endfor %}
51
+          {% endfor %}
52
+          {% endspaceless %}
53
+        </td>
54
+        {% for fieldset in inline_admin_form %}
55
+          {% for line in fieldset %}
56
+            {% for field in line %}
57
+              {% if field.is_readonly or not field.field.is_hidden %}
58
+              <td{% if field.field.name %} class="field-{{ field.field.name }}"{% endif %}>
59
+              {% if field.is_readonly %}
60
+                  <p>{{ field.contents }}</p>
61
+              {% else %}
62
+                  {{ field.field.errors.as_ul }}
63
+                  {{ field.field }}
64
+              {% endif %}
65
+              </td>
66
+              {% endif %}
67
+            {% endfor %}
68
+          {% endfor %}
69
+        {% endfor %}
70
+        {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}
71
+          <td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
72
+        {% endif %}
73
+        </tr>
74
+     {% endfor %}
75
+     </tbody>
76
+   </table>
77
+</fieldset>
78
+  </div>
79
+</div>

+ 8 - 0
app/templates/admin/filter.html

@@ -0,0 +1,8 @@
1
+{% load i18n %}
2
+<h3>{% blocktranslate with filter_title=title %} By {{ filter_title }} {% endblocktranslate %}</h3>
3
+<ul>
4
+{% for choice in choices %}
5
+    <li{% if choice.selected %} class="selected"{% endif %}>
6
+    <a href="{{ choice.query_string|iriencode }}" title="{{ choice.display }}">{{ choice.display }}</a></li>
7
+{% endfor %}
8
+</ul>

+ 29 - 0
app/templates/admin/includes/fieldset.html

@@ -0,0 +1,29 @@
1
+<fieldset class="module aligned {{ fieldset.classes }}">
2
+    {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
3
+    {% if fieldset.description %}
4
+        <div class="description">{{ fieldset.description|safe }}</div>
5
+    {% endif %}
6
+    {% for line in fieldset %}
7
+        <div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
8
+            {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
9
+            {% for field in line %}
10
+                <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
11
+                    {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
12
+                    {% if field.is_checkbox %}
13
+                        {{ field.field }}{{ field.label_tag }}
14
+                    {% else %}
15
+                        {{ field.label_tag }}
16
+                        {% if field.is_readonly %}
17
+                            <div class="readonly">{{ field.contents }}</div>
18
+                        {% else %}
19
+                            {{ field.field }}
20
+                        {% endif %}
21
+                    {% endif %}
22
+                    {% if field.field.help_text %}
23
+                        <div class="help">{{ field.field.help_text|safe }}</div>
24
+                    {% endif %}
25
+                </div>
26
+            {% endfor %}
27
+        </div>
28
+    {% endfor %}
29
+</fieldset>

+ 7 - 0
app/templates/admin/includes/object_delete_summary.html

@@ -0,0 +1,7 @@
1
+{% load i18n %}
2
+<h2>{% translate "Summary" %}</h2>
3
+<ul>
4
+    {% for model_name, object_count in model_count %}
5
+    <li>{{ model_name|capfirst }}: {{ object_count }}</li>
6
+    {% endfor %}
7
+</ul>

+ 50 - 0
app/templates/admin/index.html

@@ -0,0 +1,50 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n static %}
3
+
4
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}">{% endblock %}
5
+
6
+{% block coltype %}colMS{% endblock %}
7
+
8
+{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
9
+
10
+{% block breadcrumbs %}{% endblock %}
11
+
12
+{% block nav-sidebar %}{% endblock %}
13
+
14
+{% block content %}
15
+<div id="content-main">
16
+  {% include "admin/app_list.html" with app_list=app_list show_changelinks=True %}
17
+</div>
18
+{% endblock %}
19
+
20
+{% block sidebar %}
21
+<div id="content-related">
22
+    <div class="module" id="recent-actions-module">
23
+        <h2>{% translate 'Recent actions' %}</h2>
24
+        <h3>{% translate 'My actions' %}</h3>
25
+            {% load log %}
26
+            {% get_admin_log 10 as admin_log for_user user %}
27
+            {% if not admin_log %}
28
+            <p>{% translate 'None available' %}</p>
29
+            {% else %}
30
+            <ul class="actionlist">
31
+            {% for entry in admin_log %}
32
+            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">
33
+                {% if entry.is_deletion or not entry.get_admin_url %}
34
+                    {{ entry.object_repr }}
35
+                {% else %}
36
+                    <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
37
+                {% endif %}
38
+                <br>
39
+                {% if entry.content_type %}
40
+                    <span class="mini quiet">{% filter capfirst %}{{ entry.content_type.name }}{% endfilter %}</span>
41
+                {% else %}
42
+                    <span class="mini quiet">{% translate 'Unknown content' %}</span>
43
+                {% endif %}
44
+            </li>
45
+            {% endfor %}
46
+            </ul>
47
+            {% endif %}
48
+    </div>
49
+</div>
50
+{% endblock %}

+ 13 - 0
app/templates/admin/invalid_setup.html

@@ -0,0 +1,13 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n %}
3
+
4
+{% block breadcrumbs %}
5
+<div class="breadcrumbs">
6
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
7
+&rsaquo; {{ title }}
8
+</div>
9
+{% endblock %}
10
+
11
+{% block content %}
12
+<p>{% translate 'Something’s wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user.' %}</p>
13
+{% endblock %}

+ 68 - 0
app/templates/admin/login.html

@@ -0,0 +1,68 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n static %}
3
+
4
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}">
5
+{{ form.media }}
6
+{% endblock %}
7
+
8
+{% block bodyclass %}{{ block.super }} login{% endblock %}
9
+
10
+{% block usertools %}{% endblock %}
11
+
12
+{% block nav-global %}{% endblock %}
13
+
14
+{% block nav-sidebar %}{% endblock %}
15
+
16
+{% block content_title %}{% endblock %}
17
+
18
+{% block breadcrumbs %}{% endblock %}
19
+
20
+{% block content %}
21
+{% if form.errors and not form.non_field_errors %}
22
+<p class="errornote">
23
+{% if form.errors.items|length == 1 %}{% translate "Please correct the error below." %}{% else %}{% translate "Please correct the errors below." %}{% endif %}
24
+</p>
25
+{% endif %}
26
+
27
+{% if form.non_field_errors %}
28
+{% for error in form.non_field_errors %}
29
+<p class="errornote">
30
+    {{ error }}
31
+</p>
32
+{% endfor %}
33
+{% endif %}
34
+
35
+<div id="content-main">
36
+
37
+{% if user.is_authenticated %}
38
+<p class="errornote">
39
+{% blocktranslate trimmed %}
40
+    You are authenticated as {{ username }}, but are not authorized to
41
+    access this page. Would you like to login to a different account?
42
+{% endblocktranslate %}
43
+</p>
44
+{% endif %}
45
+
46
+<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
47
+  <div class="form-row">
48
+    {{ form.username.errors }}
49
+    {{ form.username.label_tag }} {{ form.username }}
50
+  </div>
51
+  <div class="form-row">
52
+    {{ form.password.errors }}
53
+    {{ form.password.label_tag }} {{ form.password }}
54
+    <input type="hidden" name="next" value="{{ next }}">
55
+  </div>
56
+  {% url 'admin_password_reset' as password_reset_url %}
57
+  {% if password_reset_url %}
58
+  <div class="password-reset-link">
59
+    <a href="{{ password_reset_url }}">{% translate 'Forgotten your password or username?' %}</a>
60
+  </div>
61
+  {% endif %}
62
+  <div class="submit-row">
63
+    <input type="submit" value="{% translate 'Log in' %}">
64
+  </div>
65
+</form>
66
+
67
+</div>
68
+{% endblock %}

+ 5 - 0
app/templates/admin/nav_sidebar.html

@@ -0,0 +1,5 @@
1
+{% load i18n %}
2
+<button class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar" aria-label="{% translate 'Toggle navigation' %}"></button>
3
+<nav class="sticky" id="nav-sidebar">
4
+  {% include 'admin/app_list.html' with app_list=available_apps show_changelinks=False %}
5
+</nav>

+ 42 - 0
app/templates/admin/object_history.html

@@ -0,0 +1,42 @@
1
+{% extends "admin/base_site.html" %}
2
+{% load i18n admin_urls %}
3
+
4
+{% block breadcrumbs %}
5
+<div class="breadcrumbs">
6
+<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
7
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
8
+&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ module_name }}</a>
9
+&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
10
+&rsaquo; {% translate 'History' %}
11
+</div>
12
+{% endblock %}
13
+
14
+{% block content %}
15
+<div id="content-main">
16
+<div class="module">
17
+
18
+{% if action_list %}
19
+    <table id="change-history">
20
+        <thead>
21
+        <tr>
22
+            <th scope="col">{% translate 'Date/time' %}</th>
23
+            <th scope="col">{% translate 'User' %}</th>
24
+            <th scope="col">{% translate 'Action' %}</th>
25
+        </tr>
26
+        </thead>
27
+        <tbody>
28
+        {% for action in action_list %}
29
+        <tr>
30
+            <th scope="row">{{ action.action_time|date:"DATETIME_FORMAT" }}</th>
31
+            <td>{{ action.user.get_username }}{% if action.user.get_full_name %} ({{ action.user.get_full_name }}){% endif %}</td>
32
+            <td>{{ action.get_change_message }}</td>
33
+        </tr>
34
+        {% endfor %}
35
+        </tbody>
36
+    </table>
37
+{% else %}
38
+    <p>{% translate 'This object doesn’t have a change history. It probably wasn’t added via this admin site.' %}</p>
39
+{% endif %}
40
+</div>
41
+</div>
42
+{% endblock %}

+ 12 - 0
app/templates/admin/pagination.html

@@ -0,0 +1,12 @@
1
+{% load admin_list %}
2
+{% load i18n %}
3
+<p class="paginator">
4
+{% if pagination_required %}
5
+{% for i in page_range %}
6
+    {% paginator_number cl i %}
7
+{% endfor %}
8
+{% endif %}
9
+{{ cl.result_count }} {% if cl.result_count == 1 %}{{ cl.opts.verbose_name }}{% else %}{{ cl.opts.verbose_name_plural }}{% endif %}
10
+{% if show_all_url %}<a href="{{ show_all_url }}" class="showall">{% translate 'Show all' %}</a>{% endif %}
11
+{% if cl.formset and cl.result_count %}<input type="submit" name="_save" class="default" value="{% translate 'Save' %}">{% endif %}
12
+</p>

+ 10 - 0
app/templates/admin/popup_response.html

@@ -0,0 +1,10 @@
1
+{% load i18n static %}<!DOCTYPE html>
2
+<html>
3
+  <head><title>{% translate 'Popup closing…' %}</title></head>
4
+  <body>
5
+    <script id="django-admin-popup-response-constants"
6
+            src="{% static "admin/js/popup_response.js" %}"
7
+            data-popup-response="{{ popup_response_data }}">
8
+    </script>
9
+  </body>
10
+</html>

+ 0 - 0
app/templates/admin/prepopulated_fields_js.html


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels

tum/whitesports - Gogs: Simplico Git Service

説明なし

currency-info.php 33KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953
  1. <?php
  2. /**
  3. * Currency formatting information
  4. *
  5. * @package WooCommerce\i18n
  6. * @version 5.7.0
  7. */
  8. defined( 'ABSPATH' ) || exit;
  9. $global_formats = array(
  10. 'ls_comma_dot_ltr' => array(
  11. 'thousand_sep' => '.',
  12. 'decimal_sep' => ',',
  13. 'direction' => 'ltr',
  14. 'currency_pos' => 'left_space',
  15. ),
  16. 'ls_comma_dot_rtl' => array(
  17. 'thousand_sep' => '.',
  18. 'decimal_sep' => ',',
  19. 'direction' => 'rtl',
  20. 'currency_pos' => 'left_space',
  21. ),
  22. 'ls_comma_space_ltr' => array(
  23. 'thousand_sep' => ' ',
  24. 'decimal_sep' => ',',
  25. 'direction' => 'ltr',
  26. 'currency_pos' => 'left_space',
  27. ),
  28. 'ls_dot_apos_ltr' => array(
  29. 'thousand_sep' => '\'',
  30. 'decimal_sep' => '.',
  31. 'direction' => 'ltr',
  32. 'currency_pos' => 'left_space',
  33. ),
  34. 'ls_dot_comma_ltr' => array(
  35. 'thousand_sep' => ',',
  36. 'decimal_sep' => '.',
  37. 'direction' => 'ltr',
  38. 'currency_pos' => 'left_space',
  39. ),
  40. 'ls_dot_comma_rtl' => array(
  41. 'thousand_sep' => ',',
  42. 'decimal_sep' => '.',
  43. 'direction' => 'rtl',
  44. 'currency_pos' => 'left_space',
  45. ),
  46. 'lx_comma_dot_ltr' => array(
  47. 'thousand_sep' => '.',
  48. 'decimal_sep' => ',',
  49. 'direction' => 'ltr',
  50. 'currency_pos' => 'left',
  51. ),
  52. 'lx_comma_dot_rtl' => array(
  53. 'thousand_sep' => '.',
  54. 'decimal_sep' => ',',
  55. 'direction' => 'rtl',
  56. 'currency_pos' => 'left',
  57. ),
  58. 'lx_comma_space_ltr' => array(
  59. 'thousand_sep' => ' ',
  60. 'decimal_sep' => ',',
  61. 'direction' => 'ltr',
  62. 'currency_pos' => 'left',
  63. ),
  64. 'lx_dot_comma_ltr' => array(
  65. 'thousand_sep' => ',',
  66. 'decimal_sep' => '.',
  67. 'direction' => 'ltr',
  68. 'currency_pos' => 'left',
  69. ),
  70. 'lx_dot_space_ltr' => array(
  71. 'thousand_sep' => ' ',
  72. 'decimal_sep' => '.',
  73. 'direction' => 'ltr',
  74. 'currency_pos' => 'left',
  75. ),
  76. 'rs_comma_dot_ltr' => array(
  77. 'thousand_sep' => '.',
  78. 'decimal_sep' => ',',
  79. 'direction' => 'ltr',
  80. 'currency_pos' => 'right_space',
  81. ),
  82. 'rs_comma_dot_rtl' => array(
  83. 'thousand_sep' => '.',
  84. 'decimal_sep' => ',',
  85. 'direction' => 'rtl',
  86. 'currency_pos' => 'right_space',
  87. ),
  88. 'rs_comma_space_ltr' => array(
  89. 'thousand_sep' => ' ',
  90. 'decimal_sep' => ',',
  91. 'direction' => 'ltr',
  92. 'currency_pos' => 'right_space',
  93. ),
  94. 'rs_dot_apos_ltr' => array(
  95. 'thousand_sep' => '\'',
  96. 'decimal_sep' => '.',
  97. 'direction' => 'ltr',
  98. 'currency_pos' => 'right_space',
  99. ),
  100. 'rs_dot_comma_ltr' => array(
  101. 'thousand_sep' => ',',
  102. 'decimal_sep' => '.',
  103. 'direction' => 'ltr',
  104. 'currency_pos' => 'right_space',
  105. ),
  106. 'rs_dot_comma_rtl' => array(
  107. 'thousand_sep' => ',',
  108. 'decimal_sep' => '.',
  109. 'direction' => 'rtl',
  110. 'currency_pos' => 'right_space',
  111. ),
  112. 'rx_comma_dot_ltr' => array(
  113. 'thousand_sep' => '.',
  114. 'decimal_sep' => ',',
  115. 'direction' => 'ltr',
  116. 'currency_pos' => 'right',
  117. ),
  118. 'rx_dot_comma_ltr' => array(
  119. 'thousand_sep' => ',',
  120. 'decimal_sep' => '.',
  121. 'direction' => 'ltr',
  122. 'currency_pos' => 'right',
  123. ),
  124. );
  125. return array(
  126. 'AED' => array(
  127. 'ar_AE' => $global_formats['rs_comma_dot_rtl'],
  128. 'default' => $global_formats['rs_comma_dot_rtl'],
  129. ),
  130. 'AFN' => array(
  131. 'fa_AF' => $global_formats['ls_comma_dot_rtl'],
  132. 'default' => $global_formats['ls_comma_dot_rtl'],
  133. 'ps_AF' => $global_formats['rs_comma_dot_rtl'],
  134. 'uz_AF' => $global_formats['rs_comma_space_ltr'],
  135. ),
  136. 'ALL' => array(
  137. 'default' => $global_formats['rs_comma_space_ltr'],
  138. 'sq_AL' => $global_formats['rs_comma_space_ltr'],
  139. ),
  140. 'AMD' => array(
  141. 'default' => $global_formats['rs_comma_space_ltr'],
  142. 'hy_AM' => $global_formats['rs_comma_space_ltr'],
  143. ),
  144. 'ANG' => array(
  145. 'en_SX' => $global_formats['lx_dot_comma_ltr'],
  146. 'nl_CW' => $global_formats['ls_comma_dot_ltr'],
  147. 'nl_SX' => $global_formats['ls_comma_dot_ltr'],
  148. 'default' => $global_formats['ls_comma_dot_ltr'],
  149. ),
  150. 'AOA' => array(
  151. 'pt_AO' => $global_formats['rs_comma_space_ltr'],
  152. 'default' => $global_formats['rs_comma_space_ltr'],
  153. ),
  154. 'ARS' => array(
  155. 'es_AR' => $global_formats['ls_comma_dot_ltr'],
  156. 'default' => $global_formats['ls_comma_dot_ltr'],
  157. ),
  158. 'AUD' => array(
  159. 'en_AU' => $global_formats['lx_dot_comma_ltr'],
  160. 'en_CC' => $global_formats['lx_dot_comma_ltr'],
  161. 'en_CX' => $global_formats['lx_dot_comma_ltr'],
  162. 'en_KI' => $global_formats['lx_dot_comma_ltr'],
  163. 'en_NF' => $global_formats['lx_dot_comma_ltr'],
  164. 'en_NR' => $global_formats['lx_dot_comma_ltr'],
  165. 'en_TV' => $global_formats['lx_dot_comma_ltr'],
  166. 'default' => $global_formats['lx_dot_comma_ltr'],
  167. ),
  168. 'AWG' => array(
  169. 'nl_AW' => $global_formats['ls_comma_dot_ltr'],
  170. 'default' => $global_formats['ls_comma_dot_ltr'],
  171. ),
  172. 'AZN' => array(
  173. 'default' => $global_formats['rs_comma_dot_ltr'],
  174. 'az_AZ' => $global_formats['rs_comma_dot_ltr'],
  175. ),
  176. 'BAM' => array(
  177. 'hr_BA' => $global_formats['rs_comma_dot_ltr'],
  178. 'sr_Latn_BA' => $global_formats['rs_comma_dot_ltr'],
  179. 'default' => $global_formats['rs_comma_dot_ltr'],
  180. 'bs_BA' => $global_formats['rs_comma_dot_ltr'],
  181. ),
  182. 'BBD' => array(
  183. 'en_BB' => $global_formats['lx_dot_comma_ltr'],
  184. 'default' => $global_formats['lx_dot_comma_ltr'],
  185. ),
  186. 'BDT' => array(
  187. 'default' => $global_formats['rx_dot_comma_ltr'],
  188. 'bn_BD' => $global_formats['rx_dot_comma_ltr'],
  189. ),
  190. 'BGN' => array(
  191. 'default' => $global_formats['rs_comma_space_ltr'],
  192. 'bg_BG' => $global_formats['rs_comma_space_ltr'],
  193. ),
  194. 'BHD' => array(
  195. 'ar_BH' => $global_formats['rs_comma_dot_rtl'],
  196. 'default' => $global_formats['rs_comma_dot_rtl'],
  197. ),
  198. 'BIF' => array(
  199. 'en_BI' => $global_formats['lx_dot_comma_ltr'],
  200. 'fr_BI' => $global_formats['rs_comma_space_ltr'],
  201. 'default' => $global_formats['lx_dot_comma_ltr'],
  202. 'rn_BI' => $global_formats['rx_comma_dot_ltr'],
  203. ),
  204. 'BMD' => array(
  205. 'en_BM' => $global_formats['lx_dot_comma_ltr'],
  206. 'default' => $global_formats['lx_dot_comma_ltr'],
  207. ),
  208. 'BND' => array(
  209. 'ms_BN' => $global_formats['ls_comma_dot_ltr'],
  210. 'default' => $global_formats['ls_comma_dot_ltr'],
  211. ),
  212. 'BOB' => array(
  213. 'es_BO' => $global_formats['lx_comma_dot_ltr'],
  214. 'qu_BO' => $global_formats['ls_comma_dot_ltr'],
  215. 'default' => $global_formats['lx_comma_dot_ltr'],
  216. ),
  217. 'BRL' => array(
  218. 'default' => $global_formats['ls_comma_dot_ltr'],
  219. 'pt_BR' => $global_formats['ls_comma_dot_ltr'],
  220. ),
  221. 'BSD' => array(
  222. 'en_BS' => $global_formats['lx_dot_comma_ltr'],
  223. 'default' => $global_formats['lx_dot_comma_ltr'],
  224. ),
  225. 'BTN' => array(
  226. 'default' => $global_formats['lx_dot_comma_ltr'],
  227. 'dz_BT' => $global_formats['lx_dot_comma_ltr'],
  228. ),
  229. 'BWP' => array(
  230. 'en_BW' => $global_formats['lx_dot_comma_ltr'],
  231. 'default' => $global_formats['lx_dot_comma_ltr'],
  232. ),
  233. 'BYN' => array(
  234. 'ru_BY' => $global_formats['rs_comma_space_ltr'],
  235. 'default' => $global_formats['rs_comma_space_ltr'],
  236. 'be_BY' => $global_formats['rs_comma_space_ltr'],
  237. ),
  238. 'BZD' => array(
  239. 'en_BZ' => $global_formats['lx_dot_comma_ltr'],
  240. 'default' => $global_formats['lx_dot_comma_ltr'],
  241. ),
  242. 'CAD' => array(
  243. 'en_CA' => $global_formats['lx_dot_comma_ltr'],
  244. 'fr_CA' => $global_formats['rs_comma_space_ltr'],
  245. 'default' => $global_formats['lx_dot_comma_ltr'],
  246. ),
  247. 'CDF' => array(
  248. 'fr_CD' => $global_formats['rs_comma_space_ltr'],
  249. 'sw_CD' => $global_formats['ls_comma_dot_ltr'],
  250. 'default' => $global_formats['rs_comma_space_ltr'],
  251. 'ln_CD' => $global_formats['rs_comma_dot_ltr'],
  252. ),
  253. 'CHF' => array(
  254. 'de_CH' => $global_formats['ls_dot_apos_ltr'],
  255. 'de_LI' => $global_formats['ls_dot_apos_ltr'],
  256. 'fr_CH' => $global_formats['rs_comma_space_ltr'],
  257. 'gsw_LI' => $global_formats['rs_dot_apos_ltr'],
  258. 'it_CH' => $global_formats['ls_dot_apos_ltr'],
  259. 'default' => $global_formats['ls_dot_apos_ltr'],
  260. 'gsw_CH' => $global_formats['rs_dot_apos_ltr'],
  261. 'rm_CH' => $global_formats['rs_dot_apos_ltr'],
  262. ),
  263. 'CLP' => array(
  264. 'es_CL' => $global_formats['lx_comma_dot_ltr'],
  265. 'default' => $global_formats['lx_comma_dot_ltr'],
  266. ),
  267. 'CNY' => array(
  268. 'default' => $global_formats['lx_dot_comma_ltr'],
  269. 'bo_CN' => $global_formats['ls_dot_comma_ltr'],
  270. 'ug_CN' => $global_formats['lx_dot_comma_ltr'],
  271. 'zh_CN' => $global_formats['lx_dot_comma_ltr'],
  272. ),
  273. 'COP' => array(
  274. 'es_CO' => $global_formats['ls_comma_dot_ltr'],
  275. 'default' => $global_formats['ls_comma_dot_ltr'],
  276. ),
  277. 'CRC' => array(
  278. 'es_CR' => $global_formats['lx_comma_space_ltr'],
  279. 'default' => $global_formats['lx_comma_space_ltr'],
  280. ),
  281. 'CUC' => array(
  282. 'es_CU' => $global_formats['lx_dot_comma_ltr'],
  283. 'default' => $global_formats['lx_dot_comma_ltr'],
  284. ),
  285. 'CVE' => array(
  286. 'pt_CV' => $global_formats['rs_comma_space_ltr'],
  287. 'default' => $global_formats['rs_comma_space_ltr'],
  288. ),
  289. 'CZK' => array(
  290. 'default' => $global_formats['rs_comma_space_ltr'],
  291. 'cs_CZ' => $global_formats['rs_comma_space_ltr'],
  292. ),
  293. 'DJF' => array(
  294. 'ar_DJ' => $global_formats['rs_comma_dot_rtl'],
  295. 'fr_DJ' => $global_formats['rs_comma_space_ltr'],
  296. 'default' => $global_formats['rs_comma_dot_rtl'],
  297. ),
  298. 'DKK' => array(
  299. 'default' => $global_formats['rs_comma_dot_ltr'],
  300. 'da_DK' => $global_formats['rs_comma_dot_ltr'],
  301. 'fo_FO' => $global_formats['rs_comma_dot_ltr'],
  302. 'kl_GL' => $global_formats['lx_comma_dot_ltr'],
  303. ),
  304. 'DOP' => array(
  305. 'es_DO' => $global_formats['lx_dot_comma_ltr'],
  306. 'default' => $global_formats['lx_dot_comma_ltr'],
  307. ),
  308. 'DZD' => array(
  309. 'ar_DZ' => $global_formats['ls_comma_dot_rtl'],
  310. 'fr_DZ' => $global_formats['rs_comma_space_ltr'],
  311. 'default' => $global_formats['ls_comma_dot_rtl'],
  312. ),
  313. 'EGP' => array(
  314. 'ar_EG' => $global_formats['rs_comma_dot_rtl'],
  315. 'default' => $global_formats['rs_comma_dot_rtl'],
  316. ),
  317. 'ERN' => array(
  318. 'ar_ER' => $global_formats['rs_comma_dot_rtl'],
  319. 'en_ER' => $global_formats['lx_dot_comma_ltr'],
  320. 'ti_ER' => $global_formats['lx_dot_comma_ltr'],
  321. 'default' => $global_formats['lx_dot_comma_ltr'],
  322. ),
  323. 'ETB' => array(
  324. 'default' => $global_formats['lx_dot_comma_ltr'],
  325. 'am_ET' => $global_formats['lx_dot_comma_ltr'],
  326. ),
  327. 'EUR' => array(
  328. 'ca_AD' => $global_formats['rs_comma_dot_ltr'],
  329. 'de_AT' => $global_formats['ls_comma_space_ltr'],
  330. 'de_BE' => $global_formats['rs_comma_dot_ltr'],
  331. 'de_LU' => $global_formats['rs_comma_dot_ltr'],
  332. 'el_CY' => $global_formats['rs_comma_dot_ltr'],
  333. 'en_IE' => $global_formats['lx_dot_comma_ltr'],
  334. 'en_MT' => $global_formats['lx_dot_comma_ltr'],
  335. 'es_EA' => $global_formats['rs_comma_dot_ltr'],
  336. 'es_IC' => $global_formats['rs_comma_dot_ltr'],
  337. 'fr_BE' => $global_formats['rs_comma_space_ltr'],
  338. 'fr_BL' => $global_formats['rs_comma_space_ltr'],
  339. 'fr_GF' => $global_formats['rs_comma_space_ltr'],
  340. 'fr_GP' => $global_formats['rs_comma_space_ltr'],
  341. 'fr_LU' => $global_formats['rs_comma_dot_ltr'],
  342. 'fr_MC' => $global_formats['rs_comma_space_ltr'],
  343. 'fr_MF' => $global_formats['rs_comma_space_ltr'],
  344. 'fr_MQ' => $global_formats['rs_comma_space_ltr'],
  345. 'fr_PM' => $global_formats['rs_comma_space_ltr'],
  346. 'fr_RE' => $global_formats['rs_comma_space_ltr'],
  347. 'fr_YT' => $global_formats['rs_comma_space_ltr'],
  348. 'it_SM' => $global_formats['rs_comma_dot_ltr'],
  349. 'it_VA' => $global_formats['rs_comma_dot_ltr'],
  350. 'nl_BE' => $global_formats['ls_comma_dot_ltr'],
  351. 'pt_PT' => $global_formats['rs_comma_space_ltr'],
  352. 'sq_XK' => $global_formats['rs_comma_space_ltr'],
  353. 'sr_Latn_ME' => $global_formats['rs_comma_dot_ltr'],
  354. 'sr_Latn_XK' => $global_formats['rs_comma_dot_ltr'],
  355. 'sv_AX' => $global_formats['rs_comma_space_ltr'],
  356. 'sv_FI' => $global_formats['rs_comma_space_ltr'],
  357. 'tr_CY' => $global_formats['lx_comma_dot_ltr'],
  358. 'default' => $global_formats['rs_comma_dot_ltr'],
  359. 'ast_ES' => $global_formats['rs_comma_dot_ltr'],
  360. 'ca_ES' => $global_formats['rs_comma_dot_ltr'],
  361. 'de_DE' => $global_formats['rs_comma_dot_ltr'],
  362. 'el_GR' => $global_formats['rs_comma_dot_ltr'],
  363. 'es_ES' => $global_formats['rs_comma_dot_ltr'],
  364. 'et_EE' => $global_formats['rs_comma_space_ltr'],
  365. 'eu_ES' => $global_formats['rs_comma_dot_ltr'],
  366. 'fi_FI' => $global_formats['rs_comma_space_ltr'],
  367. 'fr_FR' => $global_formats['rs_comma_space_ltr'],
  368. 'fy_NL' => $global_formats['ls_comma_dot_ltr'],
  369. 'ga_IE' => $global_formats['lx_dot_comma_ltr'],
  370. 'gl_ES' => $global_formats['rs_comma_dot_ltr'],
  371. 'it_IT' => $global_formats['rs_comma_dot_ltr'],
  372. 'lb_LU' => $global_formats['rs_comma_dot_ltr'],
  373. 'lt_LT' => $global_formats['rs_comma_space_ltr'],
  374. 'lv_LV' => $global_formats['rs_comma_space_ltr'],
  375. 'mt_MT' => $global_formats['lx_dot_comma_ltr'],
  376. 'nl_NL' => $global_formats['ls_comma_dot_ltr'],
  377. 'sk_SK' => $global_formats['rs_comma_space_ltr'],
  378. 'sl_SI' => $global_formats['rs_comma_dot_ltr'],
  379. ),
  380. 'FJD' => array(
  381. 'en_FJ' => $global_formats['lx_dot_comma_ltr'],
  382. 'default' => $global_formats['lx_dot_comma_ltr'],
  383. ),
  384. 'FKP' => array(
  385. 'en_FK' => $global_formats['lx_dot_comma_ltr'],
  386. 'default' => $global_formats['lx_dot_comma_ltr'],
  387. ),
  388. 'GBP' => array(
  389. 'en_GB' => $global_formats['lx_dot_comma_ltr'],
  390. 'en_GG' => $global_formats['lx_dot_comma_ltr'],
  391. 'en_IM' => $global_formats['lx_dot_comma_ltr'],
  392. 'en_JE' => $global_formats['lx_dot_comma_ltr'],
  393. 'ga_GB' => $global_formats['lx_dot_comma_ltr'],
  394. 'default' => $global_formats['lx_dot_comma_ltr'],
  395. 'cy_GB' => $global_formats['lx_dot_comma_ltr'],
  396. 'gd_GB' => $global_formats['lx_dot_comma_ltr'],
  397. 'gv_IM' => $global_formats['lx_dot_comma_ltr'],
  398. ),
  399. 'GEL' => array(
  400. 'default' => $global_formats['rs_comma_space_ltr'],
  401. 'ka_GE' => $global_formats['rs_comma_space_ltr'],
  402. 'os_GE' => $global_formats['ls_comma_space_ltr'],
  403. ),
  404. 'GHS' => array(
  405. 'en_GH' => $global_formats['lx_dot_comma_ltr'],
  406. 'default' => $global_formats['lx_dot_comma_ltr'],
  407. 'ak_GH' => $global_formats['lx_dot_comma_ltr'],
  408. 'ee_GH' => $global_formats['lx_dot_comma_ltr'],
  409. ),
  410. 'GIP' => array(
  411. 'en_GI' => $global_formats['lx_dot_comma_ltr'],
  412. 'default' => $global_formats['lx_dot_comma_ltr'],
  413. ),
  414. 'GMD' => array(
  415. 'en_GM' => $global_formats['lx_dot_comma_ltr'],
  416. 'default' => $global_formats['lx_dot_comma_ltr'],
  417. ),
  418. 'GNF' => array(
  419. 'fr_GN' => $global_formats['rs_comma_space_ltr'],
  420. 'default' => $global_formats['rs_comma_space_ltr'],
  421. ),
  422. 'GTQ' => array(
  423. 'es_GT' => $global_formats['lx_dot_comma_ltr'],
  424. 'default' => $global_formats['lx_dot_comma_ltr'],
  425. ),
  426. 'GYD' => array(
  427. 'en_GY' => $global_formats['lx_dot_comma_ltr'],
  428. 'default' => $global_formats['lx_dot_comma_ltr'],
  429. ),
  430. 'HKD' => array(
  431. 'en_HK' => $global_formats['lx_dot_comma_ltr'],
  432. 'zh_Hant_HK' => $global_formats['lx_dot_comma_ltr'],
  433. 'default' => $global_formats['lx_dot_comma_ltr'],
  434. ),
  435. 'HNL' => array(
  436. 'es_HN' => $global_formats['lx_dot_comma_ltr'],
  437. 'default' => $global_formats['lx_dot_comma_ltr'],
  438. ),
  439. 'HRK' => array(
  440. 'default' => $global_formats['rs_comma_dot_ltr'],
  441. 'hr_HR' => $global_formats['rs_comma_dot_ltr'],
  442. ),
  443. 'HUF' => array(
  444. 'default' => $global_formats['rs_comma_space_ltr'],
  445. 'hu_HU' => $global_formats['rs_comma_space_ltr'],
  446. ),
  447. 'IDR' => array(
  448. 'default' => $global_formats['lx_comma_dot_ltr'],
  449. 'id_ID' => $global_formats['lx_comma_dot_ltr'],
  450. ),
  451. 'ILS' => array(
  452. 'ar_IL' => $global_formats['rs_comma_dot_rtl'],
  453. 'ar_PS' => $global_formats['rs_comma_dot_rtl'],
  454. 'default' => $global_formats['rs_comma_dot_rtl'],
  455. 'he_IL' => $global_formats['rs_dot_comma_rtl'],
  456. ),
  457. 'INR' => array(
  458. 'bn_IN' => $global_formats['rx_dot_comma_ltr'],
  459. 'en_IN' => $global_formats['lx_dot_comma_ltr'],
  460. 'ne_IN' => $global_formats['ls_dot_comma_ltr'],
  461. 'ur_IN' => $global_formats['ls_comma_dot_rtl'],
  462. 'default' => $global_formats['lx_dot_comma_ltr'],
  463. 'as_IN' => $global_formats['ls_dot_comma_ltr'],
  464. 'dz_BT' => $global_formats['lx_dot_comma_ltr'],
  465. 'gu_IN' => $global_formats['lx_dot_comma_ltr'],
  466. 'hi_IN' => $global_formats['lx_dot_comma_ltr'],
  467. 'kn_IN' => $global_formats['lx_dot_comma_ltr'],
  468. 'kok_IN' => $global_formats['ls_dot_comma_ltr'],
  469. 'mai_IN' => $global_formats['ls_dot_comma_ltr'],
  470. 'ml_IN' => $global_formats['lx_dot_comma_ltr'],
  471. 'mr_IN' => $global_formats['lx_dot_comma_ltr'],
  472. 'or_IN' => $global_formats['lx_dot_comma_ltr'],
  473. 'sa_IN' => $global_formats['lx_dot_comma_ltr'],
  474. 'sd_PK' => $global_formats['rs_comma_dot_ltr'],
  475. 'ta_IN' => $global_formats['ls_dot_comma_ltr'],
  476. 'te_IN' => $global_formats['lx_dot_comma_ltr'],
  477. ),
  478. 'IQD' => array(
  479. 'ar_IQ' => $global_formats['rs_comma_dot_rtl'],
  480. 'default' => $global_formats['rs_comma_dot_rtl'],
  481. 'ckb_IQ' => $global_formats['rs_comma_dot_rtl'],
  482. ),
  483. 'IRR' => array(
  484. 'default' => $global_formats['lx_comma_dot_rtl'],
  485. 'fa_IR' => $global_formats['lx_comma_dot_rtl'],
  486. ),
  487. 'ISK' => array(
  488. 'default' => $global_formats['rs_comma_dot_ltr'],
  489. 'is_IS' => $global_formats['rs_comma_dot_ltr'],
  490. ),
  491. 'JMD' => array(
  492. 'en_JM' => $global_formats['lx_dot_comma_ltr'],
  493. 'default' => $global_formats['lx_dot_comma_ltr'],
  494. ),
  495. 'JOD' => array(
  496. 'ar_JO' => $global_formats['rs_comma_dot_rtl'],
  497. 'ar_PS' => $global_formats['rs_comma_dot_rtl'],
  498. 'default' => $global_formats['rs_comma_dot_rtl'],
  499. ),
  500. 'JPY' => array(
  501. 'default' => $global_formats['lx_dot_comma_ltr'],
  502. 'ja_JP' => $global_formats['lx_dot_comma_ltr'],
  503. ),
  504. 'KES' => array(
  505. 'en_KE' => $global_formats['lx_dot_comma_ltr'],
  506. 'sw_KE' => $global_formats['ls_dot_comma_ltr'],
  507. 'default' => $global_formats['lx_dot_comma_ltr'],
  508. ),
  509. 'KGS' => array(
  510. 'ru_KG' => $global_formats['rs_comma_space_ltr'],
  511. 'default' => $global_formats['rs_comma_space_ltr'],
  512. 'ky_KG' => $global_formats['rs_comma_space_ltr'],
  513. ),
  514. 'KHR' => array(
  515. 'default' => $global_formats['rx_comma_dot_ltr'],
  516. 'km_KH' => $global_formats['rx_comma_dot_ltr'],
  517. ),
  518. 'KMF' => array(
  519. 'ar_KM' => $global_formats['rs_comma_dot_rtl'],
  520. 'fr_KM' => $global_formats['rs_comma_space_ltr'],
  521. 'default' => $global_formats['rs_comma_dot_rtl'],
  522. ),
  523. 'KPW' => array(
  524. 'ko_KP' => $global_formats['lx_dot_comma_ltr'],
  525. 'default' => $global_formats['lx_dot_comma_ltr'],
  526. ),
  527. 'KRW' => array(
  528. 'default' => $global_formats['lx_dot_comma_ltr'],
  529. 'ko_KR' => $global_formats['lx_dot_comma_ltr'],
  530. ),
  531. 'KWD' => array(
  532. 'ar_KW' => $global_formats['rs_comma_dot_rtl'],
  533. 'default' => $global_formats['rs_comma_dot_rtl'],
  534. ),
  535. 'KYD' => array(
  536. 'en_KY' => $global_formats['lx_dot_comma_ltr'],
  537. 'default' => $global_formats['lx_dot_comma_ltr'],
  538. ),
  539. 'KZT' => array(
  540. 'ru_KZ' => $global_formats['rs_comma_space_ltr'],
  541. 'default' => $global_formats['rs_comma_space_ltr'],
  542. 'kk_KZ' => $global_formats['rs_comma_space_ltr'],
  543. ),
  544. 'LAK' => array(
  545. 'default' => $global_formats['lx_comma_dot_ltr'],
  546. 'lo_LA' => $global_formats['lx_comma_dot_ltr'],
  547. ),
  548. 'LBP' => array(
  549. 'ar_LB' => $global_formats['rs_comma_dot_rtl'],
  550. 'default' => $global_formats['rs_comma_dot_rtl'],
  551. ),
  552. 'LKR' => array(
  553. 'ta_LK' => $global_formats['ls_dot_comma_ltr'],
  554. 'default' => $global_formats['lx_dot_comma_ltr'],
  555. 'si_LK' => $global_formats['lx_dot_comma_ltr'],
  556. ),
  557. 'LRD' => array(
  558. 'en_LR' => $global_formats['lx_dot_comma_ltr'],
  559. 'default' => $global_formats['lx_dot_comma_ltr'],
  560. ),
  561. 'LSL' => array(
  562. 'en_LS' => $global_formats['lx_dot_comma_ltr'],
  563. 'default' => $global_formats['lx_dot_comma_ltr'],
  564. ),
  565. 'LYD' => array(
  566. 'ar_LY' => $global_formats['ls_comma_dot_rtl'],
  567. 'default' => $global_formats['ls_comma_dot_rtl'],
  568. ),
  569. 'MAD' => array(
  570. 'ar_EH' => $global_formats['ls_dot_comma_rtl'],
  571. 'ar_MA' => $global_formats['ls_comma_dot_rtl'],
  572. 'fr_MA' => $global_formats['rs_comma_dot_ltr'],
  573. 'default' => $global_formats['ls_dot_comma_rtl'],
  574. 'tzm_MA' => $global_formats['rs_comma_space_ltr'],
  575. ),
  576. 'MDL' => array(
  577. 'ro_MD' => $global_formats['rs_comma_dot_ltr'],
  578. 'default' => $global_formats['rs_comma_dot_ltr'],
  579. ),
  580. 'MGA' => array(
  581. 'en_MG' => $global_formats['lx_dot_comma_ltr'],
  582. 'fr_MG' => $global_formats['rs_comma_space_ltr'],
  583. 'default' => $global_formats['lx_dot_comma_ltr'],
  584. 'mg_MG' => $global_formats['ls_dot_comma_ltr'],
  585. ),
  586. 'MKD' => array(
  587. 'sq_MK' => $global_formats['rs_comma_space_ltr'],
  588. 'default' => $global_formats['rs_comma_dot_ltr'],
  589. 'mk_MK' => $global_formats['rs_comma_dot_ltr'],
  590. ),
  591. 'MMK' => array(
  592. 'default' => $global_formats['rs_dot_comma_ltr'],
  593. 'my_MM' => $global_formats['rs_dot_comma_ltr'],
  594. ),
  595. 'MNT' => array(
  596. 'default' => $global_formats['ls_dot_comma_ltr'],
  597. 'mn_MN' => $global_formats['ls_dot_comma_ltr'],
  598. ),
  599. 'MOP' => array(
  600. 'pt_MO' => $global_formats['rs_comma_space_ltr'],
  601. 'zh_Hant_MO' => $global_formats['lx_dot_comma_ltr'],
  602. 'default' => $global_formats['rs_comma_space_ltr'],
  603. ),
  604. 'MRU' => array(
  605. 'ar_MR' => $global_formats['rs_comma_dot_rtl'],
  606. 'default' => $global_formats['rs_comma_dot_rtl'],
  607. ),
  608. 'MUR' => array(
  609. 'en_MU' => $global_formats['lx_dot_comma_ltr'],
  610. 'fr_MU' => $global_formats['rs_comma_space_ltr'],
  611. 'default' => $global_formats['lx_dot_comma_ltr'],
  612. ),
  613. 'MVR' => array(
  614. 'default' => array(),
  615. ),
  616. 'MWK' => array(
  617. 'en_MW' => $global_formats['lx_dot_comma_ltr'],
  618. 'default' => $global_formats['lx_dot_comma_ltr'],
  619. ),
  620. 'MXN' => array(
  621. 'es_MX' => $global_formats['lx_dot_comma_ltr'],
  622. 'default' => $global_formats['lx_dot_comma_ltr'],
  623. ),
  624. 'MYR' => array(
  625. 'default' => $global_formats['lx_dot_comma_ltr'],
  626. 'ms_MY' => $global_formats['lx_dot_comma_ltr'],
  627. ),
  628. 'MZN' => array(
  629. 'pt_MZ' => $global_formats['rs_comma_space_ltr'],
  630. 'default' => $global_formats['rs_comma_space_ltr'],
  631. ),
  632. 'NAD' => array(
  633. 'en_NA' => $global_formats['lx_dot_comma_ltr'],
  634. 'default' => $global_formats['lx_dot_comma_ltr'],
  635. ),
  636. 'NGN' => array(
  637. 'en_NG' => $global_formats['lx_dot_comma_ltr'],
  638. 'default' => $global_formats['lx_dot_comma_ltr'],
  639. 'yo_NG' => $global_formats['lx_dot_comma_ltr'],
  640. ),
  641. 'NIO' => array(
  642. 'es_NI' => $global_formats['lx_dot_comma_ltr'],
  643. 'default' => $global_formats['lx_dot_comma_ltr'],
  644. ),
  645. 'NOK' => array(
  646. 'nb_SJ' => $global_formats['ls_comma_space_ltr'],
  647. 'default' => $global_formats['ls_comma_space_ltr'],
  648. 'nb_NO' => $global_formats['ls_comma_space_ltr'],
  649. 'nn_NO' => $global_formats['rs_comma_space_ltr'],
  650. 'se_NO' => $global_formats['rs_comma_space_ltr'],
  651. ),
  652. 'NPR' => array(
  653. 'default' => $global_formats['ls_dot_comma_ltr'],
  654. 'ne_NP' => $global_formats['ls_dot_comma_ltr'],
  655. ),
  656. 'NZD' => array(
  657. 'en_CK' => $global_formats['lx_dot_comma_ltr'],
  658. 'en_NU' => $global_formats['lx_dot_comma_ltr'],
  659. 'en_NZ' => $global_formats['lx_dot_comma_ltr'],
  660. 'en_PN' => $global_formats['lx_dot_comma_ltr'],
  661. 'en_TK' => $global_formats['lx_dot_comma_ltr'],
  662. 'default' => $global_formats['lx_dot_comma_ltr'],
  663. 'mi_NZ' => $global_formats['ls_dot_comma_ltr'],
  664. ),
  665. 'OMR' => array(
  666. 'ar_OM' => $global_formats['rs_comma_dot_rtl'],
  667. 'default' => $global_formats['rs_comma_dot_rtl'],
  668. ),
  669. 'PEN' => array(
  670. 'es_PE' => $global_formats['ls_dot_comma_ltr'],
  671. 'default' => $global_formats['ls_dot_comma_ltr'],
  672. 'qu_PE' => $global_formats['ls_dot_comma_ltr'],
  673. ),
  674. 'PGK' => array(
  675. 'en_PG' => $global_formats['lx_dot_comma_ltr'],
  676. 'default' => $global_formats['lx_dot_comma_ltr'],
  677. ),
  678. 'PHP' => array(
  679. 'en_PH' => $global_formats['lx_dot_comma_ltr'],
  680. 'default' => $global_formats['lx_dot_comma_ltr'],
  681. 'ceb_PH' => $global_formats['lx_dot_comma_ltr'],
  682. 'fil_PH' => $global_formats['lx_dot_comma_ltr'],
  683. ),
  684. 'PKR' => array(
  685. 'en_PK' => $global_formats['lx_dot_comma_ltr'],
  686. 'default' => $global_formats['lx_dot_comma_ltr'],
  687. 'ur_PK' => $global_formats['ls_dot_comma_rtl'],
  688. ),
  689. 'PLN' => array(
  690. 'default' => $global_formats['rs_comma_space_ltr'],
  691. 'pl_PL' => $global_formats['rs_comma_space_ltr'],
  692. ),
  693. 'PYG' => array(
  694. 'es_PY' => $global_formats['ls_comma_dot_ltr'],
  695. 'default' => $global_formats['ls_comma_dot_ltr'],
  696. ),
  697. 'QAR' => array(
  698. 'ar_QA' => $global_formats['rs_comma_dot_rtl'],
  699. 'default' => $global_formats['rs_comma_dot_rtl'],
  700. ),
  701. 'RON' => array(
  702. 'default' => $global_formats['rs_comma_dot_ltr'],
  703. 'ro_RO' => $global_formats['rs_comma_dot_ltr'],
  704. ),
  705. 'RSD' => array(
  706. 'default' => $global_formats['rs_comma_dot_ltr'],
  707. 'sr_RS' => $global_formats['rs_comma_dot_ltr'],
  708. ),
  709. 'RUB' => array(
  710. 'default' => $global_formats['rs_comma_space_ltr'],
  711. 'ce_RU' => $global_formats['rs_dot_comma_ltr'],
  712. 'ru_RU' => $global_formats['rs_comma_space_ltr'],
  713. 'sah_RU' => $global_formats['rs_comma_space_ltr'],
  714. 'tt_RU' => $global_formats['rs_comma_space_ltr'],
  715. ),
  716. 'RWF' => array(
  717. 'en_RW' => $global_formats['lx_dot_comma_ltr'],
  718. 'fr_RW' => $global_formats['rs_comma_space_ltr'],
  719. 'default' => $global_formats['lx_dot_comma_ltr'],
  720. 'rw_RW' => $global_formats['ls_comma_dot_ltr'],
  721. ),
  722. 'SAR' => array(
  723. 'ar_SA' => $global_formats['rs_comma_dot_rtl'],
  724. 'default' => $global_formats['rs_comma_dot_rtl'],
  725. ),
  726. 'SBD' => array(
  727. 'en_SB' => $global_formats['lx_dot_comma_ltr'],
  728. 'default' => $global_formats['lx_dot_comma_ltr'],
  729. ),
  730. 'SCR' => array(
  731. 'en_SC' => $global_formats['lx_dot_comma_ltr'],
  732. 'fr_SC' => $global_formats['rs_comma_space_ltr'],
  733. 'default' => $global_formats['lx_dot_comma_ltr'],
  734. ),
  735. 'SDG' => array(
  736. 'ar_SD' => $global_formats['rs_comma_dot_rtl'],
  737. 'en_SD' => $global_formats['lx_dot_comma_ltr'],
  738. 'default' => $global_formats['rs_comma_dot_rtl'],
  739. ),
  740. 'SEK' => array(
  741. 'default' => $global_formats['rs_comma_space_ltr'],
  742. 'sv_SE' => $global_formats['rs_comma_space_ltr'],
  743. ),
  744. 'SGD' => array(
  745. 'en_SG' => $global_formats['lx_dot_comma_ltr'],
  746. 'ms_SG' => $global_formats['lx_dot_comma_ltr'],
  747. 'ta_SG' => $global_formats['ls_dot_comma_ltr'],
  748. 'default' => $global_formats['lx_dot_comma_ltr'],
  749. ),
  750. 'SHP' => array(
  751. 'en_SH' => $global_formats['lx_dot_comma_ltr'],
  752. 'default' => $global_formats['lx_dot_comma_ltr'],
  753. ),
  754. 'SLL' => array(
  755. 'en_SL' => $global_formats['lx_dot_comma_ltr'],
  756. 'default' => $global_formats['lx_dot_comma_ltr'],
  757. ),
  758. 'SOS' => array(
  759. 'ar_SO' => $global_formats['rs_comma_dot_rtl'],
  760. 'default' => $global_formats['rs_comma_dot_rtl'],
  761. 'so_SO' => $global_formats['lx_dot_comma_ltr'],
  762. ),
  763. 'SRD' => array(
  764. 'nl_SR' => $global_formats['ls_comma_dot_ltr'],
  765. 'default' => $global_formats['ls_comma_dot_ltr'],
  766. ),
  767. 'SSP' => array(
  768. 'en_SS' => $global_formats['lx_dot_comma_ltr'],
  769. 'default' => $global_formats['lx_dot_comma_ltr'],
  770. ),
  771. 'STN' => array(
  772. 'pt_ST' => $global_formats['rs_comma_space_ltr'],
  773. 'default' => $global_formats['rs_comma_space_ltr'],
  774. ),
  775. 'SYP' => array(
  776. 'ar_SY' => $global_formats['rs_comma_dot_rtl'],
  777. 'fr_SY' => $global_formats['rs_comma_space_ltr'],
  778. 'default' => $global_formats['rs_comma_dot_rtl'],
  779. ),
  780. 'SZL' => array(
  781. 'en_SZ' => $global_formats['lx_dot_comma_ltr'],
  782. 'default' => $global_formats['lx_dot_comma_ltr'],
  783. ),
  784. 'THB' => array(
  785. 'default' => $global_formats['lx_dot_comma_ltr'],
  786. 'th_TH' => $global_formats['lx_dot_comma_ltr'],
  787. ),
  788. 'TJS' => array(
  789. 'default' => $global_formats['rs_comma_space_ltr'],
  790. 'tg_TJ' => $global_formats['rs_comma_space_ltr'],
  791. ),
  792. 'TMT' => array(
  793. 'default' => $global_formats['rs_comma_space_ltr'],
  794. 'tk_TM' => $global_formats['rs_comma_space_ltr'],
  795. ),
  796. 'TND' => array(
  797. 'ar_TN' => $global_formats['ls_comma_dot_rtl'],
  798. 'fr_TN' => $global_formats['rs_comma_space_ltr'],
  799. 'default' => $global_formats['ls_comma_dot_rtl'],
  800. ),
  801. 'TOP' => array(
  802. 'en_TO' => $global_formats['lx_dot_comma_ltr'],
  803. 'default' => $global_formats['lx_dot_comma_ltr'],
  804. 'to_TO' => $global_formats['ls_dot_comma_ltr'],
  805. ),
  806. 'TRY' => array(
  807. 'default' => $global_formats['lx_comma_dot_ltr'],
  808. 'tr_TR' => $global_formats['lx_comma_dot_ltr'],
  809. ),
  810. 'TTD' => array(
  811. 'en_TT' => $global_formats['lx_dot_comma_ltr'],
  812. 'default' => $global_formats['lx_dot_comma_ltr'],
  813. ),
  814. 'TWD' => array(
  815. 'zh_Hant' => $global_formats['lx_dot_comma_ltr'],
  816. 'default' => $global_formats['lx_dot_comma_ltr'],
  817. ),
  818. 'TZS' => array(
  819. 'en_TZ' => $global_formats['lx_dot_comma_ltr'],
  820. 'default' => $global_formats['lx_dot_comma_ltr'],
  821. 'sw_TZ' => $global_formats['ls_dot_comma_ltr'],
  822. ),
  823. 'UAH' => array(
  824. 'ru_UA' => $global_formats['rs_comma_space_ltr'],
  825. 'default' => $global_formats['rs_comma_space_ltr'],
  826. 'uk_UA' => $global_formats['rs_comma_space_ltr'],
  827. ),
  828. 'UGX' => array(
  829. 'en_UG' => $global_formats['lx_dot_comma_ltr'],
  830. 'sw_UG' => $global_formats['ls_dot_comma_ltr'],
  831. 'default' => $global_formats['lx_dot_comma_ltr'],
  832. ),
  833. 'USD' => array(
  834. 'en_AS' => $global_formats['lx_dot_comma_ltr'],
  835. 'en_DG' => $global_formats['lx_dot_comma_ltr'],
  836. 'en_FM' => $global_formats['lx_dot_comma_ltr'],
  837. 'en_GU' => $global_formats['lx_dot_comma_ltr'],
  838. 'en_IO' => $global_formats['lx_dot_comma_ltr'],
  839. 'en_MH' => $global_formats['lx_dot_comma_ltr'],
  840. 'en_MP' => $global_formats['lx_dot_comma_ltr'],
  841. 'en_PR' => $global_formats['lx_dot_comma_ltr'],
  842. 'en_PW' => $global_formats['lx_dot_comma_ltr'],
  843. 'en_TC' => $global_formats['lx_dot_comma_ltr'],
  844. 'en_UM' => $global_formats['lx_dot_comma_ltr'],
  845. 'en_VG' => $global_formats['lx_dot_comma_ltr'],
  846. 'en_VI' => $global_formats['lx_dot_comma_ltr'],
  847. 'en_ZW' => $global_formats['lx_dot_comma_ltr'],
  848. 'es_EC' => $global_formats['lx_comma_dot_ltr'],
  849. 'es_PA' => $global_formats['lx_dot_comma_ltr'],
  850. 'es_PR' => $global_formats['lx_dot_comma_ltr'],
  851. 'es_SV' => $global_formats['lx_dot_comma_ltr'],
  852. 'es_US' => $global_formats['lx_dot_comma_ltr'],
  853. 'fr_HT' => $global_formats['rs_comma_space_ltr'],
  854. 'nl_BQ' => $global_formats['ls_comma_dot_ltr'],
  855. 'pt_TL' => $global_formats['rs_comma_space_ltr'],
  856. 'qu_EC' => $global_formats['ls_dot_comma_ltr'],
  857. 'default' => $global_formats['lx_dot_comma_ltr'],
  858. 'en_US' => $global_formats['lx_dot_comma_ltr'],
  859. 'haw_US' => $global_formats['lx_dot_comma_ltr'],
  860. 'nd_ZW' => $global_formats['lx_dot_comma_ltr'],
  861. 'sn_ZW' => $global_formats['ls_dot_comma_ltr'],
  862. ),
  863. 'UYU' => array(
  864. 'es_UY' => $global_formats['ls_comma_dot_ltr'],
  865. 'default' => $global_formats['ls_comma_dot_ltr'],
  866. ),
  867. 'UZS' => array(
  868. 'default' => $global_formats['rs_comma_space_ltr'],
  869. 'uz_AF' => $global_formats['rs_comma_space_ltr'],
  870. ),
  871. 'VES' => array(
  872. 'es_VE' => $global_formats['lx_comma_dot_ltr'],
  873. 'default' => $global_formats['lx_comma_dot_ltr'],
  874. ),
  875. 'VND' => array(
  876. 'default' => $global_formats['rs_comma_dot_ltr'],
  877. 'vi_VN' => $global_formats['rs_comma_dot_ltr'],
  878. ),
  879. 'VUV' => array(
  880. 'en_VU' => $global_formats['lx_dot_comma_ltr'],
  881. 'fr_VU' => $global_formats['rs_comma_space_ltr'],
  882. 'default' => $global_formats['lx_dot_comma_ltr'],
  883. ),
  884. 'WST' => array(
  885. 'en_WS' => $global_formats['lx_dot_comma_ltr'],
  886. 'default' => $global_formats['lx_dot_comma_ltr'],
  887. ),
  888. 'XAF' => array(
  889. 'ar_TD' => $global_formats['rs_comma_dot_rtl'],
  890. 'en_CM' => $global_formats['lx_dot_comma_ltr'],
  891. 'es_GQ' => $global_formats['lx_comma_dot_ltr'],
  892. 'fr_CF' => $global_formats['rs_comma_space_ltr'],
  893. 'fr_CG' => $global_formats['rs_comma_space_ltr'],
  894. 'fr_CM' => $global_formats['rs_comma_space_ltr'],
  895. 'fr_GA' => $global_formats['rs_comma_space_ltr'],
  896. 'fr_GQ' => $global_formats['rs_comma_space_ltr'],
  897. 'fr_TD' => $global_formats['rs_comma_space_ltr'],
  898. 'pt_GQ' => $global_formats['rs_comma_space_ltr'],
  899. 'default' => $global_formats['rs_comma_space_ltr'],
  900. 'sg_CF' => $global_formats['lx_comma_dot_ltr'],
  901. ),
  902. 'XCD' => array(
  903. 'en_AG' => $global_formats['lx_dot_comma_ltr'],
  904. 'en_AI' => $global_formats['lx_dot_comma_ltr'],
  905. 'en_DM' => $global_formats['lx_dot_comma_ltr'],
  906. 'en_GD' => $global_formats['lx_dot_comma_ltr'],
  907. 'en_KN' => $global_formats['lx_dot_comma_ltr'],
  908. 'en_LC' => $global_formats['lx_dot_comma_ltr'],
  909. 'en_MS' => $global_formats['lx_dot_comma_ltr'],
  910. 'en_VC' => $global_formats['lx_dot_comma_ltr'],
  911. 'default' => $global_formats['lx_dot_comma_ltr'],
  912. ),
  913. 'XOF' => array(
  914. 'fr_BF' => $global_formats['rs_comma_space_ltr'],
  915. 'fr_BJ' => $global_formats['rs_comma_space_ltr'],
  916. 'fr_CI' => $global_formats['rs_comma_space_ltr'],
  917. 'fr_ML' => $global_formats['rs_comma_space_ltr'],
  918. 'fr_NE' => $global_formats['rs_comma_space_ltr'],
  919. 'fr_SN' => $global_formats['rs_comma_space_ltr'],
  920. 'fr_TG' => $global_formats['rs_comma_space_ltr'],
  921. 'pt_GW' => $global_formats['rs_comma_space_ltr'],
  922. 'default' => $global_formats['rs_comma_space_ltr'],
  923. 'dyo_SN' => $global_formats['rs_comma_space_ltr'],
  924. 'wo_SN' => $global_formats['ls_comma_dot_ltr'],
  925. ),
  926. 'XPF' => array(
  927. 'fr_NC' => $global_formats['rs_comma_space_ltr'],
  928. 'fr_PF' => $global_formats['rs_comma_space_ltr'],
  929. 'fr_WF' => $global_formats['rs_comma_space_ltr'],
  930. 'default' => $global_formats['rs_comma_space_ltr'],
  931. ),
  932. 'YER' => array(
  933. 'ar_YE' => $global_formats['rs_comma_dot_rtl'],
  934. 'default' => $global_formats['rs_comma_dot_rtl'],
  935. ),
  936. 'ZAR' => array(
  937. 'en_LS' => $global_formats['lx_dot_comma_ltr'],
  938. 'en_NA' => $global_formats['lx_dot_comma_ltr'],
  939. 'en_ZA' => $global_formats['lx_comma_space_ltr'],
  940. 'default' => $global_formats['lx_dot_comma_ltr'],
  941. 'af_ZA' => $global_formats['lx_comma_space_ltr'],
  942. 'xh_ZA' => $global_formats['lx_dot_space_ltr'],
  943. 'zu_ZA' => $global_formats['lx_dot_comma_ltr'],
  944. ),
  945. 'ZMW' => array(
  946. 'en_ZM' => $global_formats['lx_dot_comma_ltr'],
  947. 'default' => $global_formats['lx_dot_comma_ltr'],
  948. ),
  949. );