# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2017-12-05 00:29
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('dashboard', '0008_auto_20171205_0028'),
    ]

    operations = [
        migrations.AlterField(
            model_name='request',
            name='disk_usage_range_per_job',
            field=models.BigIntegerField(blank=True, null=True),
        ),
        migrations.AlterField(
            model_name='request',
            name='max_memory_per_cpu',
            field=models.BigIntegerField(blank=True, null=True),
        ),
        migrations.AlterField(
            model_name='request',
            name='num_cpus_per_job',
            field=models.BigIntegerField(blank=True, null=True),
        ),
        migrations.AlterField(
            model_name='request',
            name='typical_su_per_job',
            field=models.BigIntegerField(blank=True, null=True),
        ),
    ]
