Skip to content

Instantly share code, notes, and snippets.

View marcisprouse's full-sized avatar

Marci Sprouse marcisprouse

View GitHub Profile
@marcisprouse
marcisprouse / certificates_admin_09_2021.py
Created February 10, 2022 14:31
Change a field within the admin form to make it longer with get_form and widget
from django.contrib import admin
from certificates.models import Certificate
@admin.register(Certificate)
class CertificateAdmin(admin.ModelAdmin):
list_display = ("certificate_number", "member_coyote_lakes_address", "name_associated_with_certificate", "is_for_sale", "is_for_sale_as_of_date", "is_club_held", "purchase_date", "certificate_notes", "created", "updated")
search_fields = ["certificate_number", "member_coyote_lakes_address__route","member_coyote_lakes_address__street_number", "name_associated_with_certificate__user__last_name", "name_associated_with_certificate__user__first_name", "certificate_notes"]
list_filter = ("is_for_sale", "is_for_sale_as_of_date", "is_club_held")
def get_form(self, request, obj=None, **kwargs):
form = super(CertificateAdmin, self).get_form(request, obj, **kwargs)
@marcisprouse
marcisprouse / admin_form_override.py
Created February 10, 2022 14:28
Example of admin form override with validators
from django import forms
from .models import Interface
class DeviceAdminForm(forms.ModelForm):
def clean(self):
cleaned_data = super().clean()
hostname = cleaned_data.get("hostname")
if not hostname:
@marcisprouse
marcisprouse / trail_compare_app.js
Created February 2, 2022 15:41
app.js file for trail compare app using django-react, axios, and aws api gateway, chart-js
import React, { Component } from 'react'
import Select from 'react-select'
import axios from 'axios'
import {Bar} from 'react-chartjs-2'
import './App.css'
export default class App extends Component {
constructor(props){
super(props)
def save(self, *args, **kwargs):
if self.device_a and self.interface_a:
if self.device_a.hostname == self.interface_a.device.hostname:
raise ValidationError(
_("No two interfaces belonging to the same device may be connected. Your selection of Interface A shares the same Device as your Device A selection."), code='invalid'
)
if self.device_b and self.interface_b:
if self.device_b.hostname == self.interface_b.device.hostname:
@marcisprouse
marcisprouse / serializers.py
Created February 1, 2022 04:20
DRF serializers.py with validation for NetworkTracker App I developed.
class ConnectionSerializer(serializers.BaseSerializer):
class Meta:
model = Connection
fields = ['device_a', 'interface_a', 'device_b', 'interface_b']
def to_internal_value(self, data):
device_a = data.get('device_a')
interface_a = data.get('interface_a')
device_b = data.get('device_b')
interface_b = data.get('interface_b')
@marcisprouse
marcisprouse / forms.py
Created February 1, 2022 04:16
Validators on forms.py for NetworkTracker App I developed.
from django import forms
from .models import Interface
class DeviceAdminForm(forms.ModelForm):
def clean(self):
cleaned_data = super().clean()
hostname = cleaned_data.get("hostname")
if not hostname:
@marcisprouse
marcisprouse / pos_tests.py
Created February 1, 2022 03:59
Django Unit Test Example
from django.test import TestCase
from django.urls import reverse
from transaction.models import Transaction
class ReportIndexViewTests(TestCase):
def test_report_index_loads_properly(self):
response = self.client.get(reverse('report:index'))
self.assertEqual(response.status_code, 200)
@marcisprouse
marcisprouse / td_rate_alg.py
Created February 1, 2022 03:51
SQL code in Python Script for TrailCompare App Trail Difficulty Algorithm
import sqlite3
conn = sqlite3.connect('/Users/marci/Desktop/trails_rank/newtrails.sqlite')
cur = conn.cursor()
cur.execute('''SELECT * from addtrails''')
table_rows = cur.fetchall()
# update table with TRAIL_TYPE ranks.
cur.execute('''UPDATE addtrails SET t_t_rank = 5 WHERE TRAIL_TYPE IN