def home() -> str: """The queue administration home page.""" return render_admin( 'home.html', num_inquiries=Inquiry.get_num_unresolved(), latest_inquiry=Inquiry.get_current_or_latest(), current_inquiry=Inquiry.get_current(), ttr=g.queue.ttr(), earliest_request=Inquiry.get_earliest(), locations=Inquiry.get_unresolved( str2lst(g.queue.setting('locations').value), 'location'))
def settings() -> str: """Show settings for the current queue.""" if request.method == 'POST': notification = NOTIF_SETTING_UPDATED setting = ( g.queue .setting(request.form['name']) .update(**dict(request.form.items()))) # TODO convert all settings into objects, with permissions check and # post processing if setting.name == 'locations': setting.value = setting.value.replace(' ', '') if setting.name == 'inquiry_types' and \ len(str2lst(setting.value)) == 1 and \ bool(int(setting.enabled)) is True: notification = NOTIF_SETTING_ONE_TYPE setting.save() return redirect(url_for( 'admin.settings', notification=notification)) return render_admin('settings.html', settings=g.queue.cleaned_settings)
def allowed_assignment(self, request: LocalProxy, form: Form) -> bool: """Return if assignment is allowed, per settings. :param request: The request context object. :param form: form to check """ lst = self.setting('assignments').value assignment = request.form['assignment'] category = request.form.get('category', None) if ':' in lst: datum = dict(l.split(':') for l in lst.splitlines()) lst = datum.get(category, '*') if lst == '*': return True if assignment not in str2lst(lst): prefix = 'Assignment' if category: prefix = 'For "%s" inquiries, assignment' % category form.errors.setdefault('assignment', []) \ .append( '%s "%s" is not allowed. Only the following ' 'assignments are: %s' % (prefix, assignment, lst)) return False return True
def get_categories_unresolved(**kwargs) -> int: """Return categories that have unresolved inquiries.""" return Inquiry.get_unresolved( str2lst(g.queue.setting('inquiry_types').value), **kwargs)