Delete old_tests.py import schools.py
This commit is contained in:
		
							parent
							
								
									d72faeaed3
								
							
						
					
					
						commit
						dea0ef74e6
					
				
					 2 changed files with 0 additions and 219 deletions
				
			
		|  | @ -1,125 +0,0 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import datetime | ||||
| import os | ||||
| import random | ||||
| #import argparse | ||||
| from optparse import make_option | ||||
| 
 | ||||
| 
 | ||||
| from django.core.management.base import BaseCommand | ||||
| from django.core.management import call_command | ||||
| from django.conf import settings | ||||
| from django.db import transaction | ||||
| import django.contrib.auth | ||||
| from django.utils.encoding import force_unicode | ||||
| 
 | ||||
| from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni | ||||
| from seminar.testutils import create_test_data | ||||
| from seminar import ovvpfile | ||||
| 
 | ||||
| User = django.contrib.auth.get_user_model() | ||||
| 
 | ||||
| 
 | ||||
| class Command(BaseCommand): | ||||
|     help = "Import (add / notice changes) schools from a ovvp-format file (skoly.csv)" | ||||
| 
 | ||||
|     option_list = BaseCommand.option_list + ( | ||||
|             make_option('-n', '--dry_run', dest='dry_run', default=False, | ||||
|                         action='store_true', help="No changes to DB."), | ||||
|             ) | ||||
| #    def add_arguments(self, parser): | ||||
| #        parser.add_argument('file', nargs='?', type=argparse.FileType('r', encoding='utf8'), default=sys.stdin) | ||||
| #        parser.add_argument('-n', '--dry_run', dest='dry_run', default=False, | ||||
| #                            action='store_true', type=bool, help="No changes to DB.") | ||||
| 
 | ||||
|     def school_diffs(self, ovvpskola, dbskola): | ||||
|         def compare(ovvpcol, dbcol, t=unicode): | ||||
|             v1 = t(dbskola.__getattribute__(dbcol)) | ||||
|             v2 = ovvpskola[ovvpcol] | ||||
|             if unicode(v1) != unicode(v2): | ||||
|                 return "%s: '%s'->'%s', " % (ovvpcol, v1, v2, ) | ||||
|             return "" | ||||
| 
 | ||||
|         diff = "" | ||||
|         diff += compare('name','nazev') | ||||
|         diff += compare('street','ulice') | ||||
|         diff += compare('town','mesto') | ||||
|         diff += compare('postcode','psc') | ||||
|         return diff | ||||
| 
 | ||||
|     def handle(self, *args, **options): | ||||
|         assert len(args) == 1 | ||||
| 
 | ||||
|         filename = args[0] | ||||
|         self.stdout.write( | ||||
|             'Parsing OVVP/OPMK-format file \'%s\' ...' % (filename, ) | ||||
|         ) | ||||
|         with open(filename, "r") as f: | ||||
|             o = ovvpfile.parse(f) | ||||
| 
 | ||||
|         assert o.headers['version'] == '1' | ||||
|         self.stdout.write('Read %d schools with columns: %s' % (len(o.rows), o.columns, )) | ||||
|         self.stdout.write('Export created: %s' % (o.headers.get('date', 'N/A'), )) | ||||
|         assert 'id-aesop' in o.columns | ||||
| 
 | ||||
|         same = 0 | ||||
|         modified = 0 | ||||
|         new = 0 | ||||
| 
 | ||||
|         with transaction.atomic(): | ||||
|             for skola in o.rows: | ||||
|                 aesop_id = 'aesop:%s' % (skola['id-aesop'], ) | ||||
|                 found = Skola.objects.filter(aesop_id=aesop_id) | ||||
|                 assert len(found) <= 1 | ||||
| 
 | ||||
|                 if found: | ||||
|                     fs = found[0] | ||||
|                     diff = self.school_diffs(skola, fs) | ||||
|                     if diff: | ||||
|                         modified += 1 | ||||
|                         self.stdout.write(u"M %11s %s" % (aesop_id, diff, )) # TODO | ||||
|                     else: | ||||
|                         same += 1 | ||||
|                         if int(skola['is-SS']) > int(fs.je_ss): | ||||
|                             fs.je_ss = True | ||||
|                             fs.save() | ||||
| 
 | ||||
|                         if int(skola['is-ZS']) > int(fs.je_zs): | ||||
|                             fs.je_zs = True | ||||
|                             fs.save() | ||||
| 
 | ||||
|                 else: | ||||
|                     new += 1 | ||||
|                     # Name duplicates? | ||||
|                     by_name = Skola.objects.filter(nazev=skola['name'], mesto=skola['town'], ulice=skola['street']) | ||||
|                     if len(by_name) > 0: | ||||
|                         self.stdout.write(u"W Same [name, street, town] for %s and %s (%s, %s, %s)" % ( | ||||
|                                 by_name[0].aesop_id, aesop_id, skola['name'], skola['street'], skola['town'], )) | ||||
|                     else: | ||||
|                         self.stdout.write(u"+ %11s %s, %s, %s" % (aesop_id, skola['name'], skola['town'], skola['country'], )) | ||||
|                         if not options['dry_run']: | ||||
|                             newskola = Skola.objects.create( | ||||
|                                 aesop_id=aesop_id, nazev=skola['name'], kratky_nazev=skola['name'], izo=skola.get('id-izo', ''), | ||||
|                                 ulice=skola['street'], mesto=skola['town'], psc=skola['postcode'], stat=skola['country'], | ||||
|                                 je_zs=int(skola['is-ZS']), je_ss=int(skola['is-SS']), | ||||
|                                 ) | ||||
| 
 | ||||
|         self.stdout.write("Result: %d same, %d different, %d new schools" % (same, modified, new, )) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -1,94 +0,0 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import datetime | ||||
| import random | ||||
| import django.contrib.auth | ||||
| from unittest import TestCase | ||||
| from django.test import Client | ||||
| from django.core.urlresolvers import reverse, resolve | ||||
| from django.core.management import call_command | ||||
| 
 | ||||
| from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Soustredeni, Nastaveni | ||||
| from seminar.testutils import create_test_data | ||||
| from seminar import ovvpfile | ||||
| from seminar import utils | ||||
| 
 | ||||
| class SeminarBasicTests(TestCase): | ||||
| 	def setUp(self): | ||||
| 		create_test_data(size=2) | ||||
| 		self.client = Client() | ||||
| 
 | ||||
| 	def tearDown(self): | ||||
| 		call_command('flush', noinput=True, verbosity=0, interactive=False) | ||||
| 		self.cleint = None | ||||
| 
 | ||||
| 	def test_rocniky(self): | ||||
| 		r19 = Rocnik.objects.get(rocnik=21) | ||||
| 		self.assertEqual(r19.roman(), 'XXI') | ||||
| 
 | ||||
| 	def test_render_cislo_e2e(self): | ||||
| 		cs = Cislo.objects.all() | ||||
| 		for c in cs[:4]: | ||||
| 			url = c.verejne_url() | ||||
| 			r = self.client.get(url) | ||||
| 			assert r.status_code == 200 | ||||
| 			assert len(r.content) >= 100 | ||||
| 			# TODO: Validate cntent as HTML | ||||
| 
 | ||||
| 	def test_render_problem_e2e(self): | ||||
| 		ps = Problem.objects.all() | ||||
| 		for p in ps[:4]: | ||||
| 			url = p.verejne_url() | ||||
| 			r = self.client.get(url) | ||||
| 			assert r.status_code == 200 | ||||
| 			assert len(r.content) >= 100 | ||||
| 			# TODO: Validate cntent as HTML | ||||
| 
 | ||||
| 	def test_export_e2e(self): | ||||
| 		i_url = '/aesop-export/index.csv' | ||||
| 		i_r = self.client.get(i_url) | ||||
| 		assert i_r.status_code == 200 | ||||
| 		ls = i_r.content.strip().split('\n') | ||||
| 
 | ||||
| 		for u in [ls[0], ls[-1]]: | ||||
| 			ex_r = self.client.get('/aesop-export/' + u) | ||||
| 			assert ex_r.status_code == 200 | ||||
| 			assert len(ex_r.content) >= 100 | ||||
| 			o = ovvpfile.parse(ex_r.content) | ||||
| 			assert o.headers['version'] == '1' | ||||
| 
 | ||||
| 	def test_admin_url(self): | ||||
| 		for m in [Skola, Resitel, Rocnik, Cislo, Problem, Reseni, Nastaveni]: | ||||
| 			o = m.objects.first() | ||||
| 			url = o.admin_url() | ||||
| 			assert url | ||||
| 			view = resolve(url) | ||||
| 			assert view | ||||
| 
 | ||||
| 	def test_verejne_url(self): | ||||
| 		for m in [Rocnik, Cislo, Problem]: | ||||
| 			p = Problem.objects.first() | ||||
| 			url = p.verejne_url() | ||||
| 			assert url | ||||
| 			view = resolve(url) | ||||
| 			assert view | ||||
| 
 | ||||
| 	def test_ovvpfile(self): | ||||
| 		filetext = "H1\ta\nH2\tb\tc\n\nx\ty\tz\n0\t1\t2\n3\t4\t5\n" | ||||
| 		o = ovvpfile.parse(filetext) | ||||
| 		assert len(o.headers) == 2 | ||||
| 		assert o.headers['H2'] == 'b\tc' | ||||
| 
 | ||||
| 		assert o.columns == ['x','y','z'] | ||||
| 		assert len(o.rows) == 2 | ||||
| 		assert o.rows[0]['z'] == '2' | ||||
| 
 | ||||
| 		t = o.to_string() | ||||
| 		assert t == filetext | ||||
| 
 | ||||
| 	def test_roman(self): | ||||
| 		for i in [0, 1, 23, 2015, 1999, 42, 4, 400, 78, 4321, 8765, 999]: | ||||
| 			r = utils.roman(i) | ||||
| 			fr = utils.from_roman(r) | ||||
| 			assert fr == i | ||||
| 
 | ||||
		Loading…
	
		Reference in a new issue