# -*- coding: utf-8 -*-
from __future__ import print_function
from __future__ import unicode_literals
from __future__ import division

from django.core.management.base import BaseCommand

from apps.user.models import UserProfile

# Thanks to @ajrobbins for generating this
DRB_ZIPS = ['07416', '07438', '07461', '07820', '07821', '07822', '07823',
            '07825', '07826', '07827', '07828', '07832', '07833', '07836',
            '07838', '07840', '07843', '07846', '07848', '07849', '07850',
            '07851', '07852', '07853', '07856', '07857', '07860', '07863',
            '07865', '07870', '07871', '07874', '07880', '07881', '07882',
            '07885', '08001', '08002', '08003', '08007', '08009', '08010',
            '08011', '08012', '08014', '08015', '08016', '08019', '08020',
            '08021', '08022', '08023', '08026', '08027', '08028', '08029',
            '08030', '08031', '08033', '08034', '08035', '08036', '08038',
            '08039', '08041', '08042', '08043', '08045', '08046', '08048',
            '08049', '08051', '08052', '08053', '08054', '08055', '08056',
            '08057', '08059', '08060', '08061', '08062', '08063', '08064',
            '08065', '08066', '08067', '08068', '08069', '08070', '08071',
            '08072', '08073', '08074', '08075', '08077', '08078', '08079',
            '08080', '08081', '08083', '08084', '08085', '08086', '08088',
            '08090', '08091', '08093', '08094', '08096', '08097', '08098',
            '08102', '08103', '08104', '08105', '08106', '08107', '08108',
            '08109', '08110', '08204', '08210', '08212', '08230', '08242',
            '08246', '08251', '08270', '08302', '08310', '08311', '08312',
            '08314', '08316', '08318', '08320', '08321', '08322', '08323',
            '08324', '08326', '08327', '08328', '08329', '08332', '08340',
            '08341', '08343', '08344', '08345', '08348', '08349', '08350',
            '08352', '08353', '08360', '08361', '08501', '08505', '08510',
            '08511', '08514', '08515', '08518', '08520', '08525', '08527',
            '08530', '08533', '08534', '08535', '08540', '08550', '08551',
            '08554', '08555', '08559', '08560', '08561', '08562', '08608',
            '08609', '08610', '08611', '08618', '08619', '08620', '08628',
            '08629', '08638', '08640', '08641', '08648', '08690', '08691',
            '08759', '08802', '08804', '08808', '08822', '08825', '08826',
            '08827', '08848', '08865', '08867', '08886', '10940', '10963',
            '12093', '12167', '12406', '12410', '12421', '12430', '12434',
            '12438', '12441', '12455', '12459', '12464', '12465', '12468',
            '12474', '12492', '12701', '12719', '12720', '12721', '12723',
            '12724', '12725', '12726', '12729', '12732', '12733', '12734',
            '12736', '12737', '12738', '12740', '12741', '12742', '12743',
            '12745', '12746', '12747', '12748', '12749', '12750', '12751',
            '12752', '12754', '12758', '12759', '12760', '12762', '12763',
            '12764', '12765', '12766', '12767', '12768', '12769', '12770',
            '12771', '12775', '12776', '12777', '12778', '12779', '12780',
            '12781', '12783', '12784', '12785', '12786', '12787', '12788',
            '12789', '12790', '12791', '12792', '13730', '13731', '13733',
            '13739', '13740', '13752', '13753', '13754', '13755', '13756',
            '13757', '13774', '13775', '13782', '13783', '13786', '13788',
            '13804', '13806', '13813', '13839', '13842', '13847', '13849',
            '13856', '13865', '17039', '17042', '17046', '17067', '17073',
            '17087', '17088', '17517', '17527', '17555', '17569', '17901',
            '17921', '17922', '17923', '17925', '17929', '17930', '17931',
            '17933', '17944', '17948', '17951', '17952', '17953', '17954',
            '17959', '17960', '17961', '17963', '17965', '17970', '17972',
            '17974', '17979', '17981', '17982', '18011', '18013', '18014',
            '18015', '18016', '18017', '18018', '18020', '18030', '18031',
            '18032', '18034', '18035', '18036', '18037', '18038', '18040',
            '18041', '18042', '18045', '18046', '18049', '18051', '18052',
            '18053', '18054', '18055', '18056', '18058', '18059', '18062',
            '18063', '18064', '18066', '18067', '18068', '18069', '18070',
            '18071', '18072', '18073', '18074', '18076', '18077', '18078',
            '18079', '18080', '18081', '18083', '18085', '18086', '18087',
            '18088', '18091', '18092', '18101', '18102', '18103', '18104',
            '18105', '18106', '18109', '18195', '18201', '18210', '18211',
            '18212', '18214', '18216', '18218', '18220', '18222', '18224',
            '18229', '18230', '18232', '18235', '18237', '18240', '18244',
            '18245', '18250', '18252', '18254', '18255', '18301', '18302',
            '18321', '18322', '18323', '18324', '18325', '18326', '18327',
            '18328', '18330', '18331', '18332', '18333', '18334', '18335',
            '18336', '18337', '18340', '18342', '18343', '18344', '18346',
            '18347', '18349', '18350', '18351', '18352', '18353', '18354',
            '18355', '18356', '18357', '18360', '18370', '18371', '18372',
            '18403', '18405', '18407', '18415', '18417', '18421', '18424',
            '18425', '18426', '18427', '18428', '18431', '18435', '18436',
            '18437', '18438', '18439', '18443', '18444', '18445', '18451',
            '18453', '18454', '18455', '18456', '18457', '18458', '18459',
            '18460', '18461', '18462', '18463', '18464', '18466', '18469',
            '18470', '18472', '18473', '18602', '18610', '18624', '18640',
            '18661', '18702', '18847', '18901', '18902', '18912', '18913',
            '18914', '18915', '18917', '18920', '18923', '18925', '18929',
            '18930', '18932', '18935', '18936', '18938', '18940', '18942',
            '18944', '18947', '18950', '18951', '18954', '18955', '18960',
            '18962', '18964', '18966', '18969', '18970', '18972', '18974',
            '18976', '18977', '18980', '19001', '19002', '19003', '19004',
            '19006', '19007', '19008', '19009', '19010', '19012', '19013',
            '19014', '19015', '19017', '19018', '19020', '19021', '19022',
            '19023', '19025', '19026', '19027', '19029', '19030', '19031',
            '19032', '19033', '19034', '19035', '19036', '19038', '19040',
            '19041', '19043', '19044', '19046', '19047', '19050', '19053',
            '19054', '19055', '19056', '19057', '19060', '19061', '19063',
            '19064', '19066', '19067', '19070', '19072', '19073', '19074',
            '19075', '19076', '19078', '19079', '19081', '19082', '19083',
            '19085', '19086', '19087', '19090', '19094', '19095', '19096',
            '19102', '19103', '19104', '19106', '19107', '19109', '19111',
            '19112', '19113', '19114', '19115', '19116', '19118', '19119',
            '19120', '19121', '19122', '19123', '19124', '19125', '19126',
            '19127', '19128', '19129', '19130', '19131', '19132', '19133',
            '19134', '19135', '19136', '19137', '19138', '19139', '19140',
            '19141', '19142', '19143', '19144', '19145', '19146', '19147',
            '19148', '19149', '19150', '19151', '19152', '19153', '19154',
            '19301', '19311', '19312', '19316', '19317', '19319', '19320',
            '19330', '19333', '19335', '19341', '19342', '19343', '19344',
            '19345', '19348', '19350', '19352', '19355', '19358', '19365',
            '19367', '19372', '19373', '19374', '19375', '19380', '19382',
            '19383', '19390', '19401', '19403', '19405', '19406', '19422',
            '19425', '19426', '19428', '19435', '19436', '19437', '19438',
            '19440', '19442', '19444', '19446', '19453', '19454', '19456',
            '19457', '19460', '19462', '19464', '19465', '19468', '19472',
            '19473', '19474', '19475', '19477', '19492', '19503', '19504',
            '19505', '19506', '19507', '19508', '19510', '19511', '19512',
            '19518', '19519', '19520', '19522', '19523', '19525', '19526',
            '19529', '19530', '19533', '19534', '19535', '19536', '19538',
            '19539', '19540', '19541', '19542', '19543', '19545', '19547',
            '19549', '19550', '19551', '19554', '19555', '19559', '19560',
            '19562', '19564', '19565', '19567', '19601', '19602', '19604',
            '19605', '19606', '19607', '19608', '19609', '19610', '19611',
            '19701', '19702', '19703', '19706', '19707', '19709', '19710',
            '19711', '19713', '19716', '19717', '19720', '19730', '19731',
            '19732', '19733', '19734', '19735', '19736', '19801', '19802',
            '19803', '19804', '19805', '19806', '19807', '19808', '19809',
            '19810', '19901', '19902', '19904', '19934', '19936', '19938',
            '19941', '19943', '19946', '19947', '19950', '19951', '19952',
            '19953', '19954', '19955', '19958', '19960', '19962', '19963',
            '19968', '19971', '19977', '19979', '21921']


class Command(BaseCommand):
    """
    Get a list of users that are in the Delaware River Basin
    """

    help = 'Get a list of users in the DRB'

    def handle(self, *args, **options):
        drbusers = UserProfile.objects.select_related('user')\
                                      .order_by('user_id')\
                                      .filter(postal_code__in=DRB_ZIPS)

        rows = ['id,username,organization,user_type,country,postal_code']
        for u in drbusers:
            rows.append('"{}","{}","{}","{}","{}","{}"'.format(
                u.user.id,
                u.user.username,
                u.organization,
                u.user_type,
                u.country,
                u.postal_code
            ))

        print('\n'.join(rows))
