Example #1
0
def createSoftware(request):

    if request.method == 'POST':
        form = CreateSoftwareForm(request.POST)

        if form.is_valid():
            name = form.cleaned_data['name']
            extension = form.cleaned_data['extension']
            licence = form.cleaned_data['licence']
            print(licence)

            software = Software(name=name,
                                extension=extension,
                                licence=licence)

            software.save()

            messages.add_message(request, messages.INFO,
                                 'Le logiciel à été créé')
            return redirect('software-list', )

        else:
            pass

    else:
        form = CreateSoftwareForm()

    return render(request, "software/create.html", {
        'form': form,
    })
Example #2
0
    def add(self, name, version, type, dependency_software):
        software = Software(name=name, version=version, type=type)
        software.save()

        if len(dependency_software) > 0:
            self.fill_dependency_list(software, dependency_software)

        return software
Example #3
0
def review_page(request, id):

    # Объявление начальных значений переменных
    similar_block = ""
    similar_tags_block = ""
    user = None

    try:

        # Получение текущего пользователя
        user = CustomUser.get_user(request)

        this_object = Review.objects.get(id=id)

        # Получаем список приложений данного отзыва
        review_img = this_object.get_addition()

        software = Software()
        photo_dict = {}

        if this_object.software is not None:

            software = Software.objects.get(id=this_object.software.id)

            if software:

                soft_photo = software.get_main_photo()

                if soft_photo is not None:
                    for s in soft_photo:
                        photo_dict[software.id] = s

                # Второстепенные объекты - похожие ПО
                similar_block = software_views.render_similars(
                    software, id_widget="same_software")
                similar_tags_block = software_views.render_similars_tags(
                    software)

    # except:
    #     raise Http404("Отзыв не найден")

    except Exception as error:
        pass
        dbl.log("Ошибка работы с отзывом" + str(error))

    rating = [1, 2, 3, 4, 5]
    return render(
        request, 'review/review.html', {
            'review': this_object,
            'rating': rating,
            'review_img': review_img,
            'software': software,
            'photo_dict': photo_dict,
            'similar_block': similar_block,
            'similar_tags_block': similar_tags_block,
            'user': user
        })
Example #4
0
def index(request):

    # Блок новинок
    new_soft = Software.get_new()
    dbl.log("0")

    # Ф-ия составления html кода горихонтальных виджетов
    block_new_soft = render_horizontal_widgets(new_soft,
                                               id_widget="new_software")

    # Блок видов ПО
    site_soft = Software.software_list_by_type(cl_val=2)
    block_site_soft = render_horizontal_widgets(
        site_soft,
        id_widget="site_software",
        display_type="style=display:none;",
        widget_shell=False,
        show_more="/softwares/?classification_1_value_2=2")

    desktop_soft = Software.software_list_by_type(cl_val=1)
    block_desktop_soft = render_horizontal_widgets(
        desktop_soft,
        id_widget="desktop_software",
        widget_shell=False,
        show_more="/softwares/?classification_1_value_1=1")

    mobile_soft = Software.software_list_by_type(cl_val=3)
    block_mobile_soft = render_horizontal_widgets(
        mobile_soft,
        id_widget="mobile_software",
        display_type="style=display:none;",
        widget_shell=False,
        show_more="/softwares/?classification_1_value_3=3")

    # Блок отзывов
    list_review = Review.objects.all().filter(
        date_of_delete=None, visibility=True,
        star__gte=4).order_by('-date')[:3]

    # Блок тегов
    list_tag = Tag.objects.all().filter(date_of_delete=None,
                                        visibility=True).order_by('name')

    return render(
        request, 'main/index.html', {
            'block_new_soft': block_new_soft,
            'block_site_soft': block_site_soft,
            'block_desktop_soft': block_desktop_soft,
            'block_mobile_soft': block_mobile_soft,
            'list_review': list_review,
            'list_tag': list_tag
        })
Example #5
0
def upload_stw(request):
    form = OForm()
    if request.method == "POST":
        myfile = request.FILES['stw']
        fs = FileSystemStorage()
        filename = fs.save(myfile.name, myfile)
        uploaded_file_url = filename
        softwares = Software(title=request.POST.get('title'),
                             name=request.POST.get('name'),
                             stw=uploaded_file_url)
        softwares.save()
        return HttpResponseRedirect('/download/soft_list')
    return render(request, "download/upload.html", {"form": form})
Example #6
0
def favourites(request):
    # Получения пользователя
    user = CustomUser.get_user(request)
    dbl.log("1")

    if user:
        dbl.log("1")
        favourites = Software.get_favourites_by_user(user)
        dbl.log("1"+str(favourites))

        # Словарь главных фото
        photo_dict = {}
        dbl.log("1")
        for soft in favourites:

            # Получение главного фото
            soft_photo = soft.get_main_photo()

            if soft_photo is not None:

                # Здесь перебор в цикле, но на самом деле в этом запросе всего 1 объект
                for s in soft_photo:
                    dbl.log("1")
                    photo_dict[soft.id] = s
        dbl.log("1")
        response= render(request, 'user/favourites.html', {'favourites':favourites, 'user':user, 'photo_dict':photo_dict})
        return response
Example #7
0
def add_software(request):
    """
    Show the software form, and capture the information
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect('/accounts/login?next=%s' % request.path)

    original_id = request.GET.get('oid', None)

    if request.method == 'POST':
        new_data = request.POST.copy()
        new_data.update(request.FILES)
        form = SoftwareForm(new_data)

        if form.is_valid():
            new_software = Software(user=request.user,
                                    title=form.cleaned_data['title'])
            if original_id:
                new_software.original_id = original_id
            new_software.save()

            try:
                new_revision = Revision(
                    software=new_software,
                    version=form.cleaned_data['version'],
                    authors=form.cleaned_data['authors'],
                    contact=form.cleaned_data['contact'],
                    short_description=form.cleaned_data['short_description'],
                    description=form.cleaned_data['description'],
                    changes='Initial Announcement on mloss.org.',
                    project_url=form.cleaned_data['project_url'],
                    tags=form.cleaned_data['tags'],
                    language=form.cleaned_data['language'],
                    operating_systems=form.cleaned_data['operating_systems'],
                    dataformats=form.cleaned_data['dataformats'],
                    os_license=form.cleaned_data['os_license'],
                    paper_bib=form.cleaned_data['paper_bib'],
                    download_url=form.cleaned_data['download_url'],
                    tarball=form.cleaned_data['tarball'],
                    thumbnail=form.cleaned_data['thumbnail'],
                    screenshot=form.cleaned_data['screenshot'],
                )
                if original_id:
                    new_revision.original_id = original_id

                save_tarball(request, new_revision)
                save_images(request, new_revision, old_revision=None)
                new_revision.save()
                return HttpResponseRedirect(new_revision.get_absolute_url())
            except:
                new_software.delete()
    else:
        form = SoftwareForm(initial={
            'user': request.user,
            'changes': 'Initial Announcement on mloss.org.'
        })

    return render_to_response('software/software_add.html', {'form': form},
                              context_instance=RequestContext(request))
Example #8
0
def post_api_data(request):
    if request.method == "POST":
        software = Software()
        json_body = request.body.decode('utf-8')
        json_data = json.loads(json_body)
        software.title = json_data['title']
        software.name = json_data['name']
        software.stw = json_data['stw']
        software.save()
        return JsonResponse("Uploded !", safe=False)
Example #9
0
def insert_description(lang):
    if not SoftwareData.init_language(lang.lang_code):
        print "No data for lang:", lang
    else:
        print "\ntotal for %s: %s" % (lang.lang_code, SoftwareData.select().count())
        i = 0
        for s in SoftwareData.select():
            try:
                software_obj = Software.objects.get(pkg_name=s.pkg_name)
            except:
                software_obj = Software(pkg_name=s.pkg_name)
                software_obj.save()

            try:
                l10n_obj = SoftwareL10n.objects.get(software=software_obj, language_code=lang)
            except:
                l10n_obj = SoftwareL10n(software=software_obj, language_code=lang, alias_name=s.alias_name, short_desc=s.short_desc, long_desc=s.long_desc)
                l10n_obj.save()

            i += 1
            print "\rProgress: %s" % i,
Example #10
0
def add_software(request):
    """
    Show the software form, and capture the information
    """

    if not request.user.is_authenticated():
       return HttpResponseRedirect('/accounts/login?next=%s' % request.path)

    original_id = request.GET.get('oid', None)

    if request.method == 'POST':
        new_data = request.POST.copy()
        new_data.update(request.FILES)
        form = SoftwareForm(new_data)

        if form.is_valid():
            new_software = Software(user=request.user,
                                    title=form.cleaned_data['title'])
            if original_id:
                new_software.original_id = original_id
            new_software.save()

            try:
                new_revision = Revision(software=new_software,
                                        version=form.cleaned_data['version'],
                                        authors=form.cleaned_data['authors'],
                                        contact=form.cleaned_data['contact'],
                                        short_description=form.cleaned_data['short_description'],
                                        description=form.cleaned_data['description'],
                                        changes='Initial Announcement on mloss.org.',
                                        project_url=form.cleaned_data['project_url'],
                                        tags=form.cleaned_data['tags'],
                                        language=form.cleaned_data['language'],
                                        operating_systems = form.cleaned_data['operating_systems'],
                                        dataformats = form.cleaned_data['dataformats'],
                                        os_license=form.cleaned_data['os_license'],
                                        paper_bib = form.cleaned_data['paper_bib'],
                                        download_url=form.cleaned_data['download_url'],
                                        tarball=form.cleaned_data['tarball'],
                                        thumbnail=form.cleaned_data['thumbnail'],
                                        screenshot=form.cleaned_data['screenshot'],
                                        )
                if original_id:
                    new_revision.original_id = original_id

                save_tarball(request, new_revision)
                save_images(request, new_revision, old_revision = None)
                new_revision.save()
                return HttpResponseRedirect(new_revision.get_absolute_url())
            except:
                new_software.delete()
    else:
        form = SoftwareForm(initial={'user':request.user,
            'changes':'Initial Announcement on mloss.org.'})

    return render_to_response('software/software_add.html',
                              { 'form': form },
                              context_instance=RequestContext(request))
Example #11
0
def downloads(request):
    # Получения пользователя
    user = CustomUser.get_user(request)

    if user:
        downloads = Software.get_downloads_by_user(user)

        # Словарь главных фото
        photo_dict = {}

        for soft in downloads:

            # Получение главного фото
            soft_photo = soft.get_main_photo()

            if soft_photo is not None:

                # Здесь перебор в цикле, но на самом деле в этом запросе всего 1 объект
                for s in soft_photo:
                    photo_dict[soft.id] = s

        response= render(request, 'user/downloads.html', {'downloads':downloads, 'user':user, 'photo_dict':photo_dict})
        return response
Example #12
0
    def insert_into_database(self):
        """
        For a given CRANPackage construct Software object and insert it into database
        """
        try:
            me = User.objects.get(username=settings.R_CRAN_BOT)
        except User.DoesNotExist:
            import string
            from random import Random
            newpasswd = ''.join( Random().sample(string.letters+string.digits, 32) ) 

            user = User.objects.create_user(settings.R_CRAN_BOT, settings.R_CRAN_BOT + '@mloss.org', newpasswd)
            user.save()
            me = User.objects.get(username=settings.R_CRAN_BOT)


        #don't insert crappy items having future date
        if self.date<datetime.datetime.now():
            # check whether the package exists (without prefix)
            dbpkg = Software.objects.filter(title=self.name)
            if dbpkg.count() > 0:
                return

            # check whether the package exists (without prefix)
            dbpkg = Software.objects.filter(user=me, title=self.prefix+self.name)
            if dbpkg.count() == 0:
                # if not create a new Software project
                spkg = Software(user=me, title=self.prefix+self.name)
                spkg.save(silent_update=True)
                try:
                    srev = Revision(software=spkg, version=self.version, short_description=self.short_description,
                                    description=self.description, os_license=self.os_license,
                                    language='R', operating_systems='agnostic',
                                    download_url=self.url, project_url=self.url, tags='r-cran',
                                    pub_date=self.date, updated_date=self.date, authors=self.author,
                                    changes="Initial Announcement on mloss.org by r-cran-robot")
                    srev.save(silent_update=True)
                except:
                    spkg.delete()
            else:
                #print 'Package ' + self.name + ' found, UPDATING...'
                assert(dbpkg.count() == 1)
                spkg = dbpkg[0]

                try:
                    srev = Revision.objects.get(software=spkg, revision=0)
                    # Don't mess around with manual entries.
                    if srev.tags != 'r-cran':
                        return
                except ObjectDoesNotExist:
                    srev = None

                if srev and srev.version == self.version:
                    srev.short_description=self.short_description
                    srev.description=self.description
                    srev.os_license=self.os_license
                    srev.download_url=self.url
                    srev.project_url=self.url
                    srev.updated_date=self.date
                    srev.authors=self.author
                    srev.changes="Fetched by r-cran-robot on %s" % str(datetime.datetime.now())
                else:
                    srev = Revision(software=spkg, version=self.version, short_description=self.short_description,
                                    description=self.description, os_license=self.os_license,
                                    language='R', operating_systems='agnostic',
                                    download_url=self.url, project_url=self.url, tags='r-cran',
                                    pub_date=self.date, updated_date=self.date, authors=self.author,
                                    changes="Fetched by r-cran-robot on %s" % str(datetime.datetime.now()))
                    spkg.increment_revisions()
                srev.save(silent_update=True)
Example #13
0
def discussions(request, type='', id=0):

    similar_list = []
    discussion_list = []
    discussion_comment_block = ""
    similar_block = ""
    similar_tags_block = ""
    software = Software()

    try:

        if len(type) > 0 and id > 0:

            if type == 'softwares':

                software = Software.objects.get(id=id)

                # list_disc_id = []

                # # Хэш комментариев к обсуждениям
                # comments_dict = {}

                # discussion_list = Discussion.objects.all().filter(date_of_delete=None, visibility=True, software=id).order_by('date')

                # for d in discussion_list:

                #     list_disc_id.append(d.id)

                # comment_list = Comment.objects.filter(date_of_delete=None, visibility=True, discussion__in=list_disc_id).order_by('date')

                # for discussion in discussion_list:

                #     list_comment_for_one_disc = []

                #     for comment in comment_list:

                #         if comment.discussion == discussion:

                #             list_comment_for_one_disc.append(comment)

                #     # Добавляем ключ и значение в словарь
                #     comments_dict[discussion.id] = list_comment_for_one_disc

                discussion_comment_block = render_discussion_comment(
                    software, request, limit=0, show_more=False)

                dbl.log("Ошибка 1 ")
                # Второстепенные объекты - похожие ПО
                similar_block = software_views.render_similars(
                    software, id_widget="same_software")
                dbl.log("Ошибка 2 ")
                similar_tags_block = software_views.render_similars_tags(
                    software)

            return render(
                request, 'discussion/discussions.html', {
                    'discussion_comment_block': discussion_comment_block,
                    'software': software,
                    'similar_block': similar_block,
                    'similar_tags_block': similar_tags_block
                })

    except Exception as error:
        pass
        dbl.log("Ошибка работы " + str(error))

    # except:
    #     raise Http404("Такого обсуждения нет, попробуйте позже")

    # return render(request, 'discussion/discussions.html', {'discussion_list':discussion_list, 'comments_dict':comments_dict,
    # 'software':software, 'similar_list':similar_list})
    raise Http404("Такого обсуждения нет, попробуйте позже")
    def get_validation_structure(self):
        test_software1 = Software(name="example", version="1.0", type="software_type")
        test_software2 = Software(name="example", version="1.1", type="software_type")
        validation_exceptions = ["ValidationRuleException", "ValidationRuleVersionException"]

        return [test_software1, test_software2], validation_exceptions