예제 #1
0
파일: views.py 프로젝트: alvinwan/quupod
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'))
예제 #2
0
파일: views.py 프로젝트: alvinwan/quupod
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)
예제 #3
0
파일: models.py 프로젝트: alvinwan/quupod
    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
예제 #4
0
파일: models.py 프로젝트: alvinwan/quupod
 def get_categories_unresolved(**kwargs) -> int:
     """Return categories that have unresolved inquiries."""
     return Inquiry.get_unresolved(
         str2lst(g.queue.setting('inquiry_types').value),
         **kwargs)