Пример #1
0
    def resize(self, width, height, dowatermark=False):
        """
        Создает превьюхи для изображений
        """
        dimensions_folder = '{0}x{1}'.format(width, height)
        #проверяем, что существует папка с превьюхами
        path_to_thumbnail_dir = os.path.join(
            settings.MEDIA_ROOT, self.IMAGE_UPLOAD_TO, 'thumbnails', dimensions_folder).encode('utf-8')
        if not os.path.exists(path_to_thumbnail_dir):
            os.makedirs(path_to_thumbnail_dir)

        original_path = os.path.join(settings.MEDIA_ROOT, self.IMAGE_UPLOAD_TO)
        original_filename = '{0}/{1}.jpg'.format(original_path, slugify(self.article)).encode('utf-8')
        try:
            image = Image.open(original_filename)
        except IOError:
            # print('Image not found')
            return
        image = ImageOps.fit(image, (width, height), Image.ANTIALIAS)
        if dowatermark:
            wm = Image.open(settings.WATERMARK_PATH)
            wmsize = image.size[0]/2
            if wmsize < 100:
                wmsize = 100
            wm.thumbnail((wmsize, wmsize), Image.ANTIALIAS)
            image.paste(wm, (image.size[0]/2-wm.size[0]/2, image.size[1]/2-wm.size[1]/2), wm)
        path_to_thumbnail = '{0}/{1}.jpg'.format(path_to_thumbnail_dir, slugify(self.article)).encode('utf-8')
        image.save(path_to_thumbnail, "JPEG", quality=100)
    def forwards(self, orm):
        from pytils.translit import slugify
        for section in orm.Section.objects.all():
            section.slug = slugify(section.title_uk or section.title)
            section.save()

        for article in orm.Article.objects.all():
            article.slug = slugify(article.title_uk or article.title)
            article.save()
Пример #3
0
def file_upload_path(instance, filename):
    """Generates upload path
    
    Keyword arguments:
    instance -- FileField
    filename - String
    
    Returns: String
    
    """
    parts = filename.rsplit('.', 1)
    name = "%s.%s" % (slugify(translify(parts[0])), slugify(translify(parts[1])))
    return "%s/%s/%s/%s" % (strftime('%Y'), 
       strftime('%m'), strftime('%d'), name)
Пример #4
0
def category(request, id):
    category = Category.objects.select_related().get(id=id)
    posts = category.post_set.all()
    slug = translit.slugify(category.name)
    category.ct_slug = slug
    return render(request, 'category.html', {'posts': posts,
                                             'category': category},)
Пример #5
0
 def save(self, commit=True):
     post = super(PostAdminForm, self).save(commit=False)
     post.slug = '%i-%s' % (
         Post.objects.last().pk+1, slugify(self.cleaned_data['title'])
     )
     post.save()
     return post
Пример #6
0
def set_slug(model, src, length=60):
    slug = slugify(src)[0:length]
    try:
        obj = model.objects.get(slug=slug)
        slug = set_slug(model, slug, length)
    except model.DoesNotExist:
        return slug
Пример #7
0
 def post(self, request, *args, **kwargs):
     btype = request.POST.get('btype', False)
     resp = u''
     if btype:
         c = BusinessType.objects.create(name=btype, slug=slugify(btype))
         resp = u'[{}, {}]'.format(c.name, c.name)
     return HttpResponse(resp)
Пример #8
0
    def check_for_file_and_upload(self, data):
        """
        Checks to see if a file was passed back by the student.  If so, it will be uploaded to S3.
        @param data: AJAX post dictionary containing keys student_file and valid_files_attached.
        @return: has_file_to_upload, whether or not a file was in the data dictionary,
        and image_tag, the html needed to create a link to the uploaded file.
        """
        has_file_to_upload = False
        image_tag = ""

        # Ensure that a valid file was uploaded.
        if ('valid_files_attached' in data
            and data['valid_files_attached'] in ['true', '1', True]
            and data['student_file'] is not None
            and len(data['student_file']) > 0):
                has_file_to_upload = True
                student_file = data['student_file'][0]
                # Bad workaround about cyrillic unicode
                # student_file.name = str(uuid.uuid4()) + '.' +  student_file.name.split(".")[-1]
                student_file.name = slugify(student_file.name)
                # Upload the file to S3 and generate html to embed a link.
                s3_public_url = self.upload_file_to_s3(student_file)
                image_tag = self.generate_file_link_html_from_url(s3_public_url, student_file.name)

        return has_file_to_upload, image_tag
Пример #9
0
def slugify(text):
    """Make slug from (russian) text"""
    try:
        res = translit.slugify(smart_unicode(text, encoding))
    except Exception, err:
        # because filter must die silently
        res = default_value % {'error': err, 'value': text}
Пример #10
0
Файл: orm.py Проект: hzx/wender
  def setSlug(self, names, obj):
    """
    Find slug field and set it
    Return generated slug or None is slug not exists
    """
    # get obj type
    fields = self.meta.getCollType(names)
    if not fields:
      return None

    # search slug field name
    slugName = None
    for name, params in fields.items():
      if 'slug' in params:
        slugName = name
        break
    if not slugName:
      return None

    # get slug src
    slugSrc = fields[slugName]['slug']

    # gen slug from src
    src = obj.get(slugSrc, None)
    if not src:
      return None
    slug = slugify(src)

    # set slug
    obj[slugName] = slug

    return slug
Пример #11
0
	def save(self, *args, **kwargs):
		self.html_compile = u'%s' % markdown(self.data,
				['footnotes', 'admonition', 'headerid', 'nl2br', 'tables', 'wikilinks', 'pyshell'])
		self.updated = datetime.now()
		if not self.slug:
			self.slug = slugify(self.title)
		super(Page, self).save(*args, **kwargs)
Пример #12
0
def pointphoto_upload(instance, filename, prefix=None):
        """
        Auto generate name for File and Image fields.
        :param instance: Instance of Model
        :param filename: Name of uploaded file
        :param prefix: Add to path
        :return:
        """
        name, ext = op.splitext(filename)
        try:
            time = instance.timestamp.strftime("%H-%M")
            if len(instance.name.split(',')) > 2:
                instance.name = ','.join(instance.name.split(',')[2:])
            name = slugify(instance.name)
            if len(name > 40):
                name = name[-40:]
            filename = "%s-%s%s" % (time, name, ext or '.jpg')
            date = instance.timestamp.strftime("%d-%m-%Y")
        except:
            filename = "%s%s" % (uuid.uuid4(), ext or '.jpg')
            date = datetime.today().strftime('%d-%m-%Y')
        basedir = op.join(instance._meta.app_label, instance._meta.model_name)
        if prefix:
            basedir = op.join(basedir, prefix)
        return op.join(basedir, date, filename)
Пример #13
0
def unique_path(page, page_id=None):
    """Makes unique_path for page, returns new path and slug.
       Provided @page_id means do not check against self"""
    slug = slugify(page.slug or page.name)[0:PAGE_SLUG_LENGTH]
    parent_page = db.select("pages", page, where="id=$parent_id")[0]
    test_slug, i = slug, 1
    try:
        while True:
            if not test_slug in config.reserved:
                new_path = join_path(parent_page.path, test_slug)
                test = db.select(
                    "pages",
                    locals(),
                    where=("path=$new_path" +
                           web.cond(page_id, " AND NOT id=$page_id", "")),
                )[0]
            test_slug = "%s-%d" % (slug, i)
            i += 1
    except IndexError:
        # Page with test_slug doesn't exist — take this slug
        if parent_page.ids:
            ids = parent_page.ids + "," + str(parent_page.id)
        else:
            ids = parent_page.id
        return dict(
            path=new_path,
            slug=test_slug,
            ids=ids,
            level=parent_page.level + 1)
Пример #14
0
    def save(self, *args, **kwargs):

        if not self.slug :
            from pytils.translit import slugify
            self.slug = slugify(self.title)

        super(News, self).save(*args, **kwargs)
Пример #15
0
    def save(self, **kwargs):
        #super(Coll, self).save()

        if not self.slug:
            self.uid = Rubrica.objects.latest('pk').id + 1
            self.slug = dict(GENDER).get(self.gender) + "-" + translit.slugify(self.title)
        super(Rubrica, self).save(**kwargs)
Пример #16
0
Файл: orm.py Проект: hzx/wender
  def updateSlug(self, names, field, value):
    # get coll type
    fields = self.meta.getCollType(names)
    if not fields:
      return None

    # search slug field name
    slugName = None
    for name, params in fields.items():
      if 'slug' in params:
        slugName = name
        break
    if not slugName:
      return None

    # get slug src
    slugSrc = fields[slugName]['slug']

    # slug src must be equal to field
    if slugSrc != field:
      return None

    # gen slug
    slug = slugify(value)

    return [slugName, slug]
Пример #17
0
    def on_callback(self, request):
        if request.method != 'POST':
            request.respond('This hook only supports POST method.')
        else:
            if request.GET.get('secret', [None])[0] != self.bot.config.draftin_secret:
                request.respond('Wrong secret was specified')
            else:
                payload = anyjson.deserialize(request.POST['payload'][0])
                title = payload['name']
                content = payload['content']
                slug = slugify(title)
                created_at = times.to_universal(payload['created_at'])
                updated_at = times.to_universal(payload['updated_at'])
                timezone = self.bot.config.timezone

                with open(os.path.join(
                        self.bot.config.documents_dir,
                        slug + '.md'), 'w') as f:

                    post_content = self.template.format(title=title,
                                                        content=content,
                                                        slug=slug,
                                                        created_at=times.format(created_at, timezone, '%Y-%m-%d %H:%M'),
                                                        updated_at=times.format(updated_at, timezone, '%Y-%m-%d %H:%M'))
                    f.write(post_content.encode('utf-8'))
                    
                try:
                    subprocess.check_output(self.bot.config.update_command,
                                            stderr=subprocess.STDOUT,
                                            shell=True)
                except subprocess.CalledProcessError, e:
                    request.respond(u'I tried to update a blog, but there was an error: ' + e.output.encode('utf-8'))
                else:
                    request.respond('Done, published')
Пример #18
0
def photo_file_path(instance, filename):
    """
    Path is <kind>/<media_id/digits>/file_name
    """
    name, ext = os.path.splitext(filename)
    kind, media_id = instance.get_path_parts()
    return os.path.join(kind, os.path.join(*list(str(media_id))), translit.slugify(name)) + ext
Пример #19
0
 def fieldset_dict(self):
     # No need to call validate_fieldsets() since we
     # are using iter_fieldsets.
     if not hasattr(self, '__fieldset_dict'):
         self.__fieldset_dict = dict((slugify(fset.title), fset) for \
                                             fset in self.iter_fieldsets())
     return self.__fieldset_dict
Пример #20
0
 def save(self, force_insert=False, force_update=False):
     self.updated_at = datetime.now()
     if (self.slug == None or self.slug == ''):
         if not self.id:
             super(Post, self).save(force_insert, force_update)
         self.slug = '%d-%s' % (self.id, slugify(self.title))
     super(Post, self).save(force_insert, force_update)
Пример #21
0
def upload(request):
    """
    Uploads a file and send back its URL to CKEditor.

    TODO:
        Validate uploads
    """
    # Get the uploaded file from request.
    f_name = request.FILES['upload'].name.split('.')
    request.FILES['upload'].name = slugify(f_name[0])+'.'+f_name[1]
    upload = request.FILES['upload']
    upload_ext = os.path.splitext(upload.name)[1]
    if upload.size > 5242880:
        return render(request, 'accounts/ckeditor_error.html')
    # Open output file in which to store upload.
    upload_filename = get_upload_filename(upload.name, request.user)
    out = open(upload_filename, 'wb+')

    # Iterate through chunks and write to destination.
    for chunk in upload.chunks():
        out.write(chunk)
    out.close()

    create_thumbnail(upload_filename)

    # Respond with Javascript sending ckeditor upload url.
    url = get_media_url(upload_filename)
    return HttpResponse("""
    <script type='text/javascript'>
        window.parent.CKEDITOR.tools.callFunction(%s, '%s');
    </script>""" % (request.GET['CKEditorFuncNum'], url))
Пример #22
0
def parse_site(**kwargs):
	xml = urlopen(kwargs['url']).read()
	all_data = pq(etree.fromstring(xml))
	data = pq(all_data)
	data_items = data(kwargs['field_main'])
	newss = News_article()


	for dat in data_items:
	 	na = News_article()
	 	d = pq(dat)
	 	soup = BeautifulSoup(str(d))
	 	na.article = d(kwargs['article']).html()
	 	na.src_link = d(kwargs['src_link']).html()
	 	na.date = parse_date(soup(kwargs['date'])[0].string)
	 	na.slug = slugify(na.article)
 		try:
	 		na.image = parse_image(kwargs['image'], soup)	
		except Exception as exc:
			print str(exc)
			print na.image
	 	count_news_article1 = News_article.objects.filter(article = na.article).count()
		try:
			if count_news_article1 == 0:
	 			na.text = parse_html(na.src_link, kwargs['tag_name'], kwargs['tag_value'])
	 			na.save()
		except Exception as e:
			print e
Пример #23
0
 def post(self, request, *args, **kwargs):
     tag = request.POST.get('tag', False)
     resp = u''
     if tag:
         c = UserTag.objects.create(name=tag, slug=slugify(tag), author=request.user)
         resp =  [c.pk, c.name]
     return HttpResponse(json.dumps(resp), content_type='application/json')
Пример #24
0
    def save(self, **kwargs):
        #super(Coll, self).save()

        if not self.slug:
            self.uid = Coll.objects.latest('pk').id + 1
            self.slug = translit.slugify(self.title) + "-" + str(self.uid)
        super(Coll, self).save(**kwargs)
Пример #25
0
 def post(self, request, *args, **kwargs):
     comp = request.POST.get('competence', False)
     resp = u''
     if comp:
         c = Competence.objects.create(name=comp, slug=slugify(comp))
         resp = u'[{}, {}]'.format(c.name, c.name)
     return HttpResponse(resp)
Пример #26
0
def get_uploaded_file_name(filename):
    if filename:
        i = filename.rfind('.')
        uploaded_file = '%s%s' % (slugify(filename[:i]), filename[i:])
    else:
        uploaded_file = None
    return uploaded_file
Пример #27
0
 def handle(self, *args, **options):
     qs = SurfacePhoto.objects.all()
     for i in qs:
         media_root = settings.MEDIA_ROOT
         subdir = op.join(i._meta.model_name, i.porch.surface.city.slug)
         root_dir = op.join(media_root, subdir)
         if not op.exists(root_dir):
             makedirs(root_dir)
         ext = op.splitext(i.image.path)[-1]
         name = slugify(i.__unicode__())
         filename = "id%s_%s%s" % (i.id, name, ext or '.jpg')
         short_path = op.join(subdir, filename)
         full_path = op.join(root_dir, filename)
         try:
             print 'open image'
             image = Image.open(i.image.path)
             image.save(full_path, "PNG")
             print 'image save complete'
         except:
             print 'image save fail'
         try:
             print 'set new path for instance'
             i.image = short_path
             i.save()
             print 'instance save ok'
         except:
             print 'instance save fail'
Пример #28
0
 def save(self, *args, **kwargs):
     if not self.slug:
         from pytils.translit import slugify
         self.slug = slugify(self.name)
     self.text = self.text.strip()
     self.html = render(self.text, self.render_method, unsafe=True)
     super(Post, self).save(*args, **kwargs)
Пример #29
0
 def eval_image_upload_to(instance, filename):
     ext = ''
     n = filename.rfind('.')
     if n:
         ext = filename[n:]
     return os.path.join('images/events',
                         translit.slugify(instance.name) + ext)
Пример #30
0
def attach_images(filename):
    dirname = os.path.join(settings.MEDIA_ROOT, Item.IMAGE_UPLOAD_TO).encode('utf-8')

    articles = list()
    with zipfile.ZipFile(filename, "r") as f:
        for name in f.namelist():
            try:
                if type(name) is str:
                    unicode_name = name.decode('UTF-8')
                else:
                    unicode_name = name
            except UnicodeDecodeError:
                unicode_name = name.decode('cp866')
            unicode_name = unicode_name.split('.')[:-1]
            unicode_name = '.'.join(unicode_name)
            articles.append(unicode_name)
            unicode_name = slugify(unicode_name) + '.jpg'
            unicode_name = unicode_name.encode('utf-8')
            file_name = os.path.join(dirname, unicode_name)
            f2 = open(file_name, 'w')
            f2.write(f.read(name))
            f2.close()
    f.close()

    items = Item.objects.filter(article__in=articles)
    for item in items:
        item.resize_all()
Пример #31
0
 def post(self, request):
     if request.user.is_authenticated:
         b = Book(title=request.POST['title'],
                  text=request.POST['text'],
                  slug=slugify(request.POST['title']))
         try:
             b.save()
         except IntegrityError:
             b.slug += datetime.now().strftime('%Y:%m:%d %H:%M:%S:$f')
             b.title += datetime.now().strftime('%Y:%m:%d %H:%M:%S:$f')
             b.save()
         b.author.add(request.user)
         for g in loads(request.POST['genre']):
             req_g = Genre.objects.get(id=g)
             b.genre.add(req_g)
         b.save()
     # print(request.POST['title'])
     # print(request.POST['text'])
     # print(loads(request.POST['genre']))
     return JsonResponse({'ok': True})
Пример #32
0
    def save(self, *args, **kwargs):
        slug = slugify(self.name)
        print(slug)
        testSlug = SubCategory.objects.filter(name_slug=slug)
        print(testSlug)
        slugRandom = ''
        if not self.name_slug or testSlug:
            if testSlug:
                slugRandom = '-' + ''.join(
                    choices(string.ascii_lowercase + string.digits, k=2))
                self.name_slug = slug + slugRandom
            else:
                self.name_slug = slug
        self.name_lower = self.name.lower()
        # all_items = self.item_set.all()
        # for item in all_items:
        #     item.discount = self.discount
        #     item.save()

        super(SubCategory, self).save(*args, **kwargs)
Пример #33
0
    def test_create_post_for_superuser(self):
        data = {
            'title': 'New post from superuser',
            'body': 'Some other text...',
            'tags': [self.tag1.id]
        }

        self.client.login(username='******', password='******')
        response = self.client.post(reverse('post_new'), data)
        self.assertEqual(response.status_code, 302)

        new_post = Post.objects.filter(
            title__contains='New post from superuser').first()

        self.assertEqual(new_post.title, 'New post from superuser')
        self.assertEqual(new_post.body, 'Some other text...')
        self.assertEqual(new_post.tags.count(), 1)
        self.assertEqual(new_post.tags.get(id=self.tag1.id), self.tag1)
        self.assertEqual(new_post.slug, slugify('New post from superuser'))
        self.assertEqual(new_post.author, self.superuser)
        self.assertEqual(new_post.author_status, 'staff')
Пример #34
0
    def save(self, *args, **kwargs):
        """Транслитерация имени для урла"""

        if self.title is None or len(self.title) == 0:
            sub = self.sublocality if self.sublocality else ""
            try:
                rooms = u", %s-комнатная" % self.extraflat.rooms_number
            except:
                rooms = u""
            self.title = u"%s %s%s" % (self.category.name
                                       if self.category else "", sub, rooms)
        if self.slug is None or len(self.slug) == 0:
            self.slug = slugify(self.title)

        if self.price_usd is None and self.price_uah:
            self.price_usd = uah_to_usd(self.price_uah)

        if self.price_uah is None and self.price_usd:
            self.price_uah = usd_to_uah(self.price_usd)

        # if self.author and not self.author.is_admin:
        if not self.author or not self.author.is_admin:
            for cut in CuttingWords.objects.all():
                self.main_text = self.main_text.replace(cut.cut_words, '')

        super(Advert, self).save(*args, **kwargs)

        if self.raw_phones:
            current_phones = self.phone_set.all()
            current_numbers = current_phones.values_list('phone', flat=True)
            phones = [parse_int(x) for x in self.raw_phones.split(',')]
            for phone in phones:
                if phone not in current_numbers:
                    phone, c = Phone.objects.get_or_create(phone=phone)
                    self.phone_set.add(phone)
            for current_phone in current_phones:
                if current_phone.phone not in phones:
                    self.phone_set.remove(current_phone)

        super(Advert, self).save(*args, **kwargs)
Пример #35
0
    def on_callback(self, request):
        if request.method != 'POST':
            request.respond('This hook only supports POST method.')
        else:
            if request.GET.get('secret',
                               [None])[0] != self.bot.config.draftin_secret:
                request.respond('Wrong secret was specified')
            else:
                payload = anyjson.deserialize(request.POST['payload'][0])
                title = payload['name']
                content = payload['content']
                slug = slugify(title)
                created_at = times.to_universal(payload['created_at'])
                updated_at = times.to_universal(payload['updated_at'])
                timezone = self.bot.config.timezone

                with open(
                        os.path.join(self.bot.config.documents_dir,
                                     slug + '.md'), 'w') as f:

                    post_content = self.template.format(
                        title=title,
                        content=content,
                        slug=slug,
                        created_at=times.format(created_at, timezone,
                                                '%Y-%m-%d %H:%M'),
                        updated_at=times.format(updated_at, timezone,
                                                '%Y-%m-%d %H:%M'))
                    f.write(post_content.encode('utf-8'))

                try:
                    subprocess.check_output(self.bot.config.update_command,
                                            stderr=subprocess.STDOUT,
                                            shell=True)
                except subprocess.CalledProcessError, e:
                    request.respond(
                        u'I tried to update a blog, but there was an error: ' +
                        e.output.encode('utf-8'))
                else:
                    request.respond('Done, published')
Пример #36
0
def add_post(request):
    from pytils.translit import slugify

    if request.method == 'POST':

        title = request.POST.get('title')
        content = request.POST.get('content')

        upload_file = request.FILES['image']
        fs = FileSystemStorage()

        image = fs.save(upload_file.name, upload_file)

        post = Posts(title=title, content=content, image=image)
        post.author = request.user
        post.slug = slugify(post.title.replace(" ", "-").lower())

        post.save()

        return redirect('user_detail', pk=request.user.pk)

    return render(request, 'team/user_detail.html')
Пример #37
0
 def post(self, request, user_id=None, slug=None):
     if slug:
         account = models.Account.objects.get(user=get_object_or_404(
             models.User, pk=user_id),
                                              slug=slug)
         if not check_user(user_id, request.user):
             return redirect('wallet:access_denied')
         account_form = forms.AccountForm(request.POST,
                                          instance=account,
                                          files=request.FILES)
         if not account_form['image']:
             account_form['image'] = account.image.name
     else:
         account_form = forms.AccountForm(request.POST, files=request.FILES)
     if account_form.is_valid():
         new_account = account_form.save(commit=False)
         new_account.user = request.user
         new_account.slug = slugify(new_account.name)
         new_account.save()
         if new_account.image:
             edit_image(new_account.image.path)
     return redirect('wallet:all_accounts')
Пример #38
0
    def import_sections(self, xml_obj):
        if not self.model_section:
            return False
        log.info('import sections')
        data_list = []
        groups_list = []
        groups_update_parent = {}
        self.xml_sections = {xml: pk for pk, xml in self.model_section.objects.values_list('pk', 'xml_id')}

        for pos, third in enumerate(xml_obj.getchildren(), 1):
            groups_list = get_tree_from_lxml(third, u'Группы', u'Ид', {'_position_': pos}, groups_list)

        for group in groups_list:
            item_data = {
                'xml_id': group[u'Ид'],
                'position': group['_position_'],
                'title': group[u'Наименование'],
                'slug': translit.slugify(group[u'Наименование']),
                'lft': 0,
                'rght': 0,
                'tree_id': 0,
                'level': 0}

            if '_parent_' in group:
                if group['_parent_'] in self.xml_sections:
                    item_data['parent_id'] = self.xml_sections[group['_parent_']]
                else:
                    groups_update_parent[item_data['xml_id']] = group['_parent_']
            data_list.append(self.prepare_section_data(item_data, group))
        self.xml_sections = self.import_item_data(data_list, self.xml_sections, self.model_section)

        for xml_id, parent_xml_id in groups_update_parent.iteritems():
            self.model_section.objects.filter(pk=self.xml_sections[xml_id]).\
                update(parent=self.xml_sections[parent_xml_id])

        self.model_section.objects.rebuild()
        log.info('import sections time: %s' % (datetime.now() - self.exec_time))
        self.exec_time = datetime.now()
        return True
Пример #39
0
def add_bookmark(request):
    try:
        user = User.objects.get(username=request.user)
    except:
        return render(request, 'err_message.html', {'err_message': "Please log in or register!", 'home': 'active'})
    form = AddBookmarkForm(request.POST or None, initial={"added_by": user})
    # A HTTP POST?
    if request.method == 'POST':
        # Have we been provided with a valid form?
        if form.is_valid():
            newbookmark = form.save(commit=False)
            newbookmark.title = get_title(newbookmark.url)
            newbookmark.slugtitle = slugify(user.username + " " + newbookmark.title)
            newbookmark.content = download_links(newbookmark.url, newbookmark.slugtitle)
            try:
                form.save()
            except IntegrityError:
                return render(request, 'err_message.html', {'err_message': "The bookmark with the title exists!"})
            
            return redirect('/bookmarks/search/?value=' + newbookmark.title)
        else:
            print(form.errors)
    return render(request, 'add_bookmark.html', {'form': form, 'home': 'active'})
Пример #40
0
def upload_file(file, filename=None, collection=None):
    _filename, ext = os.path.splitext(file.filename)
    if not filename:
        filename = ''.join([slugify(_filename), ext])
    else:
        filename = ''.join([filename, ext])

    filename = secure_filename(filename)

    if collection:
        filepath = os.path.join(collection, filename)
    else:
        filepath = filename

    if file and allowed_filename(filename):
        if collection:
            create_folders(
                os.path.join(os.path.join(Config.MEDIA_DIR, collection)))
        file.save(os.path.join(Config.MEDIA_DIR, filepath))

        return filepath
    else:
        raise Exception('Not allowed file extension')
Пример #41
0
def get_names():
    url = 'https://goroskop365.ru/sovmestimost-imen/agnessa-averyan/'

    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    result = []
    man_values = []
    woman_values = []

    women_names_list = soup.find('select', {'name': 'female_name'})
    women_names_list = women_names_list.find_all('option')

    for woman_name in women_names_list:
        try:
            woman_values.append(woman_name['value'])
        except KeyError:
            continue

    men_names_list = soup.find('select', {'name': 'male_name'})
    men_names_list = men_names_list.find_all('option')

    for man_name in men_names_list:
        try:
            man_values.append(man_name['value'])
        except KeyError:
            continue

    for women_name in woman_values:
        for man_name in man_values:
            total_values = []
            _str = f'{women_name}-{man_name}'
            total_values.append(women_name)
            total_values.append(man_name)
            total_values.append(slugify(_str))
            result.append(total_values)
    return result
Пример #42
0
def create_album_for(instance=None, user=None, model = None, **kwargs):
    """
    Universal function for creating albums in different situations
    """
    if not user:
        user = instance.user

    ct = ContentType.objects.get_for_model(instance)
    album_name = u'Альбом %s' % smart_unicode(instance.__unicode__()) #had some issues
    slug = slugify(album_name+str(instance.id))
    album_dict = {
        'user': user,
        'name': album_name,
        'slug': slug,
        'content_type': ct,
        'object_pk': instance.pk,
        'description':u''
    }
    
    try:
        album = model.objects.get(content_type = ct, object_pk = instance.pk)
    except model.DoesNotExist:
        album = model.objects.create(**album_dict)
    return album
Пример #43
0
 def migrate_posts(self, topic, new_topic):
     posts = phpbb3Post.objects.filter(topic=topic)
     for post in posts:
         try:
             username = '******'
             if post.poster:
                 username = slugify(post.poster.username_clean)
             user = User.objects.get(username=username)
             created = datetime.fromtimestamp(post.time)
             updated = post.edit_time and datetime.fromtimestamp(
                 post.edit_time) or None
             body = phpbb_html2bbcode(post.text)
             parser = HTMLParser.HTMLParser()
             body = parser.unescape(body)
             body = re.sub(':' + post.bbcode_uid, '', body)
             #                body = clean_bbcode(post.text)
             Post.objects.create(topic=new_topic,
                                 user=user,
                                 created=created,
                                 updated=updated,
                                 user_ip=post.poster_ip,
                                 body=body)
         except User.DoesNotExist:
             pass
Пример #44
0
    def save(self, *args, **kwargs):
        if self.old_price == 0:
            self.old_price = self.price

        if self.discount > 0:
            self.discount_val = self.discount
            self.old_price = self.price
            self.price = self.price - (self.price * self.discount / 100)
        else:
            self.price = self.price + (self.old_price * self.discount_val /
                                       100)
            self.discount_val = 0

        slug = slugify(self.name)
        if self.name and not self.name_slug:
            testSlug = Item.objects.filter(name_slug=slug)
            slugRandom = ''
            if testSlug:
                slugRandom = '-' + ''.join(
                    choices(string.ascii_lowercase + string.digits, k=2))
            self.name_slug = slug + slugRandom
        if self.name:
            self.name_lower = self.name.lower()
        super(Item, self).save(*args, **kwargs)
Пример #45
0
    def test_delete(self):
        factory = APIRequestFactory()
        url = '/content_api/contents/'
        title = 'Sample content'
        content_text = 'Sample content text'
        data = {'title': title, 'content': content_text}
        request = factory.post(url, data)
        view = ContentViewSet.as_view({'post': 'create'})
        force_authenticate(request, user=self.user)
        response = view(request)
        content_pk = response.data.get('pk')
        self.assertIsNotNone(content_pk)
        self.assertEqual(response.data.get('slug'), slugify(title))
        content = Content.objects.get(title=title)
        self.assertEqual(content.content, content_text)

        url = '/content_api/contents/{}/'.format(content_pk)
        request = factory.delete(url, data)
        view = ContentViewSet.as_view({'delete': 'destroy'})
        force_authenticate(request, user=self.user)
        response = view(request, pk=1)
        self.assertIsNone(response.data)
        with self.assertRaises(Content.DoesNotExist):
            Content.objects.get(pk=content_pk)
Пример #46
0
 def __init__(self, title_ru="", title_en="", date="", tags=[]):
     self.title_ru = title_ru
     self.title_en = translit.slugify(title_ru)
     self.date = date
     self.tags = tags
Пример #47
0
 def save(self, *args, **kwargs):
     value = self.title
     self.slug = slugify(value)
     super().save(*args, **kwargs)
Пример #48
0
 def save(self, *args, **kwargs):
     self.slug = slugify(self.title)
     super(Group, self).save(*args, **kwargs)
Пример #49
0
from pytils import translit

# простая траслитерация/детранслитерация
# обратите внимание на то, что при транслитерации вход - unicode,
# выход - str, а в детранслитерации -- наоборот
#

print translit.translify(u"Это тест и ничего более")
#-> Eto test i nichego bolee

print translit.translify(
    u"Традиционно сложные для транслитерации буквы - подъезд, щука")
#-> Traditsionno slozhnyie dlya transliteratsii bukvyi - pod`ezd, schuka

# и теперь пытаемся вернуть назад... (понятно, что Э и Е получаются одинаково)
print translit.detranslify("Eto test i nichego bolee")
#-> Ето тест и ничего более

print translit.detranslify(
    "Traditsionno slozhnyie dlya transliteratsii bukvyi - pod`ezd, schuka")
#-> Традиционно сложные для транслитерации буквы - подъезд, щука

# и пригодные для url и названий каталогов/файлов транслиты
# dirify и slugify -- синонимы, действия абсолютно идентичны
print translit.slugify(
    u"Традиционно сложные для транслитерации буквы - подъезд, щука")
#-> traditsionno-slozhnyie-dlya-transliteratsii-bukvyi-podezd-schuka

# обратного преобразования, понятно, нет :)
Пример #50
0
 def save_slug(self, *args, **kwargs):
     self.slug = slugify(self.maker)
     super().save(*args, **kwargs)
Пример #51
0
 def save_news(self, *args, **kwargs):
     self.slug = slugify(self.title)
     super().save(*args, **kwargs)
Пример #52
0
 def save(self, *args, **kwargs):
     if self.auto_slug:
         self.name_slug = slugify(self.name)
     super(Promotion, self).save(*args, **kwargs)
Пример #53
0
 def save(self, *args, **kwargs):
     if not self.slug:
         self.slug = slugify(self.name)
     super().save(*args, **kwargs)
Пример #54
0
    def generate_leads_and_tasks(self, user, force=False):
        first_names = [
            u'Вадим', u'Матвей', u'Александр', u'Прохор', u'Николай', u'Семён',
            u'Глеб', u'Руслан', u'Алексей ', u'Егор', u'Валентин',
            u'Александр', u'Константин', u'Степан', u'Эрнст', u'Казимир',
            u'Богдан', u'Мстислав', u'Зиновий', u'Богдан', u'Владислав',
            u'Мир', u'Серафим', u'Глеб', u'Егор', u'Владлен', u'Сергей',
            u'Сергей', u'Алексей ', u'Артём'
        ]
        last_names = [
            u'Энговатов', u'Лобан', u'Яшвили', u'Пашков', u'Овсов', u'Гуринов',
            u'Лобов', u'Измайлов', u'Волынкин', u'Крутой', u'Никишов',
            u'Шапиро', u'Цаплин', u'Лавров', u'Монаков', u'Ельцин', u'Пургин',
            u'Посохов', u'Кярбер', u'Попырин', u'Ольховский', u'Быков',
            u'Федотов', u'Карташов', u'Катаев', u'Блок', u'Рыжанов',
            u'Колокольцов', u'Колесов'
        ]
        texts_for_message = [
            u'В какое время можно провести осмотр?',
            u'Какое состояние квартиры?',
            u'вы действительно хотите продать эту квартиру за такую цену?',
            u'Ипотека возможна?',
            u'готов купить прямо сейчас за наличные, но со скидкой 30000 грн',
            u'Не могу до вас дозвониться',
            u'Сколько собственников у квартиры?', u'Прямая продажа?',
            u'Почему так дорого?'
        ]
        realtor = user.get_realtor()
        leads_from_ad = 0

        if force:
            realtor.leads.all().delete()
            realtor.tasks.all().delete()
            Message.objects.filter(
                to_user__email__contains='user4demo').delete()
            Message.objects.filter(
                from_user__email__contains='user4demo').delete()

        # ~30 лидов (с разной степенью заполненности инфы и истории)
        for index in xrange(30):

            # 5 диалогов с юзерами (в тч 1 или 2 непрочитанных сообщения)
            if random.randrange(100) < 50 and leads_from_ad < 5:
                leads_from_ad += 1

                ad = user.ads.order_by('?').first()
                message = Message(basead=ad, to_user=user)
                message.from_user = User.objects.filter(
                    email__contains='user4demo').order_by('?').first()
                message.readed = True

                for i in xrange(0, 2):
                    message.id = None
                    message.time = datetime.datetime.now(
                    ) - datetime.timedelta(
                        seconds=random.randint(60 * 24, 60 * 24 * 30))
                    message.text = random.choice(texts_for_message)
                    if message.readed:
                        message.readed = random.randrange(100) < 50
                    message.save()

                lead = Lead.objects.get(owner=realtor, user=message.from_user)
                if random.randrange(100) < 30:
                    lead.phone = message.from_user.phones.first().number
                if random.randrange(100) < 30:
                    lead.email = message.from_user.email
                if random.randrange(100) < 30:
                    lead.label = random.choice(dict(LEAD_LABELS[1:]).keys())
                lead.save()
            else:
                lead = Lead.objects.create(
                    owner=realtor,
                    phone='38442000%d' % random.randrange(100, 1000),
                    name=u'%s %s' %
                    (random.choice(first_names), random.choice(last_names)))

                if random.randrange(100) < 30:
                    lead.email = '%s%s@%s' % (
                        slugify(lead.name), random.randint(60, 95),
                        random.choice(['ukr.net', 'gmail.com', 'mail.ru']))
                if random.randrange(100) < 70:
                    lead.label = random.choice(dict(LEAD_LABELS[1:]).keys())
                lead.save()

        # 3 встречи в календаре на будущее, 1 просроченная.
        for i in xrange(8):
            task = Task(owner=realtor, lead=lead, basead=lead.basead)
            task.lead = realtor.leads.order_by('?').first()
            task.start = datetime.datetime.now().replace(
                hour=random.randint(8, 18),
                minute=0) + datetime.timedelta(days=random.randint(-2, 4))
            task.end = task.start + datetime.timedelta(hours=1)
            task.name = random.choice([
                u'забрать ключи', u'показ квартиры', u'составление договора',
                u'регистрация квартиры'
            ])
            task.save()
Пример #55
0
 def preview(self, width, height):
     dimensions_folder = '{0}x{1}'.format(width, height)
     path_to_thumbnail_dir = os.path.join('/media', self.IMAGE_UPLOAD_TO, 'thumbnails', dimensions_folder)
     return '{0}/{1}.jpg'. format(path_to_thumbnail_dir, slugify(self.article)).encode('utf-8')
Пример #56
0
def gen_slug(s):
    slug = slugify(s)
    return slug + '-' + str(int(time()))
 def save(self, *args, **kwargs):
     self.slug = slugify(self.user, )
     super(Author, self).save(*args, **kwargs)
Пример #58
0
def get_slugified_name(filename):
    slugified = slugify(filename)
    return slugified or get_random_string()
Пример #59
0
 def save(self, *args, **kwargs):
     self.slug = slugify(self.user.get_fio() or self.user.username)
     super().save(*args, **kwargs)
Пример #60
0
 def save(self, *args, **kwargs):
     if not self.id:
         self.slug = slugify(self.title)  #чем заполнить, заголовком
         #super(Content, self).save(*args, **kwargs)#модель Content считается родителем, сохранить любые аргументы
         super(Content, self).save(*args, **kwargs)