Esempio n. 1
0
 def _start(self):
     if not self.model.get_option("license_accepted_and_read"):
         self.view_license(already_accepted=False)
         log_writer("width",self.winfo_screenwidth())
         log_writer("height",self.winfo_screenheight())
     
     
     self.mainloop()
Esempio n. 2
0
 def _start(self):
     if not self.model.get_option("license_accepted_and_read"):
         self.view_license(already_accepted=False)
         log_writer("width",self.winfo_screenwidth())
         log_writer("height",self.winfo_screenheight())
     
     
     self.mainloop()
Esempio n. 3
0
def get_site_info(start_date, end_date):
    headers = {'Authorization': 'OAuth ' + cfg.token}
    sources_sites = {
        'metrics':
        'ym:s:visits,ym:s:users,ym:s:pageviews,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds',
        'dimensions':
        'ym:s:startURL,ym:s:startURLPathLevel1,ym:s:startURLPathLevel2,ym:s:startURLPathLevel3,'
        'ym:s:startURLPathLevel4',
        'date1':
        start_date,
        'date2':
        end_date,
        'ids':
        23871871,
        'filters':
        "ALL(ym:s:startURL=='https://mbufk.roskazna.gov.ru/')"
    }

    response = requests.get('https://api-metrika.yandex.net/stat/v1/data',
                            params=sources_sites,
                            headers=headers)
    lw.log_writer(f"server response code {response.status_code}")

    metrika_data = response.json()

    if response.status_code != 200 or metrika_data['total_rows'] == 0:
        metrika_df = pd.DataFrame(columns=[
            'startURL', 'Level1', 'Level2', 'Level3', 'Level4', 'visits',
            'users', 'pageviews', 'bounceRate', 'pageDepth',
            'avgVisitDurationSeconds'
        ])
        metrika_df.loc[0] = '-', '-', '-', '-', 0, 0, 0, 0, 0, 0, 0

    else:
        list_of_dicts = []
        dimensions_list = metrika_data['query']['dimensions']
        metrics_list = metrika_data['query']['metrics']
        for data_item in metrika_data['data']:
            d = {}
            for i, dimension in enumerate(data_item['dimensions']):
                d[dimensions_list[i]] = dimension['name']
            for i, metric in enumerate(data_item['metrics']):
                d[metrics_list[i]] = metric
            list_of_dicts.append(d)

        metrika_df = pd.DataFrame(list_of_dicts)
        metrika_df.columns = [
            'startURL', 'Level1', 'Level2', 'Level3', 'Level4', 'visits',
            'users', 'pageviews', 'bounceRate', 'pageDepth',
            'avgVisitDurationSeconds'
        ]

    return metrika_df
Esempio n. 4
0
def update_figure_user(start_date_user, end_date_user, choosen_month,
                       choosen_week, choice_type_period):
    if choice_type_period == 'm':
        period_choice = True
        week_choice = True
        month_choice = False
        lw.log_writer(f'User choice "month = {choosen_month}"')

        if int(choosen_month) > 1:
            etsp_prev_filt_df = etsp_df[etsp_df['month_open'] == (
                int(choosen_month) - 1)]
            sue_prev_filt_df = sue_df[sue_df['month_open'] == (
                int(choosen_month) - 1)]
            osp_prev_filt_df = osp_df[osp_df['month_open'] == (
                int(choosen_month) - 1)]
        else:
            etsp_prev_filt_df = etsp_df[etsp_df['month_open'] == 12]
            sue_prev_filt_df = sue_df[sue_df['month_open'] == 12]
            osp_prev_filt_df = osp_df[osp_df['month_open'] == 12]

        etsp_filtered_df = etsp_df[etsp_df['month_open'] == int(choosen_month)]
        sue_filtered_df = sue_df[sue_df['month_open'] == int(choosen_month)]
        osp_filtered_df = osp_df[osp_df['month_open'] == int(choosen_month)]
        sue_incidents_filtered_df = sue_incidents_df[
            sue_incidents_df['month_open'] == int(choosen_month)]
        print(sue_incidents_filtered_df)

        start_date_metrika = ld.GetMonthPeriod(ld.current_year,
                                               choosen_month)[0]
        end_date_metrika = ld.GetMonthPeriod(ld.current_year, choosen_month)[1]

        filtered_metrika_df = si.get_site_info(start_date_metrika,
                                               end_date_metrika)

    elif choice_type_period == 'p':
        period_choice = False
        week_choice = True
        month_choice = True
        lw.log_writer(
            f'User choice "range period start = {start_date_user}, end = {end_date_user}"'
        )

        if int(start_date_user[5:7]) > 1:
            etsp_prev_filt_df = etsp_df[etsp_df['month_open'] == (
                int(start_date_user[5:7]) - 1)]
            sue_prev_filt_df = sue_df[sue_df['month_open'] == (
                int(start_date_user[5:7]) - 1)]
            osp_prev_filt_df = osp_df[osp_df['month_open'] == (
                int(start_date_user[5:7]) - 1)]
        else:
            etsp_prev_filt_df = etsp_df[etsp_df['month_open'] == 12]
            sue_prev_filt_df = sue_df[sue_df['month_open'] == 12]
            osp_prev_filt_df = osp_df[osp_df['month_open'] == 12]

        etsp_filtered_df = etsp_df[(etsp_df['start_date'] >= start_date_user)
                                   & (etsp_df['start_date'] <= end_date_user)]
        sue_filtered_df = sue_df[(sue_df['start_date'] >= start_date_user)
                                 & (sue_df['start_date'] <= end_date_user)]
        osp_filtered_df = osp_df[(osp_df['start_date'] >= start_date_user)
                                 & (osp_df['start_date'] <= end_date_user)]
        sue_incidents_filtered_df = sue_incidents_df[
            (sue_incidents_df['Дата обращения'] >= start_date_user)
            & (sue_incidents_df['Дата обращения'] <= end_date_user)]

        start_date_metrika = start_date_user
        end_date_metrika = end_date_user

        filtered_metrika_df = si.get_site_info(start_date_metrika,
                                               end_date_metrika)

    else:
        period_choice = True
        week_choice = False
        month_choice = True
        lw.log_writer(
            f'User choice "week = {choosen_week} ({ld.GetPeriod(ld.current_year, choosen_week)})"'
        )

        if int(choosen_week) > 1:
            etsp_prev_filt_df = etsp_df[etsp_df['week_open'] == (
                int(choosen_week) - 1)]
            sue_prev_filt_df = sue_df[sue_df['week_open'] == (
                int(choosen_week) - 1)]
            osp_prev_filt_df = osp_df[osp_df['week_open'] == (
                int(choosen_week) - 1)]
        else:
            etsp_prev_filt_df = etsp_df[etsp_df['week_open'] == 52]
            sue_prev_filt_df = sue_df[sue_df['week_open'] == 52]
            osp_prev_filt_df = osp_df[osp_df['week_open'] == 52]

        etsp_filtered_df = etsp_df[etsp_df['week_open'] == int(choosen_week)]
        sue_filtered_df = sue_df[sue_df['week_open'] == int(choosen_week)]
        osp_filtered_df = osp_df[osp_df['week_open'] == int(choosen_week)]
        sue_incidents_filtered_df = sue_incidents_df[
            sue_incidents_df['week_open'] == int(choosen_week)]

        start_date_metrika = ld.GetPeriod(ld.current_year, choosen_week,
                                          's')[0]
        end_date_metrika = ld.GetPeriod(ld.current_year, choosen_week, 's')[1]

        filtered_metrika_df = si.get_site_info(start_date_metrika,
                                               end_date_metrika)

    etsp_count_tasks = etsp_filtered_df['count_task'].sum()
    sue_count_tasks = sue_filtered_df['count_task'].sum()
    osp_count_tasks = osp_filtered_df['count_task'].sum()

    etsp_prev_count_tasks = etsp_prev_filt_df['count_task'].sum()
    sue_prev_count_tasks = sue_prev_filt_df['count_task'].sum()
    osp_prev_count_tasks = osp_prev_filt_df['count_task'].sum()

    etsp_avg_time = ld.CountMeanTime(etsp_filtered_df)
    sue_avg_time = ld.CountMeanTime(sue_filtered_df)
    osp_avg_time = ld.CountMeanTime(osp_filtered_df)

    visits = str(int(filtered_metrika_df['visits'][0]))
    users = str(int(filtered_metrika_df['users'][0]))
    pageviews = str(int(filtered_metrika_df['pageviews'][0]))
    bounceRate = ''.join(
        [str(round(filtered_metrika_df['bounceRate'][0], 2)), "%"])
    pageDepth = str(round(filtered_metrika_df['pageDepth'][0], 2))
    avgVisitDurSec = str(
        dt.timedelta(seconds=round(
            filtered_metrika_df['avgVisitDurationSeconds'][0], 0)))[2:]
    site_stat_data = [{
        'Визиты': visits,
        'Посетители': users,
        'Просмотры': pageviews,
        'Отказы': bounceRate,
        'Глубина просмотра': pageDepth,
        'Время на сайте': avgVisitDurSec
    }]

    fig_support = go.Figure(
        go.Bar(y=[etsp_count_tasks, sue_count_tasks, osp_count_tasks],
               x=['ЕЦП', 'СУЭ', 'ОСП'],
               base=0,
               marker=dict(color=['#a92b2b', '#37a17c', '#a2d5f2']),
               text=[etsp_count_tasks, sue_count_tasks, osp_count_tasks],
               textposition='auto'))
    fig_support.update_layout(autosize=True,
                              legend=dict(orientation="h",
                                          yanchor="bottom",
                                          y=0.2,
                                          xanchor="right",
                                          x=0.5),
                              paper_bgcolor='#ebecf1',
                              plot_bgcolor='#ebecf1')
    fig_support.update_xaxes(ticks="inside", tickson="boundaries")

    total_curr_tasks = etsp_count_tasks + sue_count_tasks + osp_count_tasks
    total_prev_tasks = etsp_prev_count_tasks + sue_prev_count_tasks + osp_prev_count_tasks
    diff_tasks = total_curr_tasks - total_prev_tasks

    if diff_tasks > 0:
        style_tasks = {'font-size': '2em', 'color': 'green'}
        diff_tasks = '+ ' + str(diff_tasks)
    elif diff_tasks == 0:
        style_tasks = {'font-size': '2em'}
        diff_tasks = str(diff_tasks)
    else:
        style_tasks = {'font-size': '2em', 'color': 'red'}
        diff_tasks = str(diff_tasks)

    total_tasks = ''.join([str(total_curr_tasks), ' ( ', diff_tasks, ' )'])

    total_curr_users = len(etsp_filtered_df['user'].unique()) + len(
        sue_filtered_df['user'].unique()) + len(
            osp_filtered_df['user'].unique())
    total_prev_users = len(etsp_prev_filt_df['user'].unique()) + len(
        sue_prev_filt_df['user'].unique()) + len(
            osp_prev_filt_df['user'].unique())
    diff_users = total_curr_users - total_prev_users

    if diff_users > 0:
        style_users = {'font-size': '2em', 'color': 'green'}
        diff_users = '+ ' + str(diff_users)
    elif diff_users == 0:
        style_users = {'font-size': '2em'}
        diff_users = str(diff_users)
    else:
        style_users = {'font-size': '2em', 'color': 'red'}
        diff_users = str(diff_users)

    total_users = ''.join([str(total_curr_users), ' ( ', diff_users, ' )'])

    labels_figure_support = ["ЕЦП", "СУЭ", "ОСП"]
    values_figure_support = [
        etsp_filtered_df['count_task'].sum(),
        sue_filtered_df['count_task'].sum(),
        osp_filtered_df['count_task'].sum()
    ]
    colors = ['#a92b2b', '#37a17c', '#a2d5f2']

    fig = go.Figure(
        go.Pie(labels=labels_figure_support,
               values=values_figure_support,
               marker_colors=colors))
    fig.update_traces(hoverinfo="label+percent+name")

    fig.update_layout(paper_bgcolor='#ebecf1', showlegend=True)

    etsp_top_user_filtered_df = ld.TopUser(etsp_filtered_df)

    sue_top_user_filtered_df = ld.TopUser(sue_filtered_df)

    if len(sue_incidents_filtered_df) > 0:
        style_data = dict(width='20%', backgroundColor='#ff847c')
        tooltip_data = [{
            column: {
                'value': str(value),
                'type': 'markdown'
            }
            for column, value in row.items()
        } for row in sue_incidents_filtered_df.to_dict('records')]

    else:
        style_data = dict(width='20%', backgroundColor='#c4fbdb')
        sue_incidents_filtered_df = ld.NoIncidents()
        tooltip_data = sue_incidents_filtered_df.to_dict('records')

    return (period_choice, month_choice, week_choice, fig_support, total_tasks,
            style_tasks, total_users, style_users, etsp_avg_time,
            sue_avg_time, osp_avg_time, fig,
            sue_incidents_filtered_df.to_dict('records'), style_data,
            etsp_top_user_filtered_df.to_dict('records'),
            sue_top_user_filtered_df.to_dict('records'), site_stat_data,
            tooltip_data)
Esempio n. 5
0
                    messages.append(_(u"Déclaration du type de document introuvable, insérez <!DOCTYPE html>"))
                if not parsed_html.doctype_first:
                    messages.append(_(u"La déclaration du type de document doit se trouver en haut du document"))
                for should, closed in parsed_html.close_before_error_list:
                    messages.append(_(u"Vous devez fermer {} avant {}").format(should, closed))
                if len(parsed_html.start_list) > len(parsed_html.end_list):
                    messages.append(_(u"Il faut fermer toutes les balises !"))
                for parent, child in parsed_html.must_parent_errors:
                    messages.append(
                        _(u"Les balises {} doivent êtres contenus dans des balises {}").format(child, parent)
                    )
            # elif

        return messages

    def return_fragment(self, wanted="html"):
        for inline in self.tabs_html[self.selected_tab].inlines:
            if inline[0] == wanted:
                return inline[1]
        else:
            print("wanted fragment not found")

    def return_copy_document(self, wanted="html"):
        return self.tabs_html[self.selected_tab].text


if __name__ == "__main__":
    log_writer("platform", platform.platform())
    log_writer("python_build", platform.python_build())
    WebSpreeInstance = WebSpree()
Esempio n. 6
0
                if not parsed_html.declaration:
                    messages.append(_(u"Déclaration du type de document introuvable, insérez <!DOCTYPE html>"))
                if not parsed_html.doctype_first:
                    messages.append(_(u"La déclaration du type de document doit se trouver en haut du document"))
                for should,closed in parsed_html.close_before_error_list:
                    messages.append(_(u"Vous devez fermer {} avant {}").format(should,closed))
                if len(parsed_html.start_list) > len(parsed_html.end_list):
                    messages.append(_(u"Il faut fermer toutes les balises !"))
                for parent,child in parsed_html.must_parent_errors:
                    messages.append(_(u"Les balises {} doivent êtres contenus dans des balises {}").format(child,parent))
            #elif
            
        return messages        

    def return_fragment(self, wanted="html"):
        for inline in self.tabs_html[self.selected_tab].inlines:
            if inline[0] == wanted:
                return inline[1]
        else:
            print("wanted fragment not found")        

    def return_copy_document(self, wanted="html"):
        return self.tabs_html[self.selected_tab].text
        


if __name__ == '__main__':
    log_writer("platform", platform.platform())
    log_writer("python_build", platform.python_build())
    WebSpreeInstance=WebSpree()