• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

OCHA-DAP / hdx-ckan / #5649

26 Aug 2024 11:34AM UTC coverage: 72.882% (-0.1%) from 72.998%
#5649

Pull #6412

coveralls-python

web-flow
Merge branch 'dev' into feature/HDX-9990-implement-new-contact-contributor-form
Pull Request #6412: HDX-9960 & HDX-9987 contact the contributor & HDX Connect new pages

146 of 321 new or added lines in 10 files covered. (45.48%)

1 existing line in 1 file now uncovered.

11750 of 16122 relevant lines covered (72.88%)

0.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

58.33
/ckanext-hdx_package/ckanext/hdx_package/controller_logic/dataset_contact_contributor.py
1
import logging
1✔
2

3
import ckan.lib.navl.dictization_functions as dictization_functions
1✔
4
import ckan.logic as logic
1✔
5
import ckan.plugins.toolkit as tk
1✔
6
from ckan.types import Context, DataDict, Request, Validator
1✔
7
from ckan.logic.schema import validator_args
1✔
8
from ckan.lib.navl.dictization_functions import validate
1✔
9

10
get_action = tk.get_action
1✔
11
check_access = tk.check_access
1✔
12
config = tk.config
1✔
13
h = tk.h
1✔
14
NotAuthorized = tk.NotAuthorized
1✔
15
unicode_safe = tk.get_validator('unicode_safe')
1✔
16
log = logging.getLogger(__name__)
1✔
17

18

19
@validator_args
1✔
20
def dataset_contact_contributor_schema(not_empty: Validator, email_validator: Validator):
1✔
NEW
21
    schema = {
×
22
        'topic': [not_empty, unicode_safe],
23
        'fullname': [not_empty, unicode_safe],
24
        'email': [not_empty, email_validator, unicode_safe],
25
        'msg': [not_empty, unicode_safe],
26
    }
NEW
27
    return schema
×
28

29

30
class DatasetContactContributorLogic(object):
1✔
31
    def __init__(self, context: Context, request: Request):
1✔
NEW
32
        self.request = request
×
NEW
33
        self.context = context
×
NEW
34
        self.form = request.form
×
NEW
35
        self.schema = dataset_contact_contributor_schema()
×
36

37
    def read(self) -> DataDict:
1✔
NEW
38
        data_dict = logic.clean_dict(dictization_functions.unflatten(logic.tuplize_dict(logic.parse_params(self.form))))
×
NEW
39
        return data_dict
×
40

41
    def validate(self, data_dict: DataDict):
1✔
NEW
42
        try:
×
NEW
43
            validated_response = validate(data_dict, self.schema, self.context)
×
NEW
44
        except Exception as ex:
×
NEW
45
            log.error(ex)
×
46

NEW
47
        return validated_response
×
48

49
    def send_mail(self):
1✔
NEW
50
        data_dict = {
×
51
            'topic': self.request.form.get('topic'),
52
            'fullname': self.request.form.get('fullname'),
53
            'email': self.request.form.get('email'),
54
            'msg': self.request.form.get('msg'),
55
            'pkg_owner_org': self.request.form.get('pkg_owner_org'),
56
            'pkg_title': self.request.form.get('pkg_title'),
57
            'pkg_id': self.request.form.get('pkg_id'),
58
            'pkg_url': h.url_for('dataset_read', id=self.request.form.get('pkg_id'), qualified=True),
59
            'hdx_email': config.get('hdx.faqrequest.email', 'hdx@humdata.org'),
60
        }
61

NEW
62
        get_action('hdx_send_mail_contributor')(self.context, data_dict)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc