diff --git a/.flake8 b/.flake8 new file mode 100644 index 000000000..eea89370c --- /dev/null +++ b/.flake8 @@ -0,0 +1,3 @@ +[flake8] +exclude: venv,scripts +ignore: E501,F403 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 5a766ce06..7cb31e274 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,16 @@ -language: python -python: - - "2.7" -branches: - only: - - master -install: - - pip install -r codalab/requirements/dev_azure_nix.txt --use-mirrors -script: - - cd codalab - - python manage.py test - +language: python +python: + - "2.7" +branches: + only: + - master +install: + - "pip install -r codalab/requirements/dev_azure_nix.txt --use-mirrors" +# - "pip install -q flake8 pylint django-nose --use-mirrors" +before_script: +# - "flake8 --config=.flake8 ." +# - "pylint --rcfile=pylint.rc tests" +# - "pylint --rcfile=pylint.rc setup.py" +script: + - "cd codalab" + - "python manage.py test" diff --git a/codalab/apps/api/models.py b/codalab/apps/api/models.py index 71a836239..6b2021999 100644 --- a/codalab/apps/api/models.py +++ b/codalab/apps/api/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/codalab/apps/api/tests.py b/codalab/apps/api/tests.py index 85a735674..c7a33bb38 100644 --- a/codalab/apps/api/tests.py +++ b/codalab/apps/api/tests.py @@ -2,13 +2,17 @@ """ test for competition creation via api """ -import sys, os.path, os, random, datetime +import sys +import os.path +import os +import datetime from django.utils import timezone -from django.core import management # This is a really, really long way around saying that if the script is in -# codalab\scripts\users.py, we need to add, ../../../codalab to the sys.path to find the settings -root_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "codalab") +# codalab\scripts\users.py, we need to add, ../../../codalab to the +# sys.path to find the settings +root_dir = os.path.join(os.path.dirname( + os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "codalab") sys.path.append(root_dir) # Set things for django configurations @@ -19,11 +23,8 @@ from configurations import importer importer.install() -from django.core.files import File from django.contrib.auth import get_user_model -from django.contrib.contenttypes.models import ContentType from django.test import TestCase -from django.core import management from apps.web.models import * @@ -34,7 +35,9 @@ current_time = timezone.now() start_date = current_time - datetime.timedelta(days=1) + class CompetitionsPhase(TestCase): + def setUp(self): # Get a user to be the creator self.guest1 = User.objects.create(username="apiguest1") @@ -42,9 +45,10 @@ def setUp(self): def create_base_competition(self): title = "Single-phase competition example" description = "This is an example of a single-phase competition." - competition,created = Competition.objects.get_or_create(title=title, creator=self.guest1, modified_by=self.guest1, description=description) - return competition; - + competition, created = Competition.objects.get_or_create( + title=title, creator=self.guest1, modified_by=self.guest1, description=description) + return competition + # Create a 3 phase test def test_three_phase_existance(self): competition = self.create_base_competition() @@ -53,12 +57,13 @@ def test_three_phase_existance(self): day_delta = datetime.timedelta(days=30) phases = [] for phase in [1, 2, 3]: - phase_start = start_date + (day_delta * (phase-2)) - p, created = CompetitionPhase.objects.get_or_create(competition=competition, phasenumber=phase, label="Phase %d" % phase, start_date=phase_start, max_submissions=4) - phases.append(p); - + phase_start = start_date + (day_delta * (phase - 2)) + p, created = CompetitionPhase.objects.get_or_create( + competition=competition, phasenumber=phase, label="Phase %d" % phase, start_date=phase_start, max_submissions=4) + phases.append(p) + self.assertEqual(len(phases), 3) - + # Create three phases, the middle phase should be active def test_three_phase_middle_active(self): competition = self.create_base_competition() @@ -67,32 +72,34 @@ def test_three_phase_middle_active(self): day_delta = datetime.timedelta(days=30) phases = [] for phase in [1, 2, 3]: - phase_start = start_date + (day_delta * (phase-2)) - p, created = CompetitionPhase.objects.get_or_create(competition=competition, phasenumber=phase, label="Phase %d" % phase, - start_date=phase_start, max_submissions=4) - phases.append(p); - + phase_start = start_date + (day_delta * (phase - 2)) + p, created = CompetitionPhase.objects.get_or_create( + competition=competition, phasenumber=phase, label="Phase %d" % phase, + start_date=phase_start, max_submissions=4) + phases.append(p) + self.assertEqual(phases[0].is_active, False) self.assertEqual(phases[1].is_active, True) self.assertEqual(phases[2].is_active, False) - + # Create two phases, the last phase should be active def test_two_phase_last_active(self): competition = self.create_base_competition() # Phases for the competition - day_delta = datetime.timedelta(days = 30) + day_delta = datetime.timedelta(days=30) phases = [] - for phase in [1, 2]: - phase_start = start_date + (day_delta * (phase-2)) - p, created = CompetitionPhase.objects.get_or_create(competition=competition, phasenumber=phase, label="Phase %d" % phase, - start_date=phase_start, max_submissions=4) - phases.append(p); + for phase in [1, 2]: + phase_start = start_date + (day_delta * (phase - 2)) + p, created = CompetitionPhase.objects.get_or_create( + competition=competition, phasenumber=phase, label="Phase %d" % phase, + start_date=phase_start, max_submissions=4) + phases.append(p) print phase_start - self.assertEqual(phases[0].is_active, False); - self.assertEqual(phases[1].is_active, True); - + self.assertEqual(phases[0].is_active, False) + self.assertEqual(phases[1].is_active, True) + # Publish / Unpublish Test # Create a competition # Get the list of competitions (The new one should not be in it, and the new one should have the published flag set to false) diff --git a/codalab/apps/authenz/models.py b/codalab/apps/authenz/models.py index 6f3b424a9..62e958c3e 100644 --- a/codalab/apps/authenz/models.py +++ b/codalab/apps/authenz/models.py @@ -1,11 +1,6 @@ -import re -from django.core import validators -from django.core.mail import send_mail -from django.db import models from django.contrib.auth import models as auth_models -from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ + class ClUser(auth_models.AbstractUser): pass diff --git a/codalab/apps/authenz/tests.py b/codalab/apps/authenz/tests.py index 79dd6e322..3fc0d15d8 100644 --- a/codalab/apps/authenz/tests.py +++ b/codalab/apps/authenz/tests.py @@ -9,6 +9,7 @@ class SimpleTest(TestCase): + def test_basic_addition(self): """ Tests that 1 + 1 always equals 2 (authenz). diff --git a/codalab/apps/web/forms.py b/codalab/apps/web/forms.py index 7d45237c5..8bd21197b 100644 --- a/codalab/apps/web/forms.py +++ b/codalab/apps/web/forms.py @@ -8,12 +8,12 @@ class CompetitionForm(forms.ModelForm): class Meta: model = models.Competition - fields = ['title', 'description', 'image', 'has_registration', 'end_date', 'published'] + fields = ('title', 'description', 'image', 'has_registration', 'end_date', 'published') class CompetitionPhaseForm(forms.ModelForm): class Meta: model = models.CompetitionPhase - fields = ['phasenumber', 'label', 'start_date', 'max_submissions', 'scoring_program', 'reference_data'] + fields = ('phasenumber', 'label', 'start_date', 'max_submissions', 'scoring_program', 'reference_data') class CompetitionDatasetForm(forms.ModelForm): class Meta: diff --git a/codalab/apps/web/management/commands/add_participant.py b/codalab/apps/web/management/commands/add_participant.py index 77297d9e3..f85167066 100644 --- a/codalab/apps/web/management/commands/add_participant.py +++ b/codalab/apps/web/management/commands/add_participant.py @@ -1,9 +1,10 @@ -from django.core.management.base import BaseCommand, CommandError -from apps.web.models import Competition,CompetitionParticipant,ParticipantStatus +from django.core.management.base import BaseCommand +from apps.web.models import Competition, CompetitionParticipant, ParticipantStatus from django.contrib.auth import get_user_model -User = get_user_model() +User = get_user_model() from optparse import make_option + class Command(BaseCommand): help = "Adds a particpant to a competition. If the user does not exist, it will create one." @@ -16,13 +17,15 @@ class Command(BaseCommand): default=None, help="ID of the competition"), make_option('--status', - choices=(ParticipantStatus.UNKNOWN,ParticipantStatus.PENDING,ParticipantStatus.APPROVED,ParticipantStatus.DENIED), + choices=( + ParticipantStatus.UNKNOWN, ParticipantStatus.PENDING, + ParticipantStatus.APPROVED, ParticipantStatus.DENIED), dest='status', default=ParticipantStatus.PENDING, help="The initial status of the created participant" ) - ) - + ) + def handle(self, *args, **options): competition_id = options['competition'] competition = None @@ -30,14 +33,15 @@ def handle(self, *args, **options): print " ... Email Required ... " exit(1) - user,cr = User.objects.get_or_create(email=options['email'], defaults={'username': options['email']}) + user, cr = User.objects.get_or_create( + email=options['email'], defaults={'username': options['email']}) if cr: user.set_password('testing') user.save() print "\nNew User Created. Password: testing\n" while not competition: if competition_id: - try: + try: competition = Competition.objects.get(pk=competition_id) competition_id = competition.pk break @@ -50,7 +54,7 @@ def handle(self, *args, **options): print " ... There are no competitions ..." exit(1) for c in clist: - print " %d) %s" % (c.pk,c.title) + print " %d) %s" % (c.pk, c.title) try: competition_id = int(raw_input("\n Enter number --> ")) except ValueError: @@ -58,13 +62,8 @@ def handle(self, *args, **options): competition_id = None continue pstatus = ParticipantStatus.objects.get(codename=options['status']) - part,cr = CompetitionParticipant.objects.get_or_create(user=user, - competition=competition, - defaults={'status':pstatus}) + part, cr = CompetitionParticipant.objects.get_or_create(user=user, + competition=competition, + defaults={'status': pstatus}) if not cr: print " ... Participant already exists ... " - - - - - diff --git a/codalab/apps/web/management/commands/add_submission.py b/codalab/apps/web/management/commands/add_submission.py index 5e65cc185..c9a8952d4 100644 --- a/codalab/apps/web/management/commands/add_submission.py +++ b/codalab/apps/web/management/commands/add_submission.py @@ -1,11 +1,12 @@ -from django.core.management.base import BaseCommand, CommandError -from apps.web.models import Competition,CompetitionPhase,CompetitionParticipant,CompetitionSubmission +from django.core.management.base import BaseCommand +from apps.web.models import Competition, CompetitionPhase, CompetitionParticipant, CompetitionSubmission from django.contrib.auth import get_user_model -User = get_user_model() +User = get_user_model() from optparse import make_option from django.core.files.base import File + class Command(BaseCommand): help = "Creates a submission for a participant" @@ -26,8 +27,8 @@ class Command(BaseCommand): default=None, help="Path to the submission file"), - ) - + ) + def handle(self, *args, **options): competition_id = options['competition'] phase_id = options['phase'] @@ -44,14 +45,15 @@ def handle(self, *args, **options): user = User.objects.get(email=options['email']) while not competition and not phase: if competition_id and phase_id: - try: - phase = CompetitionPhase.objects.get(pk=phase_id, competition__pk=competition_id) + try: + phase = CompetitionPhase.objects.get( + pk=phase_id, competition__pk=competition_id) break except Competition.DoesNotExist: pass else: print "Competition/Phase not specified or not valid:\n" - + clist = CompetitionPhase.objects.order_by('competition__pk').all() if not clist: print " ... There are no competitions ..." @@ -59,11 +61,11 @@ def handle(self, *args, **options): sel = [] i = 0 for c in clist: - sel.append((c.competition,c)) + sel.append((c.competition, c)) i = i + 1 - print "%d) %s %s" % (i,c.competition,c) + print "%d) %s %s" % (i, c.competition, c) try: - inp = int(raw_input("\n Enter number --> ")) + inp = int(raw_input("\n Enter number --> ")) idx = inp - 1 competition = sel[idx][0] phase = sel[idx][1] @@ -76,12 +78,8 @@ def handle(self, *args, **options): part = CompetitionParticipant.objects.get(user=user, competition=competition - ) - submission_file = File(open(options['submission'],'rb')) - s = CompetitionSubmission(participant=part, phase=phase, file=submission_file) + ) + submission_file = File(open(options['submission'], 'rb')) + s = CompetitionSubmission( + participant=part, phase=phase, file=submission_file) s.save() - - - - - diff --git a/codalab/apps/web/management/commands/create_competition.py b/codalab/apps/web/management/commands/create_competition.py index 5576054a7..887ae2efc 100644 --- a/codalab/apps/web/management/commands/create_competition.py +++ b/codalab/apps/web/management/commands/create_competition.py @@ -1,17 +1,14 @@ -from django.core.management.base import BaseCommand, CommandError -from django.utils.text import slugify +from django.core.management.base import BaseCommand from django.utils.timezone import utc from django.core.files import File -from apps.web.models import Competition,CompetitionPhase -from django.conf import settings +from apps.web.models import Competition, CompetitionPhase from django.contrib.auth import get_user_model -User = get_user_model() +User = get_user_model() from optparse import make_option -import random import datetime import os -import pytz + class Command(BaseCommand): help = "Creates competition." @@ -22,7 +19,7 @@ class Command(BaseCommand): help="Name ofthe competition"), make_option('--description', dest='description', - help="Description of the competition"), + help="Description of the competition"), make_option('--creator', dest='creator', help="Email address of creator"), @@ -31,7 +28,7 @@ class Command(BaseCommand): help="The file of the logo for the competition"), make_option('--force_user_create', dest='create_user', - action='store_true',default=False, + action='store_true', default=False, help="Create user if non existant" ), make_option('--numphases', @@ -39,19 +36,19 @@ class Command(BaseCommand): default=0, type="int", help="Number of phases to create" - ), + ), make_option('--phasedates', dest='phasedates', type='string', default=None, help="Comma-seprated list of the startdates of the phases: YYYY-MM-DD,YYYY-MM-DD" ) - ) + ) def handle(self, *args, **options): print " ----- " print "Creating competition" - + creator_email = options['creator'] title = options['title'] description = options['description'] @@ -59,15 +56,15 @@ def handle(self, *args, **options): phasedates = [] try: for d in options['phasedates'].split(','): - phasedates.append(datetime.datetime.strptime(d, "%Y-%m-%d").replace(tzinfo=utc)) + phasedates.append( + datetime.datetime.strptime(d, "%Y-%m-%d").replace(tzinfo=utc)) if len(phasedates) != numphases: raise Exception("Not enough dates for phases") - + except AttributeError as e: if numphases > 0: raise e - pass - + if not creator_email or not title or not description: print "Need a title, description and email of creator" exit(1) @@ -85,7 +82,7 @@ def handle(self, *args, **options): raise e if options['logo']: try: - f = open(os.path.expanduser(options['logo']),'rb') + f = open(os.path.expanduser(options['logo']), 'rb') except IOError as e: raise e else: @@ -95,16 +92,14 @@ def handle(self, *args, **options): modified_by=creator, description=description) if f: - competition.image=File(f) + competition.image = File(f) competition.save() - for n in range(0,numphases): - p = CompetitionPhase.objects.create(competition=competition, - phasenumber=n, - label = "Phase #%d" % n, - start_date=phasedates[n]) + for n in range(0, numphases): + CompetitionPhase.objects.create(competition=competition, + phasenumber=n, + label="Phase #%d" % n, + start_date=phasedates[n]) print "Created %d phases" % numphases print " ----- " - print "Competition, %s, created. ID: %d" % (competition.title,competition.pk) + print "Competition, %s, created. ID: %d" % (competition.title, competition.pk) print " ----- " - - diff --git a/codalab/apps/web/management/commands/random_competitions.py b/codalab/apps/web/management/commands/random_competitions.py index a04d139c3..598fc2c77 100644 --- a/codalab/apps/web/management/commands/random_competitions.py +++ b/codalab/apps/web/management/commands/random_competitions.py @@ -1,15 +1,15 @@ -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from django.utils.text import slugify from django.contrib.auth.models import User -from apps.web.models import Competition,CompetitionPhase,CompetitionDataset,CompetitionParticipant,ExternalFile,ExternalFileType,ParticipantStatus +from apps.web.models import Competition, CompetitionPhase, CompetitionDataset, CompetitionParticipant, ExternalFile, ExternalFileType, ParticipantStatus from optparse import make_option -import random import datetime import pytz + class Command(BaseCommand): help = "Creates test competition." @@ -17,83 +17,90 @@ class Command(BaseCommand): make_option('--name', dest='name', help="Name ofthe competition"), - make_option('--email', + make_option('--email', dest='email', help="Email address of user. Will create if doesnt exist"), - make_option('--number', + make_option('--number', dest='number', - type = 'int', + type='int', help="Number of competitions to create"), - make_option('--participant', + make_option('--participant', dest='participant', help="Participant name prefix. participant2@test.com"), - make_option('--participant_count', + make_option('--participant_count', dest='participant_count', type='int', default=2, help="Number of participants."), make_option('--participant_status', - choices=(ParticipantStatus.UNKNOWN,ParticipantStatus.PENDING,ParticipantStatus.APPROVED,ParticipantStatus.DENIED), + choices=( + ParticipantStatus.UNKNOWN, ParticipantStatus.PENDING, + ParticipantStatus.APPROVED, ParticipantStatus.DENIED), dest='participant_status', default=ParticipantStatus.PENDING, help="The initial status of the created participants" ) - ) - def handle(self,*args,**options): - for count in range(1,options['number']+1): - u,cr = User.objects.get_or_create(email=options['email'], - defaults={'username': options['email']} - ) + ) + + def handle(self, *args, **options): + for count in range(1, options['number'] + 1): + u, cr = User.objects.get_or_create(email=options['email'], + defaults={'username': + options['email']} + ) if cr: u.set_password('testing') u.save() print "Pasword for user is: testing" - competition_name = "%s %d" % (options['name'],count) + competition_name = "%s %d" % (options['name'], count) c = Competition.objects.create(title=competition_name, - description="This is the description for competition %s" % options['name'], - creator = u, - modified_by = u) - pstatus = ParticipantStatus.objects.get(codename=options['participant_status']) - for i in range(1,options['participant_count']+1): - pname = "%s%d" % (options['participant'],options['participant_count']) - - pu,cr = User.objects.get_or_create(username=pname, - email="%s@test.com" % pname) + description="This is the description for competition %s" % options[ + 'name'], + creator=u, + modified_by=u) + pstatus = ParticipantStatus.objects.get( + codename=options['participant_status']) + for i in range(1, options['participant_count'] + 1): + pname = "%s%d" % ( + options['participant'], options['participant_count']) + + pu, cr = User.objects.get_or_create(username=pname, + email="%s@test.com" % pname) if cr: pu.set_password('testing') pu.save() - - part,cr = CompetitionParticipant.objects.get_or_create(competition=c, - user=pu, - defaults={ - 'status': pstatus}) + + part, cr = CompetitionParticipant.objects.get_or_create( + competition=c, + user=pu, + defaults={ + 'status': pstatus}) if cr: - part.status=pstatus + part.status = pstatus part.save() - delta = datetime.timedelta(days = 0) + delta = datetime.timedelta(days=0) ftype = ExternalFileType.objects.get(codename='test') - for i in range(1,3): + for i in range(1, 3): - start_date = datetime.datetime.now( pytz.utc) + delta + start_date = datetime.datetime.now(pytz.utc) + delta f = ExternalFile.objects.create(type=ftype, - source_url = "http://test.com/test/%s" % slugify("%s%d" % (unicode(competition_name),i)) , - source_address_info = "SPECIFIC_INFO", - creator = u) + source_url="http://test.com/test/%s" % slugify("%s%d" % + (unicode(competition_name), i)), + source_address_info="SPECIFIC_INFO", + creator=u) d = CompetitionDataset.objects.create(competition=c, number=i, - datafile = f) - - p = CompetitionPhase.objects.create(competition=c, - phasenumber=i, - label="Phase %d" % i, - start_date=start_date, - max_submissions=4, - dataset = d) + datafile=f) - delta = datetime.timedelta(days = 10) + CompetitionPhase.objects.create(competition=c, + phasenumber=i, + label="Phase %d" % i, + start_date=start_date, + max_submissions=4, + dataset=d) - + delta = datetime.timedelta(days=10) diff --git a/codalab/apps/web/static/css/Main.css b/codalab/apps/web/static/css/Main.css index d6f2fad6e..a5ee76078 100644 --- a/codalab/apps/web/static/css/Main.css +++ b/codalab/apps/web/static/css/Main.css @@ -2343,7 +2343,7 @@ ul.leftNavigation li.active a{ height:18px; width:18px; display:inline-block; - margin-top:5px; + margin: 5px 0 5px 0; } .helpLinkIcon:hover { background: url('../img/helpicon.png') no-repeat center center; @@ -2489,10 +2489,14 @@ div.auto.section-container > section > .title a, .auto.section-container > .sect font-family: 'Segoe Light', 'Segoe UI', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 100; font-size: 1.3em; - padding: 1em 0 .3em 0; + padding: 0; cursor: default; display: inline-block; } + +#edit_competition .fieldWrapper { + margin-bottom: 5px; +} #edit_competition input, #edit_competition textarea, #edit_competition p { color: #666; font-size: 1em; diff --git a/codalab/apps/web/static/css/codalab.css b/codalab/apps/web/static/css/codalab.css index 82722cc0c..6c3fa22b9 100644 --- a/codalab/apps/web/static/css/codalab.css +++ b/codalab/apps/web/static/css/codalab.css @@ -1,4 +1,4 @@ -/* line 17, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 17, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -20,45 +20,45 @@ time, mark, audio, video { vertical-align: baseline; } -/* line 22, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } -/* line 103, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 103, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } @@ -7647,12 +7647,12 @@ a.th { max-width: 800px; } -/* line 10, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ +/* line 10, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ html, body { height: 100%; } -/* line 12, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ +/* line 12, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ #layout { clear: both; min-height: 100%; @@ -7660,12 +7660,12 @@ html, body { height: 100%; margin-bottom: -25px; } -/* line 18, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ +/* line 18, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ #layout #layout_footer { height: 25px; } -/* line 20, C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ +/* line 20, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss */ #footer { clear: both; position: relative; diff --git a/codalab/apps/web/static/css/screen.css b/codalab/apps/web/static/css/screen.css index 38d7107a2..5124fc3f4 100644 --- a/codalab/apps/web/static/css/screen.css +++ b/codalab/apps/web/static/css/screen.css @@ -2,7 +2,7 @@ * In this file you should write your main styles. (or centralize your imports) * Import this file using the following HTML or equivalent: * */ -/* line 17, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 17, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -24,45 +24,45 @@ time, mark, audio, video { vertical-align: baseline; } -/* line 22, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } -/* line 103, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 103, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../Ruby193/lib/ruby/gems/1.9.1/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } diff --git a/codalab/apps/web/static/js/Competition.js b/codalab/apps/web/static/js/Competition.js index 552f79d75..6fc58ed50 100644 --- a/codalab/apps/web/static/js/Competition.js +++ b/codalab/apps/web/static/js/Competition.js @@ -194,7 +194,6 @@ var Competition; console.log(data); if (data['status'] == "approved") { location.reload(); - console.log("Approved, figuing out how to update the div."); } else if (data['status'] == "pending") { sOut = "