Skip to content

Commit

Permalink
rm unused fields, GetOrNoneManager, AdminManager
Browse files Browse the repository at this point in the history
  • Loading branch information
shamaevnn committed Dec 1, 2021
1 parent d45031b commit 37153f7
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 9 deletions.
4 changes: 3 additions & 1 deletion arcgis/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

# Create your models here.
from tgbot.models import Location
from utils.models import CreateTracker
from utils.models import CreateTracker, GetOrNoneManager


class Arcgis(CreateTracker):
Expand Down Expand Up @@ -38,6 +38,8 @@ class Arcgis(CreateTracker):
lng = models.DecimalField(max_digits=21, decimal_places=18)
lat = models.DecimalField(max_digits=21, decimal_places=18)

objects = GetOrNoneManager()

def __str__(self):
return f"{self.location}, city: {self.city}, country_code: {self.country_code}"

Expand Down
3 changes: 1 addition & 2 deletions tgbot/admin.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from django.contrib import admin
from django.http import HttpResponseRedirect
from django.shortcuts import render
from telegram import ParseMode

from dtb.settings import DEBUG

Expand All @@ -20,7 +19,7 @@ class UserAdmin(admin.ModelAdmin):
'language_code', 'deep_link',
'created_at', 'updated_at', "is_blocked_bot",
]
list_filter = ["is_blocked_bot", "is_moderator"]
list_filter = ["is_blocked_bot", ]
search_fields = ('username', 'user_id')

actions = ['broadcast']
Expand Down
21 changes: 21 additions & 0 deletions tgbot/migrations/0003_rm_unused_fields.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 3.2.6 on 2021-12-01 17:47

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('tgbot', '0002_alter_user_user_id'),
]

operations = [
migrations.RemoveField(
model_name='user',
name='is_banned',
),
migrations.RemoveField(
model_name='user',
name='is_moderator',
),
]
20 changes: 14 additions & 6 deletions tgbot/models.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
from __future__ import annotations

from typing import Union, Optional, Tuple, Dict
from typing import Union, Optional, Tuple

from django.db import models
from django.db.models import QuerySet
from django.db.models import QuerySet, Manager
from telegram import Update
from telegram.ext import CallbackContext

from dtb.settings import DEBUG
from tgbot.handlers.utils.info import extract_user_data_from_update
from utils.models import CreateUpdateTracker, nb, CreateTracker
from utils.models import CreateUpdateTracker, nb, CreateTracker, GetOrNoneManager


class AdminUserManager(Manager):
def get_queryset(self):
return super().get_queryset().filter(is_admin=True)


class User(CreateUpdateTracker):
Expand All @@ -21,11 +26,12 @@ class User(CreateUpdateTracker):
deep_link = models.CharField(max_length=64, **nb)

is_blocked_bot = models.BooleanField(default=False)
is_banned = models.BooleanField(default=False)

is_admin = models.BooleanField(default=False)
is_moderator = models.BooleanField(default=False)


objects = GetOrNoneManager() # user = User.objects.get_or_none(user_id=<some_id>)
admins = AdminUserManager() # User.admins.all()

def __str__(self):
return f'@{self.username}' if self.username is not None else f'{self.user_id}'

Expand Down Expand Up @@ -74,6 +80,8 @@ class Location(CreateTracker):
latitude = models.FloatField()
longitude = models.FloatField()

objects = GetOrNoneManager()

def __str__(self):
return f"user: {self.user}, created at {self.created_at.strftime('(%H:%M, %d %B %Y)')}"

Expand Down
10 changes: 10 additions & 0 deletions utils/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.core.exceptions import ObjectDoesNotExist
from django.db import models


Expand All @@ -17,3 +18,12 @@ class CreateUpdateTracker(CreateTracker):

class Meta(CreateTracker.Meta):
abstract = True


class GetOrNoneManager(models.Manager):
"""returns none if object doesn't exist else model instance"""
def get_or_none(self, **kwargs):
try:
return self.get(**kwargs)
except ObjectDoesNotExist:
return None

0 comments on commit 37153f7

Please sign in to comment.