First Upload
This commit is contained in:
parent
556d1d335f
commit
37155a1f84
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 4.0.5 on 2022-07-18 12:24
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('App', '0017_alter_searchresults_uniqueid'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='standards',
|
||||||
|
old_name='stamdardNumber',
|
||||||
|
new_name='standardNumber',
|
||||||
|
),
|
||||||
|
]
|
Binary file not shown.
@ -14,14 +14,14 @@ class Level(models.Model):
|
|||||||
class Standards(models.Model):
|
class Standards(models.Model):
|
||||||
standardLevel = models.IntegerField(blank=True, null=True)
|
standardLevel = models.IntegerField(blank=True, null=True)
|
||||||
standardTitle = models.CharField(max_length=200)
|
standardTitle = models.CharField(max_length=200)
|
||||||
stamdardNumber = models.CharField(max_length=10)
|
standardNumber = models.CharField(max_length=10)
|
||||||
standardPath = models.CharField(max_length=200,blank=True,null=True)
|
standardPath = models.CharField(max_length=200,blank=True,null=True)
|
||||||
revision = models.BooleanField()
|
revision = models.BooleanField()
|
||||||
paragraph = models.TextField(blank=True,null=True)
|
paragraph = models.TextField(blank=True,null=True)
|
||||||
levelID = models.ForeignKey(Level, on_delete=models.CASCADE, blank=True, null=True)
|
levelID = models.ForeignKey(Level, on_delete=models.CASCADE, blank=True, null=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.stamdardNumber
|
return self.standardNumber
|
||||||
|
|
||||||
class SearchResults(models.Model):
|
class SearchResults(models.Model):
|
||||||
session_key = models.CharField(max_length=17,blank=True, null=True)
|
session_key = models.CharField(max_length=17,blank=True, null=True)
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
$(document).ready(function(){
|
|
||||||
$("#fiterForm").on("change", "input:checkbox", function(){
|
|
||||||
$("#fiterForm").submit();
|
|
||||||
});
|
|
||||||
|
|
||||||
// $('#submitSearch').click(() => {
|
|
||||||
// console.log('clicked')
|
|
||||||
// $('input[type=checkbox]').prop('checked', false);
|
|
||||||
// })
|
|
||||||
});
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -49,7 +49,7 @@ def cosine_sim(a, b):
|
|||||||
def readfile():
|
def readfile():
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
processedData = pd.read_json(os.path.join(BASE_DIR, 'App/static/json/prcessedData.json'))
|
processedData = pd.read_json(os.path.join(BASE_DIR, 'static/json/prcoessedData.json'))
|
||||||
df = pd.DataFrame(processedData)
|
df = pd.DataFrame(processedData)
|
||||||
return df
|
return df
|
||||||
|
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from App import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# path('app', views.App, name='app'),
|
|
||||||
path('how_to', views.how_to, name='how_to'),
|
path('how_to', views.how_to, name='how_to'),
|
||||||
path('', views.home, name='home'),
|
path('', views.home, name='home'),
|
||||||
# path('search', views.search, name='search'),
|
|
||||||
path('tfidf', views.tfidf, name='tfidf'),
|
path('tfidf', views.tfidf, name='tfidf'),
|
||||||
path('faq', views.faq, name='faq'),
|
path('faq', views.faq, name='faq'),
|
||||||
|
path('contact', views.contact, name='contact'),
|
||||||
]
|
]
|
131
App/views.py
131
App/views.py
@ -5,8 +5,6 @@ import os
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
from .similarity import phrase_preprocessing, similarityCheck
|
from .similarity import phrase_preprocessing, similarityCheck
|
||||||
from .tfidfSimilarity import cosine_similarity
|
from .tfidfSimilarity import cosine_similarity
|
||||||
import json
|
|
||||||
from django.shortcuts import redirect
|
|
||||||
|
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
|
|
||||||
@ -17,7 +15,13 @@ from .filters import StandardsFilter
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import date, timedelta
|
from datetime import date, timedelta
|
||||||
|
|
||||||
from django.core import serializers
|
from django_pandas.io import read_frame
|
||||||
|
|
||||||
|
from django.template.loader import render_to_string
|
||||||
|
from weasyprint import HTML
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
@ -26,7 +30,7 @@ def home(request):
|
|||||||
|
|
||||||
levels = list(range(1, 7))
|
levels = list(range(1, 7))
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
path = os.path.join(BASE_DIR, 'App/static/IDDRSStandards/')
|
path = os.path.join(BASE_DIR, 'static/IDDRSStandards/')
|
||||||
df = pd.DataFrame(columns=["Level","FileNumber","FileName","Summary","FilePath"])
|
df = pd.DataFrame(columns=["Level","FileNumber","FileName","Summary","FilePath"])
|
||||||
all_standards = Standards.objects.all()
|
all_standards = Standards.objects.all()
|
||||||
i = 0
|
i = 0
|
||||||
@ -38,10 +42,10 @@ def home(request):
|
|||||||
i+= 1
|
i+= 1
|
||||||
|
|
||||||
args = {'all_standards': all_standards,'navbar': 'home','levels':levels}
|
args = {'all_standards': all_standards,'navbar': 'home','levels':levels}
|
||||||
return render(request, 'home.html', args)
|
return render(request, 'App/home.html', args)
|
||||||
|
|
||||||
def how_to(request):
|
def how_to(request):
|
||||||
return render(request, 'how_to.html', {'navbar': 'how_to'})
|
return render(request, 'App/how_to.html', {'navbar': 'how_to'})
|
||||||
|
|
||||||
def search(request):
|
def search(request):
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
@ -64,8 +68,13 @@ def search(request):
|
|||||||
return render(request, 'search.html', args)
|
return render(request, 'search.html', args)
|
||||||
|
|
||||||
def faq(request):
|
def faq(request):
|
||||||
return render(request, 'faq.html', {'navbar': 'faq'})
|
return render(request, 'App/faq.html', {'navbar': 'faq'})
|
||||||
|
|
||||||
|
def contact(request):
|
||||||
|
return render(request, 'App/contact.html', {'navbar': 'contact'})
|
||||||
|
|
||||||
|
# def pdf(request):
|
||||||
|
# return render(request, 'pdf-outut.html', {'navbar': 'pdf'})
|
||||||
|
|
||||||
def tfidf(request):
|
def tfidf(request):
|
||||||
SearchResults.objects.filter(session_expiry_date=date.today()).delete()
|
SearchResults.objects.filter(session_expiry_date=date.today()).delete()
|
||||||
@ -77,9 +86,10 @@ def tfidf(request):
|
|||||||
myFilter = StandardsFilter()
|
myFilter = StandardsFilter()
|
||||||
selectedChoices = request.GET.getlist('title','')
|
selectedChoices = request.GET.getlist('title','')
|
||||||
phrase = request.GET.get('phrase','')
|
phrase = request.GET.get('phrase','')
|
||||||
|
excelFile = ''
|
||||||
|
pdfFile = ''
|
||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
|
|
||||||
form = searchForm(request.GET)
|
form = searchForm(request.GET)
|
||||||
if form.is_valid() or 'searchedPhrase' in request.GET :
|
if form.is_valid() or 'searchedPhrase' in request.GET :
|
||||||
if 'searchedPhrase' in request.GET:
|
if 'searchedPhrase' in request.GET:
|
||||||
@ -110,18 +120,22 @@ def tfidf(request):
|
|||||||
)
|
)
|
||||||
searchedData.save()
|
searchedData.save()
|
||||||
|
|
||||||
|
|
||||||
results = SearchResults.objects.filter(uniqueID=uid)
|
results = SearchResults.objects.filter(uniqueID=uid)
|
||||||
|
excelFile = createExcel(results, phrase)
|
||||||
|
pdfFile = createPDF(results, phrase)
|
||||||
|
createPDF(results, phrase)
|
||||||
|
|
||||||
if selectedChoices:
|
if selectedChoices:
|
||||||
results = SearchResults.objects.filter(uniqueID=uid)
|
results = SearchResults.objects.filter(uniqueID=uid)
|
||||||
myFilter = StandardsFilter(request.GET, queryset=results)
|
myFilter = StandardsFilter(request.GET, queryset=results)
|
||||||
results = myFilter.qs
|
results = myFilter.qs
|
||||||
|
excelFile = createExcel(results, phrase)
|
||||||
|
pdfFile = createPDF(results, phrase)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
form = searchForm()
|
form = searchForm()
|
||||||
|
|
||||||
|
|
||||||
# Create pagination for results
|
# Create pagination for results
|
||||||
paginator = Paginator(results, per_page=10)
|
paginator = Paginator(results, per_page=10)
|
||||||
pageNumber = request.GET.get('page', 1)
|
pageNumber = request.GET.get('page', 1)
|
||||||
@ -130,85 +144,36 @@ def tfidf(request):
|
|||||||
args = {'form': form, 'phrase': phrase, 'navbar': 'tfidf',
|
args = {'form': form, 'phrase': phrase, 'navbar': 'tfidf',
|
||||||
'results':page_obj.object_list, 'levels':categories, 'myFilter':myFilter,
|
'results':page_obj.object_list, 'levels':categories, 'myFilter':myFilter,
|
||||||
'standards':standards, 'selectedChoices':selectedChoices,
|
'standards':standards, 'selectedChoices':selectedChoices,
|
||||||
'pages':paginator, 'pNumber':int(pageNumber)}
|
'pages':paginator, 'pNumber':int(pageNumber), 'excelFile':excelFile,'pdfFile':pdfFile}
|
||||||
|
|
||||||
return render(request, 'tfidf.html', args)
|
return render(request, 'App/tfidf.html', args)
|
||||||
|
|
||||||
|
# This function export the list of results to excel file
|
||||||
|
def createExcel(results, phrase):
|
||||||
|
df = read_frame(results)
|
||||||
|
df = df.drop(columns=['id','session_key','uniqueID','session_expiry_date','index','level','title','color','heading2','heading3','heading4','sentence'])
|
||||||
|
df = df[['levelName','module','heading1','pageNumber','paragraph']]
|
||||||
|
df.columns = ['Level', 'IDDRS', 'Title', 'Page', 'Paragraph']
|
||||||
|
|
||||||
# def tfidf(request):
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
fileName = phrase+'.xlsx'
|
||||||
|
|
||||||
# searchResults = []
|
# creating excel writer object
|
||||||
# results = []
|
writer = pd.ExcelWriter(os.path.join(BASE_DIR, 'static/usersResults/'+fileName))
|
||||||
# phrase = request.session['phrase']
|
|
||||||
# categories = Level.objects.all()
|
|
||||||
# standards = Standards.objects.all()
|
|
||||||
# myFilter = StandardsFilter()
|
|
||||||
# selectedChoices = request.GET.getlist('title','')
|
|
||||||
|
|
||||||
# if request.method == 'POST':
|
# write dataframe to excel
|
||||||
# # SearchResults.objects.filter(session_key=request.session.session_key).delete()
|
df.to_excel(writer,sheet_name='IDDRS')
|
||||||
# selectedChoices = ''
|
|
||||||
# form = searchForm(request.POST)
|
|
||||||
# if form.is_valid():
|
|
||||||
# phrase = form.cleaned_data["phrase"]
|
|
||||||
# searchResults = cosine_similarity(20, phrase)
|
|
||||||
# request.session['phrase'] = phrase
|
|
||||||
# # uid = str(uuid.uuid1())
|
|
||||||
# uid = str(uuid.uuid1())[:8]+phrase
|
|
||||||
# for result in searchResults:
|
|
||||||
# searchedData = SearchResults(
|
|
||||||
# session_key = request.session.session_key,
|
|
||||||
# uniqueID = uid,
|
|
||||||
# session_expiry_date = date.today() + timedelta(days=1),
|
|
||||||
# index = result['Index'],
|
|
||||||
# level = result['Level'],
|
|
||||||
# levelName = result['LevelName'],
|
|
||||||
# title = result['Title'],
|
|
||||||
# paragraph = result['Paragraph'],
|
|
||||||
# color = result['Color'],
|
|
||||||
# module = result['Module'],
|
|
||||||
# heading1 = result['Heading1'],
|
|
||||||
# heading2 = result['Heading2'],
|
|
||||||
# heading3 = result['Heading3'],
|
|
||||||
# heading4 = result['Heading4'],
|
|
||||||
# pageNumber = result['PageNum'],
|
|
||||||
# sentence = result['Sentence']
|
|
||||||
# )
|
|
||||||
# searchedData.save()
|
|
||||||
# # update session
|
|
||||||
# if 'phrase' in request.session:
|
|
||||||
# phrase = request.session['phrase']
|
|
||||||
# else:
|
|
||||||
# request.session['phrase'] = phrase
|
|
||||||
|
|
||||||
# request.session['session_id'] = uid
|
# save the excel
|
||||||
# request.session.modified = True
|
writer.save()
|
||||||
|
|
||||||
# results = SearchResults.objects.filter(uniqueID=request.session['session_id'])
|
|
||||||
|
|
||||||
# else:
|
|
||||||
# form = searchForm()
|
|
||||||
|
|
||||||
# # Filter results
|
|
||||||
# if request.method == 'GET' and selectedChoices:
|
|
||||||
# results = SearchResults.objects.filter(uniqueID=request.session['session_id'])
|
|
||||||
# myFilter = StandardsFilter(request.GET, queryset=results)
|
|
||||||
# results = myFilter.qs
|
|
||||||
# else:
|
|
||||||
# results = SearchResults.objects.filter(uniqueID=request.session['session_id'])
|
|
||||||
|
|
||||||
|
|
||||||
# # Create pagination for results
|
|
||||||
# paginator = Paginator(results, per_page=5)
|
|
||||||
# pageNumber = request.GET.get('page', 1)
|
|
||||||
# page_obj = paginator.get_page(pageNumber)
|
|
||||||
|
|
||||||
# args = {'form': form, 'phrase': phrase, 'navbar': 'tfidf',
|
|
||||||
# 'results':page_obj.object_list, 'levels':categories, 'myFilter':myFilter,
|
|
||||||
# 'standards':standards, 'selectedChoices':selectedChoices,
|
|
||||||
# 'pages':paginator, 'pNumber':int(pageNumber)}
|
|
||||||
|
|
||||||
# return render(request, 'tfidf.html', args)
|
|
||||||
|
|
||||||
|
return(fileName)
|
||||||
|
|
||||||
|
def createPDF(results, phrase):
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
html_String = render_to_string(os.path.join(BASE_DIR, 'templates/App/pdf-output.html'), {'results':results, 'phrase':phrase})
|
||||||
|
html = HTML(string = html_String)
|
||||||
|
fileName = phrase+'.pdf'
|
||||||
|
html.write_pdf(os.path.join(BASE_DIR, 'static/usersResults/'+fileName))
|
||||||
|
|
||||||
|
return fileName
|
BIN
api/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
api/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/urls.cpython-310.pyc
Normal file
BIN
api/__pycache__/urls.cpython-310.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/views.cpython-310.pyc
Normal file
BIN
api/__pycache__/views.cpython-310.pyc
Normal file
Binary file not shown.
3
api/admin.py
Normal file
3
api/admin.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
6
api/apps.py
Normal file
6
api/apps.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class ApiConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'api'
|
3
api/models.py
Normal file
3
api/models.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
3
api/tests.py
Normal file
3
api/tests.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
11
api/urls.py
Normal file
11
api/urls.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from django.urls import path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('', views.apiOverview, name='api-overview'),
|
||||||
|
path('content-list/<str:level>/<str:standard>', views.contentList, name='content-list'),
|
||||||
|
path('content-detail/<str:level>/<str:standard>/<str:pk>/', views.contentDetail, name='content-detail'),
|
||||||
|
path('content-create/', views.contentCreate, name='content-create'),
|
||||||
|
path('content-update/<str:level>/<str:standard>/<str:pk>/', views.contentUpdate, name='content-update'),
|
||||||
|
path('content-delete/<str:pk>/', views.contentDelete, name='content-delete'),
|
||||||
|
]
|
128
api/views.py
Normal file
128
api/views.py
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
from django.shortcuts import render
|
||||||
|
from django.http import JsonResponse
|
||||||
|
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import json
|
||||||
|
|
||||||
|
from rest_framework.decorators import api_view
|
||||||
|
from rest_framework.response import Response
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
|
|
||||||
|
@api_view(['GET'])
|
||||||
|
def apiOverview(request):
|
||||||
|
api_urls={
|
||||||
|
'List':'/content-list/<str:level>/<str:tandard>',
|
||||||
|
'Detail':'/content-detail/<str:level>/<str:standard>/<str:pk>/',
|
||||||
|
'Create':'/content-create/',
|
||||||
|
'Update':'/content-update/<str:level>/<str:standard>/<str:pk>/',
|
||||||
|
'Delete':'/content-delete/<str:pk>/',
|
||||||
|
}
|
||||||
|
return Response(api_urls)
|
||||||
|
|
||||||
|
@api_view(['GET'])
|
||||||
|
def contentList(request,level,standard):
|
||||||
|
|
||||||
|
module_path = filePath(level, standard)
|
||||||
|
|
||||||
|
with open(module_path) as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
return Response(data)
|
||||||
|
|
||||||
|
@api_view(['GET'])
|
||||||
|
def contentDetail(request,level,standard, pk):
|
||||||
|
module_path = filePath(level, standard)
|
||||||
|
|
||||||
|
with open(module_path) as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
for obj in data:
|
||||||
|
if obj['ID'] == int(pk):
|
||||||
|
data = obj
|
||||||
|
|
||||||
|
return Response(data)
|
||||||
|
|
||||||
|
@api_view(['POST'])
|
||||||
|
def contentCreate(request):
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
module_path = os.path.join(BASE_DIR, 'static/data/2 Concepts, Policy and Strategy of the IDDRS/2.10 The UN Approach to DDR.json')
|
||||||
|
|
||||||
|
with open(module_path) as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
ids = []
|
||||||
|
for obj in data:
|
||||||
|
ids.append(obj['ID'])
|
||||||
|
new_id = max(ids)+1
|
||||||
|
|
||||||
|
new_obj = request.data
|
||||||
|
new_obj['ID'] = new_id
|
||||||
|
data.append(new_obj)
|
||||||
|
|
||||||
|
with open(module_path, 'w') as f:
|
||||||
|
json.dump(data, f)
|
||||||
|
|
||||||
|
return Response(new_obj)
|
||||||
|
|
||||||
|
@api_view(['POST'])
|
||||||
|
def contentUpdate(request,level,standard, pk):
|
||||||
|
module_path = filePath(level, standard)
|
||||||
|
|
||||||
|
with open(module_path) as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
for obj in data:
|
||||||
|
if obj['ID'] == int(pk):
|
||||||
|
content_to_update = obj
|
||||||
|
break
|
||||||
|
|
||||||
|
updated_content = request.data
|
||||||
|
|
||||||
|
for obj in data:
|
||||||
|
if obj['ID'] == int(pk):
|
||||||
|
data[int(pk)] = updated_content
|
||||||
|
|
||||||
|
with open(module_path, 'w') as f:
|
||||||
|
json.dump(data, f)
|
||||||
|
|
||||||
|
return Response(content_to_update)
|
||||||
|
|
||||||
|
@api_view(['DELETE'])
|
||||||
|
def contentDelete(request, pk):
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
module_path = os.path.join(BASE_DIR, 'static/data/2 Concepts, Policy and Strategy of the IDDRS/2.10 The UN Approach to DDR.json')
|
||||||
|
|
||||||
|
with open(module_path) as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
for i in range(len(data)):
|
||||||
|
if data[i]['ID'] == int(pk):
|
||||||
|
data.pop(i)
|
||||||
|
break
|
||||||
|
# data = filter(lambda x: x['ID']!=int(pk), data)
|
||||||
|
with open(module_path, 'w') as f:
|
||||||
|
json.dump(data, f)
|
||||||
|
|
||||||
|
return Response('ITEM succesesfully deleted!')
|
||||||
|
|
||||||
|
|
||||||
|
# Finde the targeted module to store the new paragraph in
|
||||||
|
# it returns the file path
|
||||||
|
def filePath(level_input, standard_input):
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
standards_dir = os.path.join(BASE_DIR, 'static/data/')
|
||||||
|
file_path = ''
|
||||||
|
levels = []
|
||||||
|
for rootdir, dirs, files in os.walk(standards_dir):
|
||||||
|
for subdir in dirs:
|
||||||
|
levels.append(subdir)
|
||||||
|
for level in levels:
|
||||||
|
if level[0] == str(level_input):
|
||||||
|
filenames = next(os.walk(standards_dir+level), (None, None, []))[2]
|
||||||
|
for file in filenames:
|
||||||
|
if file[:4] == str(standard_input):
|
||||||
|
file_path = standards_dir+level+'/'+file
|
||||||
|
|
||||||
|
return file_path
|
0
data_entry/__init__.py
Normal file
0
data_entry/__init__.py
Normal file
BIN
data_entry/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
BIN
data_entry/__pycache__/admin.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/admin.cpython-310.pyc
Normal file
Binary file not shown.
BIN
data_entry/__pycache__/apps.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/apps.cpython-310.pyc
Normal file
Binary file not shown.
BIN
data_entry/__pycache__/forms.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/forms.cpython-310.pyc
Normal file
Binary file not shown.
BIN
data_entry/__pycache__/models.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/models.cpython-310.pyc
Normal file
Binary file not shown.
BIN
data_entry/__pycache__/urls.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/urls.cpython-310.pyc
Normal file
Binary file not shown.
BIN
data_entry/__pycache__/views.cpython-310.pyc
Normal file
BIN
data_entry/__pycache__/views.cpython-310.pyc
Normal file
Binary file not shown.
3
data_entry/admin.py
Normal file
3
data_entry/admin.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
6
data_entry/apps.py
Normal file
6
data_entry/apps.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class DataEntryConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'data_entry'
|
0
data_entry/forms.py
Normal file
0
data_entry/forms.py
Normal file
0
data_entry/migrations/__init__.py
Normal file
0
data_entry/migrations/__init__.py
Normal file
BIN
data_entry/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
data_entry/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
3
data_entry/models.py
Normal file
3
data_entry/models.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
38
data_entry/templates/base.html
Normal file
38
data_entry/templates/base.html
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{% load static %}
|
||||||
|
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<title>Admin</title>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="container mt-5 mb-5">
|
||||||
|
{% block page_content %}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.6.0.slim.js"
|
||||||
|
integrity="sha256-HwWONEZrpuoh951cQD1ov2HUK5zA5DwJ1DNUXaM6FsY=" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"
|
||||||
|
integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"
|
||||||
|
integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
|
@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
{% block page_content %}
|
{% block page_content %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock page_content %}
|
3
data_entry/tests.py
Normal file
3
data_entry/tests.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
11
data_entry/urls.py
Normal file
11
data_entry/urls.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from django.urls import path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('entry_home', views.index, name='index'),
|
||||||
|
path('content', views.contentList, name='content'),
|
||||||
|
path('content_detail', views.contentDetail, name='content_detail'),
|
||||||
|
path('new_entry', views.new_entry, name='new_entry'),
|
||||||
|
path('content_update', views.contentUpdate, name='content_update'),
|
||||||
|
|
||||||
|
]
|
119
data_entry/views.py
Normal file
119
data_entry/views.py
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
from django.shortcuts import render
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
from App.models import Standards, Level
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
|
|
||||||
|
def index(request):
|
||||||
|
|
||||||
|
args = {}
|
||||||
|
return render(request, 'data_entry/index.html',args)
|
||||||
|
|
||||||
|
def contentList(request):
|
||||||
|
levels = Level.objects.all()
|
||||||
|
standards = Standards.objects.all()
|
||||||
|
|
||||||
|
args = {'levels':levels,'standards':standards}
|
||||||
|
return render(request, 'data_entry/content.html',args)
|
||||||
|
|
||||||
|
def contentDetail(request):
|
||||||
|
level = request.GET.get('level')
|
||||||
|
standard = request.GET.get('standard')
|
||||||
|
pk = request.GET.get('pk')
|
||||||
|
|
||||||
|
args = {'level':level,'standard':standard,'pk':pk}
|
||||||
|
return render(request, 'data_entry/content_detail.html',args)
|
||||||
|
|
||||||
|
def contentUpdate(request):
|
||||||
|
level = request.GET.get('level')
|
||||||
|
standard = request.GET.get('standard')
|
||||||
|
pk = request.GET.get('pk')
|
||||||
|
|
||||||
|
args = {'level':level,'standard':standard,'pk':pk}
|
||||||
|
return render(request, 'data_entry/content_update.html',args)
|
||||||
|
|
||||||
|
def new_entry(request):
|
||||||
|
|
||||||
|
levels = Level.objects.all()
|
||||||
|
standards = Standards.objects.all()
|
||||||
|
args = {'levels':levels,'standards':standards}
|
||||||
|
return render(request, 'data_entry/new_entry.html',args)
|
||||||
|
|
||||||
|
# def new_entry(request):
|
||||||
|
# BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
# p = os.path.join(BASE_DIR, 'static/data')
|
||||||
|
|
||||||
|
# levels = Level.objects.all()
|
||||||
|
# standards = Standards.objects.all()
|
||||||
|
|
||||||
|
# if request.method == "GET" and 'level' in request.GET:
|
||||||
|
|
||||||
|
# new_obj = {}
|
||||||
|
# level = request.GET.get('level')
|
||||||
|
# standard = request.GET.get('standard')
|
||||||
|
# module_path = filePath(level, standard)
|
||||||
|
|
||||||
|
# with open(module_path) as json_file:
|
||||||
|
# data = json.load(json_file)
|
||||||
|
|
||||||
|
# new_obj['ID'] = get_id(module_path)
|
||||||
|
# new_obj['Paragraph'] = request.GET.get('paragraph')
|
||||||
|
# new_obj['Color'] = data[0]['Color']
|
||||||
|
# new_obj['Level'] = level
|
||||||
|
# new_obj['LevelName'] = data[0]['LevelName']
|
||||||
|
# new_obj['Title'] = data[0]['Title']
|
||||||
|
# new_obj['PageNum'] = request.GET.get('pageNum')
|
||||||
|
# new_obj['Heading1'] = request.GET.get('heading1')
|
||||||
|
# new_obj['Heading2'] = request.GET.get('heading2')
|
||||||
|
# new_obj['Heading3'] = request.GET.get('heading3')
|
||||||
|
# new_obj['Heading4'] = request.GET.get('heading4')
|
||||||
|
# new_obj['Module'] = data[0]['Module']
|
||||||
|
|
||||||
|
# data.append(new_obj)
|
||||||
|
|
||||||
|
# with open(module_path, 'w') as f:
|
||||||
|
# json.dump(data, f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# args = {'levels':levels,'standards':standards}
|
||||||
|
# return render(request, 'data_entry/new_entry.html', args)
|
||||||
|
|
||||||
|
def edit_entry(request):
|
||||||
|
args = {}
|
||||||
|
return render(request, 'data_entry/edit_entry.html', args)
|
||||||
|
|
||||||
|
|
||||||
|
# Finde the targeted module to store the new paragraph in
|
||||||
|
# it returns the file path
|
||||||
|
def filePath(level_input, standard_input):
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
standards_dir = os.path.join(BASE_DIR, 'static/data/')
|
||||||
|
file_path = ''
|
||||||
|
levels = []
|
||||||
|
for rootdir, dirs, files in os.walk(standards_dir):
|
||||||
|
for subdir in dirs:
|
||||||
|
levels.append(subdir)
|
||||||
|
for level in levels:
|
||||||
|
if level[0] == str(level_input):
|
||||||
|
filenames = next(os.walk(standards_dir+level), (None, None, []))[2]
|
||||||
|
for file in filenames:
|
||||||
|
if file[:4] == str(standard_input):
|
||||||
|
file_path = standards_dir+level+'/'+file
|
||||||
|
|
||||||
|
return file_path
|
||||||
|
|
||||||
|
# Create the new ID
|
||||||
|
def get_id(file_path):
|
||||||
|
with open(file_path) as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
ids = []
|
||||||
|
for obj in data:
|
||||||
|
ids.append(obj['ID'])
|
||||||
|
return max(ids)+1
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -12,10 +12,13 @@ https://docs.djangoproject.com/en/3.1/ref/settings/
|
|||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import os
|
import os
|
||||||
|
from re import TEMPLATE
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
# BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
|
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')
|
||||||
|
|
||||||
# Quick-start development settings - unsuitable for production
|
# Quick-start development settings - unsuitable for production
|
||||||
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
||||||
@ -38,9 +41,10 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
'rest_framework',
|
||||||
'search',
|
'search',
|
||||||
'App',
|
'App',
|
||||||
|
'data_entry',
|
||||||
'django_filters'
|
'django_filters'
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -59,7 +63,7 @@ ROOT_URLCONF = 'iddrs2.urls'
|
|||||||
TEMPLATES = [
|
TEMPLATES = [
|
||||||
{
|
{
|
||||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
'DIRS': ['iddrs2/App/templates/'],
|
'DIRS': [os.path.join(BASE_DIR,'templates')],
|
||||||
'APP_DIRS': True,
|
'APP_DIRS': True,
|
||||||
'OPTIONS': {
|
'OPTIONS': {
|
||||||
'context_processors': [
|
'context_processors': [
|
||||||
@ -123,8 +127,8 @@ USE_TZ = True
|
|||||||
# https://docs.djangoproject.com/en/3.1/howto/static-files/
|
# https://docs.djangoproject.com/en/3.1/howto/static-files/
|
||||||
|
|
||||||
STATICFILES_DIRS = [
|
STATICFILES_DIRS = [
|
||||||
os.path.join(BASE_DIR,'iddrs2/App/static')
|
os.path.join(BASE_DIR,'static')
|
||||||
]
|
]
|
||||||
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
|
||||||
|
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/static/'
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
body, p, ul, ol {
|
|
||||||
font-size: 14px;
|
|
||||||
font-size: 1.6rem;
|
|
||||||
line-height: 2rem;
|
|
||||||
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #454545;
|
|
||||||
letter-spacing: -0.35px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-custom{
|
|
||||||
border-bottom: 3px solid #009edb!important;
|
|
||||||
padding-top: 0rem !important;
|
|
||||||
padding-bottom: 0rem !important;
|
|
||||||
padding-left: 6rem !important;
|
|
||||||
padding-right: 6rem !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-light .navbar-nav .nav-link{
|
|
||||||
color: black !important;
|
|
||||||
font-size: 12.35px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-light .navbar-brand{
|
|
||||||
color: black !important;
|
|
||||||
font-size: 12.35px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header{
|
|
||||||
padding-top: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo{
|
|
||||||
width: 20rem;
|
|
||||||
border-right: solid black 1px ;
|
|
||||||
margin-right: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title{
|
|
||||||
width: 30%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title a{
|
|
||||||
font-family: "Roboto Condensed", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
line-height: 1;
|
|
||||||
text-transform: none;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 700;
|
|
||||||
color: #4d4d4d !important;
|
|
||||||
font-size: 27.006116208px;
|
|
||||||
margin-top: 21.8475998092px;
|
|
||||||
letter-spacing: 0.027em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-box{
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar2{
|
|
||||||
padding-top: 0rem !important;
|
|
||||||
padding-bottom: 0rem !important;
|
|
||||||
background-color: #4d4d4d !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav2 > .nav-item{
|
|
||||||
border-right: solid #fff 1px;
|
|
||||||
/* margin-right: 10px;
|
|
||||||
margin-left: 10px; */
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav2 > .nav-item:hover {
|
|
||||||
background-color: #f2f2f2;
|
|
||||||
}
|
|
||||||
.navbar-nav2 > .nav-item> .nav-link:hover{
|
|
||||||
color: #000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav2 > .nav-item > .nav-link{
|
|
||||||
color: #fff !important;
|
|
||||||
padding: 0px 10px 0px 10px !important;
|
|
||||||
|
|
||||||
}
|
|
@ -1,205 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 298.3 91.1" style="enable-background:new 0 0 298.3 91.1;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#009EDB;}
|
|
||||||
</style>
|
|
||||||
<path d="M146.2,5.6h7.7V30c0,4.3-1.3,7.6-4,9.8c-6.1,4.5-14.3,4.5-20.4,0c-2.7-2.2-4-5.5-4-9.8V5.6h7.7V30c0,2.5,0.6,4.2,1.8,5.3
|
|
||||||
c2.8,2.2,6.8,2.2,9.6,0c1.2-1.1,1.7-2.9,1.7-5.3L146.2,5.6z M170.8,20.5c-1.9-0.1-3.8,0.9-4.7,2.6v19.5h-7.4V15.1h6.9l0.2,3.1
|
|
||||||
c1.9-2.4,4.9-3.8,7.9-3.7c2.3-0.1,4.6,0.7,6.3,2.3c1.6,1.6,2.4,4.3,2.4,8.2v17.5h-7.4V25.1c0-1.8-0.4-3-1.1-3.6
|
|
||||||
C173.1,20.8,172,20.4,170.8,20.5L170.8,20.5z M187.4,8c0-1,0.4-2,1.1-2.7c1.7-1.4,4.3-1.4,6,0c0.7,0.7,1.2,1.7,1.1,2.7
|
|
||||||
c0,1-0.4,2-1.1,2.7c-1.7,1.4-4.3,1.4-6,0C187.8,10,187.4,9,187.4,8z M195.3,15.1v27.5h-7.4V15.1L195.3,15.1z M214.4,42.5
|
|
||||||
c-1.4,0.5-2.9,0.7-4.4,0.7c-2.1,0.1-4.1-0.6-5.8-1.9c-1.4-1.2-2.1-3.3-2.1-6.3V20.5H198v-5.4h4.1V8.3h7.4v6.8h4.7v5.4h-4.7v13.8
|
|
||||||
c-0.1,0.8,0.1,1.7,0.7,2.3c0.6,0.4,1.4,0.6,2.1,0.6c0.4,0,0.8,0,1.2-0.1c0.4,0,0.7-0.1,0.9-0.1L214.4,42.5z M241,38.2
|
|
||||||
c-1.1,1.4-2.4,2.6-4,3.4c-2.1,1.1-4.4,1.6-6.7,1.6c-4.3,0-7.7-1.3-10.1-3.9c-2.4-2.6-3.7-5.9-3.6-9.4v-1c-0.2-3.7,1.1-7.4,3.5-10.2
|
|
||||||
c2.4-2.7,5.8-4.2,9.4-4c4,0,7,1.2,9,3.7c2,2.5,3.1,5.8,3.1,9.8v3.1h-17.5c0.2,1.6,0.9,3.2,2.1,4.3c1.2,1.1,2.9,1.7,4.6,1.6
|
|
||||||
c2.6,0.1,5.1-1,6.6-3.1L241,38.2z M229.4,20.5c-1.4-0.1-2.7,0.5-3.6,1.6c-0.9,1.2-1.5,2.6-1.7,4.1h10.2v-0.6c0-1.3-0.4-2.6-1.2-3.7
|
|
||||||
C232.2,20.9,230.8,20.4,229.4,20.5z M262.1,42.7l-0.4-2.9c-0.8,1-1.8,1.9-3,2.5c-1.2,0.6-2.6,0.9-4,0.9c-3.2,0.1-6.2-1.4-7.9-4
|
|
||||||
c-2-3-3-6.5-2.8-10v-0.5c0-4.2,0.9-7.6,2.8-10.2c1.8-2.6,4.8-4,8-3.9c2.6-0.1,5,1,6.6,3v-14h7.4v39.1L262.1,42.7z M251.3,29.2
|
|
||||||
c-0.1,1.9,0.3,3.9,1.2,5.6c0.8,1.5,2.4,2.5,4.1,2.3c2,0.1,3.9-1,4.8-2.8V23.4c-0.8-1.8-2.7-3-4.8-2.9c-1.7-0.1-3.3,0.8-4.1,2.4
|
|
||||||
c-0.9,1.8-1.3,3.8-1.2,5.8V29.2z M155.9,49.9V87h-7.6l-14.9-24.5V87h-7.7V49.9h7.7l14.9,24.5V49.9H155.9z M177.4,87
|
|
||||||
c-0.4-0.8-0.6-1.6-0.7-2.5c-0.8,0.9-1.7,1.6-2.8,2.1c-1.3,0.6-2.7,0.9-4.2,0.9c-2.4,0.1-4.8-0.8-6.6-2.3c-1.8-1.5-2.7-3.6-2.7-5.9
|
|
||||||
c-0.1-2.6,1.1-5.2,3.2-6.7c2.1-1.6,5.3-2.4,9.5-2.4h3.3v-1.6c0.1-1.1-0.3-2.2-1-3.1c-0.8-0.8-1.9-1.2-3.1-1.1
|
|
||||||
c-2.6,0-3.9,1.1-3.9,3.3H161c0-2.4,1.2-4.7,3.2-6.2c2.5-1.8,5.5-2.7,8.5-2.6c2.8-0.1,5.6,0.7,7.9,2.4c2.1,1.6,3.1,4,3.1,7.3v11.6
|
|
||||||
c0,1.3,0.1,2.5,0.3,3.8c0.2,0.9,0.4,1.7,0.8,2.5V87H177.4z M171.3,81.9c1.1,0,2.2-0.3,3.2-0.8c0.8-0.4,1.4-1.1,1.9-1.8v-4.8h-3
|
|
||||||
c-1.5-0.1-3.1,0.3-4.3,1.2c-0.9,0.8-1.4,1.9-1.4,3c0,0.9,0.3,1.7,0.9,2.3C169.4,81.6,170.4,81.9,171.3,81.9L171.3,81.9z M202.6,86.8
|
|
||||||
c-0.7,0.2-1.3,0.4-2,0.5c-0.8,0.1-1.6,0.2-2.4,0.2c-2.1,0.1-4.1-0.6-5.8-1.9c-1.4-1.2-2.1-3.3-2.1-6.3V64.8h-4.1v-5.4h4.1v-6.8h7.4
|
|
||||||
v6.8h4.7v5.4h-4.7v13.8c-0.1,0.8,0.1,1.7,0.7,2.3c0.6,0.4,1.4,0.6,2.1,0.6c0.4,0,0.8,0,1.2-0.1c0.4,0,0.7-0.1,0.9-0.1L202.6,86.8z
|
|
||||||
M205.7,52.3c0-1,0.4-2,1.1-2.7c1.7-1.4,4.3-1.4,6,0c1.5,1.5,1.5,3.9,0,5.5c-1.7,1.4-4.3,1.4-6,0C206,54.3,205.6,53.3,205.7,52.3z
|
|
||||||
M213.5,59.4V87h-7.4V59.4L213.5,59.4z M217.7,73.5v-0.5c-0.1-3.6,1.1-7.2,3.4-10c2.3-2.7,5.5-4,9.6-4c4.2,0,7.4,1.3,9.7,4
|
|
||||||
c2.3,2.8,3.5,6.4,3.4,10v0.5c0.1,3.6-1.1,7.2-3.4,10c-2.3,2.7-5.5,4-9.6,4c-4.2,0-7.4-1.3-9.7-4C218.8,80.7,217.6,77.1,217.7,73.5
|
|
||||||
L217.7,73.5z M225.1,72.9v0.5c-0.1,2,0.4,4,1.3,5.7c1.6,2.4,4.9,3.1,7.3,1.5c0.6-0.4,1.1-0.9,1.5-1.5c0.9-1.8,1.3-3.7,1.3-5.7v-0.5
|
|
||||||
c0.1-2-0.4-3.9-1.3-5.7c-0.9-1.6-2.6-2.6-4.4-2.4c-1.8-0.1-3.5,0.8-4.4,2.4C225.5,69,225,71,225.1,72.9L225.1,72.9z M259.6,64.9
|
|
||||||
c-1.9-0.1-3.8,0.9-4.7,2.7V87h-7.4V59.4h6.9l0.3,3.2c1.9-2.4,4.8-3.8,7.9-3.7c2.4-0.1,4.7,0.7,6.4,2.3c1.6,1.6,2.4,4.3,2.4,8.2V87
|
|
||||||
H264V69.4c0-1.8-0.4-3-1.1-3.6C261.9,65.1,260.7,64.8,259.6,64.9L259.6,64.9z M291.2,79.3c0-0.8-0.4-1.6-1.1-2
|
|
||||||
c-1.4-0.8-3-1.3-4.5-1.5c-2.5-0.5-4.9-1.4-7-2.8c-1.8-1.2-2.9-3.3-2.8-5.5c0-2.3,1.1-4.5,2.9-6c2-1.7,4.6-2.6,8.1-2.6
|
|
||||||
s6.4,0.8,8.5,2.5c2,1.5,3.1,3.9,3.1,6.4h-7.4c0-1-0.3-1.9-1-2.6c-0.9-0.7-2-1.1-3.2-1c-1-0.1-2,0.2-2.9,0.8c-0.6,0.5-1,1.3-1,2.1
|
|
||||||
c0,0.8,0.4,1.6,1.1,2c1.2,0.7,2.6,1.1,4,1.3c2.6,0.5,5.1,1.4,7.4,2.7c2,1.2,3,3.2,3,5.9c0,2.4-1.2,4.6-3.1,6
|
|
||||||
c-2.1,1.6-4.9,2.4-8.5,2.4c-3.8,0-6.8-1-8.8-3c-1.9-1.6-3-3.9-3.1-6.3h7c0,1.2,0.6,2.4,1.6,3.1c1,0.6,2.2,1,3.5,0.9
|
|
||||||
C289.7,82.3,291.2,81.3,291.2,79.3L291.2,79.3z"/>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M86.4,83.1c-2.9,1.4-6.1,1.8-9.3,1.1c-2.2-0.5-4.2-1.2-6.2-2.1l-4.4-1.8c-3.8-1.2-7.9-1.3-11.8-0.3h-0.4
|
|
||||||
c-3.9-1.1-8-1-11.8,0.3c-1.5,0.5-2.9,1.2-4.4,1.8c-2,0.9-4.1,1.7-6.2,2.2c-3.1,0.7-6.4,0.3-9.3-1.1l-0.4-0.2
|
|
||||||
c-0.1,0-0.1,0-0.1,0.1c1.9,2,4.4,3.4,7,4.1c1.8,0.5,3.7,0.6,5.5,0.4c2.8-0.4,5.5-1.4,7.8-3l4.2-2.8c1.6-1,3.5-1.4,5.3-1
|
|
||||||
c1,0.1,0.2,0.6,0.1,0.7c-2.5,1.2-4.9,2.7-7.1,4.4c-1.5,1.1-4.2,3.7-4.2,3.7l2,1.7l2.2-2.4c2.7-2.8,5.8-5.2,9.2-7.1
|
|
||||||
c0.3-0.2,0.6-0.2,0.9,0c3.4,1.9,6.5,4.3,9.2,7.1l2.2,2.4l2-1.7l-4.2-3.7c-2.2-1.7-4.6-3.2-7.1-4.4c-0.2-0.1-0.9-0.6,0.1-0.7
|
|
||||||
c1.8-0.4,3.7,0,5.3,1l4.2,2.8c2.3,1.6,5,2.6,7.8,3c1.8,0.2,3.7,0.1,5.5-0.4c2.6-0.8,5.1-2.2,7-4.1c0,0-0.1-0.1-0.2-0.1
|
|
||||||
L86.4,83.1 M96.2,74.4c-1.3,1-2.7,1.7-4.2,2.2c-2.1,0.6-4.4,1-6.6,1c-2.9,0.1-5.7,0.3-8.6,0.7c-0.2,0-0.3,0-0.2-0.1
|
|
||||||
c2.5-1,4.5-3,5.6-5.4l2.8-5.7c0-0.1,0-0.1,0-0.2c-0.2,0.1-3,2.5-4.3,3.7L76,75.2c-2.1,1.8-4.6,3.1-7.3,3.8h-0.1
|
|
||||||
c0,0-0.1,0.1-0.1,0.1l5.4,1.3c2.3,0.7,4.7,1.1,7.1,1.3c6.1,0.6,12-2.2,15.4-7.2C96.4,74.4,96.3,74.4,96.2,74.4 M105,61
|
|
||||||
c-1.4,1.7-3.1,3.2-5,4.4c-1.6,1.1-3.3,2-5.1,2.8c-2.3,0.9-4.4,2.2-6.3,3.7l-0.4,0.3c-0.1,0-0.1,0-0.1-0.1s3-3.1,3.9-9.4
|
|
||||||
c0.1-2.3,0.5-4.5,1-6.7c0-0.1,0-0.1,0-0.2c-2.1,2.6-3.7,5.5-4.8,8.6l-1.8,5.1c-0.7,2.3-2,4.4-3.7,6.1l-0.2,0.2c0,0,0,0.1,0,0.1
|
|
||||||
c0.2,0,0.4-0.1,0.6-0.1l5.8-1.2c3.2-0.5,6.2-1.8,8.8-3.7c2.7-1.9,4.8-4.5,6.3-7.4c0.4-0.8,0.7-1.6,1-2.4
|
|
||||||
C105.2,60.9,105.1,60.9,105,61 M108.8,46c-0.9,2.7-2.5,5.2-4.6,7.2c-2.4,2.3-4.6,4.9-6.6,7.5c0,0.1-0.2,0-0.1-0.1
|
|
||||||
c0.8-2.7,1-5.6,0.6-8.5c-0.4-2.4-1.4-5-1.7-7.9c0,0-0.1-0.1-0.1-0.1c0,0.1-0.1,0.2-0.1,0.3c-0.6,1.9-1,3.8-1.2,5.8
|
|
||||||
c-0.1,2.4,0.3,5.5,0.1,7.9c-0.2,2.8-0.4,5.7-1.7,8.2c0,0.1,0,0.1,0,0.2l6-3.7c2.5-1.6,4.6-3.6,6.3-6c2.2-3.1,3.3-6.7,3.3-10.5
|
|
||||||
c0-0.1,0-0.3,0-0.4C108.9,45.9,108.8,46,108.8,46"/>
|
|
||||||
<path class="st0" d="M102.4,47.6C102.5,47.6,102.5,47.6,102.4,47.6C102.4,47.7,102.4,47.6,102.4,47.6c0-0.8,0-1.6-0.1-2.4
|
|
||||||
c-0.2-2.8-1.9-5.1-3.4-7.5c-1-1.5-1.9-3.1-2.7-4.8c0,0-0.1-0.1-0.2-0.1c0,0.2,0,1.1,0.1,1.6c0.5,4,1.5,8,3,11.8
|
|
||||||
c0.9,2.4,1.2,4.9,1,7.4c0,0.2,0,0.2,0.1,0.3c0.9-1.3,2.7-3.1,3.8-4.5s7.1-8.2,4.2-17.6c-0.1-0.4-0.3-0.8-0.5-1.2
|
|
||||||
c0,0-0.1,0.1-0.1,0.1c0,6.8-3.3,9.7-4.6,14.3C102.7,46.1,102.5,46.9,102.4,47.6 M102.5,33.6l-0.6-1.6l-0.4-0.9
|
|
||||||
c-1-1.8-2.4-3.4-4.1-4.6c-1.4-1.2-2.6-2.5-3.6-4c0,0-0.1,0-0.2,0h-0.1c0.1,0.3,1,3.3,1.6,4.7c1,1.9,2.2,3.8,3.6,5.4L99,33
|
|
||||||
c1.7,2.3,3,4.8,3.9,7.5c0,0.1,0.1,0.1,0.1,0.1l1.7-5.2c0.6-1.8,1.1-3.7,1.5-5.6c0.6-4.5-0.8-10.2-3.4-13.4c0,0-0.1,0.1-0.1,0.2
|
|
||||||
l0.1,0.4l0.2,0.6c0.5,2.4,0.6,5,0.1,7.4c-0.4,1.9-0.5,3.9-0.5,5.9c0,0.3,0.2,2.8,0.2,2.9s-0.1,0-0.2,0 M94.5,8.5
|
|
||||||
c0.8,0.8,1.5,1.7,1.9,2.8c0.7,1.7,0.9,4.2,1.4,6.1l0.9,3.3c0,0.1-0.1,0.2-0.2,0.1c-1.5-1.8-3.3-3.3-5.4-4.5
|
|
||||||
c-1.4-0.8-2.5-1.9-3.5-3.1l-0.5-0.7c0,0-0.1-0.1-0.2,0c0,0.1,0,0.2,0,0.3c0.5,2.2,1.5,4.3,3.1,6c1.3,1.2,2.7,2.3,4,3.4
|
|
||||||
c1.7,1.4,3.3,3.1,4.8,4.8c0,0,0.1,0.1,0.1,0v-1.6l0.1-4.8V19c0-1.6-0.3-3.3-0.9-4.8c-1-2.5-2.9-4.5-5.2-5.7
|
|
||||||
c-0.1-0.1-0.3-0.1-0.5-0.2C94.4,8.3,94.4,8.4,94.5,8.5 M84.2,3.8c1.4,1.3,2.6,2.8,3.7,4.4c1,1.6,2.1,3,3.5,4.3
|
|
||||||
c0.9,0.9,3.6,3,4.3,3.6c-0.1-0.8-1.4-6.5-4.9-9.3c-2-1.6-4.4-2.8-6.9-3.4c0,0.1,0,0.1,0,0.2L84.2,3.8 M28.2,81.7
|
|
||||||
c2.3-0.2,4.7-0.6,6.9-1.3l5.4-1.3h0.1c0,0,0-0.1-0.1-0.1h-0.1c-2.7-0.7-5.2-2-7.4-3.8l-4.7-4.5L24,67v0.2
|
|
||||||
c0.4,0.6,1.9,3.9,2.8,5.7c1.1,2.5,3.1,4.4,5.6,5.4c0.1,0.1,0,0.1-0.2,0.1c-2.8-0.4-5.7-0.6-8.6-0.7c-2.2,0-4.5-0.4-6.6-1
|
|
||||||
c-1.5-0.5-2.9-1.2-4.2-2.2c-0.1,0-0.1,0-0.2,0c2,2.8,4.8,5,8,6.2C23.1,81.5,25.6,81.8,28.2,81.7 M25.9,75.8
|
|
||||||
c0.2,0,0.3,0.1,0.6,0.1c0,0,0-0.1,0-0.1l-0.2-0.2c-1.7-1.7-2.9-3.8-3.7-6.1l-1.8-5.1c-1.1-3.1-2.7-6-4.8-8.6c0,0.1,0,0.1,0,0.2
|
|
||||||
c0.6,2.2,0.9,4.4,1.1,6.7C18,68.9,21,71.9,21,72s0,0.2-0.1,0.1l-0.4-0.3c-1.9-1.5-4-2.8-6.3-3.7c-1.8-0.8-3.5-1.7-5.1-2.8
|
|
||||||
c-1.9-1.2-3.6-2.7-5-4.4c0,0-0.1,0-0.1,0c0.3,0.8,0.6,1.6,1,2.4c1.5,2.9,3.7,5.5,6.4,7.4c2.6,2,5.6,3.3,8.8,3.7
|
|
||||||
C22.1,74.9,24,75.4,25.9,75.8 M9.8,62.8l6,3.7c0,0,0.1-0.1,0.1-0.2c-1.3-2.6-1.5-5.4-1.7-8.2c-0.2-2.5,0.2-5.5,0.1-7.9
|
|
||||||
c-0.2-2-0.6-4-1.2-5.9c0-0.1-0.1-0.2-0.1-0.3c0,0-0.1,0.1-0.1,0.1c0,0,0,0,0,0c-0.2,2.9-1.3,5.5-1.7,7.9
|
|
||||||
c-0.4,2.8-0.2,5.7,0.6,8.5c0.1,0.1-0.1,0.2-0.1,0.1c-2-2.7-4.2-5.2-6.6-7.5c-2.1-2-3.7-4.4-4.6-7.1c0,0-0.1-0.1-0.2-0.1
|
|
||||||
s0,0.2,0,0.4c0,3.7,1.1,7.4,3.3,10.5C5.2,59.1,7.3,61.2,9.8,62.8 M8.7,54c0.1-0.1,0.1-0.1,0.1-0.3c-0.2-2.5,0.1-5.1,1.1-7.4
|
|
||||||
c1.4-3.8,2.4-7.7,3-11.8c0-0.5,0.1-1.4,0.1-1.6c-0.1,0-0.1,0-0.1,0.1c-0.8,1.7-1.7,3.3-2.7,4.8C8.6,40,7,42.4,6.8,45.2
|
|
||||||
c-0.1,0.8-0.1,1.6,0,2.4c0,0,0,0.1-0.1,0.1c0,0,0,0,0-0.1L6,45.2c-1.4-4.6-4.6-7.5-4.6-14.3c0,0-0.1-0.1-0.1-0.1
|
|
||||||
c-0.2,0.4-0.3,0.8-0.5,1.2c-2.9,9.4,3,16.2,4.2,17.6S7.8,52.7,8.7,54 M4.5,35.3l1.7,5.2c0,0,0.1,0,0.1-0.1
|
|
||||||
c0.9-2.7,2.3-5.2,3.9-7.5l0.3-0.4c1.4-1.7,2.6-3.5,3.6-5.4c0.6-1.4,1.5-4.4,1.6-4.7h-0.1c-0.1,0-0.1,0-0.2,0
|
|
||||||
c-1,1.5-2.2,2.8-3.6,4c-1.7,1.2-3.2,2.8-4.2,4.7c-0.1,0.3-0.3,0.6-0.4,0.9l-0.6,1.7c0,0-0.1,0.2-0.1,0s0.2-2.5,0.2-2.9
|
|
||||||
c0-2-0.2-4-0.6-5.9c-0.5-2.5-0.4-5,0.1-7.4c0-0.2,0.1-0.4,0.2-0.6c0-0.1,0.1-0.3,0.1-0.4c0-0.1,0-0.1-0.1-0.2
|
|
||||||
c-2.6,3.2-4.1,9-3.5,13.4C3.4,31.6,3.9,33.5,4.5,35.3 M8.1,20.7l0.1,4.8L8.2,27h0.1c1.4-1.8,3-3.4,4.7-4.9l4-3.4
|
|
||||||
c1.6-1.7,2.6-3.8,3.1-6c0-0.1,0-0.2,0-0.3H20l-0.5,0.7c-0.9,1.2-2.1,2.3-3.4,3.1c-2.4,1.5-4,2.6-5.4,4.5
|
|
||||||
c-0.1,0.1-0.2,0.1-0.1-0.1l0.9-3.3c0.5-1.9,0.7-4.4,1.4-6.1c0.4-1,1.1-2,1.9-2.8c0-0.1,0-0.1,0-0.2c-0.2,0-0.3,0.1-0.5,0.2
|
|
||||||
C11.8,9.7,10,11.8,9,14.2c-0.6,1.5-1,3.1-0.9,4.8L8.1,20.7 M13.4,16L13.4,16l4.4-3.6c1.3-1.3,2.5-2.7,3.5-4.3
|
|
||||||
c1-1.6,2.3-3.1,3.7-4.4l0.3-0.3c0-0.1,0-0.1,0-0.2c-2.5,0.6-4.9,1.7-6.9,3.4C14.7,9.5,13.5,15.2,13.4,16 M53.6,47
|
|
||||||
c0.3-0.4-0.4-0.7-0.6,0S53.3,47.5,53.6,47 M61.2,29.4c-0.3-0.1-1.4,1.2-1.2,1.4C60.5,30.5,60.9,30,61.2,29.4 M61.4,29.2
|
|
||||||
c0.2,0.1,0.9-0.3,0.8-0.4s-1-0.5-1-0.3C61.2,28.9,61.3,29.1,61.4,29.2 M74.9,41.6c0.4-0.1,0.3-0.7,0-0.7s-0.7,0.5-0.6,0.5
|
|
||||||
S74.7,41.7,74.9,41.6 M70,28.3c-0.3,0-0.4,0.3-0.1,0.5c0.3,0.1,0.5,0,0.7-0.1c0.2-0.1,0.4-0.3,0.4-0.6s-0.4-0.7-0.2-0.9
|
|
||||||
s0.5,0.1,0.7,0s0.3-0.3,0.3-0.5s-0.1-0.8-0.5-0.8s-0.8,0.8-0.8,0.8c-0.1,0.2-0.1,0.5,0,0.7C70.6,27.8,70.5,28.3,70,28.3"/>
|
|
||||||
<path class="st0" d="M76.6,28.4c0,0.2,0.5,1.5,0.6,1.8s0.2,1.4,0.4,1.3s0.2-0.7,0.1-1c-0.1-0.7-0.3-1.5-0.5-2.1
|
|
||||||
c-0.1-0.4-0.8-1.9-1-1.8s0.3,1,0.4,1.4S76.5,28.2,76.6,28.4 M73.1,11.4c0.3,0.1,0.3-0.5-0.2-0.9s-1.3-0.2-1.1,0
|
|
||||||
C72.2,10.8,72.6,11.2,73.1,11.4 M58.1,7.1c-0.7-0.4-0.1-1-0.6-1.4c-0.6-0.2-1.2-0.1-1.6,0.3c-0.5,0.6,0.6,0.4,0.9,0.6
|
|
||||||
s1.3,0.9,1.4,0.8S58.2,7.1,58.1,7.1 M62.1,5.1c-0.9-0.4-4.2-0.4-4.1,0.5s1.9,0,2.4,0S62.9,5.5,62.1,5.1 M53,43.7
|
|
||||||
c-0.2-0.1-0.5,0.1-0.6-0.1s-0.3-0.1-0.3,0s-0.1,0.3,0.1,0.5c0.2,0.2,0.6,0.2,0.8,0C53.1,44,53.1,43.8,53,43.7 M51.1,37
|
|
||||||
c0.3,0,0.3-0.2,0.4-0.2s0,0.2,0.3,0.2s0.6-0.7-0.3-0.7C50.8,36.3,50.9,37,51.1,37 M52.3,37.8c-0.5-0.1-0.4,0.2-0.8,0.2
|
|
||||||
c-0.6,0.1-0.1-0.4-0.3-0.6c-0.1-0.1-0.4,0.4-0.5,0.7c0,0.2,0,0.6,0.2,0.7l1.9,0.2C53.2,39,52.8,37.9,52.3,37.8 M46.1,44.3
|
|
||||||
c0.2,0,0.3-0.6,0.2-0.9s-0.7-0.1-0.7,0.1S46,44.3,46.1,44.3 M38.1,44.3c0-0.2,0-1-0.2-1.2s-0.2,0.1-0.3,0.1s-0.1-0.4-0.2-0.4
|
|
||||||
s0,0.6,0.2,1S38.1,44.8,38.1,44.3 M37.9,42.5c0.2-0.6,0.3-1.2,0.3-1.8c0-0.5-0.3-0.9-0.4-0.9s0,0.3,0.1,0.8c0,0.5-0.2,1-0.3,1.5
|
|
||||||
C37.6,42.2,37.8,42.7,37.9,42.5"/>
|
|
||||||
<path class="st0" d="M27.7,64.9c14.9,14.9,38.9,14.9,53.8,0s14.9-38.9,0-53.8s-38.9-14.9-53.8,0S12.8,50.1,27.7,64.9 M18.2,38.8
|
|
||||||
H24c0.1,3,0.6,5.9,1.5,8.7c-0.3-0.1-0.6-0.2-0.9-0.4c-0.4-0.2-0.7,0.1-0.8,0.1c-0.4,0-0.9-0.3-0.9,0s0.4,0.1,0.4,0.3
|
|
||||||
s-1,0.2-1.1-0.2s-0.3-0.8-0.4-0.3s-0.5,0.4-0.7,0.5c-0.1,0.1-0.2,0.3-0.2,0.5c0,0.2-0.5,0.1-0.5,0.4s0.3,0.4,0.4,0.7
|
|
||||||
s0.4,0.5,0.2,0.6s-0.1-0.1-0.3,0s0.9,3.1,1.1,3s-0.3-1-0.3-1.4s0.1-0.5,0.4-0.7s1.1,1.2,1.4,1s-0.1-0.4,0.2-0.5s1.2,1.3,1.5,0.9
|
|
||||||
c0.2-0.3,0.4,0.2,0.4,0.3c0.3,0.5,0.8,0.5,1.1,1.1s1,1.7,1.5,1.7s0.2-0.5,0.4-0.5s0.4,0.7,0.7,1.1c0.2,0.3,0.5,0.5,0.9,0.6
|
|
||||||
c0.7,0.9,1.5,1.8,2.3,2.7l-4.1,4.1C21.9,56.7,18.3,48,18.2,38.8 M51.3,30.5l-0.4,0.2c-0.6,0.3-1.1,0.6-1.5,1l-4.1-4.1
|
|
||||||
c2.4-2.1,5.4-3.4,8.5-3.5v5.8c-0.7,0.1-1.4,0.2-2.1,0.5c0.2-0.4,0.6-0.8,0.6-0.8S51.6,30,51.3,30.5 M48.2,40
|
|
||||||
C48.2,40,48.2,40.1,48.2,40c0,0.1,0,0.2,0,0.2c0-0.2-0.1-0.3-0.2-0.5c-0.1-0.1-0.2-0.2-0.3-0.2c-0.1,0-0.2,0-0.3,0h-0.2L47,39.6
|
|
||||||
h-1.4c-0.2,0-0.3,0-0.3-0.1c-0.1-0.4,0.5-0.1,0.9-1.3c0.1-0.1,0.1-0.3,0.2-0.4l0.1-0.2l0.1-0.1c0,0,0.1-0.1,0.1-0.1
|
|
||||||
c0.2-0.2,0.4-0.2,0.6-0.2h0.2l0.2,0.2L48,38c0.1,0.1,0.2,0.1,0.2,0.2c0.2,0.1,0.3,0.2,0.4,0.3l0.1,0.1c0,0,0,0.1,0,0.1
|
|
||||||
c0.1,0.1,0.1,0.1,0.2,0.1h0.1c0.1,0,0.1,0,0.2,0h0.1c0.2-0.1,0.2,0,0.3,0c0,0,0,0.1,0,0.1c0,0.1,0,0.1-0.1,0.2
|
|
||||||
c0,0.1-0.1,0.1-0.1,0.2c-0.1,0.1-0.2,0.2-0.3,0.2c-0.2,0-0.4-0.1-0.5-0.1c-0.1,0-0.2,0-0.2,0.1V40 M37.4,49.6
|
|
||||||
c-0.3-0.5-0.4-1.2-0.4-1.8c0-0.6-0.2-1.2-0.5-1.7c-0.1-0.4-0.2-0.8-0.2-1.2c0-0.7-0.6-0.5-0.6-0.7s0.5,0,0.5-0.2s-0.6-1-1.1-1.2
|
|
||||||
s-0.3-0.5-0.3-0.8c0-0.3,0-0.6-0.2-0.8c-0.1-0.4,0-1.1,0.5-1.1c0.2,0,0.5,0.2,0.8,0s0.1-0.8,0.1-1.3h2.8c0,0.4,0.1,0.9,0.1,1.3
|
|
||||||
c-0.2,0.1-0.3,0.3-0.2,0.4c0.1,0.1,0.2,0.2,0.3,0.1c0.5,2.9,1.8,5.6,3.8,7.8l-4.1,4.1c-0.3-0.3-0.6-0.7-0.9-1.1
|
|
||||||
c0-0.1,0-0.2,0-0.3c0-0.7-0.5-1.1-0.7-1.7 M33.5,42.6c-0.3-1.2-0.4-2.5-0.5-3.8h2.4c-0.2,0.3-0.7,0.6-0.8,0.9s-0.7,1.3-0.3,1.7
|
|
||||||
C35.2,42.4,34.1,42.8,33.5,42.6 M34,57.4l-0.5,0.5c-0.2-0.2-0.5-0.5-0.7-0.7C33.2,57,33.6,57.1,34,57.4 M40.2,31.7
|
|
||||||
c-0.1,0-0.1,0.1-0.2,0.1c-0.3,0.3-1.1,0.2-1,0.5s2.2-0.7,2.2-0.5s-0.9,0.5-1.5,0.8s-0.8,0.8-1.8,0.8c-0.5,0-0.7,0.4-0.9,0.7
|
|
||||||
c-0.3,0.4-0.5,0.8-0.7,1.2c0,0.6-0.1,1.2-0.4,1.8h-2.9c0.2-5.1,2.2-10,5.7-13.8l4.1,4.1C41.8,28.8,40.9,30.2,40.2,31.7 M44,28.7
|
|
||||||
l3.6,3.6c-0.1,0-0.2,0-0.4,0c-0.4,0-0.4-0.3-0.7-0.3c-0.6,0.1-0.7,0.3-0.8,0.2c-0.4-0.4-0.9-0.7-1.5-1c-0.7-0.2-1.4-0.2-2,0.1
|
|
||||||
c-0.1,0-0.1,0.1-0.2,0.1C42.7,30.5,43.4,29.6,44,28.7 M39,36c0,0.4-0.1,0.8-0.1,1.2h-2.1c-0.1-0.3,0-0.6,0.2-0.9
|
|
||||||
c0.2-0.4,0.7-0.6,1.2-0.5C38.4,35.8,38.7,35.9,39,36 M40.8,40.7L41,41c0.2,0.2,0.4,0.4,0.6,0.3s0.7,0,0.8,0
|
|
||||||
c0.3,0.1,0.5,0.3,0.7,0.5c0.2,0.3,0.6,0.1,0.9,0.3s0.6,0.4,0.2,0.6s0.4,0.6,0.5,0.6s0.2-0.2,0.2-0.5c0-0.1,0.2-0.5,0.5-0.4
|
|
||||||
s1.2,1.2,1.5,0.8s0.1-0.9,0.2-1.1c0-0.1,0.1-0.2,0.2-0.2c0.3,0.5,0.5,0.9,0.9,1.3l-4.1,4.1C42.4,45.5,41.2,43.2,40.8,40.7
|
|
||||||
M44,26.4l-4-4.1c3.8-3.5,8.7-5.5,13.8-5.7v5.8C50.2,22.5,46.8,23.9,44,26.4 M38.8,21.1L34.7,17c5.2-4.9,12-7.7,19.1-7.9v5.8
|
|
||||||
C48.2,15.1,42.8,17.3,38.8,21.1 M37.6,22.2c-3.8,4.1-6,9.4-6.2,15h-5.8c0.2-7.1,3-13.9,7.9-19.1L37.6,22.2z M31.4,38.8
|
|
||||||
c0,1.1,0.1,2.1,0.3,3.2c-0.1,0-0.1-0.3-0.4-0.2s-1.4,2-1.9,2.8c-0.4,0.7,0.2,2.2-0.4,2.7c-0.6,0.2-1.2,0.3-1.8,0.3h-0.1
|
|
||||||
c-1-2.8-1.5-5.7-1.6-8.6L31.4,38.8z M53.7,74.4c-9.1-0.2-17.8-3.8-24.3-10.1l4.1-4.1c5.5,5.2,12.7,8.2,20.2,8.4L53.7,74.4z
|
|
||||||
M53.7,67c-7.1-0.2-13.9-3-19.1-7.9l0.7-0.7c0.1,0.1,0.3,0.2,0.5,0.3c0.4,0.2,0.9,0.3,1.4,0.2c0.4-0.1,1.2-0.8,1.7-0.8
|
|
||||||
s1.3,0.2,1.8-0.1s-0.3-1.3-0.6-1.8c-0.1-0.1-0.1-0.2-0.2-0.3c3.9,3.3,8.9,5.2,14,5.3L53.7,67z M53.7,59.5
|
|
||||||
c-5.1-0.2-10-2.2-13.8-5.7l4.1-4.1c1.9,1.7,4.2,3,6.8,3.6c-0.9,0.4-1.3,1-1.2,1.5S49,55.6,49,56.2s0.8,1,0.9,1.6
|
|
||||||
c0.1,0.3,0.8,0.8,1.4,1.2c0.8,0.2,1.6,0.3,2.3,0.2L53.7,59.5z M53.5,51.5c-0.3-0.2-0.5,0.2-0.9,0.4c-2.8-0.4-5.3-1.6-7.4-3.4
|
|
||||||
l4.1-4.1c1.3,1,2.8,1.7,4.4,1.8c0,0.2,0.2,0.4,0.2,0.8s-0.3,0.6-0.2,0.8s1,0,1.1-0.3s-0.3-0.5-0.4-0.8c-0.1-0.2-0.1-0.3-0.2-0.5
|
|
||||||
h0.3c0.3,0,0.6,0,0.9-0.1c0.1,0,0.2-0.1,0.2-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0.1-0.1,0.1-0.2v0l0.1,0.1
|
|
||||||
c0.1,0.2,0.3,0.8,0.5,0.7s0.3-1,0.2-1.2c-0.2-0.3-0.2-0.6,0-0.9c0-0.1,0.1-0.7,0.3-0.6s0,0.6,0,0.8c0,0.3,0.2,0.7,0.5,0.5
|
|
||||||
c0.2-0.1,0.4-0.4,0.6-0.3s-0.5,0.3-0.6,0.5s0.3,0.3,0.2,0.4s-0.2,0-0.3,0.1s0.2,0.7,0,0.8s-0.9,0.3-1.1,0.4s-0.4-0.1-0.3-0.2
|
|
||||||
s0-0.5-0.2-0.5s-0.2,0.1-0.2,0.3s0.2,0.5,0.2,0.6s-0.3,0.2-0.5,0.3c-0.2,0.3-0.5,0.6-0.8,0.8c-0.3,0.2-0.9,0.2-0.9,0.4
|
|
||||||
s0.3,0.2,0.4,0.3c0.2,0.3,0.3,0.7-0.1,0.9s-0.9-0.3-1.1-0.2s-0.3,0.6-0.4,1.2s1.1,0.8,1.7,0.5c0.4-0.2,0.3-0.8,0.7-1
|
|
||||||
s0.3-0.6,0.7-0.5s0.3-0.3,0.7-0.3s0.4,0.3,0.9,0.4c0.8,0.2,0.8,0.8,0.9,0.5s0.2-0.5-0.4-0.7s-0.9-0.9-0.4-0.7
|
|
||||||
c0.6,0.3,1.1,0.3,1.2,0.6s0.7,0.2,0.8,0.5c0.1,0.5,0.5,0,0.2-0.3s-0.2-0.4,0-0.6s0.3,0.1,0.6-0.3s-0.1-0.3-0.2-0.5
|
|
||||||
s0-1.3,0.4-1.1s0.8-0.1,0.6-0.2s0.1-0.7,0.2-0.7s0,0.4,0.1,0.5s1.1-0.3,1.2,0.2s-0.7,0.8-0.9,0.8c-0.4,0-0.7,0.4-1,0.8
|
|
||||||
s-0.6,0.5-0.4,0.9s0.6,0.3,1,0.1s0.7-0.5,0.9-0.6c0.4-0.2,0.7,1,0.5,1.2s-0.6,0.3-0.8,0.5c-0.6,0.3-1.2,0.6-1.9,0.6
|
|
||||||
c-0.4,0.1-0.4,0.2-0.5,0.6s-1.9,0.1-2.3,0.1s0.3-0.9-0.3-0.8s-1.2,0.2-1.8,0.3C54.6,51.4,54,51.9,53.5,51.5 M58.8,60.8
|
|
||||||
c0.5,0.2,1,0.6,1.3,1c0.3,0.5,0.4,0.7,0.2,1.2c-0.5,0.9-0.3,1.5,0.7,1.8c0.6,0.2,0.8,0.8,1.2,1.2c-2.2,0.6-4.5,0.9-6.8,1v-5.8
|
|
||||||
C56.5,61.1,57.7,61,58.8,60.8 M55.4,59.6v-0.7c1.3-0.2,1,0.6,1.9,0.3c0.3-0.1,0.6,0,0.8,0.2C57.2,59.4,56.3,59.5,55.4,59.6
|
|
||||||
M55.4,74.5v-5.9c3-0.1,6-0.6,8.9-1.6c0.1,0.1,0.2,0.1,0.3,0.1c0.4,0,0.8-0.2,1.1-0.4c1-0.4,1.9-0.9,2.7-1.5
|
|
||||||
c2.6-1.3,5.1-3.1,7.2-5.1l4.1,4.1C73.2,70.6,64.5,74.2,55.4,74.5 M71.6,22.2l1.4-1.4c0.4,0.4,0.8,0.7,1.4,0.8
|
|
||||||
c0.5,0.1,0.7,0.3,0.8,0.8s0.6,0.7,1.1,0.8s0.8,0.7,1.2,0.7s1.7,1.8,2.2,2.4c0.3,0.3,0.7,0.8,1,0.4s0.3-0.3,0.5-0.4
|
|
||||||
c1.5,3.4,2.4,7.2,2.5,10.9h-5.8c0-1.3-0.2-2.6-0.5-3.9c0.2-0.4,0.3-0.8,0.3-1.3c0-0.4-0.4-0.6-0.7-0.3c-0.2-0.8-0.5-1.5-0.8-2.2
|
|
||||||
c-0.1-0.4-0.2-0.9-0.3-1.3c0-0.1-0.2-0.2-0.4-0.4c-0.2-0.4-0.3-0.7-0.5-1c0.3-0.2,0.4-0.7,0-0.6c-0.6,0.1-0.2-0.3-0.4-0.5
|
|
||||||
s-0.2,0-0.3,0.1c-0.8-1.2-1.6-2.3-2.6-3.4c0,0,0,0,0-0.1C71.5,22.3,71.5,22.2,71.6,22.2 M75.1,56.1c-0.2-0.4-0.3-0.9-0.5-1.3
|
|
||||||
c-0.1-0.4-0.9-0.4-0.9-0.2c0,0.4,0,0.8-0.1,1.2v0.1l-2.1-2.1c3.8-4.1,6-9.4,6.2-15h5.8c-0.2,7.1-3,13.9-7.9,19l-0.3-0.3
|
|
||||||
C75.4,57.1,75.3,56.6,75.1,56.1 M70.3,60.1c0.3-0.5,0.9-1.4,1.2-1.9s-0.8-1.2-1.4-1.4s-0.6-0.5-0.6-1c0.3-0.2,0.6-0.5,0.9-0.8
|
|
||||||
l4.1,4.1c-1.4,1.3-2.8,2.4-4.4,3.4c-0.1-0.2,0.6-0.9,0.8-1.2S70.1,60.6,70.3,60.1 M72.8,36.2c-0.5-0.7,0.2-0.8,0.9-1.1
|
|
||||||
c0.4-0.2,0.9,0.1,0.9-0.1s0.2-0.6,0.4-0.7c0.2-0.1,0.5-0.3,0.6-0.5c0,0.2,0.1,0.4,0.1,0.6c-0.2,0.4-0.3,0.7-0.3,1.1
|
|
||||||
c0,0.3,0,0.7,0.3,0c0-0.1,0.1-0.1,0.1-0.2C76,36,76,36.6,76,37.2h-4.3c0,0,0,0,0-0.1C72,36.6,73.1,36.7,72.8,36.2 M73.6,28
|
|
||||||
c0,0,0,0.1-0.1,0.1c-0.1,0.1-0.6-0.7-0.6-0.1s0.2,0.8,0.6,0.9s0.2,0.3,0.5,0.4c0.1,0,0.3,0.1,0.4,0.2c0.5,1.1,0.8,2.2,1.1,3.4
|
|
||||||
c-0.2,0.1-0.3,0.2-0.4,0.3c-0.2,0.2-0.1,0.6-0.3,0.9c-0.3,0.5-0.4,0.8-1.2,0.6c-0.5-0.2-0.1-0.8,0-1.3s0.3-0.4,0.3-0.7
|
|
||||||
s-1-1.4-1.5-1c-0.5,0.4-0.4,0.8-0.8,1.2c-0.2,0.2-0.4,0.2-0.7,0s-0.4-0.4-0.3-0.6s-0.7-1.1-1-1.5c-0.4-0.5-1-0.8-1.6-0.8
|
|
||||||
c-0.5-0.9-1.2-1.8-1.9-2.6l4.1-4.1C71.6,24.8,72.7,26.3,73.6,28 M66.7,30.8l-0.2,0.3c-0.1,0.2-0.6-0.2-0.7-0.1s0.7,1.1-0.1,0.8
|
|
||||||
s-0.3-0.3-0.3-0.6s-0.7-0.5-0.3-0.7s0-0.5,0.4-0.6s0.3-0.5-0.2-0.6s-0.4,1.1-0.7,0.9c-0.3-0.1-0.6-0.1-0.9-0.1l1.4-1.4
|
|
||||||
c0.2,0.1,0.3,0.1,0.5,0.1C65.8,29.6,66.3,30.2,66.7,30.8 M65.1,51.1c0.6,0.1,1.3,0.2,1.9,0.4c0.4,0.2,0.7,0.6,1,0.1
|
|
||||||
c0.6-0.9,1-1.9,1.2-3c0.2-1.5-0.1-2-0.3-2s-0.6,0.4-1,0.4c-0.2,0-0.2,0.4-0.2,0.7s-0.4,0.6-0.5,0.4S66.9,48,67,48.2
|
|
||||||
s-0.8,0.1-1.2-0.1c-0.6-0.3,0.7-0.3,1.3-0.8c0.5-0.4,1-0.9,1.5-1.4c0.3-0.5,0.3-1.1,0.8-1.5s1.3-0.3,1.4-0.9s0.2-0.5,0.5-0.4
|
|
||||||
s3.1-0.1,3.1-1c0-0.4-0.6-0.9-1.2-1c-0.4,0-0.5-0.8-0.7-1.2c-0.2-0.4-0.4-0.8-0.7-1.2H76c-0.2,5.1-2.2,10-5.7,13.8l-0.1-0.1
|
|
||||||
v-0.4c0.1-0.8-0.5-2.1-0.7-1.9s0,0.2-0.6,1.1c-0.2,0.3-0.5,0.8-0.9,0.8s-0.4-0.2-1-0.1c-0.5,0.1-1.1,0.1-1.6,0
|
|
||||||
c-0.9-0.3-1.8-0.7-2.7-1.3c0.1-0.1,0.4,0.1,0.4-0.2S64.7,51,65.1,51.1 M80.8,63.2l-4.1-4.1c5.2-5.5,8.2-12.7,8.4-20.2H91
|
|
||||||
C90.8,48,87.2,56.6,80.8,63.2 M91,37.2h-5.9c-0.1-4.3-1.1-8.5-3-12.4l0.1-0.1c0.4-0.4-1.9-3.4-2.3-3.7s-0.8-0.8-1.3-1.3
|
|
||||||
c-0.8-0.8-1.6-1.7-2.2-2.6l4.3-4.3C87.2,19.4,90.8,28.1,91,37.2 M55.4,1.6c9.1,0.2,17.8,3.8,24.4,10.1l-4,4
|
|
||||||
c-0.2-0.1-0.4-0.2-0.3-0.4c0.2-0.3-0.3-0.3-0.4-1.1c-0.2-0.8-0.8-1.5-1.5-1.9c-0.5-0.3-0.8-0.7-1.3-0.9s-1.5-0.8-2-0.6
|
|
||||||
c-0.3,0.1-0.7,0.2-1,0.2C65,8.7,60.3,7.5,55.5,7.4L55.4,1.6z M55.4,9.1c4.3,0.1,8.4,1.2,12.3,3.1c0.1,0.6,0.4,1.3,0.8,1.8
|
|
||||||
c0.2,0.5,0.5,0.9,0.8,1.4c0.3,0.3,0.1,0.9,0.2,1.4c0,0.2,0.2,0.4,0.3,0.6c0,0.3,0,0.5,0,0.8c0,0.1,0.4,0.1,0.7-0.1
|
|
||||||
s0.5-0.6,0.9-0.5s0.9,0.9,1.2,1.4l-1.9,1.9c-0.2-0.4-0.4-0.9-0.3-0.9s0.3,0.1,0.4,0.1c0.4,0-0.3-0.3-0.3-0.4
|
|
||||||
c-0.3-0.3-0.3-0.7-0.7-1s-1-0.1-1.2-0.5c-0.4-0.7-0.9-1.3-1.6-1.8c-0.1,0,0.8,1.1,0.5,1.3S66.1,17,66,17.2s1.2,0.7,1.6,1.1
|
|
||||||
c0.2,0.2,0.6,0.8,1,1.3c-3.8-2.9-8.4-4.5-13.2-4.7L55.4,9.1z M55.4,16.5c5.1,0.2,10,2.2,13.8,5.7l-4.1,4.1
|
|
||||||
c-2.7-2.4-6.1-3.8-9.7-4L55.4,16.5z M55.4,24c3.2,0.2,6.2,1.4,8.5,3.5l-0.2,0.2l-0.2-0.1c-0.5-0.2-1.5,0.8-1.3,0.9
|
|
||||||
s0.6-0.4,0.8-0.3h0.1L61.4,30c-0.5,0.2-1,0.6-1,0.9c0,0,0,0,0,0.1l-0.6,0.6l-0.3-0.3c-0.5-0.4-1-0.7-1.6-0.9
|
|
||||||
c0.3-0.2,0.4-0.5,0.5-0.9c0-0.6-0.2-0.4-0.5-0.1s-0.6,0.4-0.8,0.7c-0.5-0.2-1.1-0.3-1.6-0.3V24z M54.7,31.4
|
|
||||||
c0.1,0.2,0,0.4-0.1,0.5c0,0,0,0,0,0c-0.2,0.2-0.8-0.5-0.9,0.1c-0.2,0.6,0.4,0.3,0.4,0.4c0.3,0.4,0.7,0.6,1.2,0.7
|
|
||||||
c0.4,0,1,0,1,0.4c0,0.2,0.5,0.2,0.6,0.4c0,0.3,0.3,0.8,0.5,0.7c0.2-0.1,0.5,0.1,0.6,0.3c0.1,0.2,0,0.3-0.1,0.5
|
|
||||||
c-0.3,0.3,0.3,0.2,0.4,0.8s-0.5,0.2-0.6,0.6c-0.2,0.3-0.4,0.5-0.6,0.8c-0.1,0.1,0.1,0.3,0.2,0.2s0.3-0.4,0.6-0.4
|
|
||||||
s0.6,1.1,0.9,1.2s0.2,0.5,0.3,0.6s-0.5,0-0.4,0.2s0.7,0.3,0.7,0.6c-0.1,0.3-0.3,0.6-0.7,0.6c-0.3,0-0.8-0.7-0.8-0.5
|
|
||||||
s0.2,0.8,0.5,0.8s1-0.3,0.7,0.1s-0.2,1-0.4,1s-0.3,0-0.1,0.3c0.1,0.3,0,0.6-0.2,0.9c-0.2,0.2-0.7,0-0.7-0.1s0.6-0.1,0.6-0.4
|
|
||||||
s-0.3-0.4-0.9-0.2c-0.3,0.1-0.4-0.1-0.6-0.1s-0.8,0.7-0.8,0.8C56,43.3,56,43.5,56,43.7c0,0.4-0.1,0.7-0.3,1
|
|
||||||
c-0.4,0.1-0.7,0.1-1.1,0.1c-1.6,0-3.2-0.7-4.4-1.7c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0.1,0.4-0.1,0.6-0.2s0.7,0.2,1,0s1-1.5,0.9-1.8
|
|
||||||
s0.7-0.8,0.6-0.9s-0.2,0.1-0.2,0s0.2-0.1,0-0.5s-0.5-0.2-0.7-0.2c-0.3-0.2-0.8-0.3-0.9-0.2s-0.4-0.2-0.5-0.1
|
|
||||||
c-0.1,0-0.3,0.1-0.3,0.3c-0.1,0.2,0.1,0.4,0.1,0.6c-0.1,0.4-0.7,0.7-0.7,1s-0.3,0.1-0.4,0.2s0,0.3-0.2,0.3s-0.5,0.5-0.7,0.9
|
|
||||||
c-0.3-0.4-0.6-0.9-0.9-1.3c0.2-0.1,0.4-0.2,0.5-0.1c0.3,0.2,1.5-1.9,1.3-2.5s-0.5-0.2-0.8-0.1s-0.3-0.2-0.2-0.3s1.4-0.1,0.7-0.5
|
|
||||||
c-0.3-0.2-1.1-0.2-1-0.5s0.5,0,0.6,0c0.5,0.2,0.8-0.8,1.1-0.8c0.5,0,0.3-1-0.2-0.7s-0.7,0.2-0.9,0.5s-0.7,0.7-0.7,0.3
|
|
||||||
c0-0.2,1.1-0.8,1.3-1.1c0.2-0.2,0.4-0.5,0.5-0.8c0.1-0.3,1.5-0.5,1.8-0.7c0.2-0.2,0.4-0.5,0.4-0.8c0-0.3-0.4-0.2-0.5-0.4
|
|
||||||
s0.5,0,0.5-0.3s-0.5,0-0.7-0.2c0-0.1,0-0.1,0.1-0.2C53.4,31.5,54,31.4,54.7,31.4l0.2,0 M53.8,1.6v5.8
|
|
||||||
c-7.5,0.2-14.7,3.2-20.2,8.4l-4.1-4.1C36,5.4,44.7,1.8,53.8,1.6 M28.2,12.9l4.1,4.1c-5.2,5.5-8.2,12.7-8.4,20.2h-5.8
|
|
||||||
C18.4,28.1,22,19.4,28.2,12.9"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 22 KiB |
@ -1,107 +0,0 @@
|
|||||||
{% load static %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
|
|
||||||
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
|
|
||||||
|
|
||||||
<link rel="stylesheet"
|
|
||||||
href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/fontawesome.min.css"
|
|
||||||
integrity="sha384-jLKHWM3JRmfMU0A5x5AkjWkw/EYfGUAGagvnfryNV3F9VqM98XiIH7VBGVoxVSc7" crossorigin="anonymous">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar sticky-top navbar-expand-lg navbar-light bg-light nav-custom">
|
|
||||||
<a class="navbar-brand" href="https://www.un.org/">Welcome to the United Nations</a>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav my-lg-0">
|
|
||||||
<li class="nav-item active">
|
|
||||||
<a class="nav-link " href="#">Home <span class="sr-only">(current)</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Login</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Contact us</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
|
|
||||||
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<header class="header container">
|
|
||||||
<div class="d-flex align-items-center">
|
|
||||||
<div class="logo">
|
|
||||||
<a href=""><img src="{% static 'img/un-logo-en.svg' %}" alt="United Nation" /></a>
|
|
||||||
</div>
|
|
||||||
<div class="title">
|
|
||||||
<a href="">The Integrated Disarmament
|
|
||||||
Demobilization and
|
|
||||||
Reintegration Standards</a>
|
|
||||||
</div>
|
|
||||||
<div class="search-box">
|
|
||||||
<form class="d-flex">
|
|
||||||
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
|
|
||||||
<button class="btn btn-outline-success" type="submit">Search</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="container mt-3">
|
|
||||||
<nav class="navbar navbar2 navbar-expand-lg navbar-light">
|
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
|
|
||||||
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav navbar-nav2 mr-auto">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="{% url 'search' %}">Search</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">FAQ</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">How to</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
{% block page_content %}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.6.0.slim.js"
|
|
||||||
integrity="sha256-HwWONEZrpuoh951cQD1ov2HUK5zA5DwJ1DNUXaM6FsY=" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.9.2/umd/popper.min.js"
|
|
||||||
integrity="sha512-2rNj2KJ+D8s1ceNasTIex6z4HWyOnEYLVC3FigGOmyQCZc2eBXKgOxQmo3oKLHyfcj53uz4QMsRCWNbLd32Q1g=="
|
|
||||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js"
|
|
||||||
integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
|
|
||||||
crossorigin="anonymous"></script>
|
|
@ -1,14 +0,0 @@
|
|||||||
<div class="navbar-header d-flex">
|
|
||||||
<a href=""><img class="navbar-btn pull-left" src="{% static 'img/un-logo-en.svg' %}"
|
|
||||||
alt="United Nation" /></a>
|
|
||||||
|
|
||||||
<a class="navbar-brand pull-left" href="">The Integrated Disarmament <br> Demobilization and <br>
|
|
||||||
Reintegration Standards</a>
|
|
||||||
<div class="justify-content-end">
|
|
||||||
<form class="d-flex pull-left">
|
|
||||||
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
|
|
||||||
<button class="btn btn-outline-success" type="submit">Search</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
@ -15,11 +15,13 @@ Including another URLconf
|
|||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from App import views
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('', include('App.urls')),
|
path('', include('App.urls')),
|
||||||
|
path('data_entry/', include('data_entry.urls')),
|
||||||
|
path('api/', include('api.urls')),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
BIN
mydb.sqlite3
BIN
mydb.sqlite3
Binary file not shown.
@ -1,4 +1,6 @@
|
|||||||
Django==3.1.7
|
Django==3.1.7
|
||||||
|
django-filter
|
||||||
|
djangorestframework
|
||||||
uWSGI>=2.0.18,<2.1
|
uWSGI>=2.0.18,<2.1
|
||||||
jsons==1.6.1
|
jsons==1.6.1
|
||||||
pandas==1.4.2
|
pandas==1.4.2
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user