Esempio n. 1
0
    def __init__(self, user_search_string, search_by):
        super().__init__(user_search_string, search_by)
        self.FREEIPA_SERVER = import_from_settings('FREEIPA_SERVER')
        self.FREEIPA_USER_SEARCH_BASE = import_from_settings(
            'FREEIPA_USER_SEARCH_BASE', 'cn=users,cn=accounts')
        self.FREEIPA_KTNAME = import_from_settings('FREEIPA_KTNAME', '')

        self.server = Server('ldap://{}'.format(self.FREEIPA_SERVER),
                             use_ssl=True,
                             connect_timeout=1)
        if len(self.FREEIPA_KTNAME) > 0:
            logger.info('Kerberos bind enabled: %s', self.FREEIPA_KTNAME)
            # kerberos SASL/GSSAPI bind
            os.environ["KRB5_CLIENT_KTNAME"] = self.FREEIPA_KTNAME
            self.conn = Connection(self.server,
                                   authentication=SASL,
                                   sasl_mechanism=KERBEROS,
                                   auto_bind=True)
        else:
            # anonomous bind
            self.conn = Connection(self.server, auto_bind=True)

        if not self.conn.bind():
            raise ImproperlyConfigured(
                'Failed to bind to LDAP server: {}'.format(self.conn.result))
        else:
            logger.info('LDAP bind successful: %s',
                        self.conn.extend.standard.who_am_i())
Esempio n. 2
0
 def __init__(self, username, groups):
     """Initialize settings."""
     self.IQUOTA_API_HOST = import_from_settings('IQUOTA_API_HOST')
     self.IQUOTA_API_PORT = import_from_settings('IQUOTA_API_PORT')
     self.IQUOTA_CA_CERT = import_from_settings('IQUOTA_CA_CERT')
     self.IQUOTA_KEYTAB = import_from_settings('IQUOTA_KEYTAB')
     self.username = username
     self.groups = groups
Esempio n. 3
0
 def __init__(self):
     self.SYSTEM_MONITOR_ENDPOINT = import_from_settings(
         'SYSTEM_MONITOR_ENDPOINT')
     self.SYSTEM_MONITOR_PANEL_TITLE = import_from_settings(
         'SYSTEM_MONITOR_PANEL_TITLE')
     self.response = None
     self.data = {}
     self.parse_function = getattr(self, self.RESPONSE_PARSER_FUNCTION)
     self.fetch_data()
Esempio n. 4
0
    def __init__(self, user_search_string, search_by):
        super().__init__(user_search_string, search_by)
        self.LDAP_SERVER_URI = import_from_settings('AUTH_LDAP_SERVER_URI')
        self.LDAP_USER_SEARCH_BASE = import_from_settings(
            'AUTH_LDAP_USER_SEARCH_BASE')
        self.LDAP_BIND_DN = import_from_settings('AUTH_LDAP_BIND_DN', None)
        self.LDAP_BIND_PASSWORD = import_from_settings(
            'AUTH_LDAP_BIND_PASSWORD', None)

        self.conn = ldap.initialize(self.LDAP_SERVER_URI)
        # Required for our LDAP
        self.conn.start_tls_s()
        self.conn.simple_bind_s(self.LDAP_BIND_DN, self.LDAP_BIND_PASSWORD)
Esempio n. 5
0
    def __init__(self, user_search_string, search_by):
        super().__init__(user_search_string, search_by)
        self.LDAP_SERVER_URI = import_from_settings('LDAP_SERVER_URI')
        self.LDAP_USER_SEARCH_BASE = import_from_settings(
            'LDAP_USER_SEARCH_BASE')
        self.LDAP_BIND_DN = import_from_settings('LDAP_BIND_DN', None)
        self.LDAP_BIND_PASSWORD = import_from_settings('LDAP_BIND_PASSWORD',
                                                       None)

        self.server = Server(self.LDAP_SERVER_URI,
                             use_ssl=True,
                             connect_timeout=1)
        self.conn = Connection(self.server,
                               self.LDAP_BIND_DN,
                               self.LDAP_BIND_PASSWORD,
                               auto_bind=True)
Esempio n. 6
0
def get_system_monitor_context():
    context = {}
    system_monitor = SystemMonitor()
    system_monitor_data = system_monitor.get_data()
    system_monitor_panel_title = system_monitor.get_panel_title()

    context['last_updated'] = system_monitor_data.get('last_updated')
    context['utilization_data'] = system_monitor_data.get('utilization_data')
    context['jobs_data'] = system_monitor_data.get('jobs_data')
    context['system_monitor_panel_title'] = system_monitor_panel_title
    context['SYSTEM_MONITOR_DISPLAY_XDMOD_LINK'] = import_from_settings(
        'SYSTEM_MONITOR_DISPLAY_XDMOD_LINK', None)
    context[
        'SYSTEM_MONITOR_DISPLAY_MORE_STATUS_INFO_LINK'] = import_from_settings(
            'SYSTEM_MONITOR_DISPLAY_MORE_STATUS_INFO_LINK', None)

    return context
Esempio n. 7
0
 def __init__(self,
              user_search_string,
              search_by,
              usernames_names_to_exclude=[]):
     self.USER_SEARCH_CLASSES = import_from_settings(
         'ADDITIONAL_USER_SEARCH_CLASSES', [])
     self.USER_SEARCH_CLASSES.insert(
         0, 'coldfront.core.user.utils.LocalUserSearch')
     self.user_search_string = user_search_string
     self.search_by = search_by
     self.usernames_names_to_exclude = usernames_names_to_exclude
Esempio n. 8
0
import logging

from django.contrib.auth.models import Group

from coldfront.core.utils.common import import_from_settings
from mozilla_django_oidc.auth import OIDCAuthenticationBackend

logger = logging.getLogger(__name__)

PI_GROUP = import_from_settings('MOKEY_OIDC_PI_GROUP', 'pi')
ALLOWED_GROUPS = import_from_settings('MOKEY_OIDC_ALLOWED_GROUPS', [])
DENY_GROUPS = import_from_settings('MOKEY_OIDC_DENY_GROUPS', [])


class OIDCMokeyAuthenticationBackend(OIDCAuthenticationBackend):
    def _sync_groups(self, user, groups):
        is_pi = False
        user.groups.clear()
        for group_name in groups:
            group, created = Group.objects.get_or_create(name=group_name)
            user.groups.add(group)
            if group_name == PI_GROUP:
                is_pi = True

        user.userprofile.is_pi = is_pi

    def _parse_groups_from_claims(self, claims):
        groups = claims.get('groups', []) or []
        if isinstance(groups, str):
            groups = groups.split(';')
Esempio n. 9
0
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.generic import TemplateView

from coldfront.core.user.forms import UserSearchForm
from coldfront.core.user.utils import CombinedUserSearch
from coldfront.core.utils.mail import send_email_template
from coldfront.core.utils.common import import_from_settings

logger = logging.getLogger(__name__)
EMAIL_ENABLED = import_from_settings('EMAIL_ENABLED', False)
if EMAIL_ENABLED:
    EMAIL_TICKET_SYSTEM_ADDRESS = import_from_settings(
        'EMAIL_TICKET_SYSTEM_ADDRESS')


@method_decorator(login_required, name='dispatch')
class UserProfile(TemplateView):
    template_name = 'user/user_profile.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        group_list = ', '.join(
            [group.name for group in self.request.user.groups.all()])
        context['group_list'] = group_list
        return context
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.db import models
from django.utils.html import mark_safe
from django.utils.module_loading import import_string
from model_utils.models import TimeStampedModel
from simple_history.models import HistoricalRecords

from coldfront.core.project.models import Project
from coldfront.core.resource.models import Resource
from coldfront.core.utils.common import import_from_settings
import coldfront.core.attribute_expansion as attribute_expansion

logger = logging.getLogger(__name__)

ALLOCATION_ATTRIBUTE_VIEW_LIST = import_from_settings(
    'ALLOCATION_ATTRIBUTE_VIEW_LIST', [])
ALLOCATION_FUNCS_ON_EXPIRE = import_from_settings('ALLOCATION_FUNCS_ON_EXPIRE',
                                                  [])
ALLOCATION_RESOURCE_ORDERING = import_from_settings(
    'ALLOCATION_RESOURCE_ORDERING', ['-is_allocatable', 'name'])


class AllocationStatusChoice(TimeStampedModel):
    name = models.CharField(max_length=64)

    def __str__(self):
        return self.name

    class Meta:
        ordering = [
            'name',
Esempio n. 11
0
import os
import sys
import tempfile

from django.core.management.base import BaseCommand, CommandError
from django.conf import settings

from coldfront.core.utils.common import import_from_settings
from coldfront.core.resource.models import ResourceAttribute
from coldfront.plugins.slurm.associations import SlurmCluster
from coldfront.plugins.slurm.utils import SlurmError, slurm_remove_account, slurm_remove_assoc, \
              slurm_add_assoc, slurm_add_account, slurm_dump_cluster, SLURM_CLUSTER_ATTRIBUTE_NAME, \
              SLURM_ACCOUNT_ATTRIBUTE_NAME, SLURM_USER_SPECS_ATTRIBUTE_NAME


SLURM_IGNORE_USERS = import_from_settings('SLURM_IGNORE_USERS', [])
SLURM_IGNORE_ACCOUNTS = import_from_settings('SLURM_IGNORE_ACCOUNTS', [])
SLURM_IGNORE_CLUSTERS = import_from_settings('SLURM_IGNORE_CLUSTERS', [])
SLURM_NOOP = import_from_settings('SLURM_NOOP', False)

logger = logging.getLogger(__name__)

class Command(BaseCommand):
    help = 'Check consistency between Slurm associations and Coldfront subscriptions'

    def add_arguments(self, parser):
        parser.add_argument("-i", "--input", help="Path to sacctmgr dump flat file as input. Defaults to stdin")
        parser.add_argument("-c", "--cluster", help="Run sacctmgr dump [cluster] as input")
        parser.add_argument("-s", "--sync", help="Remove associations in Slurm that no longer exist in Coldfront", action="store_true")
        parser.add_argument("-n", "--noop", help="Print commands only. Do not run any commands.", action="store_true")
        parser.add_argument("-u", "--username", help="Check specific username")
Esempio n. 12
0
from django import forms
from django.shortcuts import get_object_or_404

from coldfront.core.project.models import Project
from coldfront.core.resource.models import Resource, ResourceType
from coldfront.core.subscription.models import (Subscription,
                                                SubscriptionAccount,
                                                SubscriptionStatusChoice)
from coldfront.core.subscription.utils import get_user_resources
from coldfront.core.utils.common import import_from_settings

SUBSCRIPTION_ACCOUNT_ENABLED = import_from_settings(
    'SUBSCRIPTION_ACCOUNT_ENABLED', False)


class SubscriptionForm(forms.Form):
    resource = forms.ModelChoiceField(queryset=None, empty_label=None)
    justification = forms.CharField(widget=forms.Textarea)
    quantity = forms.IntegerField(required=True)
    users = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                      required=False)
    subscription_account = forms.ChoiceField(required=False)

    def __init__(self, request_user, project_pk, *args, **kwargs):
        super().__init__(*args, **kwargs)
        project_obj = get_object_or_404(Project, pk=project_pk)
        self.fields['resource'].queryset = get_user_resources(request_user)
        self.fields['quantity'].initial = 1
        user_query_set = project_obj.projectuser_set.select_related(
            'user').filter(status__name__in=[
                'Active',
Esempio n. 13
0
from django.apps import AppConfig

from coldfront.core.utils.common import import_from_settings

FREEIPA_ENABLE_SIGNALS = import_from_settings('FREEIPA_ENABLE_SIGNALS', False)


class IPAConfig(AppConfig):
    name = 'coldfront.plugins.freeipa'

    def ready(self):
        if FREEIPA_ENABLE_SIGNALS:
            import coldfront.plugins.freeipa.signals
Esempio n. 14
0
from django import forms
from django.shortcuts import get_object_or_404

from coldfront.core.allocation.models import (Allocation, AllocationAccount,
                                              AllocationAttributeType,
                                              AllocationAttribute,
                                              AllocationStatusChoice)
from coldfront.core.allocation.utils import get_user_resources
from coldfront.core.project.models import Project
from coldfront.core.resource.models import Resource, ResourceType
from coldfront.core.utils.common import import_from_settings

ALLOCATION_ACCOUNT_ENABLED = import_from_settings(
    'ALLOCATION_ACCOUNT_ENABLED', False)
ALLOCATION_CHANGE_REQUEST_EXTENSION_DAYS = import_from_settings(
    'ALLOCATION_CHANGE_REQUEST_EXTENSION_DAYS', [])


class AllocationForm(forms.Form):
    resource = forms.ModelChoiceField(queryset=None, empty_label=None)
    justification = forms.CharField(widget=forms.Textarea)
    quantity = forms.IntegerField(required=True)
    users = forms.MultipleChoiceField(
        widget=forms.CheckboxSelectMultiple, required=False)
    allocation_account = forms.ChoiceField(required=False)

    def __init__(self, request_user, project_pk,  *args, **kwargs):
        super().__init__(*args, **kwargs)
        project_obj = get_object_or_404(Project, pk=project_pk)
        self.fields['resource'].queryset = get_user_resources(request_user)
        self.fields['quantity'].initial = 1
Esempio n. 15
0
import logging
from smtplib import SMTPException

from django.conf import settings
from django.core.mail import EmailMessage, send_mail
from django.template.loader import render_to_string

from coldfront.core.utils.common import import_from_settings

logger = logging.getLogger(__name__)
EMAIL_ENABLED = import_from_settings('EMAIL_ENABLED', False)
if EMAIL_ENABLED:
    EMAIL_SUBJECT_PREFIX = import_from_settings('EMAIL_SUBJECT_PREFIX')
    EMAIL_DEVELOPMENT_EMAIL_LIST = import_from_settings(
        'EMAIL_DEVELOPMENT_EMAIL_LIST')


def send_email(subject, body, sender, receiver_list, cc=[]):
    """Helper function for sending emails
    """

    if not EMAIL_ENABLED:
        return

    if len(receiver_list) == 0:
        logger.error('Failed to send email missing receiver_list')
        return

    if len(sender) == 0:
        logger.error('Failed to send email missing sender address')
        return
Esempio n. 16
0
import datetime
import textwrap

from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.core.validators import MinLengthValidator
from django.db import models
from model_utils.models import TimeStampedModel
from simple_history.models import HistoricalRecords

from coldfront.core.field_of_science.models import FieldOfScience
from coldfront.core.utils.common import import_from_settings

PROJECT_ENABLE_PROJECT_REVIEW = import_from_settings(
    'PROJECT_ENABLE_PROJECT_REVIEW', False)


class ProjectStatusChoice(TimeStampedModel):
    name = models.CharField(max_length=64)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('name', )


class Project(TimeStampedModel):

    DEFAULT_DESCRIPTION = '''
We do not have information about your research. Please provide a detailed description of your work and update your field of science. Thank you!
Esempio n. 17
0
import logging
import os

from django.core.exceptions import ImproperlyConfigured
from coldfront.core.utils.common import import_from_settings

from ipalib import api

CLIENT_KTNAME = import_from_settings('FREEIPA_KTNAME')
UNIX_GROUP_ATTRIBUTE_NAME = import_from_settings('FREEIPA_GROUP_ATTRIBUTE_NAME', 'freeipa_group')
FREEIPA_NOOP = import_from_settings('FREEIPA_NOOP', False)

logger = logging.getLogger(__name__)

class ApiError(Exception):
    pass

class AlreadyMemberError(ApiError):
    pass

class NotMemberError(ApiError):
    pass

try:
    os.environ["KRB5_CLIENT_KTNAME"] = CLIENT_KTNAME
    api.bootstrap()
    api.finalize()
    api.Backend.rpcclient.connect()
except Exception as e:
    logger.error("Failed to initialze FreeIPA lib: %s", e)
    raise ImproperlyConfigured('Failed to initialze FreeIPA: {0}'.format(e))
Esempio n. 18
0
import datetime

from django import forms
from django.shortcuts import get_object_or_404

from coldfront.core.project.models import (Project, ProjectReview,
                                           ProjectUserRoleChoice)
from coldfront.core.utils.common import import_from_settings

EMAIL_DIRECTOR_PENDING_PROJECT_REVIEW_EMAIL = import_from_settings(
    'EMAIL_DIRECTOR_PENDING_PROJECT_REVIEW_EMAIL')
EMAIL_ADMIN_LIST = import_from_settings('EMAIL_ADMIN_LIST', [])
EMAIL_DIRECTOR_EMAIL_ADDRESS = import_from_settings(
    'EMAIL_DIRECTOR_EMAIL_ADDRESS', '')


class ProjectSearchForm(forms.Form):
    """ Search form for the Project list page.
    """
    LAST_NAME = 'Last Name'
    USERNAME = '******'
    FIELD_OF_SCIENCE = 'Field of Science'

    last_name = forms.CharField(label=LAST_NAME,
                                max_length=100,
                                required=False)
    username = forms.CharField(label=USERNAME, max_length=100, required=False)
    field_of_science = forms.CharField(label=FIELD_OF_SCIENCE,
                                       max_length=100,
                                       required=False)
    show_all_projects = forms.BooleanField(initial=False, required=False)
Esempio n. 19
0
from django import forms
from django.shortcuts import get_object_or_404

from coldfront.core.allocation.models import (Allocation, AllocationAccount,
                                              AllocationAttributeType,
                                              AllocationStatusChoice)
from coldfront.core.allocation.utils import get_user_resources
from coldfront.core.project.models import Project
from coldfront.core.resource.models import Resource, ResourceType
from coldfront.core.utils.common import import_from_settings

ALLOCATION_ACCOUNT_ENABLED = import_from_settings(
    'ALLOCATION_ACCOUNT_ENABLED', False)


class AllocationForm(forms.Form):
    resource = forms.ModelChoiceField(queryset=None, empty_label=None)
    justification = forms.CharField(widget=forms.Textarea)
    quantity = forms.IntegerField(required=True)
    users = forms.MultipleChoiceField(
        widget=forms.CheckboxSelectMultiple, required=False)
    allocation_account = forms.ChoiceField(required=False)

    def __init__(self, request_user, project_pk,  *args, **kwargs):
        super().__init__(*args, **kwargs)
        project_obj = get_object_or_404(Project, pk=project_pk)
        self.fields['resource'].queryset = get_user_resources(request_user)
        self.fields['quantity'].initial = 1
        user_query_set = project_obj.projectuser_set.select_related('user').filter(
            status__name__in=['Active', ])
        user_query_set = user_query_set.exclude(user=project_obj.pi)
Esempio n. 20
0
import logging
import shlex
import subprocess
import csv
from io import StringIO

from coldfront.core.utils.common import import_from_settings

SLURM_CLUSTER_ATTRIBUTE_NAME = import_from_settings(
    'SLURM_CLUSTER_ATTRIBUTE_NAME', 'slurm_cluster')
SLURM_ACCOUNT_ATTRIBUTE_NAME = import_from_settings(
    'SLURM_ACCOUNT_ATTRIBUTE_NAME', 'slurm_account_name')
SLURM_SPECS_ATTRIBUTE_NAME = import_from_settings('SLURM_SPECS_ATTRIBUTE_NAME',
                                                  'slurm_specs')
SLURM_USER_SPECS_ATTRIBUTE_NAME = import_from_settings(
    'SLURM_USER_SPECS_ATTRIBUTE_NAME', 'slurm_user_specs')
SLURM_SACCTMGR_PATH = import_from_settings('SLURM_SACCTMGR_PATH',
                                           '/usr/bin/sacctmgr')
SLURM_CMD_REMOVE_USER = SLURM_SACCTMGR_PATH + ' -Q -i delete user where name={} cluster={} account={}'
SLURM_CMD_REMOVE_ACCOUNT = SLURM_SACCTMGR_PATH + ' -Q -i delete account where name={} cluster={}'
SLURM_CMD_ADD_ACCOUNT = SLURM_SACCTMGR_PATH + ' -Q -i create account name={} cluster={}'
SLURM_CMD_ADD_USER = SLURM_SACCTMGR_PATH + ' -Q -i create user name={} cluster={} account={}'
SLURM_CMD_CHECK_ASSOCIATION = SLURM_SACCTMGR_PATH + ' list associations User={} Cluster={} Account={} Format=Cluster,Account,User,QOS -P'
SLURM_CMD_BLOCK_ACCOUNT = SLURM_SACCTMGR_PATH + ' -Q -i modify account {} where Cluster={} set GrpSubmitJobs=0'
SLURM_CMD_DUMP_CLUSTER = SLURM_SACCTMGR_PATH + ' dump {} file={}'

logger = logging.getLogger(__name__)


class SlurmError(Exception):
    pass
Esempio n. 21
0
from django import forms
from django.forms import ModelForm
from django.shortcuts import get_object_or_404

from coldfront.core.grant.models import Grant
from coldfront.core.utils.common import import_from_settings

CENTER_NAME = import_from_settings('CENTER_NAME')


class GrantForm(ModelForm):
    class Meta:
        model = Grant
        exclude = [
            'project',
        ]
        labels = {
            'percent_credit': 'Percent credit to {}'.format(CENTER_NAME),
            'direct_funding': 'Direct funding to {}'.format(CENTER_NAME)
        }
        help_texts = {
            'percent_credit':
            'Percent credit as entered in the sponsored projects form for grant submission as financial credit to the department/unit in the credit distribution section',
            'direct_funding':
            'Funds budgeted specifically for {} services, hardware, software, and/or personnel'
            .format(CENTER_NAME)
        }


class GrantDeleteForm(forms.Form):
    title = forms.CharField(max_length=255, disabled=True)
Esempio n. 22
0
import logging

from django.conf import settings
from django.core.exceptions import ImproperlyConfigured

from coldfront.core.subscription.models import (Subscription,
                                                SubscriptionAttribute,
                                                SubscriptionStatusChoice)
from coldfront.core.utils.common import get_domain_url, import_from_settings
from coldfront.core.utils.mail import send_email_template

# Get an instance of a logger
logger = logging.getLogger(__name__)


CENTER_NAME = import_from_settings('CENTER_NAME')
CENTER_BASE_URL = import_from_settings('CENTER_BASE_URL')
CENTER_PROJECT_RENEWAL_HELP_URL = import_from_settings(
    'CENTER_PROJECT_RENEWAL_HELP_URL')
EMAIL_SENDER = import_from_settings('EMAIL_SENDER')
EMAIL_OPT_OUT_INSTRUCTION_URL = import_from_settings(
    'EMAIL_OPT_OUT_INSTRUCTION_URL')
EMAIL_SIGNATURE = import_from_settings('EMAIL_SIGNATURE')
EMAIL_SUBSCRIPTION_EXPIRING_NOTIFICATION_DAYS = import_from_settings(
    'EMAIL_SUBSCRIPTION_EXPIRING_NOTIFICATION_DAYS', [7, ])


def update_statuses():

    expired_status_choice = SubscriptionStatusChoice.objects.get(
        name='Expired')
Esempio n. 23
0
import logging
import requests
import json
import xml.etree.ElementTree as ET

from coldfront.core.utils.common import import_from_settings

XDMOD_CLOUD_PROJECT_ATTRIBUTE_NAME = import_from_settings(
    'XDMOD_CLOUD_PROJECT_ATTRIBUTE_NAME', 'Cloud Account Name')
XDMOD_CLOUD_CORE_TIME_ATTRIBUTE_NAME = import_from_settings(
    'XDMOD_CLOUD_CORE_TIME_ATTRIBUTE_NAME', 'Core Usage (Hours)')
XDMOD_ACCOUNT_ATTRIBUTE_NAME = import_from_settings(
    'XDMOD_ACCOUNT_ATTRIBUTE_NAME', 'slurm_account_name')
XDMOD_RESOURCE_ATTRIBUTE_NAME = import_from_settings(
    'XDMOD_RESOURCE_ATTRIBUTE_NAME', 'xdmod_resource')
XDMOD_CPU_HOURS_ATTRIBUTE_NAME = import_from_settings(
    'XDMOD_CPU_HOURS_ATTRIBUTE_NAME', 'Core Usage (Hours)')
XDMOD_API_URL = import_from_settings('XDMOD_API_URL')

_ENDPOINT_CORE_HOURS = '/controllers/user_interface.php'

_DEFAULT_PARAMS = {
    'aggregation_unit': 'Auto',
    'display_type': 'bar',
    'format': 'xml',
    'operation': 'get_data',
    'public_user': '******',
    'query_group': 'tg_usage',
}

logger = logging.getLogger(__name__)
Esempio n. 24
0
from django.conf import settings
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.db import models
from django.utils.html import mark_safe
from django.utils.module_loading import import_string

from coldfront.core.project.models import Project
from coldfront.core.resource.models import Resource
from coldfront.core.utils.common import import_from_settings
from model_utils.models import TimeStampedModel
from simple_history.models import HistoricalRecords

logger = logging.getLogger(__name__)

SUBSCRIPTION_FUNCS_ON_EXPIRE = import_from_settings(
    'SUBSCRIPTION_FUNCS_ON_EXPIRE', [])
SLURM_ACCOUNT_ATTRIBUTE_NAME = import_from_settings(
    'SLURM_ACCOUNT_ATTRIBUTE_NAME', 'slurm_account_name')


class SubscriptionStatusChoice(TimeStampedModel):
    name = models.CharField(max_length=64)

    def __str__(self):
        return self.name

    class Meta:
        ordering = [
            'name',
        ]
Esempio n. 25
0
                                          ProjectRemoveUserForm,
                                          ProjectReviewEmailForm,
                                          ProjectReviewForm, ProjectSearchForm,
                                          ProjectUserUpdateForm)
from coldfront.core.project.models import (Project, ProjectReview,
                                           ProjectReviewStatusChoice,
                                           ProjectStatusChoice, ProjectUser,
                                           ProjectUserRoleChoice,
                                           ProjectUserStatusChoice)
from coldfront.core.publication.models import Publication
from coldfront.core.user.forms import UserSearchForm
from coldfront.core.user.utils import CombinedUserSearch
from coldfront.core.utils.common import get_domain_url, import_from_settings
from coldfront.core.utils.mail import send_email, send_email_template

EMAIL_ENABLED = import_from_settings('EMAIL_ENABLED', False)
ALLOCATION_ENABLE_ALLOCATION_RENEWAL = import_from_settings(
    'ALLOCATION_ENABLE_ALLOCATION_RENEWAL', True)
ALLOCATION_DEFAULT_ALLOCATION_LENGTH = import_from_settings(
    'ALLOCATION_DEFAULT_ALLOCATION_LENGTH', 365)

if EMAIL_ENABLED:
    EMAIL_DIRECTOR_EMAIL_ADDRESS = import_from_settings(
        'EMAIL_DIRECTOR_EMAIL_ADDRESS')
    EMAIL_SENDER = import_from_settings('EMAIL_SENDER')


class ProjectDetailView(LoginRequiredMixin, UserPassesTestMixin, DetailView):
    model = Project
    template_name = 'project/project_detail.html'
    context_object_name = 'project'
Esempio n. 26
0
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.db import models
from django.utils.html import mark_safe
from django.utils.module_loading import import_string
from model_utils.models import TimeStampedModel
from simple_history.models import HistoricalRecords

from coldfront.core.project.models import Project
from coldfront.core.resource.models import Resource
from coldfront.core.utils.common import import_from_settings
import coldfront.core.attribute_expansion as attribute_expansion

logger = logging.getLogger(__name__)

ALLOCATION_ATTRIBUTE_VIEW_LIST = import_from_settings(
    'ALLOCATION_ATTRIBUTE_VIEW_LIST', [])
ALLOCATION_FUNCS_ON_EXPIRE = import_from_settings('ALLOCATION_FUNCS_ON_EXPIRE',
                                                  [])


class AllocationStatusChoice(TimeStampedModel):
    name = models.CharField(max_length=64)

    def __str__(self):
        return self.name

    class Meta:
        ordering = [
            'name',
        ]