diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-17 17:33:30 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-24 12:06:09 +0200 | 
| commit | 12677a8856f7503e908d965ca2034c6afccda838 (patch) | |
| tree | c8c33449dc1ad25f195839068fa1fdd6125931ec /ishtar_common | |
| parent | dddba4f6f64680a047d99292f8acf65ae57238cf (diff) | |
| download | Ishtar-12677a8856f7503e908d965ca2034c6afccda838.tar.bz2 Ishtar-12677a8856f7503e908d965ca2034c6afccda838.zip  | |
Find: search last modified and modified by
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/forms.py | 26 | ||||
| -rw-r--r-- | ishtar_common/migrations/0073_auto_20181017_1642.py | 44 | ||||
| -rw-r--r-- | ishtar_common/models.py | 1 | ||||
| -rw-r--r-- | ishtar_common/urls.py | 2 | ||||
| -rw-r--r-- | ishtar_common/utils_migrations.py | 22 | ||||
| -rw-r--r-- | ishtar_common/views.py | 24 | 
6 files changed, 119 insertions, 0 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 34a50c0dd..7fed8b1c2 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -26,6 +26,7 @@ import re  import types  from django import forms +from django.contrib.auth.models import User  from django.contrib.contenttypes.models import ContentType  from django.core.urlresolvers import reverse  from django.core import validators @@ -512,6 +513,31 @@ class TableSelect(IshtarForm):          return self.fields.keys() +class HistorySelect(CustomForm, TableSelect): +    history_modifier = forms.IntegerField( +        label=_(u"Last modified by"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-user'), +            associated_model=User), required=False +    ) +    modified_since = forms.DateField( +        label=_(u"Modified since"), widget=DatePicker, +        required=False) + +    def __init__(self, *args, **kwargs): +        super(HistorySelect, self).__init__(*args, **kwargs) +        field_order = self.fields.keys() +        current_fields = ["history_modifier", "modified_since"] +        fields = OrderedDict() +        for k in field_order: +            if k in current_fields: +                continue +            fields[k] = self.fields[k] +        for k in current_fields: +            fields[k] = self.fields[k] +        self.fields = fields + +  def get_now():      format = formats.get_format('DATE_INPUT_FORMATS')[0]      value = datetime.datetime.now().strftime(format) diff --git a/ishtar_common/migrations/0073_auto_20181017_1642.py b/ishtar_common/migrations/0073_auto_20181017_1642.py new file mode 100644 index 000000000..42e905b2c --- /dev/null +++ b/ishtar_common/migrations/0073_auto_20181017_1642.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-10-17 16:42 +from __future__ import unicode_literals + +from django.db import migrations, models +import virtualtime + +from ishtar_common.utils_migrations import reinit_last_modified + + +def migrate_codes(apps, schema_editor): +    models = ['Person', 'Organization'] +    reinit_last_modified(apps, 'ishtar_common', models) + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('ishtar_common', '0072_auto_20181008_1117'), +    ] + +    operations = [ +        migrations.AddField( +            model_name='historicalorganization', +            name='last_modified', +            field=models.DateTimeField(default=virtualtime.virtual_datetime.now), +        ), +        migrations.AddField( +            model_name='historicalperson', +            name='last_modified', +            field=models.DateTimeField(default=virtualtime.virtual_datetime.now), +        ), +        migrations.AddField( +            model_name='organization', +            name='last_modified', +            field=models.DateTimeField(default=virtualtime.virtual_datetime.now), +        ), +        migrations.AddField( +            model_name='person', +            name='last_modified', +            field=models.DateTimeField(default=virtualtime.virtual_datetime.now), +        ), +        migrations.RunPython(migrate_codes) +    ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 3e7cecf2a..c19628cf2 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1413,6 +1413,7 @@ class BaseHistorizedItem(DocumentItem, FullSearch, Imported, JsonData,      history_creator = models.ForeignKey(          User, related_name='+', on_delete=models.SET_NULL,          verbose_name=_(u"Creator"), blank=True, null=True) +    last_modified = models.DateTimeField(default=datetime.datetime.now)      class Meta:          abstract = True diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 91b527959..57241dd57 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -170,6 +170,8 @@ urlpatterns += [      url(r'new-person-noorga/'          r'(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$',          views.new_person_noorga, name='new-person-noorga'), +    url(r'autocomplete-user/$', +        views.autocomplete_user, name='autocomplete-user'),      url(r'autocomplete-person(?:/([0-9_]+))?(?:/([0-9_]*))?/(user)?$',          views.autocomplete_person, name='autocomplete-person'),      url(r'autocomplete-person-permissive(?:/([0-9_]+))?(?:/([0-9_]*))?' diff --git a/ishtar_common/utils_migrations.py b/ishtar_common/utils_migrations.py index 48e9e4f9b..40cdcb5cd 100644 --- a/ishtar_common/utils_migrations.py +++ b/ishtar_common/utils_migrations.py @@ -75,3 +75,25 @@ def migrate_sources(apps, base_model, source_model, item_attr):              doc.authors.add(author)          item = base_model.objects.get(pk=getattr(source, item_attr).pk)          item.documents.add(doc) + + +def reinit_last_modified(apps, app_name, models): +    for model_name in models: +        model = apps.get_model(app_name, model_name) +        try: +            historical_model = apps.get_model( +                app_name, 'Historical' + model_name) +        except: +            continue +        for item in model.objects.all(): +            q = historical_model.objects.filter( +                id=item.pk).order_by('-history_date') +            if not q.count(): +                return +            edit_date = q.all()[0].history_date +            if not edit_date: +                return +            item.last_modified = edit_date +            item.skip_history_when_saving = True +            item.save() + diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 55b5fce1e..e4b55cae2 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -485,6 +485,30 @@ def autocomplete_person_permissive(request, person_types=None,          is_ishtar_user=is_ishtar_user, permissive=True) +def autocomplete_user(request): +    if not request.user.has_perm('ishtar_common.view_person', models.Person): +        return HttpResponse('[]', content_type='text/plain') +    q = request.GET.get('term') +    limit = request.GET.get('limit', 20) +    try: +        limit = int(limit) +    except ValueError: +        return HttpResponseBadRequest() +    query = Q() +    for q in q.split(' '): +        qu = (Q(ishtaruser__person__name__icontains=q) | +              Q(ishtaruser__person__surname__icontains=q) | +              Q(first_name__icontains=q) | +              Q(last_name__icontains=q)) +        query = query & qu +    users = models.User.objects.filter(query)[:limit] +    data = json.dumps([ +        {'id': user.pk, +         'value': unicode(user.ishtaruser)} +        for user in users if user and user.ishtaruser]) +    return HttpResponse(data, content_type='text/plain') + +  def autocomplete_person(request, person_types=None, attached_to=None,                          is_ishtar_user=None, permissive=False):      all_items = request.user.has_perm('ishtar_common.view_person',  | 
