def pre_save(self, instance, add): # get currently entered slug value = self.value_from_object(instance) # autopopulate if self.always_update or (self.populate_from and not value): value = utils.get_prepopulated_value(self, instance) if __debug__ and not value: print 'Failed to populate slug %s.%s from %s' % \ (instance._meta.object_name, self.name, self.populate_from) slug = self.slugify(value) if not slug: # no incoming value, use model name slug = instance._meta.module_name assert slug, 'slug is defined before trying to ensure uniqueness' slug = utils.crop_slug(self, slug) # ensure the slug is unique (if required) if self.unique or self.unique_with: slug = utils.generate_unique_slug(self, instance, slug) assert slug, 'value is filled before saving' # make the updated slug available as instance attribute setattr(instance, self.name, slug) return slug
def pre_save(self, instance, add): # get currently entered slug value = self.value_from_object(instance) manager = self.manager # autopopulate if self.always_update or (self.populate_from and not value): value = utils.get_prepopulated_value(self, instance) if __debug__ and not value: print 'Failed to populate slug %s.%s from %s' % \ (instance._meta.object_name, self.name, self.populate_from) slug = self.slugify(value) if not slug: # no incoming value, use model name slug = instance._meta.module_name assert slug, 'slug is defined before trying to ensure uniqueness' slug = utils.crop_slug(self, slug) # ensure the slug is unique (if required) if self.unique or self.unique_with: slug = utils.generate_unique_slug(self, instance, slug, manager) assert slug, 'value is filled before saving' # make the updated slug available as instance attribute setattr(instance, self.name, slug) return slug
def create_from_row(self, row): try: try: case = Case.objects.get(caseid=row['caseid']) except Exception as e: logger.warn("Exception caught creating Case from row %s %s" % (e, row['caseid'])) slug = generate_unique_slug(Case, row['name_abbreviation']) case = Case(caseid=row['caseid'], slug=slug) pass # if just created, write fields # if already created, check timestamp if case.date_added: utc = pytz.utc naive_timestamp = get_date_added(row['timestamp']) if naive_timestamp: new_timestamp = utc.localize(naive_timestamp) # overwrite case only if: # date_added (old timestamp) did not exist and new_timestamp exists # timestamp is greater than previous date_added timestamp if (new_timestamp and not case.date_added) or ( new_timestamp >= case.date_added): case.write_case_fields(row) else: # case has already been created and we are iterating # over the same row again (without date_added) pass
def pre_save(self, instance, add): # get currently entered slug value = self.value_from_object(instance) manager = self.manager # autopopulate if self.always_update or (self.populate_from and not value): value = utils.get_prepopulated_value(self, instance) if __debug__ and not value: print 'Failed to populate slug %s.%s from %s' % \ (instance._meta.object_name, self.name, self.populate_from) slug = self.slugify(value) if not slug: # no incoming value, use model name slug = instance._meta.module_name assert slug, 'slug is defined before trying to ensure uniqueness' slug = utils.crop_slug(self, slug) # ensure the slug is unique (if required) if self.unique or self.unique_with: slug = utils.generate_unique_slug(self, instance, slug, manager) assert slug, 'value is filled before saving' # check if redirect tracking is on and if so prepare if not add and self.redirect_tracking: # Can we import the needed django.contrib.redirects app try: from django.contrib.redirects.models import Redirect from django.contrib.sites.models import Site except ImportError: raise Exception("You are using redirect_tracking. Please be sure to add django contrib apps Redirect and Site to your INSTALLED_APPS.") # does model instance have get_absolute_url defined try: # capture current get_absolute_url pre_update_absolute_url = instance.get_absolute_url() except AttributeError: raise Exception("You are using redirect_tracking on a field whose model does not have get_absolute_url defined. You must define this method on your model.") # make the updated slug available as instance attribute setattr(instance, self.name, slug) if not add and self.redirect_tracking: # check if the slug update caused a change in get_absolute_url # if so and redirect_tracking = True, record in the django contrib redirect app. post_update_absolute_url = instance.get_absolute_url() if pre_update_absolute_url != post_update_absolute_url: # current site site = Site.objects.get_current() # add a redirect redirect = Redirect( site=site, old_path=pre_update_absolute_url, new_path=post_update_absolute_url ) redirect.save() return slug
case = self(caseid=caseid, **kwargs) case.slug = generate_unique_slug(Case, case.name_abbreviation) reporter = Reporter.get_or_create_unique( name=kwargs.get('reporter'), jurisdiction=kwargs.get('jurisdiction')) case.reporter = reporter case.save() return case @classmethod def create_from_row(self, row): try: case = Case.objects.get(caseid=row['caseid']) except Case.DoesNotExist: slug = generate_unique_slug(Case, row['name_abbreviation']) case = Case(caseid=row['caseid'], slug=slug) # if just created, write fields # if already created, check timestamp if case.date_added: utc = pytz.utc naive_timestamp = get_date_added(row['timestamp']) if naive_timestamp: new_timestamp = utc.localize(naive_timestamp) # overwrite case only if: # date_added (old timestamp) did not exist and new_timestamp exists # timestamp is greater than previous date_added timestamp if (new_timestamp and not case.date_added) or ( new_timestamp >= case.date_added): case.write_case_fields(row)