mirror of https://github.com/doccano/doccano.git
25 changed files with 347 additions and 66 deletions
Split View
Diff Options
-
15.travis.yml
-
2Dockerfile
-
14README.md
-
15app/app/settings.py
-
18app/server/migrations/0003_shortcut.py
-
6app/server/models.py
-
2app/server/static/css/forum.css
-
3app/server/static/js/document_classification.js
-
10app/server/static/js/filter.js
-
48app/server/static/js/label.js
-
48app/server/static/js/mixin.js
-
3app/server/static/js/sequence_labeling.js
-
38app/server/templates/admin/label.html
-
4app/server/templates/annotation/document_classification.html
-
4app/server/templates/annotation/sequence_labeling.html
-
12app/server/templates/base.html
-
14app/server/templates/tags/azure_appinsights.html
-
10app/server/templates/tags/google_analytics.html
-
0app/server/templatetags/__init__.py
-
18app/server/templatetags/analytics.py
-
6app/server/tests/test_models.py
-
10app/server/utils.py
-
93azuredeploy.json
-
5requirements.txt
-
15tools/cd.sh
@ -1,7 +1,22 @@ |
|||
language: python |
|||
|
|||
services: |
|||
- docker |
|||
|
|||
python: |
|||
- "3.6" |
|||
|
|||
cache: pip |
|||
|
|||
install: |
|||
- pip install -r requirements.txt |
|||
|
|||
script: |
|||
- tools/ci.sh |
|||
|
|||
deploy: |
|||
- provider: script |
|||
script: tools/cd.sh |
|||
on: |
|||
repo: chakki-works/doccano |
|||
tags: true |
@ -0,0 +1,18 @@ |
|||
# Generated by Django 2.1.5 on 2019-02-06 02:00 |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('server', '0002_document_metadata'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='label', |
|||
name='shortcut', |
|||
field=models.CharField(blank=True, choices=[('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e'), ('f', 'f'), ('g', 'g'), ('h', 'h'), ('i', 'i'), ('j', 'j'), ('k', 'k'), ('l', 'l'), ('m', 'm'), ('n', 'n'), ('o', 'o'), ('p', 'p'), ('q', 'q'), ('r', 'r'), ('s', 's'), ('t', 't'), ('u', 'u'), ('v', 'v'), ('w', 'w'), ('x', 'x'), ('y', 'y'), ('z', 'z'), ('ctrl a', 'ctrl a'), ('ctrl b', 'ctrl b'), ('ctrl c', 'ctrl c'), ('ctrl d', 'ctrl d'), ('ctrl e', 'ctrl e'), ('ctrl f', 'ctrl f'), ('ctrl g', 'ctrl g'), ('ctrl h', 'ctrl h'), ('ctrl i', 'ctrl i'), ('ctrl j', 'ctrl j'), ('ctrl k', 'ctrl k'), ('ctrl l', 'ctrl l'), ('ctrl m', 'ctrl m'), ('ctrl n', 'ctrl n'), ('ctrl o', 'ctrl o'), ('ctrl p', 'ctrl p'), ('ctrl q', 'ctrl q'), ('ctrl r', 'ctrl r'), ('ctrl s', 'ctrl s'), ('ctrl t', 'ctrl t'), ('ctrl u', 'ctrl u'), ('ctrl v', 'ctrl v'), ('ctrl w', 'ctrl w'), ('ctrl x', 'ctrl x'), ('ctrl y', 'ctrl y'), ('ctrl z', 'ctrl z'), ('shift a', 'shift a'), ('shift b', 'shift b'), ('shift c', 'shift c'), ('shift d', 'shift d'), ('shift e', 'shift e'), ('shift f', 'shift f'), ('shift g', 'shift g'), ('shift h', 'shift h'), ('shift i', 'shift i'), ('shift j', 'shift j'), ('shift k', 'shift k'), ('shift l', 'shift l'), ('shift m', 'shift m'), ('shift n', 'shift n'), ('shift o', 'shift o'), ('shift p', 'shift p'), ('shift q', 'shift q'), ('shift r', 'shift r'), ('shift s', 'shift s'), ('shift t', 'shift t'), ('shift u', 'shift u'), ('shift v', 'shift v'), ('shift w', 'shift w'), ('shift x', 'shift x'), ('shift y', 'shift y'), ('shift z', 'shift z'), ('ctrl shift a', 'ctrl shift a'), ('ctrl shift b', 'ctrl shift b'), ('ctrl shift c', 'ctrl shift c'), ('ctrl shift d', 'ctrl shift d'), ('ctrl shift e', 'ctrl shift e'), ('ctrl shift f', 'ctrl shift f'), ('ctrl shift g', 'ctrl shift g'), ('ctrl shift h', 'ctrl shift h'), ('ctrl shift i', 'ctrl shift i'), ('ctrl shift j', 'ctrl shift j'), ('ctrl shift k', 'ctrl shift k'), ('ctrl shift l', 'ctrl shift l'), ('ctrl shift m', 'ctrl shift m'), ('ctrl shift n', 'ctrl shift n'), ('ctrl shift o', 'ctrl shift o'), ('ctrl shift p', 'ctrl shift p'), ('ctrl shift q', 'ctrl shift q'), ('ctrl shift r', 'ctrl shift r'), ('ctrl shift s', 'ctrl shift s'), ('ctrl shift t', 'ctrl shift t'), ('ctrl shift u', 'ctrl shift u'), ('ctrl shift v', 'ctrl shift v'), ('ctrl shift w', 'ctrl shift w'), ('ctrl shift x', 'ctrl shift x'), ('ctrl shift y', 'ctrl shift y'), ('ctrl shift z', 'ctrl shift z'), ('', '')], max_length=15, null=True), |
|||
), |
|||
] |
@ -0,0 +1,10 @@ |
|||
export default function simpleShortcut(shortcut) { |
|||
if (shortcut === null) { |
|||
shortcut = ''; |
|||
} else { |
|||
shortcut = shortcut.replace('ctrl', 'C'); |
|||
shortcut = shortcut.replace('shift', 'S'); |
|||
shortcut = shortcut.split(' ').join('-'); |
|||
} |
|||
return shortcut; |
|||
} |
@ -0,0 +1,14 @@ |
|||
{# See https://apmtips.com/blog/2015/03/18/javascript-snippet-explained/ #} |
|||
{% if azure_appinsights_ikey %} |
|||
<script type="text/javascript"> |
|||
var appInsights=window.appInsights||function(a){ |
|||
function b(a){c[a]=function(){var b=arguments;c.queue.push(function(){c[a].apply(c,b)})}}var c={config:a},d=document,e=window;setTimeout(function(){var b=d.createElement("script");b.src=a.url||"https://az416426.vo.msecnd.net/scripts/a/ai.0.js",d.getElementsByTagName("script")[0].parentNode.appendChild(b)});try{c.cookie=d.cookie}catch(a){}c.queue=[];for(var f=["Event","Exception","Metric","PageView","Trace","Dependency"];f.length;)b("track"+f.pop());if(b("setAuthenticatedUserContext"),b("clearAuthenticatedUserContext"),b("startTrackEvent"),b("stopTrackEvent"),b("startTrackPage"),b("stopTrackPage"),b("flush"),!a.disableExceptionTracking){f="onerror",b("_"+f);var g=e[f];e[f]=function(a,b,d,e,h){var i=g&&g(a,b,d,e,h);return!0!==i&&c["_"+f](a,b,d,e,h),i}}return c |
|||
}({ |
|||
{% if DEBUG %} |
|||
enableDebug: true, |
|||
{% endif %} |
|||
instrumentationKey: "{{ azure_appinsights_ikey }}" |
|||
}); |
|||
window.appInsights=appInsights,appInsights.queue&&0===appInsights.queue.length&&appInsights.trackPageView(); |
|||
</script> |
|||
{% endif %} |
@ -0,0 +1,10 @@ |
|||
{% if google_tracking_id %} |
|||
<!-- Global site tag (gtag.js) - Google Analytics --> |
|||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ google_tracking_id }}"></script> |
|||
<script> |
|||
window.dataLayer = window.dataLayer || []; |
|||
function gtag() { dataLayer.push(arguments); } |
|||
gtag("js", new Date()); |
|||
gtag("config", "{{ google_tracking_id }}"); |
|||
</script> |
|||
{% endif %} |
@ -0,0 +1,18 @@ |
|||
from django import template |
|||
|
|||
from app import settings |
|||
|
|||
register = template.Library() |
|||
|
|||
|
|||
@register.inclusion_tag('tags/google_analytics.html') |
|||
def google_analytics(): |
|||
return {'google_tracking_id': settings.GOOGLE_TRACKING_ID} |
|||
|
|||
|
|||
@register.inclusion_tag('tags/azure_appinsights.html') |
|||
def azure_appinsights(): |
|||
return { |
|||
'DEBUG': settings.DEBUG, |
|||
'azure_appinsights_ikey': settings.APPLICATION_INSIGHTS['ikey'], |
|||
} |
@ -0,0 +1,10 @@ |
|||
import string |
|||
|
|||
def get_key_choices(): |
|||
selectKey, shortKey = [c for c in string.ascii_lowercase], [c for c in string.ascii_lowercase] |
|||
checkKey = 'ctrl shift' |
|||
shortKey += [ck + ' ' + sk for ck in checkKey.split() for sk in selectKey] |
|||
shortKey += [checkKey + ' ' + sk for sk in selectKey] |
|||
shortKey += [''] |
|||
KEY_CHOICES = ((u, c) for u, c in zip(shortKey, shortKey)) |
|||
return KEY_CHOICES |
@ -0,0 +1,15 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
if [[ -z "${DOCKER_USERNAME}" ]]; then echo "Missing DOCKER_USERNAME environment variable" >&2; exit 1; fi |
|||
if [[ -z "${DOCKER_PASSWORD}" ]]; then echo "Missing DOCKER_PASSWORD environment variable" >&2; exit 1; fi |
|||
if [[ -z "${TRAVIS_TAG}" ]]; then echo "Missing TRAVIS_TAG environment variable" >&2; exit 1; fi |
|||
|
|||
set -o errexit |
|||
|
|||
docker build -t "${DOCKER_USERNAME}/doccano:latest" . |
|||
docker build -t "${DOCKER_USERNAME}/doccano:${TRAVIS_TAG}" . |
|||
|
|||
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin |
|||
|
|||
docker push "${DOCKER_USERNAME}/doccano:latest" |
|||
docker push "${DOCKER_USERNAME}/doccano:${TRAVIS_TAG}" |
Write
Preview
Loading…
Cancel
Save