Skip to content

Instantly share code, notes, and snippets.

View craigderington's full-sized avatar
🚀
Automate Everything

Craig Derington craigderington

🚀
Automate Everything
View GitHub Profile
@craigderington
craigderington / converter.py
Created February 20, 2019 14:05
Python CSV Import to MySQL
#!.env/bin/python
# -*- coding: utf-8 -*-
import csv
from db import db_session
from sqlalchemy import exc
from models import IPData
from datetime import datetime
from django.db import models
# Create your models here.
class Location(models.Model):
"""
The Location data model for geo-coding
"""
ip_addr = models.CharField(max_length=15, null=False, blank=False)
@craigderington
craigderington / serializers.py
Last active March 8, 2019 19:19
DRF by Example Serializers Module
from rest_framework import serializers
from .models import Location
class LocationSerializer(serializers.Serializer):
id = serializers.ReadOnlyField()
ip_addr = serializers.CharField(required=True, allow_blank=False, max_length=15)
time_zone = serializers.CharField(required=True, allow_blank=False)
latitude = serializers.FloatField(required=True)
longitude = serializers.FloatField(required=True)
@craigderington
craigderington / urls.py
Last active March 8, 2019 19:18
DRF by Example URLs Module
from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from . import views
urlpatterns = [
path('', views.LocationList.as_view(), name='location-list'),
path('<int:pk>/', views.LocationDetail.as_view()),
path('geolocate/<str:ip_addr>', views.get_location, name='geolocate')
]
@craigderington
craigderington / admin.py
Created March 8, 2019 19:07
DRF by Example Admin module
from django.contrib import admin
from .models import Location
# Register your models here.
class LocationAdmin(admin.ModelAdmin):
list_display = ['ip_addr', 'region_name', 'country_name', 'time_zone', 'latitude', 'longitude']
search_fields = ['ip_addr', 'region_name', 'latitude', 'longitude']
list_filter = ['region_name', 'time_zone']
@craigderington
craigderington / views.py
Last active March 8, 2019 20:21
DFR by Example Views Module
from .models import Location
from .serializers import LocationSerializer
from rest_framework.response import Response
from rest_framework import generics, permissions
from rest_framework import status
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
import GeoIP
import ipaddress
@craigderington
craigderington / urls.py
Created March 8, 2019 22:07
DRF by Example Root URLs Module
from django.urls import path
from django.conf.urls import include
from django.conf import settings
from django.contrib import admin
from rest_framework_swagger.views import get_swagger_view
from .views import api_root
schema_view = get_swagger_view(title='DRF by Example')
# url list
@craigderington
craigderington / app.py
Created March 11, 2019 16:18
Flask App
from flask import Flask, Response, abort, request, jsonify, g, url_for, render_template, flash
from flask_mail import Mail, Message
from flask_sslify import SSLify
from flask_sqlalchemy import SQLAlchemy
from flask_httpauth import HTTPTokenAuth
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from sqlalchemy import exc, and_, desc
from celery import Celery
from datetime import datetime
from db import db_session
@craigderington
craigderington / models.py
Created March 11, 2019 16:20
MDI - Data Model for Real Time Consumer Data Appending
from db import Base
from datetime import datetime
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean, Text, Float
from sqlalchemy.orm import relationship
from werkzeug.security import generate_password_hash, check_password_hash
import uuid
# Define application Bases
@craigderington
craigderington / app.py
Created March 11, 2019 16:41
A small excerpt from MDI Data API
@app.route('/api/v1.0/sms/<string:phone_number>', methods=['GET'])
def get_sms_data(phone_number):
"""
Append data to Mobile Number
Return the Person obj by cell phone number
:param: string: phone_number
:return: obj(Person), type(json)
"""
geo, carrier, time_zone, city_geocode = range(4)