0

I'm new in python and following the youtube videos to learn how to code. But now i got a problem. I tried to write custom django-admin command 'refreshcodes'. Here is my file located in src/shortener/managment/commands/refreshcodes.py:

from django.core.management.base import BaseCommand, CommandError

from shortener.models import KirrURL

class Command(BaseCommand):
    help = 'Refreshes all KirrURL shortcodes'

    def handle(self, *args, **options):
        return KirrURL.objects.refresh_shortcodes() 

Here is shortener/models.py:

import random
import string
from django.db import models
from .utils import code_generator, create_shortcode
# Create your models here.


class KirrURLManager(models.Manager):
    def all(self, *args, **kwargs):
        qs_main = super(KirrURLManager, self).all(*args, **kwargs)
        qs = qs_main.filter(active=True)
        return qs
    def refresh_shortcodes(self):
        qs = KirrURL.objects.filter(id__gte=1)
        new_codes = 0
        for q in qs:
            q.shortcode = create_shortcode(q)
            print (q.shortcode)
            q.save()
            new_codes += 1
        return "New codes made: {i}".format(i=new_codes)



class KirrURL(models.Model):
    url         = models.CharField(max_length=220, )
    shortcode   = models.CharField(max_length=15, unique=True, blank=True)
    updated     = models.DateTimeField(auto_now=True) #everytime model is saved
    timestamp   = models.DateTimeField(auto_now_add=True) #when model was created
    active      = models.BooleanField(default=True)
    #empty_datetime = models.DateTimeField(auto_now=False, auto_now_add=False)
    #shortcode = models.CharField(max_length=15, null=True) Empty in database is ok
    #shortcode = models.CharField(max_length=15, default='cfedefaultshortcode')

    objects = KirrURLManager()

    #some_random = KirrURLManager()

    def save(self, *args, **kwargs):
        if self.shortcode is None or self.shortcode == "":
            self.shortcode = create_shortcode(self)
        super(KirrURL, self).save(*args, **kwargs)
    #def my_save(self):
    #   self.save()
    def __str__(self):
        return str(self.url)

So, when i tried to run python manage.py refresh codes i had an error:

Unknown command: 'refreshcodes' Type 'manage.py help' for usage.

Then i noticed that in refreshcodes.py shortener.models is underscored, so i tried to fix it with Pycharm help menu. Pycharm error:

Collecting models
  Using cached models-0.9.3.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3d/xgytpbqn7k113z6fx_jxdq9r0000gn/T/pycharm-packaging0.tmp/models/setup.py", line 25, in <module>
        import models
      File "/private/var/folders/3d/xgytpbqn7k113z6fx_jxdq9r0000gn/T/pycharm-packaging0.tmp/models/models/__init__.py", line 23, in <module>
        from base import *
    ImportError: No module named 'base'

    ----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/3d/xgytpbqn7k113z6fx_jxdq9r0000gn/T/pycharm-packaging0.tmp/models/

Help me please! I'm using django 1.10.2 and python 3.5.2.

  • Is `shortener` in your `INSTALLED_APPS`? – knbk Nov 03 '16 at 16:48
  • yes. of course, and __init__.py files in folders too – CopsLikeDonuts Nov 03 '16 at 16:51
  • When i tried to run refresh codes.py separately i got this: /Users/alenasanina/trydjango110/bin/python /Users/alenasanina/trydjango110/src/shortener/managment/commands/refreshcodes.py Traceback (most recent call last): File "/Users/alenasanina/trydjango110/src/shortener/managment/commands/refreshcodes.py", line 3, in from shortener.models import KirrURL ImportError: No module named 'shortener' Process finished with exit code 1 – CopsLikeDonuts Nov 03 '16 at 16:54

0 Answers0