Skip to content

Commit

Permalink
changement filtres CLS ControlListUser>controlList
Browse files Browse the repository at this point in the history
  • Loading branch information
Juliettejns committed Aug 28, 2024
1 parent 56bac05 commit a2fb107
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 61 deletions.
28 changes: 12 additions & 16 deletions app/control_lists/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,11 +379,8 @@ def information_read(control_list_id):
@control_lists_bp.route("/controls/<int:control_list_id>/ignore_terms", methods=["POST", "GET"])
@login_required
def ignore_terms_filter(control_list_id):
current_controlListUser = ControlListsUser.retrieve(
user_id=current_user.id,
control_list_id=control_list_id
).first_or_404()

current_controlList = ControlLists.query.filter_by(**{"id":control_list_id}).first_or_404()
print(current_controlList.filter_punct, current_controlList.filter_ignore)
list_filter = []
if request.method == "POST":
list_filter.append(request.form.get("punct"))
Expand All @@ -395,19 +392,18 @@ def ignore_terms_filter(control_list_id):
if el is not None:
filtered_filter.append(el)

current_controlListUser.filter_punct = 'punct' in filtered_filter
current_controlListUser.filter_metadata = 'metadata' in filtered_filter
current_controlListUser.filter_numeral = 'numeral' in filtered_filter
current_controlListUser.filter_ignore = 'ignore' in filtered_filter
db.session.add(current_controlListUser)
current_controlList.filter_punct = 'punct' in filtered_filter
current_controlList.filter_metadata = 'metadata' in filtered_filter
current_controlList.filter_numeral = 'numeral' in filtered_filter
current_controlList.filter_ignore = 'ignore' in filtered_filter
db.session.add(current_controlList)
db.session.commit()


flash('The filters have been updated.', 'success')
current_controlListUser = ControlListsUser.retrieve(
user_id=current_user.id,
control_list_id=control_list_id
).first()
current_controlList = ControlLists.query.filter_by(**{"id":control_list_id}).first_or_404()
print(current_controlList.filter_punct, current_controlList.filter_ignore)
return render_template_with_nav_info('control_lists/ignore_filter.html', control_list_id=control_list_id,
current_control_list=current_controlListUser)
current_control_list=current_controlList)

return render_template_with_nav_info('control_lists/ignore_filter.html', control_list_id=control_list_id, current_control_list=current_controlListUser)
return render_template_with_nav_info('control_lists/ignore_filter.html', control_list_id=control_list_id, current_control_list=current_controlList)
11 changes: 5 additions & 6 deletions app/main/views/corpus.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,11 @@ def error():
# Add a link to the control list
ControlLists.link(corpus.control_lists_id, current_user.id, is_owner=cl_owner)
db.session.commit()
current_controlListUser = ControlListsUser.query.filter_by(
**{"control_lists_id": corpus.control_lists_id, "user_id": current_user.id}).first_or_404()
current_controlListUser.filter_punct = 'punct' in list_filter
current_controlListUser.filter_metadata = 'metadata' in list_filter
current_controlListUser.filter_numeral = 'numeral' in list_filter
current_controlListUser.filter_ignore = 'ignore' in list_filter
current_controlList = ControlLists.query.filter_by(**{"id":corpus.control_lists_id}).first_or_404()
current_controlList.filter_punct = 'punct' in list_filter
current_controlList.filter_metadata = 'metadata' in list_filter
current_controlList.filter_numeral = 'numeral' in list_filter
current_controlList.filter_ignore = 'ignore' in list_filter
db.session.commit()
flash("New corpus registered", category="success")
except (sqlalchemy.exc.StatementError, sqlalchemy.exc.IntegrityError) as e:
Expand Down
2 changes: 1 addition & 1 deletion app/main/views/tokens.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def tokens_correct_single(corpus_id, token_id):
token_id=token_id, corpus_id=corpus_id,
lemma=string_to_none(request.form.get("lemma")),
POS=string_to_none(request.form.get("POS")),
morph=string_to_none(request.form.get("morph")),
morph=string_to_none(request.form.get("morph"))
)
if "similar" in corpus.displayed_columns_by_name:
similar = {
Expand Down
18 changes: 10 additions & 8 deletions app/models/control_lists.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ class ControlLists(db.Model):
bibliography = db.Column(db.Text, nullable=True)
language = db.Column(db.String(10), nullable=True)
notes = db.Column(db.Text, nullable=True)
filter_punct = db.Column(db.Boolean, unique=False, default=False)
filter_numeral = db.Column(db.Boolean, unique=False, default=False)
filter_metadata = db.Column(db.Boolean, unique=False, default=False)
filter_ignore = db.Column(db.Boolean, unique=False, default=False)

re_filter_metadata = r'(\[[^\]]+:[^\]]*\]$)'
re_filter_ignore = r'(^\[IGNORE\])'
re_filter_punct = "(^[^\w\s]$)"
re_filter_numeral = r'(^\d+$)'

# For caching purposes, we record the last time these fields were edited
#last_lemma_edit = db.Column(db.DateTime, default=datetime.datetime.utcnow)
Expand Down Expand Up @@ -284,18 +293,11 @@ class ControlListsUser(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey(User.id), primary_key=True)
is_owner = db.Column(db.Boolean, default=False)

filter_punct = db.Column(db.Boolean, unique=False, default=False)
filter_numeral = db.Column(db.Boolean, unique=False, default=False)
filter_metadata = db.Column(db.Boolean, unique=False, default=False)
filter_ignore = db.Column(db.Boolean, unique=False, default=False)

control = db.relationship("ControlLists", backref=backref("control_lists_user", cascade="all, delete-orphan"))
user = db.relationship(User, backref=backref("control_lists_user", cascade="all, delete-orphan"))

re_filter_metadata = r'(\[[^\]]+:[^\]]*\]$)'
re_filter_ignore = r'(^\[IGNORE\])'
re_filter_punct = "(^[^\w\s]$)"
re_filter_numeral = r'(^\d+$)'


@classmethod
def retrieve(cls, user_id: int, control_list_id: int) -> FlaskQuery:
Expand Down
56 changes: 28 additions & 28 deletions app/models/corpus.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,19 +335,19 @@ def get_unallowed(self, user_id, corpus_id, allowed_type="lemma"):
]

current_corpus = Corpus.query.filter_by(**{"id":corpus_id}).first_or_404()
current_controlListUser = ControlListsUser.query.filter_by(
**{"control_lists_id":current_corpus.control_lists_id, "user_id": user_id}).first_or_404()
current_controlList = ControlLists.query.filter_by(
**{"id":current_corpus.control_lists_id}).first_or_404()

regex_liste = []
if current_controlListUser:
if current_controlListUser.filter_metadata:
regex_liste.append(ControlListsUser.re_filter_metadata)
if current_controlListUser.filter_ignore:
regex_liste.append(ControlListsUser.re_filter_ignore)
if current_controlListUser.filter_punct:
regex_liste.append(ControlListsUser.re_filter_punct)
if current_controlListUser.filter_numeral:
regex_liste.append(ControlListsUser.re_filter_numeral)
if current_controlList:
if current_controlLists.filter_metadata:
regex_liste.append(ControlLists.re_filter_metadata)
if current_controlList.filter_ignore:
regex_liste.append(ControlLists.re_filter_ignore)
if current_controlList.filter_punct:
regex_liste.append(ControlLists.re_filter_punct)
if current_controlList.filter_numeral:
regex_liste.append(ControlLists.re_filter_numeral)

if regex_liste:
list_darguments.append(WordToken.form.op('~')("".join(regex_liste)))
Expand Down Expand Up @@ -1096,7 +1096,7 @@ def get_like(filter_id, form, group_by, type_like="lemma", allowed_list=False):
return query

@staticmethod
def is_valid(lemma, POS, morph, corpus, user_id):
def is_valid(lemma, POS, morph, corpus):
""" Check if a token is valid for a given corpus
:param lemma: Lemma value of the token to validate
Expand All @@ -1121,20 +1121,22 @@ def is_valid(lemma, POS, morph, corpus, user_id):
}

allowed_column = corpus.displayed_columns_by_name
if lemma and "lemma" in allowed_column and allowed_lemma.count():
current_controlListUser = ControlListsUser.retrieve(
user_id=user_id, control_list_id=corpus.control_lists_id
).first()
print("test")
if lemma and "lemma" in allowed_column and corpus.get_allowed_values("lemma", label=lemma).count() == 0:
print("test2")
current_controlList = ControlLists.query.filter_by(**{"id":corpus.control_lists_id}).first_or_404()
print(current_controlList)
regex_liste = []
if current_controlListUser:
if current_controlListUser.filter_metadata:
regex_liste.append(ControlListsUser.re_filter_metadata)
if current_controlListUser.filter_ignore:
regex_liste.append(ControlListsUser.re_filter_ignore)
if current_controlListUser.filter_punct:
regex_liste.append(ControlListsUser.re_filter_punct)
if current_controlListUser.filter_numeral:
regex_liste.append(ControlListsUser.re_filter_numeral)
if current_controlList:
if current_controlList.filter_metadata:
regex_liste.append(ControlLists.re_filter_metadata)
if current_controlList.filter_ignore:
regex_liste.append(ControlLists.re_filter_ignore)
if current_controlList.filter_punct:
regex_liste.append(ControlLists.re_filter_punct)
if current_controlList.filter_numeral:
regex_liste.append(ControlLists.re_filter_numeral)
print(regex_liste)

ignored_by_regex = False

Expand Down Expand Up @@ -1350,10 +1352,8 @@ def update(user_id, corpus_id, token_id, lemma=None, POS=None, morph=None):
error = WordToken.NothingChangedError("No value where changed")
error.msg = "No value where changed"
raise error
print(token)
# Check if values are correct regarding allowed values
validity = WordToken.is_valid(lemma=lemma, POS=POS, morph=morph, corpus=corpus, user_id=user_id)
print(token.POS, validity)
validity = WordToken.is_valid(lemma=lemma, POS=POS, morph=morph, corpus=corpus)
if False in list(validity.values()):
error_msg = "Invalid value in {}".format(
", ".join([key for key in validity.keys() if validity[key] is False])
Expand Down
1 change: 0 additions & 1 deletion app/templates/control_lists/ignore_filter.html
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,5 @@ <h2>{{ _('Change the filters for Control List') }}</h2>
</ul>
<button type="submit" id="submit">Submit</button>
</form>
</div>
</div>
{% endblock %}
3 changes: 2 additions & 1 deletion app/templates/control_lists/macros.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
{% endif %}
{% if control_list.can_edit() or current_user.is_admin() %}
<li class="nav-item"><a class="nav-link" href="{{url_for("control_lists_bp.information_edit", control_list_id=control_list.id)}}"><i class="fa fa-edit"></i> {{ _('Edit informations') }}</a></li>
<li class="nav-item"><a class="nav-link" href="{{url_for("control_lists_bp.ignore_terms_filter", control_list_id=control_list.id)}}"><i class="fa fa-edit"></i> {{ _('Ignore values') }}</a></li>
{% endif %}
<li class="nav-item"><a class="nav-link" href="{{url_for("control_lists_bp.ignore_terms_filter", control_list_id=control_list.id)}}"><i class="fa fa-edit"></i> {{ _('Ignore values') }}</a></li>

</ul>
{{ _('Others') }}
<ul class="nav flex-column">
Expand Down

0 comments on commit a2fb107

Please sign in to comment.