misc: pylint fix unused-variable (#52222)
This commit is contained in:
parent
fe8b9f3d7a
commit
157f97a27a
|
@ -297,7 +297,7 @@ class FieldsDirectory(Directory):
|
|||
)
|
||||
current_page_no = 0
|
||||
on_page = False
|
||||
for i, field in enumerate(self.objectdef.fields):
|
||||
for field in self.objectdef.fields:
|
||||
if field.type == 'page':
|
||||
current_page_no += 1
|
||||
if str(field.id) == self.page_id:
|
||||
|
|
|
@ -316,7 +316,7 @@ class FileTypesDirectory(Directory):
|
|||
def ensure_mimetype(x):
|
||||
x = x.strip()
|
||||
if x.startswith('.'):
|
||||
mime_type, encoding = mimetypes.guess_type('foobar' + x)
|
||||
mime_type = mimetypes.guess_type('foobar' + x)[0]
|
||||
if mime_type:
|
||||
return mime_type
|
||||
return x
|
||||
|
@ -832,7 +832,7 @@ class SettingsDirectory(QommonSettingsDirectory):
|
|||
parent_theme_directory = os.path.dirname(theme_directory)
|
||||
c = io.BytesIO()
|
||||
z = zipfile.ZipFile(c, 'w')
|
||||
for base, dirnames, filenames in os.walk(theme_directory):
|
||||
for base, dummy, filenames in os.walk(theme_directory):
|
||||
basetheme = base[len(parent_theme_directory) + 1 :]
|
||||
for filename in filenames:
|
||||
z.write(os.path.join(base, filename), os.path.join(basetheme, filename))
|
||||
|
@ -1359,7 +1359,6 @@ class SettingsDirectory(QommonSettingsDirectory):
|
|||
return r.getvalue()
|
||||
|
||||
def user_template(self):
|
||||
users_cfg = get_cfg('users', {})
|
||||
form = UserFieldsDirectory.sidebar_template_form(action='user-template')
|
||||
form.get_widget('sidebar_template').set_title(_('Sidebar Template'))
|
||||
form.add_submit('cancel', _('Cancel'))
|
||||
|
|
|
@ -284,7 +284,7 @@ def graphviz(workflow, url_prefix='', select=None, svg=True, include=False):
|
|||
if svg:
|
||||
try:
|
||||
process = Popen(['dot', '-Tsvg'], stdin=PIPE, stdout=PIPE)
|
||||
out, err = process.communicate(force_bytes(out))
|
||||
out = process.communicate(force_bytes(out))[0]
|
||||
if process.returncode != 0:
|
||||
return ''
|
||||
except OSError:
|
||||
|
@ -567,7 +567,7 @@ class WorkflowStatusPage(Directory):
|
|||
r += _('Use drag and drop with the handles to reorder items.')
|
||||
r += htmltext('</p>')
|
||||
r += htmltext('<ul id="items-list" class="biglist sortable">')
|
||||
for i, item in enumerate(self.status.items):
|
||||
for item in self.status.items:
|
||||
r += htmltext('<li class="biglistitem" id="itemId_%s">') % item.id
|
||||
if hasattr(item, str('fill_admin_form')):
|
||||
r += htmltext('<a href="items/%s/">%s</a>') % (item.id, item.render_as_line())
|
||||
|
@ -1324,7 +1324,7 @@ class GlobalActionPage(WorkflowStatusPage):
|
|||
r += _('Use drag and drop with the handles to reorder items.')
|
||||
r += htmltext('</p>')
|
||||
r += htmltext('<ul id="items-list" class="biglist sortable">')
|
||||
for i, item in enumerate(self.action.items):
|
||||
for item in self.action.items:
|
||||
r += htmltext('<li class="biglistitem" id="itemId_%s">') % item.id
|
||||
if self.workflow.is_readonly():
|
||||
r += item.render_as_line()
|
||||
|
@ -1785,7 +1785,7 @@ class WorkflowPage(Directory):
|
|||
get_response().breadcrumb.append(('inspect', _('Inspector')))
|
||||
r += htmltext('<h2>%s</h2>') % _('Workflow Functions')
|
||||
r += htmltext('<ul>')
|
||||
for key, label in (self.workflow.roles or {}).items():
|
||||
for label in (self.workflow.roles or {}).values():
|
||||
r += htmltext('<li>%s</li>') % label
|
||||
r += htmltext('</ul>')
|
||||
|
||||
|
|
|
@ -2205,7 +2205,7 @@ class FormPage(Directory):
|
|||
limit = None
|
||||
if 'limit' in get_request().form:
|
||||
limit = misc.get_int_or_400(get_request().form['limit'])
|
||||
items, total_count = FormDefUI(self.formdef).get_listing_items(
|
||||
items = FormDefUI(self.formdef).get_listing_items(
|
||||
None,
|
||||
selected_filter,
|
||||
user=user,
|
||||
|
@ -2215,7 +2215,7 @@ class FormPage(Directory):
|
|||
anonymise=anonymise,
|
||||
offset=offset,
|
||||
limit=limit,
|
||||
)
|
||||
)[0]
|
||||
if get_publisher().is_using_postgresql():
|
||||
self.formdef.data_class().load_all_evolutions(items)
|
||||
if get_request().form.get('full') == 'on':
|
||||
|
@ -2264,12 +2264,10 @@ class FormPage(Directory):
|
|||
criterias = self.get_criterias_from_query()
|
||||
query = get_request().form.get('q')
|
||||
|
||||
items, total_count = FormDefUI(self.formdef).get_listing_items(
|
||||
items = FormDefUI(self.formdef).get_listing_items(
|
||||
fields, selected_filter, user=user, query=query, criterias=criterias
|
||||
)
|
||||
)[0]
|
||||
|
||||
# only consider first key for now
|
||||
geoloc_key = list(self.formdef.geolocations.keys())[0]
|
||||
return json.dumps(geojson_formdatas(items, fields=fields))
|
||||
|
||||
def ics(self):
|
||||
|
@ -2318,9 +2316,9 @@ class FormPage(Directory):
|
|||
if end_date_field_varname and not end_date_field_id:
|
||||
raise errors.TraversalError()
|
||||
|
||||
formdatas, total_count = FormDefUI(formdef).get_listing_items(
|
||||
formdatas = FormDefUI(formdef).get_listing_items(
|
||||
fields, selected_filter, user=user, query=query, criterias=criterias
|
||||
)
|
||||
)[0]
|
||||
|
||||
cal = vobject.iCalendar()
|
||||
cal.add('prodid').value = '-//Entr\'ouvert//NON SGML Publik'
|
||||
|
@ -2559,7 +2557,7 @@ class FormPage(Directory):
|
|||
r = TemplateIO(html=True)
|
||||
r += htmltext('<h2>%s</h2>') % _('Resolution time')
|
||||
|
||||
for status, status_id in possible_status:
|
||||
for dummy, status_id in possible_status:
|
||||
res_time_forms = []
|
||||
for filled in values:
|
||||
for evo in filled.evolution or []:
|
||||
|
|
|
@ -185,7 +185,6 @@ class RootDirectory(BackofficeRootDirectory):
|
|||
|
||||
menu_items = self.get_menu_items()
|
||||
r += htmltext('<ul class="apps">')
|
||||
has_studio = self.studio.is_visible()
|
||||
for menu_item in menu_items:
|
||||
if not 'icon' in menu_item:
|
||||
continue
|
||||
|
@ -250,12 +249,6 @@ class RootDirectory(BackofficeRootDirectory):
|
|||
return super()._q_lookup(component)
|
||||
|
||||
def get_menu_items(self):
|
||||
if not get_request().user:
|
||||
# this could happen if admin-for-all is set, or if it's the first
|
||||
# user connecting.
|
||||
user_roles = set()
|
||||
else:
|
||||
user_roles = set(get_request().user.get_roles())
|
||||
menu_items = []
|
||||
backoffice_url = get_publisher().get_backoffice_url()
|
||||
if not backoffice_url.endswith('/'):
|
||||
|
|
|
@ -81,7 +81,7 @@ class SnapshotsDirectory(Directory):
|
|||
current_date = None
|
||||
snapshots = get_publisher().snapshot_class.select_object_history(self.obj)
|
||||
day_snapshot = None
|
||||
for i, snapshot in enumerate(snapshots):
|
||||
for snapshot in snapshots:
|
||||
if snapshot.timestamp.date() != current_date:
|
||||
current_date = snapshot.timestamp.date()
|
||||
snapshot.new_day = True
|
||||
|
|
|
@ -171,7 +171,7 @@ class BlockDef(StorableObject):
|
|||
setattr(blockdef, text_attribute, misc.xml_node_text(value))
|
||||
|
||||
blockdef.fields = []
|
||||
for i, field in enumerate(tree.find('fields')):
|
||||
for field in tree.find('fields'):
|
||||
try:
|
||||
field_o = fields.get_field_class_by_type(field.findtext('type'))()
|
||||
except KeyError:
|
||||
|
|
|
@ -23,7 +23,7 @@ class CardData(FormData):
|
|||
return self._formdef
|
||||
from .carddef import CardDef
|
||||
|
||||
type, id = self._names.split('-', 1)
|
||||
id = self._names.split('-', 1)[1]
|
||||
try:
|
||||
self._formdef = CardDef.get_by_urlname(id)
|
||||
except KeyError:
|
||||
|
|
|
@ -348,7 +348,7 @@ class CmdCheckHobos(Command):
|
|||
continue
|
||||
|
||||
s = rfd.read()
|
||||
(bfd, metadata_pathname) = tempfile.mkstemp('.metadata')
|
||||
metadata_pathname = tempfile.mkstemp('.metadata')[1]
|
||||
atomic_write(metadata_pathname, force_bytes(s))
|
||||
|
||||
from ..qommon.ident.idp import AdminIDPDir
|
||||
|
|
|
@ -2069,7 +2069,7 @@ class ItemField(WidgetField, MapOptionsMixin, ItemFieldMixin):
|
|||
value=self.display_disabled_items,
|
||||
advanced=not (self.display_disabled_items),
|
||||
)
|
||||
widget = form.add(
|
||||
form.add(
|
||||
StringWidget,
|
||||
'initial_date_alignment',
|
||||
title=_('Initial date alignment'),
|
||||
|
@ -2112,7 +2112,7 @@ class ItemField(WidgetField, MapOptionsMixin, ItemFieldMixin):
|
|||
|
||||
try:
|
||||
date = wcs.workflows.template_on_formdata(None, self.initial_date_alignment, autoescape=False)
|
||||
except TemplateError as e:
|
||||
except TemplateError:
|
||||
return
|
||||
try:
|
||||
return misc.get_as_datetime(date)
|
||||
|
@ -2352,14 +2352,13 @@ class ItemsField(WidgetField, ItemFieldMixin):
|
|||
choices.append(option_value)
|
||||
break
|
||||
elif len(options[0]) == 3:
|
||||
for key, option_value, key_repeat in options:
|
||||
for key, option_value, dummy in options:
|
||||
if str(key) == str(choice):
|
||||
choices.append(option_value)
|
||||
break
|
||||
return ', '.join(choices)
|
||||
|
||||
def store_structured_value(self, data, field_id):
|
||||
value = data.get(field_id)
|
||||
if not self.data_source:
|
||||
return
|
||||
structured_options = data_sources.get_structured_items(self.data_source)
|
||||
|
@ -2857,7 +2856,7 @@ class TableRowsField(WidgetField):
|
|||
for column in self.columns:
|
||||
r += htmltext('<th>%s</th>') % column
|
||||
r += htmltext('</tr></thead><tbody>')
|
||||
for i, row in enumerate(value):
|
||||
for row in value:
|
||||
r += htmltext('<tr>')
|
||||
for j, column in enumerate(self.columns):
|
||||
r += htmltext('<td>')
|
||||
|
@ -3016,7 +3015,7 @@ class MapField(WidgetField, MapOptionsMixin):
|
|||
|
||||
def convert_value_from_str(self, value):
|
||||
try:
|
||||
lat, lon = [float(x) for x in value.split(';')]
|
||||
dummy, dummy = [float(x) for x in value.split(';')]
|
||||
except (AttributeError, ValueError):
|
||||
return None
|
||||
return value
|
||||
|
|
|
@ -262,7 +262,7 @@ class FormData(StorableObject):
|
|||
return self._formdef
|
||||
from .formdef import FormDef
|
||||
|
||||
type, id = self._names.split('-', 1)
|
||||
id = self._names.split('-', 1)[1]
|
||||
try:
|
||||
self._formdef = FormDef.get_by_urlname(id)
|
||||
except KeyError:
|
||||
|
@ -493,7 +493,6 @@ class FormData(StorableObject):
|
|||
self.store()
|
||||
|
||||
def decrease_criticality_level(self):
|
||||
levels = len(self.formdef.workflow.criticality_levels or [0])
|
||||
current_level = self.get_current_criticality_level()
|
||||
if current_level == 0:
|
||||
return
|
||||
|
@ -973,7 +972,7 @@ class FormData(StorableObject):
|
|||
if field.varname:
|
||||
variables.append((_('Form'), 'form_var_' + field.varname, _('Form Field: %s') % field.label))
|
||||
user_variables = get_publisher().user_class.get_substitution_variables_list(prefix='form_')
|
||||
for cat, name, comment in user_variables:
|
||||
for dummy, name, dummy in user_variables:
|
||||
variables.append((_('Form'), name, _('Form Submitter Field')))
|
||||
return variables
|
||||
|
||||
|
@ -1108,7 +1107,7 @@ class FormData(StorableObject):
|
|||
def get_auto_geoloc(self):
|
||||
# use proper geolocation if it exists
|
||||
if self.geolocations:
|
||||
for k, v in self.geolocations.items():
|
||||
for v in self.geolocations.values():
|
||||
if v:
|
||||
return v
|
||||
# fallback to 1st map field
|
||||
|
@ -1253,7 +1252,7 @@ class FormData(StorableObject):
|
|||
on_page = False
|
||||
current_page_fields = []
|
||||
pages = []
|
||||
for i, f in enumerate(fields):
|
||||
for f in fields:
|
||||
if f.type == 'page':
|
||||
on_page = f
|
||||
current_page_fields = []
|
||||
|
|
|
@ -268,7 +268,7 @@ class FormDef(StorableObject):
|
|||
|
||||
if self.workflow_roles:
|
||||
workflow_roles_list = self.workflow_roles.items()
|
||||
for role_key, role_id in self.workflow_roles.items():
|
||||
for role_id in self.workflow_roles.values():
|
||||
if type(role_id) is int:
|
||||
self.workflow_roles = dict([(x, str(y)) for x, y in workflow_roles_list])
|
||||
changed = True
|
||||
|
@ -635,7 +635,6 @@ class FormDef(StorableObject):
|
|||
form_data=None, # a dictionary, to fill fields
|
||||
transient_formdata=None,
|
||||
): # a FormData
|
||||
current_page = 0
|
||||
on_page = page is None
|
||||
for field in self.fields:
|
||||
field.formdef = self
|
||||
|
@ -1082,7 +1081,7 @@ class FormDef(StorableObject):
|
|||
|
||||
if formdef.url_name:
|
||||
try:
|
||||
obj = cls.get_on_index(formdef.url_name, 'url_name', ignore_migration=True)
|
||||
cls.get_on_index(formdef.url_name, 'url_name', ignore_migration=True)
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
|
@ -1473,11 +1472,6 @@ class FormDef(StorableObject):
|
|||
if user and user.is_admin:
|
||||
return True
|
||||
|
||||
if user:
|
||||
user_roles = set(user.get_roles())
|
||||
else:
|
||||
user_roles = set([])
|
||||
|
||||
if not self.workflow_roles:
|
||||
self.workflow_roles = {}
|
||||
form_roles = [x for x in self.workflow_roles.values() if x]
|
||||
|
|
|
@ -49,7 +49,6 @@ class FormDefUI(object):
|
|||
include_checkboxes=False,
|
||||
):
|
||||
|
||||
partial_display = False
|
||||
using_postgresql = get_publisher().is_using_postgresql()
|
||||
|
||||
if not items:
|
||||
|
@ -62,8 +61,6 @@ class FormDefUI(object):
|
|||
items, total_count = self.get_listing_items(
|
||||
fields, selected_filter, offset, limit, query, order_by, criterias=criterias
|
||||
)
|
||||
if (offset > 0) or (total_count > limit > 0):
|
||||
partial_display = True
|
||||
|
||||
if offset > total_count:
|
||||
get_request().form['offset'] = '0'
|
||||
|
@ -250,7 +247,6 @@ class FormDefUI(object):
|
|||
# url_action = '/' + url_action
|
||||
else:
|
||||
url_action = ''
|
||||
root_url = get_publisher().get_root_url()
|
||||
user = get_request().user
|
||||
visited_objects = get_session().get_visited_objects(exclude_user=user.id)
|
||||
include_criticality_level = bool(self.formdef.workflow.criticality_levels)
|
||||
|
|
|
@ -69,7 +69,6 @@ class FileDirectory(Directory):
|
|||
if component == 'thumbnail':
|
||||
self.thumbnails = True
|
||||
return self
|
||||
upload = None
|
||||
for lookup_method_name in self._lookup_methods:
|
||||
lookup_method = getattr(self, lookup_method_name)
|
||||
file = lookup_method(filename=component)
|
||||
|
@ -776,12 +775,12 @@ class FormStatusPage(Directory, FormTemplateMixin):
|
|||
elif field.prefill and field.prefill.get('type') == 'string':
|
||||
update_prefill = bool('prefilled_%s' % field.id in get_request().form)
|
||||
if update_prefill:
|
||||
value, locked = field.get_prefill_value()
|
||||
value = field.get_prefill_value()[0]
|
||||
entry['content'] = value
|
||||
elif field.prefill and field.prefill.get('type') == 'user':
|
||||
update_prefill = bool(get_request().form.get('modified_field_id') == 'user')
|
||||
if update_prefill:
|
||||
value, locked = field.get_prefill_value(user=formdata.user)
|
||||
value = field.get_prefill_value(user=formdata.user)[0]
|
||||
entry['content'] = value
|
||||
|
||||
return json.dumps({'result': result})
|
||||
|
|
|
@ -562,14 +562,12 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
else:
|
||||
# not a page change, reset_locked_data() will have been called
|
||||
# earlier, we use that to set appropriate fields as readonly.
|
||||
for field, field_key, widget, block, block_idx in self.iter_with_block_fields(
|
||||
form, displayed_fields
|
||||
):
|
||||
for field, field_key, widget, dummy, dummy in self.iter_with_block_fields(form, displayed_fields):
|
||||
if get_request().form.get('__locked_f%s' % field_key):
|
||||
widget.readonly = 'readonly'
|
||||
widget.attrs['readonly'] = 'readonly'
|
||||
|
||||
for field, field_key, widget, block, block_idx in self.iter_with_block_fields(form, displayed_fields):
|
||||
for field, field_key, widget, dummy, dummy in self.iter_with_block_fields(form, displayed_fields):
|
||||
if field.prefill:
|
||||
# always set additional attributes as they will be used for
|
||||
# "live prefill", regardless of existing data.
|
||||
|
@ -581,9 +579,7 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
# pass over prefilled fields that are used as live source of item
|
||||
# fields
|
||||
fields_to_update = set()
|
||||
for field, field_key, widget, block, block_idx in self.iter_with_block_fields(
|
||||
form, displayed_fields
|
||||
):
|
||||
for field, field_key, widget, dummy, dummy in self.iter_with_block_fields(form, displayed_fields):
|
||||
if getattr(widget, 'prefilled', False) and getattr(widget, 'live_condition_source', False):
|
||||
fields_to_update.update(widget.live_condition_fields)
|
||||
elif field in fields_to_update and field.type == 'item':
|
||||
|
@ -1198,9 +1194,6 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
get_request().form['__locked_f%s' % field_key] = True
|
||||
|
||||
def previous_page(self, page_no, magictoken):
|
||||
session = get_session()
|
||||
form_data = session.get_by_magictoken(magictoken, {})
|
||||
|
||||
try:
|
||||
previous_page = self.pages[int(page_no - 1)]
|
||||
except IndexError:
|
||||
|
@ -1287,7 +1280,7 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
return result_error('obsolete ajax form token (late check)')
|
||||
|
||||
try:
|
||||
draft_formdata = self.save_draft(form_data, page_no)
|
||||
self.save_draft(form_data, page_no)
|
||||
except SubmittedDraftException:
|
||||
return result_error('form has already been submitted')
|
||||
|
||||
|
@ -1303,7 +1296,6 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
if page_no is not None:
|
||||
filled.page_no = page_no
|
||||
filled.receipt_time = time.localtime()
|
||||
session = get_session()
|
||||
if get_request().is_in_backoffice():
|
||||
# if submitting via backoffice store fhe formdata as is.
|
||||
filled.store()
|
||||
|
@ -1504,7 +1496,6 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
if self.has_draft_support() and not (data and data.get('is_recalled_draft')):
|
||||
cancel_label = _('Discard')
|
||||
form.add_submit('cancel', cancel_label, css_class='cancel')
|
||||
session = get_session()
|
||||
if self.has_draft_support():
|
||||
form.add_submit(
|
||||
'savedraft', _('Save Draft'), css_class='save-draft', attrs={'style': 'display: none'}
|
||||
|
|
|
@ -62,7 +62,7 @@ class fargo_post_json_async(object):
|
|||
|
||||
def __call__(self):
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
response, status, response_payload, auth_header = http_post_request(
|
||||
dummy, status, response_payload, dummy = http_post_request(
|
||||
self.url, json.dumps(self.payload), headers=headers
|
||||
)
|
||||
return status, json_loads(response_payload)
|
||||
|
@ -85,7 +85,7 @@ def push_document(user, filename, stream):
|
|||
|
||||
def afterjob(job):
|
||||
status = 0
|
||||
status, resp = async_post()
|
||||
status = async_post()[0]
|
||||
if status == 200:
|
||||
get_logger().info('file %r pushed to portfolio of %r', filename, user.display_name)
|
||||
else:
|
||||
|
@ -115,7 +115,7 @@ class FargoDirectory(Directory):
|
|||
# FIXME: handle error cases
|
||||
url = request.form['url']
|
||||
document = urlopen(request.form['url']).read()
|
||||
scheme, netloc, path, qs, frag = urllib.parse.urlsplit(url)
|
||||
path = urllib.parse.urlsplit(url)[2]
|
||||
path = path.split('/')
|
||||
name = urllib.parse.unquote(path[-1])
|
||||
from .qommon.upload_storage import PicklableUpload
|
||||
|
|
|
@ -111,7 +111,7 @@ class WcsPublisher(StubWcsPublisher):
|
|||
@classmethod
|
||||
def configure(cls, config):
|
||||
if config.has_section('extra'):
|
||||
for name, directory in config.items('extra'):
|
||||
for dummy, directory in config.items('extra'):
|
||||
cls.register_extra_dir(directory)
|
||||
if config.has_option("main", "app_dir"):
|
||||
cls.APP_DIR = config.get("main", "app_dir")
|
||||
|
|
|
@ -65,7 +65,6 @@ class LoggerDirectory(Directory):
|
|||
r += htmltext(' <th>%s</th>') % _('Message')
|
||||
r += htmltext('<tr></thead>\n')
|
||||
r += htmltext('<tbody>\n')
|
||||
i = 1
|
||||
userlabels = {}
|
||||
for d in logger.parse_logstream(open(logfilename)):
|
||||
if not d:
|
||||
|
|
|
@ -199,7 +199,7 @@ def email(
|
|||
elif want_html:
|
||||
# body may be reStructuredText, try converting.
|
||||
try:
|
||||
htmlmail, pub = docutils.core.publish_programmatically(
|
||||
htmlmail = docutils.core.publish_programmatically(
|
||||
source_class=docutils.io.StringInput,
|
||||
source=mail_body,
|
||||
source_path=None,
|
||||
|
@ -226,7 +226,7 @@ def email(
|
|||
},
|
||||
config_section=None,
|
||||
enable_exit_status=None,
|
||||
)
|
||||
)[0]
|
||||
# change paragraphs so manual newlines are considered.
|
||||
htmlmail = force_str(htmlmail).replace('<p>', '<p style="white-space: pre-line;">')
|
||||
except:
|
||||
|
@ -376,7 +376,7 @@ def create_smtp_server(emails_cfg, smtp_timeout=None):
|
|||
get_logger().error('Failed to EHLO to SMTP server (%s)', rc_code)
|
||||
raise errors.EmailError('Failed to EHLO to SMTP server (%s)' % rc_code)
|
||||
if b'STARTTLS' in ehlo_answer:
|
||||
rc_code, starttls_answer = s.starttls()
|
||||
rc_code = s.starttls()[0]
|
||||
if rc_code != 220:
|
||||
get_logger().error('Failed to STARTTLS to SMTP server (%s)', rc_code)
|
||||
raise errors.EmailError('Failed to STARTTLS to SMTP server (%s)' % rc_code)
|
||||
|
|
|
@ -556,7 +556,7 @@ class Template:
|
|||
self._execute(section, fp, ctx)
|
||||
|
||||
def _cmd_for(self, args, fp, ctx):
|
||||
((valref,), unused, section) = args
|
||||
((valref,), dummy, section) = args
|
||||
try:
|
||||
list = _get_value(valref, ctx)
|
||||
except UnknownReference:
|
||||
|
@ -565,13 +565,13 @@ class Template:
|
|||
raise NeedSequenceError()
|
||||
refname = valref[0]
|
||||
ctx.for_index[refname] = idx = [list, 0]
|
||||
for item in list:
|
||||
for dummy in list:
|
||||
self._execute(section, fp, ctx)
|
||||
idx[1] = idx[1] + 1
|
||||
del ctx.for_index[refname]
|
||||
|
||||
def _cmd_define(self, args, fp, ctx):
|
||||
((name,), unused, section) = args
|
||||
((name,), dummy, section) = args
|
||||
valfp = io.StringIO()
|
||||
if section is not None:
|
||||
self._execute(section, valfp, ctx)
|
||||
|
@ -608,7 +608,7 @@ def _prepare_ref(refname, for_names, file_args):
|
|||
pass
|
||||
else:
|
||||
if idx < len(file_args):
|
||||
orig_refname, start, more_rest = file_args[idx]
|
||||
dummy, start, more_rest = file_args[idx]
|
||||
if more_rest is None:
|
||||
# the include-argument was a string constant
|
||||
return None, start, None
|
||||
|
@ -685,7 +685,7 @@ def _get_value_fallback(value_ref, ctx):
|
|||
try:
|
||||
return _get_value(value_ref, ctx)
|
||||
except UnknownReference:
|
||||
(refname, start, rest) = value_ref
|
||||
refname = value_ref[0]
|
||||
return '[' + refname + ']'
|
||||
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ class RadiobuttonsWidget(quixote.form.RadiobuttonsWidget):
|
|||
|
||||
def get_options(self):
|
||||
options = self.options_with_attributes or self.options
|
||||
for i, option in enumerate(options):
|
||||
for option in options:
|
||||
object, description, key = option[:3]
|
||||
yield {
|
||||
'value': key,
|
||||
|
@ -680,7 +680,7 @@ class UploadedFile:
|
|||
self.filename = self.base_filename
|
||||
else:
|
||||
t = datetime.datetime.now().isoformat()
|
||||
fd, path = tempfile.mkstemp(prefix=t, suffix='.upload', dir=self.dir_path())
|
||||
fd = tempfile.mkstemp(prefix=t, suffix='.upload', dir=self.dir_path())[0]
|
||||
os.close(fd)
|
||||
self.filename = os.path.basename(filename)
|
||||
|
||||
|
@ -829,7 +829,7 @@ class FileWithPreviewWidget(CompositeWidget):
|
|||
if Image:
|
||||
image_content = get_session().get_tempfile_content(self.get('token'))
|
||||
try:
|
||||
image = Image.open(image_content.fp)
|
||||
Image.open(image_content.fp)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
@ -842,7 +842,7 @@ class FileWithPreviewWidget(CompositeWidget):
|
|||
elif self.get('file'):
|
||||
try:
|
||||
token = get_session().add_tempfile(self.get('file'), storage=self.storage)['token']
|
||||
except UploadStorageError as e:
|
||||
except UploadStorageError:
|
||||
self.error = _('failed to store file (system error)')
|
||||
return
|
||||
request.form[self.get_widget('token').get_name()] = token
|
||||
|
@ -880,7 +880,7 @@ class FileWithPreviewWidget(CompositeWidget):
|
|||
else:
|
||||
filetype = getattr(self.value, 'storage_attrs', {}).get('content_type')
|
||||
if not filetype:
|
||||
filetype, encoding = mimetypes.guess_type(self.value.base_filename)
|
||||
filetype = mimetypes.guess_type(self.value.base_filename)[0]
|
||||
|
||||
if not filetype:
|
||||
filetype = 'application/octet-stream'
|
||||
|
@ -1753,7 +1753,7 @@ class WidgetList(quixote.form.widget.WidgetList):
|
|||
known_prefixes = {
|
||||
x.split('$', 2)[1] for x in get_request().form.keys() if x.startswith(prefix)
|
||||
}
|
||||
for i in range(len(known_prefixes) - len(self.element_names)):
|
||||
for dummy in range(len(known_prefixes) - len(self.element_names)):
|
||||
self.add_element()
|
||||
|
||||
# Add submit to add more element widgets
|
||||
|
@ -1791,7 +1791,7 @@ class WidgetList(quixote.form.widget.WidgetList):
|
|||
self.set_error(_('Too many elements (maximum: %s)') % self.max_items)
|
||||
|
||||
def set_value(self, value):
|
||||
for i in range(len(value) - len(self.element_names)):
|
||||
for dummy in range(len(value) - len(self.element_names)):
|
||||
self.add_element()
|
||||
for element_name, subvalue in zip(self.element_names, value):
|
||||
self.get_widget(element_name).set_value(subvalue)
|
||||
|
@ -1948,8 +1948,8 @@ class TableWidget(CompositeWidget):
|
|||
if kwargs.get('readonly'):
|
||||
self.readonly = True
|
||||
|
||||
for i, row in enumerate(rows):
|
||||
for j, column in enumerate(columns):
|
||||
for i in range(len(rows)):
|
||||
for j in range(len(columns)):
|
||||
widget = self.add_widget(kwargs, i, j)
|
||||
widget = self.get_widget('c-%s-%s' % (i, j))
|
||||
if value and self.readonly:
|
||||
|
@ -2002,9 +2002,9 @@ class TableWidget(CompositeWidget):
|
|||
if self.readonly:
|
||||
return
|
||||
table = []
|
||||
for i, row in enumerate(self.rows):
|
||||
for i in range(len(self.rows)):
|
||||
row = []
|
||||
for j, column in enumerate(self.columns):
|
||||
for j in range(len(self.columns)):
|
||||
widget = self.get_widget('c-%s-%s' % (i, j))
|
||||
row.append(widget.parse())
|
||||
table.append(row)
|
||||
|
@ -2014,8 +2014,8 @@ class TableWidget(CompositeWidget):
|
|||
self.value = value
|
||||
if not value:
|
||||
return
|
||||
for i, row in enumerate(self.rows):
|
||||
for j, column in enumerate(self.columns):
|
||||
for i in range(len(self.rows)):
|
||||
for j in range(len(self.columns)):
|
||||
widget = self.get_widget('c-%s-%s' % (i, j))
|
||||
try:
|
||||
widget.set_value(value[i][j])
|
||||
|
@ -2193,11 +2193,11 @@ class TableListRowsWidget(WidgetListAsTable):
|
|||
if self.readonly:
|
||||
return
|
||||
table = []
|
||||
for i, row_name in enumerate(self.element_names):
|
||||
for row_name in self.element_names:
|
||||
row = []
|
||||
row_widget = self.get_widget(row_name)
|
||||
notnull = False
|
||||
for j, column in enumerate(self.columns):
|
||||
for j in range(len(self.columns)):
|
||||
widget = row_widget.get_widget('col%s' % j)
|
||||
row.append(widget.parse())
|
||||
if row[-1]:
|
||||
|
@ -2214,7 +2214,7 @@ class TableListRowsWidget(WidgetListAsTable):
|
|||
self.add_element()
|
||||
for i, row_name in enumerate(self.element_names):
|
||||
widget_row = self.get_widget(row_name)
|
||||
for j, column in enumerate(self.columns):
|
||||
for j in range(len(self.columns)):
|
||||
widget = widget_row.get_widget('col%s' % j)
|
||||
try:
|
||||
widget.set_value(value[i][j])
|
||||
|
@ -2696,7 +2696,6 @@ class MapWidget(CompositeWidget):
|
|||
def __init__(self, name, value=None, **kwargs):
|
||||
CompositeWidget.__init__(self, name, value, **kwargs)
|
||||
self.add(HiddenWidget, 'latlng', value=value)
|
||||
widget = self.get_widget('latlng')
|
||||
self.readonly = kwargs.pop('readonly', False)
|
||||
self.map_attributes = {}
|
||||
self.map_attributes.update(get_publisher().get_map_attributes())
|
||||
|
|
|
@ -48,7 +48,7 @@ _humandurations = (
|
|||
def timewords():
|
||||
'''List of words one can use to specify durations'''
|
||||
result = []
|
||||
for words, quantity in _humandurations:
|
||||
for words, dummy in _humandurations:
|
||||
for word in words:
|
||||
result.append(_(word))
|
||||
return result
|
||||
|
|
|
@ -224,7 +224,7 @@ class MethodAdminDirectory(Directory):
|
|||
|
||||
def submit(self, form):
|
||||
cfg = {}
|
||||
for key, title in self.CONFIG:
|
||||
for key, dummy in self.CONFIG:
|
||||
cfg[key] = form.get_widget(key).parse()
|
||||
get_publisher().cfg['fc'] = cfg
|
||||
get_publisher().write_cfg()
|
||||
|
@ -290,7 +290,7 @@ class FCAuthMethod(AuthMethod):
|
|||
|
||||
def is_ok(self):
|
||||
fc_cfg = get_cfg('fc', {})
|
||||
for key, title in self.method_admin_directory.CONFIG:
|
||||
for key, dummy in self.method_admin_directory.CONFIG:
|
||||
if not fc_cfg.get(key):
|
||||
return False
|
||||
return True
|
||||
|
@ -346,7 +346,7 @@ class FCAuthMethod(AuthMethod):
|
|||
'client_secret': client_secret,
|
||||
'code': code,
|
||||
}
|
||||
response, status, data, auth_header = http_post_request(
|
||||
dummy, status, data, dummy = http_post_request(
|
||||
self.get_token_url(),
|
||||
urllib.parse.urlencode(body),
|
||||
headers={
|
||||
|
@ -363,7 +363,7 @@ class FCAuthMethod(AuthMethod):
|
|||
# check id_token nonce
|
||||
id_token = result['id_token']
|
||||
access_token = result['access_token']
|
||||
header, payload, signature = id_token.split('.')
|
||||
payload = id_token.split('.')[1]
|
||||
payload = json_loads(base64url_decode(force_bytes(payload)))
|
||||
nonce = hashlib.sha256(force_bytes(session.id)).hexdigest()
|
||||
if payload['nonce'] != nonce:
|
||||
|
@ -373,7 +373,7 @@ class FCAuthMethod(AuthMethod):
|
|||
|
||||
def get_user_info(self, access_token):
|
||||
logger = get_logger()
|
||||
response, status, data, auth_header = http_get_page(
|
||||
dummy, status, data, dummy = http_get_page(
|
||||
self.get_user_info_url(),
|
||||
headers={
|
||||
'Authorization': 'Bearer %s' % access_token,
|
||||
|
@ -423,7 +423,7 @@ class FCAuthMethod(AuthMethod):
|
|||
|
||||
try:
|
||||
value = WorkflowStatusItem.compute(value, context=user_info)
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
get_publisher().notify_of_exception(sys.exc_info(), context='[FC-user-compute]')
|
||||
continue
|
||||
if field_varname == '__name':
|
||||
|
|
|
@ -121,7 +121,7 @@ class MethodDirectory(Directory):
|
|||
options = []
|
||||
value = None
|
||||
providers = {}
|
||||
for kidp, idp in sorted(get_cfg('idp', {}).items(), key=lambda k: k[0]):
|
||||
for dummy, idp in sorted(get_cfg('idp', {}).items(), key=lambda k: k[0]):
|
||||
if idp.get('hide'):
|
||||
continue
|
||||
p = lasso.Provider(
|
||||
|
@ -459,10 +459,10 @@ class AdminIDPDir(Directory):
|
|||
form.set_error('metadata_url', _('Failed to retrieve file'))
|
||||
else:
|
||||
s = rfd.read()
|
||||
(bfd, metadata_pathname) = tempfile.mkstemp(str('.metadata'))
|
||||
metadata_pathname = tempfile.mkstemp(str('.metadata'))[1]
|
||||
atomic_write(metadata_pathname, force_bytes(s))
|
||||
try:
|
||||
p = lasso.Provider(lasso.PROVIDER_ROLE_IDP, metadata_pathname, None, None)
|
||||
lasso.Provider(lasso.PROVIDER_ROLE_IDP, metadata_pathname, None, None)
|
||||
except lasso.Error:
|
||||
pass
|
||||
else:
|
||||
|
@ -486,11 +486,11 @@ class AdminIDPDir(Directory):
|
|||
form.set_error('publickey_url', _('Failed to retrieve file'))
|
||||
else:
|
||||
s = rfd.read()
|
||||
(bfd, publickey_pathname) = tempfile.mkstemp(str('.publickey'))
|
||||
publickey_pathname = tempfile.mkstemp(str('.publickey'))[1]
|
||||
atomic_write(publickey_pathname, force_bytes(s))
|
||||
|
||||
try:
|
||||
p = lasso.Provider(
|
||||
lasso.Provider(
|
||||
lasso.PROVIDER_ROLE_IDP, metadata_pathname, publickey_pathname, None
|
||||
)
|
||||
except lasso.Error:
|
||||
|
@ -509,7 +509,7 @@ class AdminIDPDir(Directory):
|
|||
|
||||
pubkey = misc.get_abs_path(get_cfg('sp')['publickey'])
|
||||
try:
|
||||
p = lasso.Provider(lasso.PROVIDER_ROLE_IDP, metadata_pathname, pubkey, None)
|
||||
lasso.Provider(lasso.PROVIDER_ROLE_IDP, metadata_pathname, pubkey, None)
|
||||
except lasso.Error:
|
||||
# this was an error in the metadata file itself
|
||||
form.get_widget('metadata_url').set_error(_('File looks like a bad metadata file'))
|
||||
|
@ -573,7 +573,6 @@ class AdminIDPDir(Directory):
|
|||
|
||||
key_provider_id = new_key_provider_id
|
||||
|
||||
dir = get_publisher().app_dir
|
||||
metadata_fn = 'idp-%s-metadata.xml' % key_provider_id
|
||||
publickey_fn = 'idp-%s-publickey.pem' % key_provider_id
|
||||
if old_metadata_fn and os.path.exists(misc.get_abs_path(old_metadata_fn)):
|
||||
|
@ -731,22 +730,17 @@ class AdminIDPUI(Directory):
|
|||
|
||||
new_key_provider_id = misc.get_provider_key(provider_id)
|
||||
key_provider_id = self.idpk
|
||||
old_metadata_fn = None
|
||||
old_publickey_fn = None
|
||||
old_cacertchain_fn = None
|
||||
old_dict = {}
|
||||
if key_provider_id and new_key_provider_id != key_provider_id:
|
||||
# provider id changed, remove old files
|
||||
cfg_idp[new_key_provider_id] = cfg_idp[key_provider_id]
|
||||
old_metadata_fn = 'idp-%s-metadata.xml' % key_provider_id
|
||||
old_publickey_fn = 'idp-%s-publickey.pem' % key_provider_id
|
||||
old_cacertchain_fn = 'idp-%s-cacertchain.pem' % key_provider_id
|
||||
old_dict = cfg_idp[key_provider_id]
|
||||
del cfg_idp[key_provider_id]
|
||||
|
||||
key_provider_id = new_key_provider_id
|
||||
|
||||
dir = get_publisher().app_dir
|
||||
metadata_fn = 'idp-%s-metadata.xml' % key_provider_id
|
||||
publickey_fn = 'idp-%s-publickey.pem' % key_provider_id
|
||||
cacertchain_fn = 'idp-%s-cacertchain.pem' % key_provider_id
|
||||
|
@ -778,7 +772,7 @@ class AdminIDPUI(Directory):
|
|||
if 'cacertchain' in lp and os.path.exists(misc.get_abs_path(lp['cacertchain'])):
|
||||
cacertchain_fn = misc.get_abs_path(lp['cacertchain'])
|
||||
try:
|
||||
p = lasso.Provider(
|
||||
lasso.Provider(
|
||||
lasso.PROVIDER_ROLE_IDP, misc.get_abs_path(lp['metadata']), publickey_fn, cacertchain_fn
|
||||
)
|
||||
except lasso.Error:
|
||||
|
@ -789,7 +783,7 @@ class AdminIDPUI(Directory):
|
|||
else:
|
||||
return (None, template.error_page(_('Bad metadata or missing public key')))
|
||||
try:
|
||||
p = misc.get_provider(key_provider_id)
|
||||
misc.get_provider(key_provider_id)
|
||||
except (TypeError, KeyError):
|
||||
del cfg_idp[key_provider_id]
|
||||
if metadata:
|
||||
|
@ -1071,8 +1065,6 @@ class MethodAdminDirectory(Directory):
|
|||
encryption_pem_key = get_key('encryption_publickey')
|
||||
private_encryption_pem_key = get_key('encryption_privatekey')
|
||||
|
||||
saml2 = bool('saml2_providerid' in cfg_sp)
|
||||
|
||||
new_common_domain_getter_url = cfg_sp.get('common_domain_getter_url')
|
||||
if new_common_domain_getter_url != old_common_domain_getter_url:
|
||||
old_domain = None
|
||||
|
|
|
@ -64,7 +64,7 @@ class Command(BaseCommand):
|
|||
continue
|
||||
real_prefix = prefix.replace('_', '/') # xstatic hack
|
||||
dst_base = os.path.join(static_dir, real_prefix)
|
||||
for basedir, dirnames, filenames in os.walk(directory):
|
||||
for basedir, dummy, filenames in os.walk(directory):
|
||||
for filename in filenames:
|
||||
dst_path = os.path.join(dst_base, basedir[len(directory) + 1 :])
|
||||
dst_filename = os.path.join(dst_path, filename)
|
||||
|
|
|
@ -97,7 +97,7 @@ def get_lasso_server():
|
|||
if encryption_privatekey and os.path.exists(encryption_privatekey):
|
||||
try:
|
||||
server.setEncryptionPrivateKey(encryption_privatekey)
|
||||
except lasso.Error as error:
|
||||
except lasso.Error:
|
||||
get_logger().warning('Failed to set encryption private key')
|
||||
|
||||
for klp, idp in sorted(get_cfg('idp', {}).items(), key=lambda k: k[0]):
|
||||
|
@ -392,9 +392,7 @@ def _http_request(
|
|||
|
||||
|
||||
def urlopen(url, data=None):
|
||||
response, status, data, auth_header = _http_request(
|
||||
url, 'GET' if data is None else 'POST', body=data, raise_on_http_errors=True
|
||||
)
|
||||
data = _http_request(url, 'GET' if data is None else 'POST', body=data, raise_on_http_errors=True)[2]
|
||||
return io.BytesIO(data)
|
||||
|
||||
|
||||
|
|
|
@ -183,7 +183,6 @@ class QommonPublisher(Publisher, object):
|
|||
if not self.config.display_exceptions and exc.private_msg:
|
||||
exc.private_msg = None # hide it
|
||||
request = get_request()
|
||||
original_response = request.response
|
||||
request.response = HTTPResponse(status=exc.status_code)
|
||||
if exc.status_code == 401:
|
||||
# include WWW-Authenticate header
|
||||
|
@ -897,8 +896,6 @@ class QommonPublisher(Publisher, object):
|
|||
def get_substitution_variables(self):
|
||||
from wcs.variables import LazyDateObject
|
||||
|
||||
from . import misc
|
||||
|
||||
d = {
|
||||
'site_name': get_cfg('misc', {}).get('sitename', None),
|
||||
'site_theme': get_cfg('branding', {}).get('theme', self.default_theme),
|
||||
|
|
|
@ -60,7 +60,7 @@ def does_idp_authentication():
|
|||
|
||||
def soap_call(url, msg, client_cert=None):
|
||||
try:
|
||||
response, status, data, auth_header = misc.http_post_request(
|
||||
dummy, status, data, dummy = misc.http_post_request(
|
||||
url, msg, headers={'Content-Type': 'text/xml'}, cert_file=client_cert
|
||||
)
|
||||
except errors.ConnectionError as err:
|
||||
|
@ -293,7 +293,7 @@ class Saml2Directory(Directory):
|
|||
!= get_cfg('sp', {}).get('saml2_base_url') + get_request().get_url()[last_slash:]
|
||||
):
|
||||
return error_page('SubjectConfirmation Recipient Mismatch')
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
get_publisher().notify_of_exception(sys.exc_info(), context='[SAML]')
|
||||
return error_page('Error checking SubjectConfirmation Recipient')
|
||||
|
||||
|
@ -309,7 +309,7 @@ class Saml2Directory(Directory):
|
|||
try:
|
||||
if assertion.subject.subjectConfirmation.method != 'urn:oasis:names:tc:SAML:2.0:cm:bearer':
|
||||
return error_page('Unknown SubjectConfirmation Method')
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
return error_page('Error checking SubjectConfirmation Method')
|
||||
|
||||
try:
|
||||
|
@ -320,7 +320,7 @@ class Saml2Directory(Directory):
|
|||
audience_ok = True
|
||||
if not audience_ok:
|
||||
return error_page('Incorrect AudienceRestriction')
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
return error_page('Error checking AudienceRestriction')
|
||||
|
||||
try:
|
||||
|
@ -331,7 +331,7 @@ class Saml2Directory(Directory):
|
|||
return error_page('Assertion received too early')
|
||||
if not_on_or_after and current_time > not_on_or_after:
|
||||
return error_page('Assertion expired')
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
get_publisher().notify_of_exception(sys.exc_info(), context='[SAML]')
|
||||
return error_page('Error checking Assertion Time')
|
||||
|
||||
|
@ -372,7 +372,6 @@ class Saml2Directory(Directory):
|
|||
def continue_to_after_url(self):
|
||||
request = get_request()
|
||||
relay_state = request.form.get('RelayState', None)
|
||||
session = get_session()
|
||||
response = get_response()
|
||||
if relay_state == 'backoffice':
|
||||
after_url = get_publisher().get_backoffice_url()
|
||||
|
@ -666,7 +665,7 @@ class Saml2Directory(Directory):
|
|||
get_logger().warning('SOAP Endpoint got message without content-type')
|
||||
raise SOAPException()
|
||||
|
||||
ctype, ctype_params = parse_header(ctype)
|
||||
ctype = parse_header(ctype)[0]
|
||||
if ctype not in ('text/xml', 'application/vnd.paos+xml'):
|
||||
get_logger().warning('SOAP Endpoint got message with wrong content-type (%s)' % ctype)
|
||||
raise SOAPException()
|
||||
|
@ -684,7 +683,6 @@ class Saml2Directory(Directory):
|
|||
# its browser configured so that cookies are not sent for
|
||||
# remote queries and IdP is using image-based SLO.
|
||||
# so we look up a session with the appropriate name identifier
|
||||
name_identifier = nameid.content
|
||||
sessions = get_session_manager().get_sessions_for_saml(nameid.content, session_indexes)
|
||||
session_manager = get_session_manager()
|
||||
for session in sessions:
|
||||
|
@ -693,7 +691,7 @@ class Saml2Directory(Directory):
|
|||
session.id = None
|
||||
try:
|
||||
del session_manager[id]
|
||||
except KeyError as e:
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def singleLogoutPOST(self):
|
||||
|
|
|
@ -36,7 +36,7 @@ class PasserelleSMS(object):
|
|||
'to': destinations,
|
||||
}
|
||||
|
||||
response, status, data = call_webservice(self.url, method='POST', post_data=payload)
|
||||
data = call_webservice(self.url, method='POST', post_data=payload)[2]
|
||||
get_logger().debug('sms %r sent using passerelle to %r, result: %r', text, destinations, data)
|
||||
|
||||
|
||||
|
|
|
@ -508,14 +508,14 @@ class StorableObject(object):
|
|||
if ignore_errors:
|
||||
return None
|
||||
raise KeyError()
|
||||
except ImportError as e:
|
||||
except ImportError:
|
||||
if ignore_errors:
|
||||
return None
|
||||
raise KeyError()
|
||||
except EOFError as e:
|
||||
except EOFError:
|
||||
# maybe it's being written to, loop for a while to see
|
||||
current_position = fd.tell()
|
||||
for i in range(10):
|
||||
for dummy in range(10):
|
||||
time.sleep(0.01)
|
||||
if current_position != os.stat(filename).st_size:
|
||||
return cls.get_filename(
|
||||
|
|
|
@ -108,7 +108,6 @@ def get_theme_dict(theme_xml):
|
|||
tree = ET.parse(theme_xml).getroot()
|
||||
except: # parse error
|
||||
return None
|
||||
publisher = get_publisher()
|
||||
name = force_str(tree.attrib['name'])
|
||||
version = force_str(tree.attrib.get('version') or '')
|
||||
label = force_str(tree.findtext('label') or '')
|
||||
|
@ -202,7 +201,6 @@ def error_page(error_message, error_title=None, exception=None, continue_to=None
|
|||
if not error_title:
|
||||
error_title = _('Error')
|
||||
if exception:
|
||||
root_url = get_publisher().get_root_url()
|
||||
get_response().add_javascript(['jquery.js', 'exception.js'])
|
||||
|
||||
kwargs = {'title': error_title}
|
||||
|
|
|
@ -433,14 +433,10 @@ def standard_text(text_id):
|
|||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def action_button(context, action_id, label, delay=3):
|
||||
from wcs.formdef import FormDef
|
||||
|
||||
formdata_id = context.get('form_number_raw')
|
||||
formdef_urlname = context.get('form_slug')
|
||||
if not (formdef_urlname and formdata_id):
|
||||
return ''
|
||||
formdef = FormDef.get_by_urlname(formdef_urlname)
|
||||
formdata = formdef.data_class().get(formdata_id, ignore_errors=True)
|
||||
token = tokens.Token(expiration_delay=delay * 86400, size=64)
|
||||
token.type = 'action'
|
||||
token.context = {
|
||||
|
|
|
@ -186,14 +186,14 @@ class RemoteOpaqueUploadStorage(object):
|
|||
try:
|
||||
from wcs.wscalls import call_webservice
|
||||
|
||||
response, status, data = call_webservice(self.ws, method='POST', post_data=post_data)
|
||||
dummy, status, data = call_webservice(self.ws, method='POST', post_data=post_data)
|
||||
except ConnectionError as e:
|
||||
raise UploadStorageError('remote storage connection error (%r)' % e)
|
||||
if status not in (200, 201):
|
||||
raise UploadStorageError('remote storage returned status %s' % status)
|
||||
try:
|
||||
ws_result = json_loads(data)
|
||||
except (ValueError, TypeError) as e:
|
||||
except (ValueError, TypeError):
|
||||
raise UploadStorageError('remote storage returned invalid JSON')
|
||||
if not isinstance(ws_result, dict):
|
||||
raise UploadStorageError('remote storage returned non-dict JSON')
|
||||
|
|
|
@ -332,7 +332,7 @@ class RootDirectory(Directory):
|
|||
def tmp_upload(self):
|
||||
results = []
|
||||
storage = get_request().form.get('storage')
|
||||
for k, v in get_request().form.items():
|
||||
for v in get_request().form.values():
|
||||
if hasattr(v, 'fp'):
|
||||
try:
|
||||
tempfile = get_session().add_tempfile(v, storage=storage)
|
||||
|
@ -430,7 +430,7 @@ class RootDirectory(Directory):
|
|||
else:
|
||||
# redirect to category if there's not a formdef with same slug
|
||||
try:
|
||||
formdef = FormDef.get_by_urlname(component)
|
||||
FormDef.get_by_urlname(component)
|
||||
except KeyError:
|
||||
return root.RootDirectory(category)
|
||||
|
||||
|
|
20
wcs/sql.py
20
wcs/sql.py
|
@ -1449,7 +1449,7 @@ class SqlMixin(object):
|
|||
@classmethod
|
||||
@guard_postgres
|
||||
def get_ids_from_query(cls, query):
|
||||
conn, cur = get_connection_and_cursor()
|
||||
cur = get_connection_and_cursor()[1]
|
||||
|
||||
sql_statement = (
|
||||
'''SELECT id FROM %s
|
||||
|
@ -1472,7 +1472,7 @@ class SqlMixin(object):
|
|||
return None
|
||||
else:
|
||||
raise KeyError()
|
||||
conn, cur = get_connection_and_cursor()
|
||||
cur = get_connection_and_cursor()[1]
|
||||
|
||||
sql_statement = '''SELECT %s
|
||||
FROM %s
|
||||
|
@ -1640,7 +1640,7 @@ class SqlMixin(object):
|
|||
objects = cls.select_iterator(
|
||||
clause=clause, order_by=order_by, ignore_errors=ignore_errors, limit=limit, offset=offset
|
||||
)
|
||||
where_clauses, parameters, func_clause = parse_clause(clause)
|
||||
func_clause = parse_clause(clause)[2]
|
||||
if func_clause and (limit or offset):
|
||||
objects = _take(objects, limit, offset)
|
||||
if iterator:
|
||||
|
@ -1914,7 +1914,7 @@ class SqlDataMixin(SqlMixin):
|
|||
row = cur.fetchone()
|
||||
if row is None:
|
||||
break
|
||||
_sql_id, who, status, time, last_jump_datetime, comment, parts, formdata_id = tuple(row[:8])
|
||||
formdata_id = tuple(row[:8])[7]
|
||||
formdata = object_dict.get(formdata_id)
|
||||
if not formdata:
|
||||
continue
|
||||
|
@ -2166,7 +2166,7 @@ class SqlDataMixin(SqlMixin):
|
|||
return None
|
||||
else:
|
||||
raise KeyError()
|
||||
conn, cur = get_connection_and_cursor()
|
||||
cur = get_connection_and_cursor()[1]
|
||||
|
||||
fields = cls.get_data_fields()
|
||||
|
||||
|
@ -2197,7 +2197,7 @@ class SqlDataMixin(SqlMixin):
|
|||
@classmethod
|
||||
@guard_postgres
|
||||
def get_ids_with_indexed_value(cls, index, value, auto_fallback=True, clause=None):
|
||||
conn, cur = get_connection_and_cursor()
|
||||
cur = get_connection_and_cursor()[1]
|
||||
|
||||
where_clauses, parameters, func_clause = parse_clause(clause)
|
||||
assert not func_clause
|
||||
|
@ -2417,7 +2417,7 @@ class SqlUser(SqlMixin, wcs.users.User):
|
|||
o.verified_fields,
|
||||
o.lasso_dump,
|
||||
o.last_seen,
|
||||
ascii_name,
|
||||
ascii_name, # XXX what's this ? pylint: disable=W0612
|
||||
o.deleted_timestamp,
|
||||
o.is_active,
|
||||
) = [str_encode(x) for x in tuple(row[:13])]
|
||||
|
@ -3117,7 +3117,7 @@ def get_period_query(
|
|||
clause.append(LessOrEqual('receipt_time', period_end))
|
||||
else:
|
||||
clause.append(Less('receipt_time', period_end))
|
||||
where_clauses, params, func_clause = parse_clause(clause)
|
||||
where_clauses, params, dummy = parse_clause(clause)
|
||||
parameters.update(params)
|
||||
statement = ' FROM %s ' % table_name
|
||||
statement += ' WHERE ' + ' AND '.join(where_clauses)
|
||||
|
@ -3132,7 +3132,7 @@ def get_actionable_counts(user_roles):
|
|||
Intersects('actions_roles_array', user_roles),
|
||||
Null('anonymised'),
|
||||
]
|
||||
where_clauses, parameters, func_clause = parse_clause(criterias)
|
||||
where_clauses, parameters, dummy = parse_clause(criterias)
|
||||
statement = '''SELECT formdef_id, COUNT(*)
|
||||
FROM wcs_all_forms
|
||||
WHERE %s
|
||||
|
@ -3153,7 +3153,7 @@ def get_total_counts(user_roles):
|
|||
Intersects('concerned_roles_array', user_roles),
|
||||
Null('anonymised'),
|
||||
]
|
||||
where_clauses, parameters, func_clause = parse_clause(criterias)
|
||||
where_clauses, parameters, dummy = parse_clause(criterias)
|
||||
statement = '''SELECT formdef_id, COUNT(*)
|
||||
FROM wcs_all_forms
|
||||
WHERE %s
|
||||
|
|
|
@ -571,7 +571,7 @@ class CreateFormdataWorkflowStatusItem(WorkflowStatusItem):
|
|||
|
||||
def _set_value(self, formdata, field, value):
|
||||
if field.convert_value_from_anything:
|
||||
old_value = value # noqa: F841, copy value for debug
|
||||
dummy = value # noqa: F841, copy value for debug
|
||||
value = field.convert_value_from_anything(value)
|
||||
|
||||
field.set_value(formdata.data, value)
|
||||
|
|
|
@ -75,9 +75,6 @@ class ModifyCriticalityWorkflowStatusItem(WorkflowStatusItem):
|
|||
)
|
||||
|
||||
def perform(self, formdata):
|
||||
levels = formdata.formdef.workflow.criticality_levels
|
||||
current_level = formdata.criticality_level or 0
|
||||
new_level = current_level
|
||||
if self.mode == MODE_INC:
|
||||
formdata.increase_criticality_level()
|
||||
elif self.mode == MODE_DEC:
|
||||
|
|
|
@ -98,7 +98,7 @@ try:
|
|||
break
|
||||
infile.write(chunk)
|
||||
infile.flush()
|
||||
for i in range(3):
|
||||
for dummy in range(3):
|
||||
lo_output = subprocess.run(
|
||||
[
|
||||
'libreoffice',
|
||||
|
|
|
@ -71,7 +71,7 @@ class ExternalWorkflowGlobalAction(WorkflowStatusItem):
|
|||
|
||||
def get_trigger(self, workflow):
|
||||
try:
|
||||
trigger_type, trigger_id = self.trigger_id.split(':', 1)
|
||||
trigger_id = self.trigger_id.split(':', 1)[1]
|
||||
except ValueError:
|
||||
return
|
||||
for trigger in self.get_workflow_webservice_triggers(workflow):
|
||||
|
|
|
@ -164,7 +164,7 @@ class GeolocateWorkflowStatusItem(WorkflowStatusItem):
|
|||
url += '&accept-language=%s' % (get_publisher().get_site_language() or 'en')
|
||||
|
||||
try:
|
||||
response, status, data, auth_header = http_get_page(url, raise_on_http_errors=True)
|
||||
dummy, dummy, data, dummy = http_get_page(url, raise_on_http_errors=True)
|
||||
except ConnectionError as e:
|
||||
get_publisher().record_error(
|
||||
_('error calling geocoding service [%s]') % str(e), formdata=formdata, exception=e
|
||||
|
|
|
@ -215,7 +215,7 @@ class UpdateUserProfileStatusItem(WorkflowStatusItem):
|
|||
payload = json.dumps(payload, cls=JSONEncoder)
|
||||
|
||||
def after_job(job=None):
|
||||
response, status, data, auth_header = http_patch_request(
|
||||
dummy, status, dummy, dummy = http_patch_request(
|
||||
url, payload, headers={'Content-type': 'application/json'}
|
||||
)
|
||||
if status != 200:
|
||||
|
|
|
@ -121,7 +121,7 @@ class RegisterCommenterWorkflowStatusItem(WorkflowStatusItem):
|
|||
try:
|
||||
# useless but required to restore upload.fp from serialized state,
|
||||
# needed by AttachmentEvolutionPart.from_upload()
|
||||
fp = upload.get_file_pointer()
|
||||
upload.get_file_pointer()
|
||||
formdata.evolution[-1].add_part(AttachmentEvolutionPart.from_upload(upload))
|
||||
except:
|
||||
get_publisher().notify_of_exception(sys.exc_info(), context='[comment/attachments]')
|
||||
|
|
|
@ -119,7 +119,7 @@ class AddRoleWorkflowStatusItem(WorkflowStatusItem):
|
|||
|
||||
def after_job(job=None):
|
||||
signed_url = sign_ws_url(url)
|
||||
response, status, data, auth_header = http_post_request(signed_url)
|
||||
dummy, status, dummy, dummy = http_post_request(signed_url)
|
||||
if status != 201:
|
||||
get_logger().error('failed to add role %r to user %r', role, user)
|
||||
|
||||
|
@ -189,7 +189,7 @@ class RemoveRoleWorkflowStatusItem(WorkflowStatusItem):
|
|||
|
||||
def after_job(job=None):
|
||||
signed_url = sign_ws_url(url)
|
||||
response, status, data, auth_header = http_delete_request(signed_url)
|
||||
response, status, data, auth_header = http_delete_request(signed_url) # pylint: disable=W0612
|
||||
if status != 200:
|
||||
get_logger().error('failed to remove role %r from user %r', role, user)
|
||||
|
||||
|
|
|
@ -411,7 +411,7 @@ class WebserviceCallStatusItem(WorkflowStatusItem):
|
|||
else: # on error, record data if it is JSON
|
||||
try:
|
||||
d = json_loads(data)
|
||||
except (ValueError, TypeError) as e:
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
else:
|
||||
workflow_data['%s_error_response' % self.varname] = d
|
||||
|
@ -449,7 +449,7 @@ class WebserviceCallStatusItem(WorkflowStatusItem):
|
|||
if self.response_type == 'json':
|
||||
try:
|
||||
d = json_loads(force_text(data))
|
||||
except (ValueError, TypeError) as e:
|
||||
except (ValueError, TypeError):
|
||||
formdata.update_workflow_data(workflow_data)
|
||||
formdata.store()
|
||||
self.action_on_error(
|
||||
|
@ -489,7 +489,7 @@ class WebserviceCallStatusItem(WorkflowStatusItem):
|
|||
summary = '%s %s' % (response.status_code, response.reason)
|
||||
try:
|
||||
raise Exception(summary)
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
exc_info = sys.exc_info()
|
||||
|
||||
if self.notify_on_errors or self.record_on_errors:
|
||||
|
@ -513,7 +513,7 @@ class WebserviceCallStatusItem(WorkflowStatusItem):
|
|||
'reference to invalid status %r in workflow %r, status %r'
|
||||
% (action, self.parent.parent.name, self.parent.name)
|
||||
)
|
||||
except IndexError as e:
|
||||
except IndexError:
|
||||
get_publisher().notify_of_exception(sys.exc_info(), context='[WSCALL]')
|
||||
raise AbortActionException()
|
||||
|
||||
|
|
|
@ -1325,8 +1325,8 @@ class WorkflowGlobalActionTimeoutTrigger(WorkflowGlobalActionTrigger):
|
|||
except:
|
||||
# get the variables in the locals() namespace so they are
|
||||
# displayed within the trace.
|
||||
expression = self.anchor_expression
|
||||
global_variables = get_publisher().get_global_eval_dict()
|
||||
expression = self.anchor_expression # noqa pylint: disable=W0612
|
||||
global_variables = get_publisher().get_global_eval_dict() # noqa pylint: disable=W0612
|
||||
get_publisher().notify_of_exception(sys.exc_info(), context='[TIMEOUTS]')
|
||||
|
||||
# convert anchor_date to datetime.datetime()
|
||||
|
@ -1408,7 +1408,6 @@ class WorkflowGlobalActionTimeoutTrigger(WorkflowGlobalActionTrigger):
|
|||
criterias.append(Contains('status', not_endpoint_status_ids))
|
||||
|
||||
for formdef in workflow.formdefs():
|
||||
open_formdata_ids = []
|
||||
data_class = formdef.data_class()
|
||||
for formdata in data_class.select(criterias, iterator=True):
|
||||
get_publisher().substitutions.reset()
|
||||
|
@ -2931,8 +2930,6 @@ class SendmailWorkflowStatusItem(WorkflowStatusItem):
|
|||
)
|
||||
return
|
||||
|
||||
users_cfg = get_cfg('users', {})
|
||||
|
||||
# this works around the fact that parametric workflows only support
|
||||
# string values, so if we get set a string, we convert it here to an
|
||||
# array.
|
||||
|
|
|
@ -96,7 +96,6 @@ def call_webservice(
|
|||
qs_data['orig'] = orig
|
||||
|
||||
if qs_data: # merge qs_data into url
|
||||
publisher = get_publisher()
|
||||
parsed = urllib.parse.urlparse(url)
|
||||
qs = list(urllib.parse.parse_qsl(parsed.query))
|
||||
for key, value in qs_data.items():
|
||||
|
@ -153,13 +152,11 @@ def call_webservice(
|
|||
if payload:
|
||||
headers['Content-type'] = 'application/json'
|
||||
payload = json.dumps(payload, cls=JSONEncoder)
|
||||
response, status, data, auth_header = misc._http_request(
|
||||
url, method=method, body=payload, headers=headers
|
||||
)
|
||||
response, status, data, dummy = misc._http_request(url, method=method, body=payload, headers=headers)
|
||||
elif method == 'DELETE':
|
||||
response, status, data, auth_header = misc._http_request(url, method='DELETE', headers=headers)
|
||||
response, status, data, dummy = misc._http_request(url, method='DELETE', headers=headers)
|
||||
else:
|
||||
response, status, data, auth_header = misc.http_get_page(url, headers=headers)
|
||||
response, status, data, dummy = misc.http_get_page(url, headers=headers)
|
||||
request = get_request()
|
||||
if cache is True and request and hasattr(request, 'wscalls_cache'):
|
||||
request.wscalls_cache[unsigned_url] = (status, data)
|
||||
|
@ -271,12 +268,12 @@ class NamedWsCall(XmlStorableObject):
|
|||
return {'webservice': WsCallsSubstitutionProxy()}
|
||||
|
||||
def call(self):
|
||||
(response, status, data) = call_webservice(
|
||||
data = call_webservice(
|
||||
cache=True,
|
||||
notify_on_errors=self.notify_on_errors,
|
||||
record_on_errors=self.record_on_errors,
|
||||
**self.request,
|
||||
)
|
||||
)[2]
|
||||
return json_loads(data)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue