diff --git a/app/corpora/events.py b/app/corpora/events.py index 42e3249d5db16f2fabe12449d98dc4f611356d5b..f02e1ac368d81012387bdd09fe695ed731692a1b 100644 --- a/app/corpora/events.py +++ b/app/corpora/events.py @@ -7,6 +7,7 @@ from ..events import connected_sessions from ..models import Corpus, User import cqi import math +from app import logger ''' @@ -36,14 +37,27 @@ def corpus_analysis_get_meta_data(corpus_id): db_corpus = Corpus.query.get(corpus_id) # TODO: Check if current user is actually the creator of the corpus? metadata = {} - metadata["corpus_name"] = db_corpus.title - metadata["corpus_description"] = db_corpus.description - metadata["corpus_creation_date"] = db_corpus.creation_date.isoformat() + metadata['corpus_name'] = db_corpus.title + metadata['corpus_description'] = db_corpus.description + metadata['corpus_creation_date'] = db_corpus.creation_date.isoformat() + metadata['corpus_last_edited_date'] = db_corpus.last_edited_date.isoformat() # get meta data from corpus in cqp server client = corpus_analysis_clients.get(request.sid) client_corpus = client.corpora.get('CORPUS') - metadata["corpus_properties"] = client_corpus.attrs['properties'] - # metadata["corpus_properties"] = client.api.corpus_properties('CORPUS') + metadata['corpus_properties'] = client_corpus.attrs['properties'] + metadata['corpus_size_tokens'] = client_corpus.attrs['size'] + + texts = {} + text_attr = client_corpus.structural_attributes.get('text') + for text_id in range(0, (text_attr.attrs['size'])): + texts[text_id] = {} + logger.warning('Text ID: {}'.format(text_id)) + struct_attrs = client_corpus.structural_attributes.list(filters={'part_of': text_attr}) + for struct_attr in struct_attrs: + logger.warning(struct_attr) + for struct_id in list(range(0, struct_attr.attrs['size'])): + logger.warning(struct_attr.values_by_ids([struct_id])) + payload = metadata response = {'code': 200, 'desc': 'Corpus meta data', 'msg': 'OK', 'payload': payload} socketio.emit('corpus_analysis_send_meta_data', response, room=request.sid) diff --git a/app/corpora/tasks.py b/app/corpora/tasks.py index c1ad6d83696264e02747c8aa14626e5d264da9d7..ec7cd817e2c6f53c0c388644cd19daa7224dc556 100644 --- a/app/corpora/tasks.py +++ b/app/corpora/tasks.py @@ -1,3 +1,4 @@ +from datetime import datetime from .. import db from ..decorators import background from ..models import Corpus, CorpusFile @@ -45,6 +46,7 @@ def build_corpus(corpus_id, *args, **kwargs): master_element_tree.write(output_file, xml_declaration=True, encoding='utf-8') corpus.status = 'submitted' + corpus.last_edited_date = datetime.utcnow() db.session.commit() diff --git a/app/models.py b/app/models.py index f5f31003cdb92b813953be297f8f61d0f7331a11..ccb54f7e83b484cd9b7a490e4f4112c142cce193 100644 --- a/app/models.py +++ b/app/models.py @@ -443,6 +443,7 @@ class Corpus(db.Model): user_id = db.Column(db.Integer, db.ForeignKey('users.id')) # Fields creation_date = db.Column(db.DateTime(), default=datetime.utcnow) + last_edited_date = db.Column(db.DateTime(), default=datetime.utcnow) description = db.Column(db.String(255)) status = db.Column(db.String(16)) title = db.Column(db.String(32)) diff --git a/app/static/js/nopaque.Results.js b/app/static/js/nopaque.Results.js index 28d63ff037dc1da5c030473a57f63b47d70f1983..2358ec18cf86a7269f42b0ac26ac1bd7e9524054 100644 --- a/app/static/js/nopaque.Results.js +++ b/app/static/js/nopaque.Results.js @@ -80,9 +80,11 @@ class ResultsJSON { class MetaDataJSON { // Sets empty object structure. Also usefull to delete old results. init() { - this["corpus_name"] = ""; - this["corpus_description"] = ""; - this["corpus_creation_date"] = ""; - this["corpus_properties"] = ""; + this["corpus_name"] = undefined; + this["corpus_description"] = undefined; + this["corpus_creation_date"] = undefined; + this["corpus_last_edited_date"] = undefined; + this["corpus_properties"] = undefined; + this["corpus_size_tokens"] = undefined; } } \ No newline at end of file diff --git a/app/static/js/nopaque.callbacks.js b/app/static/js/nopaque.callbacks.js index 3ccfd0f484f6838c390994cd9bb5b4e8211ac4b5..4341472c6fb14b221362bbe534d21c5505c34389 100644 --- a/app/static/js/nopaque.callbacks.js +++ b/app/static/js/nopaque.callbacks.js @@ -2,7 +2,9 @@ function recvMetaData(payload) { results.metaDataJSON.corpus_name = payload.corpus_name; results.metaDataJSON.corpus_description = payload.corpus_description; results.metaDataJSON.corpus_creation_date = payload.corpus_creation_date; + results.metaDataJSON.corpus_last_edited_date = payload.corpus_last_edited_date; results.metaDataJSON.corpus_properties = payload.corpus_properties; + results.metaDataJSON.corpus_size_tokens = payload.corpus_size_tokens; console.log(results.metaDataJSON); } diff --git a/app/templates/admin/user.html.j2 b/app/templates/admin/user.html.j2 index f68259763ad128eed883a413997e1da5936a2d34..69bb6c58a41a4b9b2fa8493b3ee914ab408bfdc0 100644 --- a/app/templates/admin/user.html.j2 +++ b/app/templates/admin/user.html.j2 @@ -15,7 +15,7 @@ <li>Username: {{ user.username }}</li> <li>Email: {{ user.email }}</li> <li>ID: {{ user.id }}</li> - <li>Member sinse: {{ user.member_since.strftime('%m/%d/%Y, %H:%M:%S %p') }}</li> + <li>Member since: {{ user.member_since.strftime('%m/%d/%Y, %H:%M:%S %p') }}</li> <li>Confirmed status: {{ user.confirmed }}</li> <li>Last seen: {{ user.last_seen.strftime('%m/%d/%Y, %H:%M:%S %p') }}</li> <li>Role ID: {{ user.role_id }}</li> diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2 index fb3f73ab9068629efc8dbcf85bd53974847919a0..b07cad0adb7f895e5d186f2e061597af9206323c 100644 --- a/app/templates/corpora/corpus.html.j2 +++ b/app/templates/corpora/corpus.html.j2 @@ -31,6 +31,12 @@ <label for="creation-date">Creation date</label> </div> </div> + <div class="col s12 m6"> + <div class="input-field"> + <input disabled value="{{ corpus.last_edited_date.strftime('%m/%d/%Y, %H:%M:%S %p') }}" id="last_edited_date" type="text" class="validate"> + <label for="creation-date">Last edited</label> + </div> + </div> </div> </div> <div class="card-action right-align"> diff --git a/migrations/versions/68772b6560c3_.py b/migrations/versions/68772b6560c3_.py new file mode 100644 index 0000000000000000000000000000000000000000..ee1228d3c8ecc5fb137312750ca487b647e19fc8 --- /dev/null +++ b/migrations/versions/68772b6560c3_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: 68772b6560c3 +Revises: 49a42c69e523 +Create Date: 2020-04-28 07:47:40.495698 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '68772b6560c3' +down_revision = '49a42c69e523' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('corpora', sa.Column('last_edited_date', sa.DateTime(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('corpora', 'last_edited_date') + # ### end Alembic commands ###