def xmlrpc_create(username, password, s_url, code=None): """ Create a short url. Optionally a specific code can be requested by the second parameter. """ user = authenticate(username=username, password=password) if user is None: # Authentication failed. raise Exception('Invalid authentication credentials.') if not len(s_url): raise Exception('Url cannot be empty') try: new_url = Url.objects.get(path=s_url) except ObjectDoesNotExist: from pyurl.helpers.tools import unique_hash new_url = Url(path=s_url, hash=unique_hash(s_url, request=code)) new_url.save() return new_url.short_url
def save(self, *args, **kw): try: # Check to see if the url already exists. u = Url.objects.get(path=self.instance.path) except ObjectDoesNotExist: self.instance.hash = unique_hash(self.instance.path, request=getattr(self.instance, 'hash', None)) # Save url in the db. super(UrlForm, self).save(*args, **kw) # Add the url to the user session list. if self.request.session.get('url_list', False): if len(self.request.session['url_list']) >= getattr(settings, 'MAX_URLS_PER_USER', 10): self.request.session['url_list'].pop(0) self.request.session['url_list'] += [self.instance.pk] else: self.request.session['url_list'] = [self.instance.pk] return self.request, self.instance