From f5f4770247ae419aec16f33a12000a6dfd55fcbe Mon Sep 17 00:00:00 2001 From: root Date: Tue, 27 Jan 2015 16:56:46 +0000 Subject: [PATCH 1/2] Updated some email settings to be used in production --- PyRIGS/settings.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PyRIGS/settings.py b/PyRIGS/settings.py index a13dabb4..1e8486cb 100644 --- a/PyRIGS/settings.py +++ b/PyRIGS/settings.py @@ -95,6 +95,11 @@ ACCOUNT_ACTIVATION_DAYS = 7 EMAILER_TEST = False if not DEBUG or EMAILER_TEST: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' + EMAIL_HOST = 'server.techost.co.uk' + EMAIL_PORT = 465 + EMAIL_HOST_USER = 'tec' + EMAIL_HOST_PASSWORD = '***REMOVED***' + DEFAULT_FROM_EMAIL = 'rigs@nottinghamtec.co.uk' else: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' @@ -138,4 +143,4 @@ TEMPLATE_DIRS = ( os.path.join(BASE_DIR, 'templates'), ) -TERMS_OF_HIRE_URL = "http://dev.nottinghamtec.co.uk/wp-content/uploads/2014/11/terms.pdf" \ No newline at end of file +TERMS_OF_HIRE_URL = "http://dev.nottinghamtec.co.uk/wp-content/uploads/2014/11/terms.pdf" From 1e165427470c66753369e7b295e1566a0629c3dc Mon Sep 17 00:00:00 2001 From: root Date: Wed, 28 Jan 2015 16:28:59 +0000 Subject: [PATCH 2/2] Fixes for the importer --- RIGS/migrations/0016_auto_20150127_1905.py | 46 ++++++++++++++++ RIGS/importer.py => importer.py | 62 ++++++++++++---------- 2 files changed, 79 insertions(+), 29 deletions(-) create mode 100644 RIGS/migrations/0016_auto_20150127_1905.py rename RIGS/importer.py => importer.py (86%) diff --git a/RIGS/migrations/0016_auto_20150127_1905.py b/RIGS/migrations/0016_auto_20150127_1905.py new file mode 100644 index 00000000..9056c4f8 --- /dev/null +++ b/RIGS/migrations/0016_auto_20150127_1905.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + ('RIGS', '0015_auto_20141208_0233'), + ] + + operations = [ + migrations.CreateModel( + name='Invoice', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('invoice_date', models.DateField(auto_now_add=True)), + ('void', models.BooleanField()), + ('event', models.OneToOneField(to='RIGS.Event')), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Payment', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('date', models.DateField()), + ('amount', models.DecimalField(help_text=b'Please use ex. VAT', max_digits=10, decimal_places=2)), + ('method', models.CharField(max_length=2, choices=[(b'C', b'Cash'), (b'I', b'Internal'), (b'E', b'External'), (b'SU', b'SU Core'), (b'M', b'Members')])), + ('invoice', models.ForeignKey(to='RIGS.Invoice')), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.AlterField( + model_name='event', + name='mic', + field=models.ForeignKey(related_name='event_mic', verbose_name=b'MIC', blank=True, to=settings.AUTH_USER_MODEL, null=True), + preserve_default=True, + ), + ] diff --git a/RIGS/importer.py b/importer.py similarity index 86% rename from RIGS/importer.py rename to importer.py index b14c9405..ca7ca4e6 100644 --- a/RIGS/importer.py +++ b/importer.py @@ -61,7 +61,7 @@ def import_users(delete=False): def import_people(delete=False): if(delete): - models.Event.objects.get(is_rig=False).delete() + models.Person.objects.all().delete() cursor = setup_cursor() if cursor is None: return @@ -69,15 +69,20 @@ def import_people(delete=False): cursor.execute(sql) resp = cursor.fetchall() for row in resp: - email = row[3] + pk=row[0] + name=clean_ascii(row[1]) + phone=clean_ascii(row[2].replace(' ','')) + address=clean_ascii(row[4]) + email = clean_ascii(row[3]) fix_email(email) notes = "" if row[5] != "Normal": notes = row[5] - person, created = models.Person.objects.get_or_create(pk=row[0], name=row[1], phone=row[2], email=email, - address=row[4], notes=notes) + print("Trying %s %s %s" % (pk, name, phone)) + person, created = models.Person.objects.get_or_create(pk=pk, name=name, phone=phone, email=email, + address=address, notes=notes) if created: print("Created: " + person.__str__()) with transaction.atomic(), reversion.create_revision(): @@ -88,7 +93,7 @@ def import_people(delete=False): def import_organisations(delete=False): if(delete): - models.Event.objects.get(is_rig=False).delete() + models.Organisation.objects.all().delete() cursor = setup_cursor() if cursor is None: return @@ -112,7 +117,7 @@ def import_organisations(delete=False): def import_vat_rates(delete=False): if(delete): - models.Event.objects.get(is_rig=False).delete() + models.VatRate.objects.all().delete() cursor = setup_cursor() if cursor is None: return @@ -136,19 +141,20 @@ def import_venues(delete=False): cursor = setup_cursor() if cursor is None: return - sql = """SELECT `venue`, `threephasepower` FROM `eventdetails` GROUP BY `venue` WHERE `venue` IS NOT NULL""" + sql = """SELECT `venue`, `threephasepower` FROM `eventdetails` WHERE `venue` IS NOT NULL GROUP BY `venue`""" cursor.execute(sql) for row in cursor.fetchall(): - print(("Searching for %s", row[0])) + name = row[0].strip() + print(("Searching for %s", name)) try: - object = models.Venue.objects.get(name__iexact=row[0]) + object = models.Venue.objects.get(name__iexact=name) if not object.three_phase_available and row[1]: with transaction.atomic(), reversion.create_revision(): object.three_phase_available = row[1] object.save() except ObjectDoesNotExist: with transaction.atomic(), reversion.create_revision(): - object = models.Venue(name=row[0], three_phase_available=row[1]) + object = models.Venue(name=name, three_phase_available=row[1]) object.save() def import_rigs(delete=False): @@ -157,7 +163,7 @@ def import_rigs(delete=False): cursor = setup_cursor() if cursor is None: return - sql = """SELECT r.id, event, person_id, organisation_id, venue, description, status, start_date, start_time, end_date, end_time, access_date, access_time, meet_date, meet_time, meet_info, based_on_id, based_on_type, dry_hire, user_id, payment_method, order_no, payment_received, collectorsid FROM eventdetails AS e INNER JOIN rigs AS r ON e.describable_id = r.id WHERE describable_type = 'Rig' AND venue IS NOT NULL""" + sql = """SELECT r.id, event, person_id, organisation_id, venue, description, status, start_date, start_time, end_date, end_time, access_date, access_time, meet_date, meet_time, meet_info, based_on_id, based_on_type, dry_hire, user_id, payment_method, order_no, payment_received, collectorsid FROM eventdetails AS e INNER JOIN rigs AS r ON e.describable_id = r.id WHERE describable_type = 'Rig' AND `venue` IS NOT NULL""" cursor.execute(sql) for row in cursor.fetchall(): print(row) @@ -166,7 +172,7 @@ def import_rigs(delete=False): organisation = models.Organisation.objects.get(pk=row[3]) else: organisation = None - venue = models.Venue.objects.get(name__iexact=row[4]) + venue = models.Venue.objects.get(name__iexact=row[4].strip()) status = { 'Booked': models.Event.BOOKED, 'Provisional': models.Event.PROVISIONAL, @@ -242,7 +248,10 @@ def import_eventitem(delete=True): def import_nonrigs(delete=False): if(delete): - models.Event.objects.get(is_rig=False).delete() + try: + models.Event.objects.get(is_rig=False).delete() + except: + pass cursor = setup_cursor() if cursor is None: return @@ -250,26 +259,21 @@ def import_nonrigs(delete=False): cursor.execute(sql) for row in cursor.fetchall(): print(row) + mic = models.Profile.objects.get(pk=row[6]) with transaction.atomic(), reversion.create_revision(): - event = models.Event() - event.name = row[0] - event.start_date = row[1] - event.start_time = row[2] - event.end_date = row[3] - event.end_time = row[4] - event.description = row[5] - event.mic = models.Profile.objects.get(pk=row[6]) + event = models.Event(pk=None, name=row[0], start_date=row[1], start_time=row[2], end_date=row[3], end_time=row[4], description=row[5], mic=mic) + print(event) event.save() def main(): - import_users() - import_people() - import_organisations() - import_vat_rates() - import_venues(False) - import_rigs(False) - import_eventitem(False) - import_nonrigs(False) +# import_users() +# import_people(True) +# import_organisations(True) +# import_vat_rates(True) +# import_venues(True) +# import_rigs(True) +# import_eventitem(True) + import_nonrigs(True) if __name__ == "__main__":