Projet

Général

Profil

0002-views-flag-connectors-with-open-access-on-homepage-4.patch

Valentin Deniaud, 16 juin 2020 10:39

Télécharger (4,2 ko)

Voir les différences:

Subject: [PATCH 2/2] views: flag connectors with open access on homepage
 (#42123)

 passerelle/base/models.py                   |  8 +++++++
 passerelle/static/css/style.css             | 13 ++++++++++--
 passerelle/templates/passerelle/manage.html | 12 ++++++++---
 tests/test_manager.py                       | 23 +++++++++++++++++++++
 4 files changed, 51 insertions(+), 5 deletions(-)
passerelle/base/models.py
597 597
            exception_to_text(exc_value),
598 598
            exc_info=exc_info)
599 599

  
600
    @property
601
    def has_open_access_right(self):
602
        return AccessRight.objects.filter(
603
            resource_type=ContentType.objects.get_for_model(self),
604
            resource_pk=self.pk,
605
            apiuser__key=''
606
        ).exists()
607

  
600 608

  
601 609
@six.python_2_unicode_compatible
602 610
class AccessRight(models.Model):
passerelle/static/css/style.css
54 54

  
55 55
select#id_msg_class { max-width: 30em; }
56 56

  
57
.connector.is-open a {
58
	color: #088a08;
59
}
60

  
57 61
li span.connector-name {
58 62
	display: block;
59 63
	position: absolute;
......
61 65
	width: 100%;
62 66
}
63 67

  
64
li span.connector-type {
68
li span.connector-details {
65 69
	display: block;
66 70
	font-size: 80%;
67
	opacity: 0.6;
71
	color: #576b6b;
68 72
	position: absolute;
69 73
	bottom: 2ex;
70 74
	width: 100%;
71 75
}
72 76

  
77
li span.connector-details .connector-open {
78
	color: #088a08;
79
	font-weight: bold;
80
}
81

  
73 82
ul.connectors {
74 83
	clear: both;
75 84
}
passerelle/templates/passerelle/manage.html
19 19
<div>
20 20
  <ul class="objects-list single-links connectors">
21 21
    {% for a in apps %}
22
    <li class="connector {{ a.get_css_class_name }} status-{{ a.get_availability_status.status }}"
23
        ><a href="{{ a.get_absolute_url }}"><span class="connector-name">{{ a.title }}</span>
24
                    <span class="connector-type">({{ a.get_verbose_name }})</span></a></li>
22
    {% with a.has_open_access_right as is_open %}
23
    <li class="connector {{ a.get_css_class_name }} status-{{ a.get_availability_status.status }} {% if is_open %}is-open{% endif %}">
24
      <a href="{{ a.get_absolute_url }}">
25
        <span class="connector-name">{{ a.title }}</span>
26
        <span class="connector-details">({{ a.get_verbose_name }}{% if is_open %},
27
                <span class="connector-open">{% trans "open access" %}</span>{% endif %})</span>
28
      </a>
29
    </li>
30
    {% endwith %}
25 31
    {% endfor %}
26 32
  </ul>
27 33
</div>
tests/test_manager.py
542 542
    resp.form['confirm_open_access'] = True
543 543
    resp.form.submit().follow()
544 544
    assert AccessRight.objects.count() == 2
545

  
546

  
547
def test_manager_open_access_flag(app, admin_user):
548
    csv = CsvDataSource.objects.create(csv_file=File(StringIO('1;t\n'), 't.csv'), slug='t', title='t')
549
    api = ApiUser.objects.create(username='test', fullname='test', keytype='', key='test')
550

  
551
    app = login(app)
552
    resp = app.get('/manage/', status=200)
553
    assert len(resp.pyquery('li.connector')) == 1
554
    assert not 'Open access' in resp.text
555

  
556
    obj_type = ContentType.objects.get_for_model(csv)
557
    AccessRight.objects.create(codename='can_access', apiuser=api, resource_type=obj_type,
558
                               resource_pk=csv.pk)
559

  
560
    resp = app.get('/manage/', status=200)
561
    assert not 'Open access' in resp.text
562

  
563
    api.key = ''
564
    api.save()
565

  
566
    resp = app.get('/manage/', status=200)
567
    assert 'Open access' in resp.text
545
-