コード例 #1
0
ファイル: models.py プロジェクト: migunow/erofeimarkov
    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)
コード例 #2
0
    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
ファイル: views.py プロジェクト: stamigos/BBCard
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
ファイル: admin.py プロジェクト: SlavaAf/partcom
 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
ファイル: models.py プロジェクト: Haikson/virtenviro-news
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
ファイル: views.py プロジェクト: alifanov/Logos
 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
ファイル: models.py プロジェクト: vadosl/vitalvas.com
	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
ファイル: files.py プロジェクト: od-5/distrubutor
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
ファイル: pages.py プロジェクト: w0rm/pre-stonegarden-dev
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
ファイル: models.py プロジェクト: dkoldyaev/basis.ru
    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
ファイル: models.py プロジェクト: avkozlov/vitrinaburg
    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
ファイル: models.py プロジェクト: KopBob/Textum
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
ファイル: forms.py プロジェクト: Anber/django-formfieldset
 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
ファイル: models.py プロジェクト: ryates/django-blogs
 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
ファイル: views.py プロジェクト: SlavaAf/partcom
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
ファイル: parser.py プロジェクト: so1337/one_of_projects
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
ファイル: views.py プロジェクト: alifanov/Logos
 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
ファイル: models.py プロジェクト: avkozlov/vitrinaburg
    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
ファイル: views.py プロジェクト: alifanov/Logos
 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
ファイル: rename_photo.py プロジェクト: od-5/crm
 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
ファイル: models.py プロジェクト: exezaid/Dpress
 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
ファイル: models.py プロジェクト: quoter/protocoller
 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
ファイル: load_csv.py プロジェクト: migunow/erofeimarkov
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
ファイル: models.py プロジェクト: skiboorg/khimiya
    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
ファイル: models.py プロジェクト: ThiccPadx/realtyboard
    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
ファイル: views.py プロジェクト: Bob-Al-Max/straus-yaica
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
ファイル: views.py プロジェクト: balstepan/myMoney
 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
ファイル: models.py プロジェクト: ibitprogress/minus-master
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
ファイル: migration.py プロジェクト: lnroma/aor
 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
ファイル: models.py プロジェクト: skiboorg/docs_api
    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
ファイル: test_simple_content.py プロジェクト: Haikson/sqtest
    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
ファイル: models.py プロジェクト: MuctepK/movie_project
 def save(self, *args, **kwargs):
     value = self.title
     self.slug = slugify(value)
     super().save(*args, **kwargs)
コード例 #48
0
ファイル: models.py プロジェクト: tempresdisk/blogging_api
 def save(self, *args, **kwargs):
     self.slug = slugify(self.title)
     super(Group, self).save(*args, **kwargs)
コード例 #49
0
ファイル: translit.py プロジェクト: Daiver/translate
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
ファイル: models.py プロジェクト: ChristinaArtiukh/myblog
 def save_slug(self, *args, **kwargs):
     self.slug = slugify(self.maker)
     super().save(*args, **kwargs)
コード例 #51
0
ファイル: models.py プロジェクト: ChristinaArtiukh/myblog
 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
ファイル: models.py プロジェクト: migunow/erofeimarkov
 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()))
コード例 #57
0
 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)